@onepercentio/one-ui 1.2.3 → 1.2.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 (407) hide show
  1. package/WebpackConfigs/scripts/css-inliner.ts +13 -8
  2. package/dist/components/AdaptiveButton/AdaptiveButton.d.ts +2 -1
  3. package/dist/components/AdaptiveButton/AdaptiveButton.js +3 -2
  4. package/dist/components/AdaptiveContainer/AdaptiveContainer.d.ts +5 -1
  5. package/dist/components/AdaptiveContainer/AdaptiveContainer.js +6 -2
  6. package/dist/components/AdaptiveDialog/AdaptiveDialog.d.ts +4 -1
  7. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +5 -2
  8. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.d.ts +2 -1
  9. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +3 -2
  10. package/dist/components/AnchoredTooltip/AnchoredTooltip.d.ts +4 -1
  11. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +5 -2
  12. package/dist/components/AnimatedEntrance/AnimatedEntrance.d.ts +2 -1
  13. package/dist/components/AnimatedEntrance/AnimatedEntrance.js +3 -2
  14. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.d.ts +5 -0
  15. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.js +6 -1
  16. package/dist/components/AsyncWrapper/AsyncWrapper.d.ts +4 -0
  17. package/dist/components/AsyncWrapper/AsyncWrapper.js +5 -1
  18. package/dist/components/Avatar/Avatar.d.ts +3 -1
  19. package/dist/components/Avatar/Avatar.js +4 -2
  20. package/dist/components/BucketFill/BucketFill.d.ts +3 -4
  21. package/dist/components/BucketFill/BucketFill.js +4 -5
  22. package/dist/components/Button/Button.d.ts +4 -0
  23. package/dist/components/Button/Button.js +5 -1
  24. package/dist/components/Chart/Chart.view.d.ts +2 -2
  25. package/dist/components/Chart/Chart.view.js +3 -3
  26. package/dist/components/CheckBox/CheckBox.d.ts +3 -0
  27. package/dist/components/CheckBox/CheckBox.js +4 -1
  28. package/dist/components/CodeInput/CodeInput.js +1 -1
  29. package/dist/components/Collapsable/Collapsable.d.ts +5 -0
  30. package/dist/components/Collapsable/Collapsable.js +6 -1
  31. package/dist/components/Countdown/Countdown.d.ts +4 -0
  32. package/dist/components/Countdown/Countdown.js +5 -1
  33. package/dist/components/CurrencyInput/CurrencyInput.d.ts +4 -0
  34. package/dist/components/CurrencyInput/CurrencyInput.js +5 -1
  35. package/dist/components/Divider/Divider.d.ts +2 -2
  36. package/dist/components/Divider/Divider.js +3 -3
  37. package/dist/components/EmailInput/EmailInput.d.ts +3 -0
  38. package/dist/components/EmailInput/EmailInput.js +4 -1
  39. package/dist/components/FadeIn/FadeIn.d.ts +2 -1
  40. package/dist/components/FadeIn/FadeIn.js +3 -2
  41. package/dist/components/FileInput/FileInput.d.ts +3 -0
  42. package/dist/components/FileInput/FileInput.js +5 -1
  43. package/dist/components/FlowController/FlowController.d.ts +4 -0
  44. package/dist/components/FlowController/FlowController.js +5 -1
  45. package/dist/components/Form/Form.d.ts +8 -3
  46. package/dist/components/Form/Form.js +7 -2
  47. package/dist/components/Form/Form.types.d.ts +1 -1
  48. package/dist/components/Form/Form.types.js +1 -1
  49. package/dist/components/Form/FormField/FormField.js +20 -7
  50. package/dist/components/HSForms/HSForms.d.ts +4 -0
  51. package/dist/components/HSForms/HSForms.js +5 -1
  52. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.d.ts +2 -1
  53. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +3 -2
  54. package/dist/components/InfinityScroll/InfinityScroll.d.ts +2 -1
  55. package/dist/components/InfinityScroll/InfinityScroll.js +3 -2
  56. package/dist/components/Input/Input.d.ts +6 -0
  57. package/dist/components/Input/Input.js +7 -1
  58. package/dist/components/Input/Input.module.scss +2 -1
  59. package/dist/components/LavaLamp/LavaLamp.d.ts +2 -2
  60. package/dist/components/LavaLamp/LavaLamp.js +3 -3
  61. package/dist/components/LinkToId/LinkToId.d.ts +1 -1
  62. package/dist/components/LinkToId/LinkToId.js +2 -2
  63. package/dist/components/Loader/Loader.d.ts +2 -1
  64. package/dist/components/Loader/Loader.js +3 -2
  65. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.d.ts +4 -0
  66. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +5 -1
  67. package/dist/components/LoopableVideo/LoopableVideo.d.ts +4 -1
  68. package/dist/components/LoopableVideo/LoopableVideo.js +5 -2
  69. package/dist/components/MainGrid/MainGrid.d.ts +4 -0
  70. package/dist/components/MainGrid/MainGrid.js +5 -1
  71. package/dist/components/Notification/Notification.d.ts +1 -0
  72. package/dist/components/Notification/Notification.js +2 -1
  73. package/dist/components/NumberInput/NumberInput.d.ts +4 -0
  74. package/dist/components/NumberInput/NumberInput.js +6 -1
  75. package/dist/components/OrderableList/OrderableList.d.ts +4 -2
  76. package/dist/components/OrderableList/OrderableList.js +5 -3
  77. package/dist/components/PaginationIndicator/PaginationIndicator.d.ts +5 -0
  78. package/dist/components/PaginationIndicator/PaginationIndicator.js +6 -1
  79. package/dist/components/Parallax/Parallax.d.ts +4 -0
  80. package/dist/components/Parallax/Parallax.js +5 -1
  81. package/dist/components/PasswordInput/PasswordInput.d.ts +3 -2
  82. package/dist/components/PasswordInput/PasswordInput.js +4 -3
  83. package/dist/components/PingPongText/PingPongText.d.ts +4 -0
  84. package/dist/components/PingPongText/PingPongText.js +5 -1
  85. package/dist/components/PixelatedScan/PixelatedScan.d.ts +5 -0
  86. package/dist/components/PixelatedScan/PixelatedScan.js +7 -1
  87. package/dist/components/Portal/Portal.d.ts +4 -0
  88. package/dist/components/Portal/Portal.js +7 -3
  89. package/dist/components/ProgressBar/ProgressBar.d.ts +3 -2
  90. package/dist/components/ProgressBar/ProgressBar.js +4 -3
  91. package/dist/components/ProgressTexts/ProgressTexts.d.ts +4 -0
  92. package/dist/components/ProgressTexts/ProgressTexts.js +5 -1
  93. package/dist/components/Radio/Radio.d.ts +4 -0
  94. package/dist/components/Radio/Radio.js +5 -1
  95. package/dist/components/SectionContainer/SectionContainer.d.ts +5 -0
  96. package/dist/components/SectionContainer/SectionContainer.js +6 -1
  97. package/dist/components/Select/Select.d.ts +5 -1
  98. package/dist/components/Select/Select.js +6 -1
  99. package/dist/components/Slider/Slider.d.ts +4 -0
  100. package/dist/components/Slider/Slider.e2e.d.ts +3 -3
  101. package/dist/components/Slider/Slider.js +5 -1
  102. package/dist/components/Spacing/Spacing.d.ts +4 -0
  103. package/dist/components/Spacing/Spacing.js +6 -1
  104. package/dist/components/StaticScroller/StaticScroller.d.ts +3 -2
  105. package/dist/components/StaticScroller/StaticScroller.js +4 -3
  106. package/dist/components/Switch/Switch.d.ts +4 -2
  107. package/dist/components/Switch/Switch.js +5 -3
  108. package/dist/components/Table/Table.d.ts +4 -2
  109. package/dist/components/Table/Table.js +5 -3
  110. package/dist/components/Tabs/Tabs.d.ts +3 -2
  111. package/dist/components/Tabs/Tabs.js +4 -3
  112. package/dist/components/Text/Text.d.ts +4 -0
  113. package/dist/components/Text/Text.js +6 -1
  114. package/dist/components/Transition/Transition.d.ts +10 -2
  115. package/dist/components/Transition/Transition.js +14 -3
  116. package/dist/components/UncontrolledTransition/UncontrolledTransition.d.ts +2 -2
  117. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +3 -3
  118. package/dist/context/AsyncProcess.d.ts +2 -0
  119. package/dist/context/AsyncProcess.js +4 -1
  120. package/dist/context/ContextAsyncControl.d.ts +15 -0
  121. package/dist/context/ContextAsyncControl.js +21 -1
  122. package/dist/context/CustomBrowserRouter.d.ts +6 -0
  123. package/dist/context/CustomBrowserRouter.js +8 -1
  124. package/dist/context/OneUIProvider.d.ts +21 -0
  125. package/dist/context/OneUIProvider.js +31 -2
  126. package/dist/hooks/useIntersection.d.ts +4 -0
  127. package/dist/hooks/useIntersection.js +5 -1
  128. package/dist/hooks/useMergeRefs.d.ts +1 -1
  129. package/dist/hooks/useMergeRefs.js +4 -2
  130. package/dist/hooks/useObserve.d.ts +4 -0
  131. package/dist/hooks/useObserve.js +5 -1
  132. package/dist/hooks/usePagination.d.ts +5 -0
  133. package/dist/hooks/usePagination.js +6 -1
  134. package/dist/hooks/usePooledOperation.d.ts +4 -0
  135. package/dist/hooks/usePooledOperation.js +6 -1
  136. package/dist/hooks/usePooling.d.ts +6 -1
  137. package/dist/hooks/usePooling.js +7 -2
  138. package/dist/hooks/useRebound.d.ts +4 -0
  139. package/dist/hooks/useRebound.js +8 -4
  140. package/dist/hooks/useShortIntl.d.ts +4 -0
  141. package/dist/hooks/useShortIntl.js +5 -1
  142. package/dist/index.d.ts +0 -2
  143. package/dist/index.js +7 -26
  144. package/dist/models/DebugLogger.d.ts +3 -0
  145. package/dist/models/DebugLogger.js +5 -1
  146. package/dist/models/GenericContract.d.ts +21 -0
  147. package/dist/models/GenericContract.js +26 -1
  148. package/dist/models/Orbs.d.ts +9 -0
  149. package/dist/models/Orbs.js +13 -1
  150. package/dist/utils/blockchain.d.ts +4 -0
  151. package/dist/utils/blockchain.js +8 -1
  152. package/dist/utils/e2e.d.ts +6 -2
  153. package/dist/utils/e2e.js +4 -11
  154. package/dist/utils/flatten.d.ts +1 -0
  155. package/dist/utils/flatten.js +2 -1
  156. package/dist/utils/formatters.js +5 -1
  157. package/dist/utils/html.utils.d.ts +1 -0
  158. package/dist/utils/html.utils.js +2 -1
  159. package/dist/utils/ownEvent.js +2 -1
  160. package/dist/utils/test.js +2 -1
  161. package/dist-ts/components/AdaptiveButton/AdaptiveButton.d.ts +2 -1
  162. package/dist-ts/components/AdaptiveButton/AdaptiveButton.js +2 -1
  163. package/dist-ts/components/AdaptiveButton/AdaptiveButton.js.map +1 -1
  164. package/dist-ts/components/AdaptiveContainer/AdaptiveContainer.d.ts +5 -1
  165. package/dist-ts/components/AdaptiveContainer/AdaptiveContainer.js +10 -5
  166. package/dist-ts/components/AdaptiveContainer/AdaptiveContainer.js.map +1 -1
  167. package/dist-ts/components/AdaptiveDialog/AdaptiveDialog.d.ts +4 -1
  168. package/dist-ts/components/AdaptiveDialog/AdaptiveDialog.js +4 -1
  169. package/dist-ts/components/AdaptiveDialog/AdaptiveDialog.js.map +1 -1
  170. package/dist-ts/components/AdaptiveSidebar/AdaptiveSidebar.d.ts +2 -1
  171. package/dist-ts/components/AdaptiveSidebar/AdaptiveSidebar.js +2 -1
  172. package/dist-ts/components/AdaptiveSidebar/AdaptiveSidebar.js.map +1 -1
  173. package/dist-ts/components/AnchoredTooltip/AnchoredTooltip.d.ts +4 -1
  174. package/dist-ts/components/AnchoredTooltip/AnchoredTooltip.js +4 -1
  175. package/dist-ts/components/AnchoredTooltip/AnchoredTooltip.js.map +1 -1
  176. package/dist-ts/components/AnimatedEntrance/AnimatedEntrance.d.ts +2 -1
  177. package/dist-ts/components/AnimatedEntrance/AnimatedEntrance.js +2 -1
  178. package/dist-ts/components/AnimatedEntrance/AnimatedEntrance.js.map +1 -1
  179. package/dist-ts/components/AsyncTriggerContainer/AsyncTriggerContainer.d.ts +5 -0
  180. package/dist-ts/components/AsyncTriggerContainer/AsyncTriggerContainer.js +5 -0
  181. package/dist-ts/components/AsyncTriggerContainer/AsyncTriggerContainer.js.map +1 -1
  182. package/dist-ts/components/AsyncWrapper/AsyncWrapper.d.ts +4 -0
  183. package/dist-ts/components/AsyncWrapper/AsyncWrapper.js +4 -0
  184. package/dist-ts/components/AsyncWrapper/AsyncWrapper.js.map +1 -1
  185. package/dist-ts/components/Avatar/Avatar.d.ts +3 -1
  186. package/dist-ts/components/Avatar/Avatar.js +3 -1
  187. package/dist-ts/components/Avatar/Avatar.js.map +1 -1
  188. package/dist-ts/components/BucketFill/BucketFill.d.ts +3 -4
  189. package/dist-ts/components/BucketFill/BucketFill.js +3 -4
  190. package/dist-ts/components/BucketFill/BucketFill.js.map +1 -1
  191. package/dist-ts/components/Button/Button.d.ts +4 -0
  192. package/dist-ts/components/Button/Button.js +4 -0
  193. package/dist-ts/components/Button/Button.js.map +1 -1
  194. package/dist-ts/components/Chart/Chart.view.d.ts +2 -2
  195. package/dist-ts/components/Chart/Chart.view.js +2 -2
  196. package/dist-ts/components/Chart/Chart.view.js.map +1 -1
  197. package/dist-ts/components/CheckBox/CheckBox.d.ts +3 -0
  198. package/dist-ts/components/CheckBox/CheckBox.js +3 -0
  199. package/dist-ts/components/CheckBox/CheckBox.js.map +1 -1
  200. package/dist-ts/components/Collapsable/Collapsable.d.ts +5 -0
  201. package/dist-ts/components/Collapsable/Collapsable.js +5 -0
  202. package/dist-ts/components/Collapsable/Collapsable.js.map +1 -1
  203. package/dist-ts/components/Countdown/Countdown.d.ts +4 -0
  204. package/dist-ts/components/Countdown/Countdown.js +4 -0
  205. package/dist-ts/components/Countdown/Countdown.js.map +1 -1
  206. package/dist-ts/components/CurrencyInput/CurrencyInput.d.ts +4 -0
  207. package/dist-ts/components/CurrencyInput/CurrencyInput.js +4 -0
  208. package/dist-ts/components/CurrencyInput/CurrencyInput.js.map +1 -1
  209. package/dist-ts/components/Divider/Divider.d.ts +2 -2
  210. package/dist-ts/components/Divider/Divider.js +2 -2
  211. package/dist-ts/components/Divider/Divider.js.map +1 -1
  212. package/dist-ts/components/EmailInput/EmailInput.d.ts +3 -0
  213. package/dist-ts/components/EmailInput/EmailInput.js +3 -0
  214. package/dist-ts/components/EmailInput/EmailInput.js.map +1 -1
  215. package/dist-ts/components/FadeIn/FadeIn.d.ts +2 -1
  216. package/dist-ts/components/FadeIn/FadeIn.js +2 -1
  217. package/dist-ts/components/FadeIn/FadeIn.js.map +1 -1
  218. package/dist-ts/components/FileInput/FileInput.d.ts +3 -0
  219. package/dist-ts/components/FileInput/FileInput.js +3 -0
  220. package/dist-ts/components/FileInput/FileInput.js.map +1 -1
  221. package/dist-ts/components/FlowController/FlowController.d.ts +4 -0
  222. package/dist-ts/components/FlowController/FlowController.js +4 -0
  223. package/dist-ts/components/FlowController/FlowController.js.map +1 -1
  224. package/dist-ts/components/Form/Form.d.ts +8 -3
  225. package/dist-ts/components/Form/Form.js +7 -2
  226. package/dist-ts/components/Form/Form.js.map +1 -1
  227. package/dist-ts/components/Form/Form.types.d.ts +1 -1
  228. package/dist-ts/components/Form/FormField/FormField.js +6 -3
  229. package/dist-ts/components/Form/FormField/FormField.js.map +1 -1
  230. package/dist-ts/components/HSForms/HSForms.d.ts +4 -0
  231. package/dist-ts/components/HSForms/HSForms.js +4 -0
  232. package/dist-ts/components/HSForms/HSForms.js.map +1 -1
  233. package/dist-ts/components/HeaderCloseBtn/HeaderCloseBtn.d.ts +2 -1
  234. package/dist-ts/components/HeaderCloseBtn/HeaderCloseBtn.js +2 -1
  235. package/dist-ts/components/HeaderCloseBtn/HeaderCloseBtn.js.map +1 -1
  236. package/dist-ts/components/InfinityScroll/InfinityScroll.d.ts +2 -1
  237. package/dist-ts/components/InfinityScroll/InfinityScroll.js +2 -1
  238. package/dist-ts/components/InfinityScroll/InfinityScroll.js.map +1 -1
  239. package/dist-ts/components/Input/Input.d.ts +6 -0
  240. package/dist-ts/components/Input/Input.js +6 -0
  241. package/dist-ts/components/Input/Input.js.map +1 -1
  242. package/dist-ts/components/Input/Input.module.scss +2 -1
  243. package/dist-ts/components/LavaLamp/LavaLamp.d.ts +2 -2
  244. package/dist-ts/components/LavaLamp/LavaLamp.js +2 -2
  245. package/dist-ts/components/LavaLamp/LavaLamp.js.map +1 -1
  246. package/dist-ts/components/LinkToId/LinkToId.d.ts +1 -1
  247. package/dist-ts/components/LinkToId/LinkToId.js +1 -1
  248. package/dist-ts/components/Loader/Loader.d.ts +2 -1
  249. package/dist-ts/components/Loader/Loader.js +2 -1
  250. package/dist-ts/components/Loader/Loader.js.map +1 -1
  251. package/dist-ts/components/LoaderDotsIndicator/LoaderDotsIndicator.d.ts +4 -0
  252. package/dist-ts/components/LoaderDotsIndicator/LoaderDotsIndicator.js +4 -0
  253. package/dist-ts/components/LoaderDotsIndicator/LoaderDotsIndicator.js.map +1 -1
  254. package/dist-ts/components/LoopableVideo/LoopableVideo.d.ts +4 -1
  255. package/dist-ts/components/LoopableVideo/LoopableVideo.js +4 -1
  256. package/dist-ts/components/LoopableVideo/LoopableVideo.js.map +1 -1
  257. package/dist-ts/components/MainGrid/MainGrid.d.ts +4 -0
  258. package/dist-ts/components/MainGrid/MainGrid.js +4 -0
  259. package/dist-ts/components/MainGrid/MainGrid.js.map +1 -1
  260. package/dist-ts/components/Notification/Notification.d.ts +1 -0
  261. package/dist-ts/components/Notification/Notification.js +1 -0
  262. package/dist-ts/components/Notification/Notification.js.map +1 -1
  263. package/dist-ts/components/NumberInput/NumberInput.d.ts +4 -0
  264. package/dist-ts/components/NumberInput/NumberInput.js +4 -0
  265. package/dist-ts/components/NumberInput/NumberInput.js.map +1 -1
  266. package/dist-ts/components/OrderableList/OrderableList.d.ts +4 -2
  267. package/dist-ts/components/OrderableList/OrderableList.js +4 -2
  268. package/dist-ts/components/OrderableList/OrderableList.js.map +1 -1
  269. package/dist-ts/components/PaginationIndicator/PaginationIndicator.d.ts +5 -0
  270. package/dist-ts/components/PaginationIndicator/PaginationIndicator.js +5 -0
  271. package/dist-ts/components/PaginationIndicator/PaginationIndicator.js.map +1 -1
  272. package/dist-ts/components/Parallax/Parallax.d.ts +4 -0
  273. package/dist-ts/components/Parallax/Parallax.js +4 -0
  274. package/dist-ts/components/Parallax/Parallax.js.map +1 -1
  275. package/dist-ts/components/PasswordInput/PasswordInput.d.ts +3 -2
  276. package/dist-ts/components/PasswordInput/PasswordInput.js +3 -2
  277. package/dist-ts/components/PasswordInput/PasswordInput.js.map +1 -1
  278. package/dist-ts/components/PingPongText/PingPongText.d.ts +4 -0
  279. package/dist-ts/components/PingPongText/PingPongText.js +4 -0
  280. package/dist-ts/components/PingPongText/PingPongText.js.map +1 -1
  281. package/dist-ts/components/PixelatedScan/PixelatedScan.d.ts +5 -0
  282. package/dist-ts/components/PixelatedScan/PixelatedScan.js +5 -0
  283. package/dist-ts/components/PixelatedScan/PixelatedScan.js.map +1 -1
  284. package/dist-ts/components/Portal/Portal.d.ts +4 -0
  285. package/dist-ts/components/Portal/Portal.js +4 -0
  286. package/dist-ts/components/Portal/Portal.js.map +1 -1
  287. package/dist-ts/components/ProgressBar/ProgressBar.d.ts +3 -2
  288. package/dist-ts/components/ProgressBar/ProgressBar.js +3 -2
  289. package/dist-ts/components/ProgressBar/ProgressBar.js.map +1 -1
  290. package/dist-ts/components/ProgressTexts/ProgressTexts.d.ts +4 -0
  291. package/dist-ts/components/ProgressTexts/ProgressTexts.js +4 -0
  292. package/dist-ts/components/ProgressTexts/ProgressTexts.js.map +1 -1
  293. package/dist-ts/components/Radio/Radio.d.ts +4 -0
  294. package/dist-ts/components/Radio/Radio.js.map +1 -1
  295. package/dist-ts/components/SectionContainer/SectionContainer.d.ts +5 -0
  296. package/dist-ts/components/SectionContainer/SectionContainer.js +5 -0
  297. package/dist-ts/components/SectionContainer/SectionContainer.js.map +1 -1
  298. package/dist-ts/components/Select/Select.d.ts +5 -1
  299. package/dist-ts/components/Select/Select.js +4 -0
  300. package/dist-ts/components/Select/Select.js.map +1 -1
  301. package/dist-ts/components/Slider/Slider.d.ts +4 -0
  302. package/dist-ts/components/Slider/Slider.e2e.d.ts +3 -3
  303. package/dist-ts/components/Slider/Slider.js +4 -0
  304. package/dist-ts/components/Slider/Slider.js.map +1 -1
  305. package/dist-ts/components/Spacing/Spacing.d.ts +4 -0
  306. package/dist-ts/components/Spacing/Spacing.js +4 -0
  307. package/dist-ts/components/Spacing/Spacing.js.map +1 -1
  308. package/dist-ts/components/StaticScroller/StaticScroller.d.ts +3 -2
  309. package/dist-ts/components/StaticScroller/StaticScroller.js +3 -2
  310. package/dist-ts/components/StaticScroller/StaticScroller.js.map +1 -1
  311. package/dist-ts/components/Switch/Switch.d.ts +4 -2
  312. package/dist-ts/components/Switch/Switch.js +4 -2
  313. package/dist-ts/components/Switch/Switch.js.map +1 -1
  314. package/dist-ts/components/Table/Table.d.ts +4 -2
  315. package/dist-ts/components/Table/Table.js +4 -2
  316. package/dist-ts/components/Table/Table.js.map +1 -1
  317. package/dist-ts/components/Tabs/Tabs.d.ts +3 -2
  318. package/dist-ts/components/Tabs/Tabs.js +3 -2
  319. package/dist-ts/components/Tabs/Tabs.js.map +1 -1
  320. package/dist-ts/components/Text/Text.d.ts +4 -0
  321. package/dist-ts/components/Text/Text.js +4 -0
  322. package/dist-ts/components/Text/Text.js.map +1 -1
  323. package/dist-ts/components/Transition/Transition.d.ts +10 -2
  324. package/dist-ts/components/Transition/Transition.js +16 -7
  325. package/dist-ts/components/Transition/Transition.js.map +1 -1
  326. package/dist-ts/components/UncontrolledTransition/UncontrolledTransition.d.ts +2 -2
  327. package/dist-ts/components/UncontrolledTransition/UncontrolledTransition.js +2 -2
  328. package/dist-ts/components/UncontrolledTransition/UncontrolledTransition.js.map +1 -1
  329. package/dist-ts/context/AsyncProcess.d.ts +2 -0
  330. package/dist-ts/context/AsyncProcess.js +2 -0
  331. package/dist-ts/context/AsyncProcess.js.map +1 -1
  332. package/dist-ts/context/ContextAsyncControl.d.ts +15 -0
  333. package/dist-ts/context/ContextAsyncControl.js +12 -0
  334. package/dist-ts/context/ContextAsyncControl.js.map +1 -1
  335. package/dist-ts/context/CustomBrowserRouter.d.ts +6 -0
  336. package/dist-ts/context/CustomBrowserRouter.js +3 -0
  337. package/dist-ts/context/CustomBrowserRouter.js.map +1 -1
  338. package/dist-ts/context/OneUIProvider.d.ts +21 -0
  339. package/dist-ts/context/OneUIProvider.js +13 -1
  340. package/dist-ts/context/OneUIProvider.js.map +1 -1
  341. package/dist-ts/hooks/useIntersection.d.ts +4 -0
  342. package/dist-ts/hooks/useIntersection.js +4 -0
  343. package/dist-ts/hooks/useIntersection.js.map +1 -1
  344. package/dist-ts/hooks/useMergeRefs.d.ts +1 -1
  345. package/dist-ts/hooks/useMergeRefs.js +3 -1
  346. package/dist-ts/hooks/useMergeRefs.js.map +1 -1
  347. package/dist-ts/hooks/useObserve.d.ts +4 -0
  348. package/dist-ts/hooks/useObserve.js +4 -0
  349. package/dist-ts/hooks/useObserve.js.map +1 -1
  350. package/dist-ts/hooks/usePagination.d.ts +5 -0
  351. package/dist-ts/hooks/usePagination.js +5 -0
  352. package/dist-ts/hooks/usePagination.js.map +1 -1
  353. package/dist-ts/hooks/usePooledOperation.d.ts +4 -0
  354. package/dist-ts/hooks/usePooledOperation.js +4 -0
  355. package/dist-ts/hooks/usePooledOperation.js.map +1 -1
  356. package/dist-ts/hooks/usePooling.d.ts +6 -1
  357. package/dist-ts/hooks/usePooling.js +6 -1
  358. package/dist-ts/hooks/usePooling.js.map +1 -1
  359. package/dist-ts/hooks/useRebound.d.ts +4 -0
  360. package/dist-ts/hooks/useRebound.js +4 -0
  361. package/dist-ts/hooks/useRebound.js.map +1 -1
  362. package/dist-ts/hooks/useShortIntl.d.ts +4 -0
  363. package/dist-ts/hooks/useShortIntl.js +4 -0
  364. package/dist-ts/hooks/useShortIntl.js.map +1 -1
  365. package/dist-ts/index.d.ts +0 -2
  366. package/dist-ts/index.js +0 -2
  367. package/dist-ts/index.js.map +1 -1
  368. package/dist-ts/models/DebugLogger.d.ts +3 -0
  369. package/dist-ts/models/DebugLogger.js +3 -0
  370. package/dist-ts/models/DebugLogger.js.map +1 -1
  371. package/dist-ts/models/GenericContract.d.ts +21 -0
  372. package/dist-ts/models/GenericContract.js +6 -0
  373. package/dist-ts/models/GenericContract.js.map +1 -1
  374. package/dist-ts/models/Orbs.d.ts +9 -0
  375. package/dist-ts/models/Orbs.js +6 -0
  376. package/dist-ts/models/Orbs.js.map +1 -1
  377. package/dist-ts/utils/blockchain.d.ts +4 -0
  378. package/dist-ts/utils/blockchain.js +4 -0
  379. package/dist-ts/utils/blockchain.js.map +1 -1
  380. package/dist-ts/utils/e2e.d.ts +6 -2
  381. package/dist-ts/utils/e2e.js +3 -3
  382. package/dist-ts/utils/e2e.js.map +1 -1
  383. package/dist-ts/utils/flatten.d.ts +1 -0
  384. package/dist-ts/utils/flatten.js +1 -0
  385. package/dist-ts/utils/flatten.js.map +1 -1
  386. package/dist-ts/utils/formatters.js +3 -0
  387. package/dist-ts/utils/formatters.js.map +1 -1
  388. package/dist-ts/utils/html.utils.d.ts +1 -0
  389. package/dist-ts/utils/html.utils.js +1 -0
  390. package/dist-ts/utils/html.utils.js.map +1 -1
  391. package/dist-ts/utils/ownEvent.js +1 -0
  392. package/dist-ts/utils/ownEvent.js.map +1 -1
  393. package/dist-ts/utils/test.js +1 -0
  394. package/dist-ts/utils/test.js.map +1 -1
  395. package/package.json +13 -2
  396. package/dist/components/Header/Header.d.ts +0 -25
  397. package/dist/components/Header/Header.js +0 -88
  398. package/dist/components/Header/Header.module.scss +0 -119
  399. package/dist/components/Header/index.d.ts +0 -2
  400. package/dist/components/Header/index.js +0 -26
  401. package/dist-ts/components/Header/Header.d.ts +0 -25
  402. package/dist-ts/components/Header/Header.js +0 -35
  403. package/dist-ts/components/Header/Header.js.map +0 -1
  404. package/dist-ts/components/Header/Header.module.scss +0 -119
  405. package/dist-ts/components/Header/index.d.ts +0 -2
  406. package/dist-ts/components/Header/index.js +0 -3
  407. package/dist-ts/components/Header/index.js.map +0 -1
@@ -39,8 +39,10 @@ function cleanKeys(keys) {
39
39
  }
40
40
 
41
41
  /**
42
- * This component receives a list of keyed elements and orders it based of the order provided via the prop "keyOrder"
43
- **/
42
+ * This component displays a list of items that can be reordered by dragging them with your mouse or touch.
43
+ * It supports simple vertical dragging and more advanced 2D reordering, with smooth animations
44
+ * when items move around.
45
+ */
44
46
  function OrderableList(_ref) {
45
47
  let {
46
48
  children,
@@ -433,4 +435,4 @@ function useOrderableEvents(events) {
433
435
  };
434
436
  }, [events]);
435
437
  }
436
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGhyb3R0bGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX1VuY29udHJvbGxlZFRyYW5zaXRpb24iLCJfVHJhbnNpdGlvbk1vZHVsZSIsIl91c2VIZXJvIiwiX0FuaW1hdGVkRW50cmFuY2UiLCJfVHJhbnNpdGlvbiIsIl9PcmRlcmFibGVMaXN0TW9kdWxlIiwiX3VzZUV2ZW50cyIsIl9vd25FdmVudCIsIl9leGNsdWRlZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFwcGx5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiT3JkZXJhYmxlTGlzdENvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlIiwiZXhwb3J0cyIsImNsZWFuS2V5cyIsIm1hcCIsImEiLCJzcGxpdCIsIk9yZGVyYWJsZUxpc3QiLCJfcmVmIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJtb2RlIiwiVkVSVElDQUwiLCJzaHJpbmtUb09uT3JkZXIiLCJyZW9yZGVyaW5nQ2xhc3NOYW1lIiwiY2xvbmVDbGFzc05hbWUiLCJwcm9wcyIsImF2YWlsYWJsZUtleXMiLCJrZXkiLCJhdmFpbGFibGVLZXlzRGVwIiwiam9pbiIsImluaXRpYWxpemVPcmRlciIsInVzZUNhbGxiYWNrIiwibWlzc2luZ09yZGVyS2V5cyIsImtleU9yZGVyIiwiaW5jbHVkZXMiLCJ1bmRlZmluZWQiLCJjdXJyZW50IiwiYW5jaG9yc0xpc3QiLCJ1c2VSZWYiLCJldmVudEVtaXR0ZXIiLCJ1c2VFdmVudHMiLCJjdXJyZW50Q2xvbmUiLCJjdXJyZW50V29ya2luZ0tleSIsInJvb3RSZWYiLCJfb3JkZXIiLCJzZXRPcmRlciIsInVzZVN0YXRlIiwidXNlRWZmZWN0Iiwib3JkZXIiLCJ1c2VNZW1vIiwiY3VycmVudE9yZGVyIiwiY2xlYW5PcmRlciIsIm9yZGVySWQiLCJyb290RWwiLCJUV09fRElNRU5TSU9OUyIsImxhc3RFbGVtZW50Q2hpbGQiLCJmaW5kUGFyZW50RWxlbWVudCIsInRhcmdldCIsInBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJFcnJvciIsInVzZUxheW91dEVmZmVjdCIsInN0eWxlIiwic2V0UHJvcGVydHkiLCJjb25jYXQiLCJjYWxjdWxhdGVSZW9yZGVyaW5nIiwidGhyb3R0bGUiLCJlbHMiLCJpbmRleE9mS2V5SW5DbGVhbk9yZGVyIiwia2V5T2ZUaGVPdmVyRWxlbWVudCIsImlzRHJhZ2dpbmdPd25FbGVtZW50IiwiaXNBZnRlciIsImlzQmVmb3JlIiwiZGlzdGFuY2VGcm9tTGVmdCIsIm9mZnNldFgiLCJ3aWR0aE9mRWwiLCJjbGllbnRXaWR0aCIsIm9mZnNldCIsImRpc3RhbmNlRnJvbVRvcCIsIm9mZnNldFkiLCJoZWlnaHRPZkVsIiwiY2xpZW50SGVpZ2h0IiwiY2hlY2tJZkNhbk1vdmUiLCJrZXlPZk92ZXJFbGVtZW50IiwiaW5kZXhPZlRoZU5ld0VsZW1lbnQiLCJzaG91bGRUcmlnZ2VyUmVvcmRlcmluZyIsInAiLCJwcmV2aW91c0luZGV4IiwiaW5kZXhPZktleUluUHJvdmlkZWRPcmRlciIsIm9yZGVyV2l0aG91dEN1cnJlbnQiLCJzdGFydHNXaXRoIiwic3BsaWNlIiwiRGF0ZSIsIm5vdyIsInJlZ2lzdGVyTGlzdGVuZXJzIiwiQXJyYXkiLCJmcm9tIiwiY2FsY3VsYXRlUmVvcmRlcmluZ0NhbGwiLCJlbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5zdWJzY3JpYmUiLCJ0aW1lb3V0Iiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsIm9uQ2hhbmdlS2V5T3JkZXIiLCJjbGVhbk9yZGVyUmVmIiwib25BbmNob3JDbGljayIsIl9yZWYyIiwiYW5jaG9yIiwib3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IiLCJib3giLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJlbEluZGV4IiwiY2xvbmUiLCJjbG9uZU5vZGUiLCJzZXRBdHRyaWJ1dGUiLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJTdHlsZXMiLCJtYXhIZWlnaHQiLCJjdXJyZW50T3JkZXJpbmciLCJyZW1vdmUiLCJ2aXNpYmxlIiwibW92ZW1lbnRDb250cm9sIiwieCIsIngxIiwieSIsInkxIiwidG91Y2hlcyIsInBhZ2VYIiwicGFnZVkiLCJkb2N1bWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImRlbGV0ZUNsb25lIiwid2luZG93IiwidmlzaWJpbGl0eSIsInVuc2VsZWN0YWJsZSIsImVsSW52aXNpYmxlIiwiZmluZCIsImNvbnRhaW5zIiwiY2hpbGQiLCJzY3JvbGxIZWlnaHQiLCJ0cmFuc2l0aW9uSGVpZ2h0Iiwib25FbmQiLCJvd25FdmVudCIsImNsZWFuVXAiLCJyZW1vdmVQcm9wZXJ0eSIsImRpc3BhdGNoZXIiLCJvcmRlcmluZyIsIk1hdGgiLCJmbG9vciIsInRvU3RyaW5nIiwidHJhbnNpdGlvbiIsInRhcmdldEhlaWdodCIsImN1cnJlbnRIZWlnaHQiLCJvZmZzZXRUb3AiLCJwYWRkaW5nVG9wIiwibWluSGVpZ2h0IiwidG9TcHJlYWQiLCJjaGlsZHJlblRvUmVuZGVyIiwic29ydCIsImIiLCJyZWxhdGVkQW5jaG9yIiwicHJldmVudERlZmF1bHQiLCJtb3ZlQ2IiLCJ0b3VjaCIsImNsaWVudFgiLCJjbGllbnRZIiwiY3VycmVudEVsZW1lbnRJZHgiLCJmaW5kSW5kZXgiLCJjIiwicmVjdCIsInRvdWNoTW92ZUNiIiwic3RvcFByb3BhZ2F0aW9uIiwiZGlzcGF0Y2hFdmVudCIsIlRvdWNoRXZlbnQiLCJ0eXBlIiwicmVtb3ZlQ2IiLCJiaW5kQW5jaG9yIiwidW5iaW5kQW5jaG9yIiwib24iLCJzdWJzY3JpYmVyIiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIiwicmVmIiwicm9vdCIsInNocmlua2FibGUiLCJ0cmFuc2l0aW9uVHlwZSIsIlRyYW5zaXRpb25BbmltYXRpb25UeXBlcyIsIkNVU1RPTSIsImNvbmZpZyIsImJhY2t3YXJkIiwiZWxlbWVudEVudGVyaW5nIiwiZWxlbWVudEV4aXRpbmciLCJmb3J3YXJkIiwic3R1YkVudGVyaW5nIiwiVHJhbnNpdGlvblN0eWxlcyIsImZhZGVPdXQiLCJjb250ZW50Q2xhc3NOYW1lIiwiRnJhZ21lbnQiLCJIZXJvV3JhcHBlciIsImlkIiwiX3JlZjMiLCJoZXJvUmVmIiwidXNlSGVybyIsIm9uSGVyb1N0YXJ0IiwiX2MiLCJfbyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpbWciLCJvbkhlcm9DbG9uZWQiLCJvbkhlcm9FbmQiLCJ1c2VPcmRlcmFibGVMaXN0QW5jaG9yIiwiYW5jaG9yUmVmIiwiY3R4IiwidXNlQ29udGV4dCIsInVzZU9yZGVyYWJsZUV2ZW50cyIsImV2ZW50cyIsInVuc3Vic2NyaWJlcnMiLCJldmVudE5hbWUiLCJ1Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvT3JkZXJhYmxlTGlzdC9PcmRlcmFibGVMaXN0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdGhyb3R0bGUgZnJvbSBcImxvZGFzaC90aHJvdHRsZVwiO1xuaW1wb3J0IFJlYWN0LCB7XG4gIGNyZWF0ZUNvbnRleHQsXG4gIERldGFpbGVkSFRNTFByb3BzLFxuICBGcmFnbWVudCxcbiAgSFRNTEF0dHJpYnV0ZXMsXG4gIFByb3BzV2l0aENoaWxkcmVuLFxuICBSZWFjdEVsZW1lbnQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgVW5jb250cm9sbGVkVHJhbnNpdGlvbiBmcm9tIFwiLi4vVW5jb250cm9sbGVkVHJhbnNpdGlvblwiO1xuaW1wb3J0IFRyYW5zaXRpb25TdHlsZXMgZnJvbSBcIi4uL1RyYW5zaXRpb24vVHJhbnNpdGlvbi5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHVzZUhlcm8gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUhlcm9cIjtcbmltcG9ydCBBbmltYXRlZEVudHJhbmNlIGZyb20gXCIuLi9BbmltYXRlZEVudHJhbmNlXCI7XG5pbXBvcnQgeyBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMgfSBmcm9tIFwiLi4vVHJhbnNpdGlvblwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi9PcmRlcmFibGVMaXN0Lm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdXNlRXZlbnRzIGZyb20gXCIuLi8uLi9ob29rcy91dGlsaXR5L3VzZUV2ZW50c1wiO1xuaW1wb3J0IG93bkV2ZW50IGZyb20gXCIuLi8uLi91dGlscy9vd25FdmVudFwiO1xuXG50eXBlIEV2ZW50cyA9IFwib3JkZXItc3RvcFwiIHwgXCJvcmRlci1zdGFydFwiO1xuXG5jb25zdCBPcmRlcmFibGVMaXN0Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8e1xuICBiaW5kQW5jaG9yOiAoYmluZEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkO1xuICB1bmJpbmRBbmNob3I6IChiaW5kRWxlbWVudDogSFRNTERpdkVsZW1lbnQpID0+IHZvaWQ7XG4gIG9uOiAoZXZlbnROYW1lOiBFdmVudHMsIGNiOiAoKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xufT4obnVsbCBhcyBhbnkpO1xuXG5leHBvcnQgZW51bSBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGUge1xuICBWRVJUSUNBTCA9IFwidlwiLFxuICBUV09fRElNRU5TSU9OUyA9IFwiaHZcIixcbn1cblxuZnVuY3Rpb24gY2xlYW5LZXlzKGtleXM6IHN0cmluZ1tdKSB7XG4gIHJldHVybiBrZXlzLm1hcCgoYSkgPT4gYS5zcGxpdChcIjtcIilbMF0pO1xufVxuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHJlY2VpdmVzIGEgbGlzdCBvZiBrZXllZCBlbGVtZW50cyBhbmQgb3JkZXJzIGl0IGJhc2VkIG9mIHRoZSBvcmRlciBwcm92aWRlZCB2aWEgdGhlIHByb3AgXCJrZXlPcmRlclwiXG4gKiovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBPcmRlcmFibGVMaXN0KHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSA9IFwiXCIsXG4gIG1vZGUgPSBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGUuVkVSVElDQUwsXG4gIHNocmlua1RvT25PcmRlcixcbiAgcmVvcmRlcmluZ0NsYXNzTmFtZSxcbiAgY2xvbmVDbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdEVsZW1lbnRbXTtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBtb2RlPzogT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlO1xuICAvKipcbiAgICogSWYgcHJvdmlkZWQsIG1ha2VzIHRoZSBlbGVtZW50cyBzaHJpbmsgdG8gdGhpcyB2YWx1ZSBpbiBweCB3aGVuIG9yZGVyaW5nIGVsZW1lbnRzXG4gICAqL1xuICBzaHJpbmtUb09uT3JkZXI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgY2xhc3MgdG8gYXBwbHkgd2hlbiByZW9yZGVyaW5nXG4gICAqL1xuICByZW9yZGVyaW5nQ2xhc3NOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBjbG9uZSBlbFxuICAgKi9cbiAgY2xvbmVDbGFzc05hbWU/OiBzdHJpbmc7XG59ICYgKFxuICB8IHtcbiAgICAgIGtleU9yZGVyPzogc3RyaW5nW107XG4gICAgICBvbkNoYW5nZUtleU9yZGVyOiAobmV3T3JkZXI6IHN0cmluZ1tdKSA9PiB2b2lkO1xuICAgIH1cbiAgfCB7XG4gICAgICBjdXJyZW50T3JkZXI/OiBzdHJpbmdbXTtcbiAgICB9XG4pICZcbiAgRGV0YWlsZWRIVE1MUHJvcHM8SFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBIVE1MRGl2RWxlbWVudD4pIHtcbiAgY29uc3QgYXZhaWxhYmxlS2V5cyA9IGNoaWxkcmVuLm1hcCgoYSkgPT4gYS5rZXkgYXMgc3RyaW5nKTtcbiAgY29uc3QgYXZhaWxhYmxlS2V5c0RlcCA9IGF2YWlsYWJsZUtleXMuam9pbihcIixcIik7XG4gIGNvbnN0IGluaXRpYWxpemVPcmRlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBtaXNzaW5nT3JkZXJLZXlzID1cbiAgICAgIFwia2V5T3JkZXJcIiBpbiBwcm9wcyAmJiBwcm9wcy5rZXlPcmRlclxuICAgICAgICA/IGF2YWlsYWJsZUtleXMuZmlsdGVyKChhKSA9PiAhcHJvcHMua2V5T3JkZXIhLmluY2x1ZGVzKGEpKVxuICAgICAgICA6IFtdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIChcImtleU9yZGVyXCIgaW4gcHJvcHMgJiYgcHJvcHMua2V5T3JkZXJcbiAgICAgICAgPyBbLi4ucHJvcHMua2V5T3JkZXIsIC4uLm1pc3NpbmdPcmRlcktleXNdXG4gICAgICAgIDogdW5kZWZpbmVkKSB8fCBhdmFpbGFibGVLZXlzXG4gICAgKTtcbiAgfSwgW2F2YWlsYWJsZUtleXNEZXAsIChwcm9wcyBhcyBhbnkpLmtleU9yZGVyXSk7XG4gIGNvbnN0IHsgY3VycmVudDogYW5jaG9yc0xpc3QgfSA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudFtdPihbXSk7XG4gIGNvbnN0IGV2ZW50RW1pdHRlciA9IHVzZUV2ZW50czxFdmVudHMsIHsgW2sgaW4gRXZlbnRzXTogW10gfT4oKTtcbiAgY29uc3QgY3VycmVudENsb25lID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGN1cnJlbnRXb3JraW5nS2V5ID0gdXNlUmVmPHN0cmluZz4odW5kZWZpbmVkKTtcbiAgY29uc3Qgcm9vdFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCBhcyBhbnkpO1xuICBjb25zdCBbX29yZGVyLCBzZXRPcmRlcl0gPSB1c2VTdGF0ZShpbml0aWFsaXplT3JkZXIpO1xuICB1c2VFZmZlY3QoKCkgPT4gc2V0T3JkZXIoaW5pdGlhbGl6ZU9yZGVyKCkpLCBbaW5pdGlhbGl6ZU9yZGVyXSk7XG5cbiAgY29uc3Qgb3JkZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgXCJjdXJyZW50T3JkZXJcIiBpbiBwcm9wcyA/IHByb3BzLmN1cnJlbnRPcmRlciB8fCBfb3JkZXIgOiBfb3JkZXJcbiAgICApLmZpbHRlcigobykgPT4gby5pbmNsdWRlcyhcIjtcIikgfHwgYXZhaWxhYmxlS2V5cy5pbmNsdWRlcyhvKSk7XG4gIH0sIFsocHJvcHMgYXMgYW55KS5jdXJyZW50T3JkZXIsIF9vcmRlciwgYXZhaWxhYmxlS2V5c0RlcF0pO1xuICBjb25zdCBjbGVhbk9yZGVyID0gdXNlTWVtbygoKSA9PiBvcmRlci5tYXAoKGEpID0+IGEuc3BsaXQoXCI7XCIpWzBdKSwgW29yZGVyXSk7XG4gIGNvbnN0IG9yZGVySWQgPSB1c2VNZW1vKCgpID0+IFwia2V5LVwiICsgY2xlYW5PcmRlci5qb2luKFwiXCIpLCBbY2xlYW5PcmRlcl0pO1xuICBmdW5jdGlvbiByb290RWwoKSB7XG4gICAgaWYgKG1vZGUgPT09IE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZS5UV09fRElNRU5TSU9OUylcbiAgICAgIHJldHVybiByb290UmVmLmN1cnJlbnQhLmxhc3RFbGVtZW50Q2hpbGQhXG4gICAgICAgIC5sYXN0RWxlbWVudENoaWxkISBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICByZXR1cm4gcm9vdFJlZi5jdXJyZW50ISBhcyBIVE1MRGl2RWxlbWVudDtcbiAgfVxuXG4gIGNvbnN0IGZpbmRQYXJlbnRFbGVtZW50ID0gKHRhcmdldDogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICBsZXQgcGFyZW50OiBIVE1MRGl2RWxlbWVudCA9IHRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICB3aGlsZSAocGFyZW50LnBhcmVudEVsZW1lbnQgIT09IHJvb3RFbCgpKSB7XG4gICAgICBpZiAocGFyZW50LnBhcmVudEVsZW1lbnQgPT09IG51bGwpIGJyZWFrO1xuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQgYXMgYW55O1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIiAmJiBwYXJlbnQgPT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiSXQgc2VlbXMgbGlrZSB3ZSBjb3VsZCBub3QgZmluZCBhIHJlbGF0aW9uIGJldHdlZW4gdGhpcyBlbGVtZW50IGFuZCB0aGUgcm9vdCBsaXN0LiBBcmUgeW91IHVzaW5nIHBvcnRhbHMgbWF5YmU/XCJcbiAgICAgICk7XG4gICAgcmV0dXJuIHBhcmVudDtcbiAgfTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaHJpbmtUb09uT3JkZXIpXG4gICAgICByb290RWwoKS5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tc2hyaW5rLXRvXCIsIGAke3Nocmlua1RvT25PcmRlcn1weGApO1xuICB9LCBbc2hyaW5rVG9Pbk9yZGVyXSk7XG5cbiAgY29uc3QgY2FsY3VsYXRlUmVvcmRlcmluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aHJvdHRsZSgoZTogYW55LCBlbHM6IEhUTUxEaXZFbGVtZW50W10sIGN1cnJlbnRPcmRlcjogc3RyaW5nW10pID0+IHtcbiAgICAgIGlmIChlbHMubGVuZ3RoID4gY3VycmVudE9yZGVyLmxlbmd0aCB8fCAhY3VycmVudFdvcmtpbmdLZXkuY3VycmVudClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY29uc3QgcGFyZW50ID0gZmluZFBhcmVudEVsZW1lbnQoZS50YXJnZXQpO1xuICAgICAgY29uc3QgaW5kZXhPZktleUluQ2xlYW5PcmRlciA9IGVscy5pbmRleE9mKHBhcmVudCk7XG4gICAgICBjb25zdCBrZXlPZlRoZU92ZXJFbGVtZW50ID0gY3VycmVudE9yZGVyW2luZGV4T2ZLZXlJbkNsZWFuT3JkZXJdO1xuICAgICAgY29uc3QgaXNEcmFnZ2luZ093bkVsZW1lbnQgPVxuICAgICAgICBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50ID09PSBrZXlPZlRoZU92ZXJFbGVtZW50O1xuICAgICAgaWYgKGluZGV4T2ZLZXlJbkNsZWFuT3JkZXIgPT09IC0xIHx8IGtleU9mVGhlT3ZlckVsZW1lbnQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKCFpc0RyYWdnaW5nT3duRWxlbWVudCkge1xuICAgICAgICBjb25zdCB7IGlzQWZ0ZXIsIGlzQmVmb3JlIH0gPSAoKCkgPT4ge1xuICAgICAgICAgIGlmIChtb2RlID09PSBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGUuVFdPX0RJTUVOU0lPTlMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUxlZnQgPSBlLm9mZnNldFg7XG4gICAgICAgICAgICBjb25zdCB3aWR0aE9mRWwgPSBwYXJlbnQuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSB3aWR0aE9mRWwgKiAwLjI1O1xuICAgICAgICAgICAgY29uc3QgaXNBZnRlciA9IGRpc3RhbmNlRnJvbUxlZnQgPiB3aWR0aE9mRWwgLSBvZmZzZXQ7XG4gICAgICAgICAgICBjb25zdCBpc0JlZm9yZSA9IGRpc3RhbmNlRnJvbUxlZnQgPCBvZmZzZXQ7XG4gICAgICAgICAgICByZXR1cm4geyBpc0FmdGVyLCBpc0JlZm9yZSB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21Ub3AgPSBlLm9mZnNldFk7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHRPZkVsID0gcGFyZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IGhlaWdodE9mRWwgKiAwLjI1O1xuICAgICAgICAgICAgY29uc3QgaXNBZnRlciA9IGRpc3RhbmNlRnJvbVRvcCA+IGhlaWdodE9mRWwgLSBvZmZzZXQ7XG4gICAgICAgICAgICBjb25zdCBpc0JlZm9yZSA9IGRpc3RhbmNlRnJvbVRvcCA8IG9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiB7IGlzQWZ0ZXIsIGlzQmVmb3JlIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuXG4gICAgICAgIGNvbnN0IGNoZWNrSWZDYW5Nb3ZlID0gKGtleU9mT3ZlckVsZW1lbnQ/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAga2V5T2ZPdmVyRWxlbWVudCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBrZXlPZk92ZXJFbGVtZW50ICE9PSBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgaW5kZXhPZlRoZU5ld0VsZW1lbnQgPVxuICAgICAgICAgIGluZGV4T2ZLZXlJbkNsZWFuT3JkZXIgKyAoaXNBZnRlciA/IDEgOiAtMSk7XG4gICAgICAgIGNvbnN0IHNob3VsZFRyaWdnZXJSZW9yZGVyaW5nID1cbiAgICAgICAgICAoaXNBZnRlciB8fCBpc0JlZm9yZSkgJiZcbiAgICAgICAgICBjaGVja0lmQ2FuTW92ZShjdXJyZW50T3JkZXJbaW5kZXhPZlRoZU5ld0VsZW1lbnRdKTtcbiAgICAgICAgaWYgKHNob3VsZFRyaWdnZXJSZW9yZGVyaW5nKSB7XG4gICAgICAgICAgc2V0T3JkZXIoKHApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSBjdXJyZW50T3JkZXIuaW5kZXhPZihcbiAgICAgICAgICAgICAgY3VycmVudFdvcmtpbmdLZXkuY3VycmVudCFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBpbmRleE9mS2V5SW5Qcm92aWRlZE9yZGVyID1cbiAgICAgICAgICAgICAgY2xlYW5LZXlzKHApLmluZGV4T2Yoa2V5T2ZUaGVPdmVyRWxlbWVudCk7XG4gICAgICAgICAgICBsZXQgaW5kZXhPZlRoZU5ld0VsZW1lbnQgPVxuICAgICAgICAgICAgICBpbmRleE9mS2V5SW5Qcm92aWRlZE9yZGVyICsgKGlzQmVmb3JlID8gLTEgOiAwKTtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c0luZGV4ID4gaW5kZXhPZlRoZU5ld0VsZW1lbnQpIGluZGV4T2ZUaGVOZXdFbGVtZW50Kys7XG4gICAgICAgICAgICBjb25zdCBvcmRlcldpdGhvdXRDdXJyZW50ID0gcC5maWx0ZXIoKGEpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGEuc3RhcnRzV2l0aChgJHtjdXJyZW50V29ya2luZ0tleS5jdXJyZW50fTtgKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gYSAhPT0gY3VycmVudFdvcmtpbmdLZXkuY3VycmVudDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgb3JkZXJXaXRob3V0Q3VycmVudC5zcGxpY2UoXG4gICAgICAgICAgICAgIGluZGV4T2ZUaGVOZXdFbGVtZW50LFxuICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICBgJHtjdXJyZW50V29ya2luZ0tleS5jdXJyZW50fTske0RhdGUubm93KCl9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBvcmRlcldpdGhvdXRDdXJyZW50O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMTAwMCAvIDYwKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZnVuY3Rpb24gcmVnaXN0ZXJMaXN0ZW5lcnMoKSB7XG4gICAgICBjb25zdCBlbHMgPSBBcnJheS5mcm9tKHJvb3RFbCgpIS5jaGlsZHJlbikgYXMgSFRNTERpdkVsZW1lbnRbXTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZVJlb3JkZXJpbmdDYWxsID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBlbHMgPSBBcnJheS5mcm9tKHJvb3RFbCgpIS5jaGlsZHJlbikgYXMgSFRNTERpdkVsZW1lbnRbXTtcbiAgICAgICAgY2FsY3VsYXRlUmVvcmRlcmluZyhlLCBlbHMsIGNsZWFuT3JkZXIpO1xuICAgICAgfTtcbiAgICAgIGZvciAobGV0IGVsIG9mIGVscylcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBjYWxjdWxhdGVSZW9yZGVyaW5nQ2FsbCk7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGVsIG9mIGVscylcbiAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIGNhbGN1bGF0ZVJlb3JkZXJpbmdDYWxsKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT09IE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZS5WRVJUSUNBTCkge1xuICAgICAgcmV0dXJuIHJlZ2lzdGVyTGlzdGVuZXJzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB1bnN1YnNjcmliZTogKCkgPT4gdm9pZDtcbiAgICAgIGxldCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHVuc3Vic2NyaWJlID0gcmVnaXN0ZXJMaXN0ZW5lcnMoKTtcbiAgICAgIH0sIDI1MCk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIGlmICh1bnN1YnNjcmliZSkgdW5zdWJzY3JpYmUoKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbY2xlYW5PcmRlcl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKFwib25DaGFuZ2VLZXlPcmRlclwiIGluIHByb3BzKSBwcm9wcy5vbkNoYW5nZUtleU9yZGVyKGNsZWFuS2V5cyhfb3JkZXIpKTtcbiAgfSwgW19vcmRlcl0pO1xuXG4gIGNvbnN0IGNsZWFuT3JkZXJSZWYgPSB1c2VSZWYoY2xlYW5PcmRlcik7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY2xlYW5PcmRlclJlZi5jdXJyZW50ID0gY2xlYW5PcmRlcjtcbiAgfSwgW2NsZWFuT3JkZXJdKTtcbiAgY29uc3Qgb25BbmNob3JDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHRhcmdldDogYW5jaG9yIH06IFBpY2s8TW91c2VFdmVudCwgXCJ0YXJnZXRcIj4pID0+IHtcbiAgICAgIGxldCBvZmZzZXQ6IFt4OiBudW1iZXIsIHk6IG51bWJlcl07XG4gICAgICBjb25zdCBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvciA9IGZpbmRQYXJlbnRFbGVtZW50KFxuICAgICAgICBhbmNob3IgYXMgSFRNTERpdkVsZW1lbnRcbiAgICAgICk7XG4gICAgICBjb25zdCBib3ggPSBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkhLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgY29uc3QgZWxJbmRleCA9IGVscy5pbmRleE9mKG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yKTtcblxuICAgICAgY29uc3QgY2xvbmUgPSBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5jbG9uZU5vZGUoXG4gICAgICAgIHRydWVcbiAgICAgICkgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICBjdXJyZW50Q2xvbmUuY3VycmVudCA9IGNsb25lO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpXG4gICAgICAgIGNsb25lLnNldEF0dHJpYnV0ZShcImRhdGEtdGVzdGlkXCIsIFwib3JkZXJhYmxlLWxpc3QtY2xvbmVcIik7XG4gICAgICBjbG9uZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLW9yZGVyYWJsZWlkXCIsIFwib3JkZXJhYmxlLWxpc3QtY2xvbmVcIik7XG4gICAgICBjbG9uZS5zdHlsZS53aWR0aCA9IGAke2JveC53aWR0aH1weGA7XG4gICAgICBjbG9uZS5zdHlsZS5oZWlnaHQgPSBgJHtib3guaGVpZ2h0fXB4YDtcbiAgICAgIGNsb25lLnN0eWxlLnRvcCA9IGAke2JveC50b3B9cHhgO1xuICAgICAgY2xvbmUuc3R5bGUubGVmdCA9IGAke2JveC5sZWZ0fXB4YDtcbiAgICAgIGNsb25lLmNsYXNzTGlzdC5hZGQoU3R5bGVzLmNsb25lKTtcbiAgICAgIGlmIChzaHJpbmtUb09uT3JkZXIpIGNsb25lLnN0eWxlLm1heEhlaWdodCA9IGAke2JveC5oZWlnaHR9cHhgO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChjbG9uZUNsYXNzTmFtZSkgY2xvbmUuY2xhc3NMaXN0LmFkZChjbG9uZUNsYXNzTmFtZSk7XG4gICAgICAgIGlmIChzaHJpbmtUb09uT3JkZXIpIGNsb25lLnN0eWxlLm1heEhlaWdodCA9IGAke3Nocmlua1RvT25PcmRlcn1weGA7XG4gICAgICB9LCAwKTtcblxuICAgICAgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IuY2xhc3NMaXN0LmFkZChTdHlsZXMuY3VycmVudE9yZGVyaW5nKTtcbiAgICAgIG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLnZpc2libGUpO1xuXG4gICAgICBjb25zdCBtb3ZlbWVudENvbnRyb2wgPSAoZTogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyB4OiB4MSwgeTogeTEgfSA9XG4gICAgICAgICAgXCJ0b3VjaGVzXCIgaW4gZSA/IHsgeDogZS50b3VjaGVzWzBdLnBhZ2VYLCB5OiBlLnRvdWNoZXNbMF0ucGFnZVkgfSA6IGU7XG4gICAgICAgIGlmICghb2Zmc2V0KSBvZmZzZXQgPSBbeDEgLSBib3gubGVmdCwgeTEgLSBib3gudG9wXTtcblxuICAgICAgICBjb25zdCBbb2Zmc2V0WCwgb2Zmc2V0WV0gPSBvZmZzZXQ7XG4gICAgICAgIGNsb25lLnN0eWxlLnRvcCA9IGAke3kxIC0gb2Zmc2V0WX1weGA7XG4gICAgICAgIGNsb25lLnN0eWxlLmxlZnQgPSBgJHt4MSAtIG9mZnNldFh9cHhgO1xuICAgICAgfTtcblxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgICBjb25zdCBkZWxldGVDbG9uZSA9ICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgbW92ZW1lbnRDb250cm9sKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgbW92ZW1lbnRDb250cm9sKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLCBkZWxldGVDbG9uZSk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBkZWxldGVDbG9uZSk7XG4gICAgICAgIG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLnN0eWxlLnZpc2liaWxpdHkgPSBcImluaXRpYWxcIjtcbiAgICAgICAgY3VycmVudFdvcmtpbmdLZXkuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMudW5zZWxlY3RhYmxlKTtcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkhLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgICAgIGNvbnN0IGVsSW52aXNpYmxlID0gZWxzLmZpbmQoXG4gICAgICAgICAgICAoYSkgPT5cbiAgICAgICAgICAgICAgIWEuY2xhc3NMaXN0LmNvbnRhaW5zKFN0eWxlcy52aXNpYmxlKSAmJlxuICAgICAgICAgICAgICBhLnN0eWxlLm1heEhlaWdodCAhPT0gXCIwcHhcIlxuICAgICAgICAgICkhO1xuICAgICAgICAgIGlmIChzaHJpbmtUb09uT3JkZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gZWxJbnZpc2libGUubGFzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgICAgIGNoaWxkLnN0eWxlLm1heEhlaWdodCA9IGAke2NoaWxkLnNjcm9sbEhlaWdodH1weGA7XG4gICAgICAgICAgICBjaGlsZC5jbGFzc0xpc3QuYWRkKFN0eWxlcy50cmFuc2l0aW9uSGVpZ2h0KTtcbiAgICAgICAgICAgIGNvbnN0IG9uRW5kID0gb3duRXZlbnQoKCkgPT4ge1xuICAgICAgICAgICAgICBjaGlsZC5yZW1vdmVFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCBvbkVuZCk7XG4gICAgICAgICAgICAgIGNoaWxkLnN0eWxlLm1heEhlaWdodCA9IGBpbml0aWFsYDtcbiAgICAgICAgICAgICAgY2hpbGQuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMudHJhbnNpdGlvbkhlaWdodCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNoaWxkLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIG9uRW5kKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYm94ID0gZWxJbnZpc2libGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgZnVuY3Rpb24gY2xlYW5VcCgpIHtcbiAgICAgICAgICAgIGlmIChzaHJpbmtUb09uT3JkZXIpIHtcbiAgICAgICAgICAgICAgcm9vdEVsKCkuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJwYWRkaW5nLXRvcFwiKTtcbiAgICAgICAgICAgICAgcm9vdEVsKCkuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJtaW4taGVpZ2h0XCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBldmVudEVtaXR0ZXIuZGlzcGF0Y2hlcihcIm9yZGVyLXN0b3BcIik7XG4gICAgICAgICAgICByb290RWwoKS5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy5vcmRlcmluZyk7XG4gICAgICAgICAgICBpZiAocmVvcmRlcmluZ0NsYXNzTmFtZSlcbiAgICAgICAgICAgICAgcm9vdEVsKCkuY2xhc3NMaXN0LnJlbW92ZShyZW9yZGVyaW5nQ2xhc3NOYW1lKTtcbiAgICAgICAgICAgIGZvciAobGV0IGVsIG9mIGVscykgZWwuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMudmlzaWJsZSk7XG4gICAgICAgICAgICBjbG9uZS5yZW1vdmUoKTtcbiAgICAgICAgICAgIGN1cnJlbnRDbG9uZS5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIGZvciAobGV0IGVsIG9mIEFycmF5LmZyb20oZWxJbnZpc2libGUuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W10pXG4gICAgICAgICAgICAgIGVsLnN0eWxlLmhlaWdodCA9IFwiXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNsb25lLnN0eWxlLnRvcC5zdGFydHNXaXRoKE1hdGguZmxvb3IoYm94LnRvcCkudG9TdHJpbmcoKSkgJiZcbiAgICAgICAgICAgIGNsb25lLnN0eWxlLmxlZnQuc3RhcnRzV2l0aChNYXRoLmZsb29yKGJveC5sZWZ0KS50b1N0cmluZygpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY2xlYW5VcCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbG9uZS5zdHlsZS50b3AgPSBgJHtib3gudG9wfXB4YDtcbiAgICAgICAgICAgIGNsb25lLnN0eWxlLmxlZnQgPSBgJHtib3gubGVmdH1weGA7XG4gICAgICAgICAgICBjbG9uZS5zdHlsZS50cmFuc2l0aW9uID0gYHRvcCA1MDBtcyBsaW5lYXIsIGxlZnQgNTAwbXMgbGluZWFyYDtcbiAgICAgICAgICAgIGNsb25lLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgY2xlYW5VcCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgZm9yIChsZXQgZWwgb2YgZWxzKSB7XG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoU3R5bGVzLnZpc2libGUpO1xuICAgICAgfVxuICAgICAgaWYgKHNocmlua1RvT25PcmRlcikge1xuICAgICAgICBmb3IgKGxldCBlbCBvZiBlbHMpIGVsLnN0eWxlLm1heEhlaWdodCA9IGAke2VsLnNjcm9sbEhlaWdodH1weGA7XG4gICAgICAgIGNvbnN0IHRhcmdldEhlaWdodCA9IGVsSW5kZXggKiBzaHJpbmtUb09uT3JkZXI7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPVxuICAgICAgICAgIG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLm9mZnNldFRvcCAtIGVsc1swXS5vZmZzZXRUb3A7XG4gICAgICAgIGNvbnN0IHBhZGRpbmdUb3AgPSBjdXJyZW50SGVpZ2h0IC0gdGFyZ2V0SGVpZ2h0O1xuICAgICAgICByb290RWwoKS5zdHlsZS5wYWRkaW5nVG9wID0gYCR7cGFkZGluZ1RvcH1weGA7XG4gICAgICAgIHJvb3RFbCgpLnN0eWxlLm1pbkhlaWdodCA9IGAke3Jvb3RFbCgpLmNsaWVudEhlaWdodH1weGA7XG4gICAgICB9XG4gICAgICBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgICAgIG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLnZpc2libGUpO1xuICAgICAgcm9vdEVsKCkuY2xhc3NMaXN0LmFkZChTdHlsZXMub3JkZXJpbmcpO1xuICAgICAgaWYgKHJlb3JkZXJpbmdDbGFzc05hbWUpIHJvb3RFbCgpLmNsYXNzTGlzdC5hZGQocmVvcmRlcmluZ0NsYXNzTmFtZSk7XG4gICAgICBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50ID0gY2xlYW5PcmRlclJlZi5jdXJyZW50W2VsSW5kZXhdO1xuICAgICAgZXZlbnRFbWl0dGVyLmRpc3BhdGNoZXIoXCJvcmRlci1zdGFydFwiKTtcbiAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoU3R5bGVzLnVuc2VsZWN0YWJsZSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgZGVsZXRlQ2xvbmUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgbW92ZW1lbnRDb250cm9sKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgZGVsZXRlQ2xvbmUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgbW92ZW1lbnRDb250cm9sKTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY3VycmVudENsb25lLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkhLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgY29uc3QgZWxJbnZpc2libGUgPSBlbHMuZmluZChcbiAgICAgICAgKGEpID0+XG4gICAgICAgICAgIWEuY2xhc3NMaXN0LmNvbnRhaW5zKFN0eWxlcy52aXNpYmxlKSAmJiBhLnN0eWxlLm1heEhlaWdodCAhPT0gXCIwcHhcIlxuICAgICAgKSE7XG4gICAgICAoZWxJbnZpc2libGUuY2hpbGRyZW5bMF0gYXMgSFRNTERpdkVsZW1lbnQpLnN0eWxlLmhlaWdodCA9IGAke1xuICAgICAgICBjdXJyZW50Q2xvbmUuY3VycmVudCEuY2xpZW50SGVpZ2h0XG4gICAgICB9cHhgO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIChlbEludmlzaWJsZS5jaGlsZHJlblsxXSBhcyBIVE1MRGl2RWxlbWVudCkuc3R5bGUuaGVpZ2h0ID0gYCR7XG4gICAgICAgICAgY3VycmVudENsb25lLmN1cnJlbnQhLmNsaWVudEhlaWdodFxuICAgICAgICB9cHhgO1xuICAgICAgfSwgMTUwKTtcbiAgICB9XG4gIH0sIFtjbGVhbk9yZGVyXSk7XG5cbiAgY29uc3QgdG9TcHJlYWQgPSB7IC4uLnByb3BzIH0gYXMgYW55O1xuICBkZWxldGUgdG9TcHJlYWQua2V5T3JkZXI7XG4gIGRlbGV0ZSB0b1NwcmVhZC5vbkNoYW5nZUtleU9yZGVyO1xuXG4gIGNvbnN0IGNoaWxkcmVuVG9SZW5kZXIgPSBbLi4uY2hpbGRyZW5dXG4gICAgLmZpbHRlcigoYSkgPT4gY2xlYW5PcmRlci5pbmNsdWRlcyhhLmtleSBhcyBzdHJpbmcpKVxuICAgIC5zb3J0KFxuICAgICAgKGEsIGIpID0+XG4gICAgICAgIGNsZWFuT3JkZXIuaW5kZXhPZihhLmtleSBhcyBzdHJpbmcpIC1cbiAgICAgICAgY2xlYW5PcmRlci5pbmRleE9mKGIua2V5IGFzIHN0cmluZylcbiAgICApXG4gICAgLm1hcCgoYTogUmVhY3RFbGVtZW50LCBpKSA9PiAoe1xuICAgICAgLi4uYSxcbiAgICAgIGtleTogb3JkZXJbaV0sXG4gICAgfSkpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgcm9vdEVsKCkhLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIChlKSA9PiB7XG4gICAgICBjb25zdCByZWxhdGVkQW5jaG9yID0gYW5jaG9yc0xpc3QuZmluZCgoYW5jaG9yKSA9PlxuICAgICAgICBhbmNob3IuY29udGFpbnMoZS50YXJnZXQgYXMgYW55KVxuICAgICAgKTtcbiAgICAgIGlmIChyZWxhdGVkQW5jaG9yKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25BbmNob3JDbGljayh7XG4gICAgICAgICAgdGFyZ2V0OiByZWxhdGVkQW5jaG9yLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBtb3ZlQ2IgPSB0aHJvdHRsZSgoZTogVG91Y2hFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRvdWNoID0gZS50b3VjaGVzWzBdO1xuICAgICAgICAgIGNvbnN0IFt4LCB5XSA9IFt0b3VjaC5jbGllbnRYLCB0b3VjaC5jbGllbnRZXTtcbiAgICAgICAgICBjb25zdCBlbHMgPSBBcnJheS5mcm9tKHJvb3RFbCgpLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50SWR4ID0gZWxzLmZpbmRJbmRleCgoYywgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVjdCA9IGM/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgaWYgKCFyZWN0KSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gcmVjdC50b3AgPCB5ICYmIHJlY3QudG9wICsgcmVjdC5oZWlnaHQgPiB5O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudElkeCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsID0gZWxzW2N1cnJlbnRFbGVtZW50SWR4XTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNhbGN1bGF0ZVJlb3JkZXJpbmcoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IGVsLFxuICAgICAgICAgICAgICAgIG9mZnNldFk6IHkgLSByZWN0LnRvcCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZWxzLFxuICAgICAgICAgICAgICBjbGVhbk9yZGVyUmVmLmN1cnJlbnRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCA1MDApO1xuICAgICAgICBjb25zdCB0ID0gZS50YXJnZXQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRvdWNoTW92ZUNiID0gKGU6IFRvdWNoRXZlbnQpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBUb3VjaEV2ZW50KGUudHlwZSwgZSBhcyBhbnkpKTtcbiAgICAgICAgICBtb3ZlQ2IoZSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJlbW92ZUNiID0gKGU6IFRvdWNoRXZlbnQpID0+IHtcbiAgICAgICAgICB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdG91Y2hNb3ZlQ2IpO1xuICAgICAgICAgIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIHJlbW92ZUNiKTtcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgVG91Y2hFdmVudChlLnR5cGUsIGUgYXMgYW55KSk7XG4gICAgICAgIH07XG4gICAgICAgIHQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0b3VjaE1vdmVDYik7XG4gICAgICAgIHQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIHJlbW92ZUNiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBiaW5kQW5jaG9yOiAoZWw6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgb25BbmNob3JDbGljayk7XG4gICAgICAgIGFuY2hvcnNMaXN0LnB1c2goZWwpO1xuICAgICAgfSxcbiAgICAgIHVuYmluZEFuY2hvcjogKGVsOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIG9uQW5jaG9yQ2xpY2spO1xuICAgICAgICBhbmNob3JzTGlzdC5zcGxpY2UoYW5jaG9yc0xpc3QuaW5kZXhPZihlbCksIDEpO1xuICAgICAgfSxcbiAgICAgIG9uOiBldmVudEVtaXR0ZXIuc3Vic2NyaWJlcixcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPE9yZGVyYWJsZUxpc3RDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtlfT5cbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXtyb290UmVmfVxuICAgICAgICBjbGFzc05hbWU9e2Ake1N0eWxlcy5yb290fSAke2NsYXNzTmFtZX0gJHtcbiAgICAgICAgICBzaHJpbmtUb09uT3JkZXIgPyBTdHlsZXMuc2hyaW5rYWJsZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHsuLi50b1NwcmVhZH1cbiAgICAgID5cbiAgICAgICAge21vZGUgPT09IE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZS5WRVJUSUNBTCA/IChcbiAgICAgICAgICA8QW5pbWF0ZWRFbnRyYW5jZT57Y2hpbGRyZW5Ub1JlbmRlcn08L0FuaW1hdGVkRW50cmFuY2U+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFVuY29udHJvbGxlZFRyYW5zaXRpb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17U3R5bGVzLnRyYW5zaXRpb259XG4gICAgICAgICAgICB0cmFuc2l0aW9uVHlwZT17VHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTX1cbiAgICAgICAgICAgIGNvbmZpZz17e1xuICAgICAgICAgICAgICBiYWNrd2FyZDoge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogXCJcIixcbiAgICAgICAgICAgICAgICBlbGVtZW50RXhpdGluZzogXCJcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLnN0dWJFbnRlcmluZyxcbiAgICAgICAgICAgICAgICBlbGVtZW50RXhpdGluZzogVHJhbnNpdGlvblN0eWxlcy5mYWRlT3V0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGNvbnRlbnRDbGFzc05hbWU9e2Ake2NsYXNzTmFtZX1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e29yZGVySWR9PlxuICAgICAgICAgICAgICB7Wy4uLmNoaWxkcmVuXVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGEpID0+IGNsZWFuT3JkZXIuaW5jbHVkZXMoYS5rZXkgYXMgc3RyaW5nKSlcbiAgICAgICAgICAgICAgICAuc29ydChcbiAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICBjbGVhbk9yZGVyLmluZGV4T2YoYS5rZXkgYXMgc3RyaW5nKSAtXG4gICAgICAgICAgICAgICAgICAgIGNsZWFuT3JkZXIuaW5kZXhPZihiLmtleSBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5tYXAoKGEsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxIZXJvV3JhcHBlciBrZXk9e2l9IGlkPXthLmtleSBhcyBzdHJpbmd9PlxuICAgICAgICAgICAgICAgICAgICB7YX1cbiAgICAgICAgICAgICAgICAgIDwvSGVyb1dyYXBwZXI+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgIDwvVW5jb250cm9sbGVkVHJhbnNpdGlvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvT3JkZXJhYmxlTGlzdENvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEhlcm9XcmFwcGVyKHsgY2hpbGRyZW4sIGlkIH06IFByb3BzV2l0aENoaWxkcmVuPHsgaWQ6IHN0cmluZyB9Pikge1xuICBjb25zdCB7IGhlcm9SZWYgfSA9IHVzZUhlcm8oaWQsIHVuZGVmaW5lZCwge1xuICAgIG9uSGVyb1N0YXJ0OiAoX2MsIF9vLCB0KSA9PiB7XG4gICAgICB0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIikuZm9yRWFjaChcbiAgICAgICAgKGltZykgPT4gKGltZy5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIilcbiAgICAgICk7XG4gICAgfSxcbiAgICBvbkhlcm9DbG9uZWQoY2xvbmUpIHtcbiAgICAgIC8vIGlmICghY2xvbmUuY2xhc3NMaXN0LmNvbnRhaW5zKFN0eWxlcy52aXNpYmxlKSkgY2xvbmUuc3R5bGUub3BhY2l0eSA9IFwiMFwiO1xuICAgIH0sXG4gICAgb25IZXJvRW5kOiAoKSA9PiB7XG4gICAgICBpZiAoaGVyb1JlZi5jdXJyZW50KVxuICAgICAgICBoZXJvUmVmLmN1cnJlbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVxuICAgICAgICAgIC5mb3JFYWNoKChpbWcpID0+IChpbWcuc3R5bGUudmlzaWJpbGl0eSA9IFwiXCIpKTtcbiAgICB9LFxuICB9KTtcbiAgcmV0dXJuIDxkaXYgcmVmPXtoZXJvUmVmfT57Y2hpbGRyZW59PC9kaXY+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlT3JkZXJhYmxlTGlzdEFuY2hvcigpIHtcbiAgY29uc3QgYW5jaG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsIGFzIGFueSk7XG4gIGNvbnN0IGN0eCA9IHVzZUNvbnRleHQoT3JkZXJhYmxlTGlzdENvbnRleHQpO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY3R4KSByZXR1cm47XG4gICAgY29uc3QgeyBiaW5kQW5jaG9yLCB1bmJpbmRBbmNob3IgfSA9IGN0eDtcbiAgICBiaW5kQW5jaG9yKGFuY2hvclJlZi5jdXJyZW50ISk7XG4gICAgcmV0dXJuICgpID0+IHVuYmluZEFuY2hvcihhbmNob3JSZWYuY3VycmVudCEpO1xuICB9LCBbXSk7XG4gIHJldHVybiB7XG4gICAgYW5jaG9yUmVmOiBjdHggPyBhbmNob3JSZWYgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VPcmRlcmFibGVFdmVudHMoXG4gIGV2ZW50czoge1xuICAgIFtrIGluIEV2ZW50c106ICgpID0+IHZvaWQ7XG4gIH1cbikge1xuICBjb25zdCB7IG9uIH0gPSB1c2VDb250ZXh0KE9yZGVyYWJsZUxpc3RDb250ZXh0KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB1bnN1YnNjcmliZXJzOiBhbnlbXSA9IFtdO1xuICAgIGZvciAobGV0IGV2ZW50TmFtZSBpbiBldmVudHMpIHtcbiAgICAgIHVuc3Vic2NyaWJlcnMucHVzaChvbihldmVudE5hbWUgYXMgRXZlbnRzLCBldmVudHNbZXZlbnROYW1lIGFzIEV2ZW50c10pKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHVuc3Vic2NyaWJlcnMuZm9yRWFjaCgodSkgPT4gdSgpKTtcbiAgICB9O1xuICB9LCBbZXZlbnRzXSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUFBLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQWVBLElBQUFHLHVCQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0saUJBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLG9CQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxVQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxTQUFBLEdBQUFYLHNCQUFBLENBQUFDLE9BQUE7QUFBNEMsTUFBQVcsU0FBQTtBQUFBLFNBQUFULHdCQUFBVSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBWix1QkFBQSxZQUFBQSxDQUFBVSxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQUMsT0FBQSxFQUFBVixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGdCQUFBUCxDQUFBLElBQUFELENBQUEsZ0JBQUFDLENBQUEsT0FBQWEsY0FBQSxDQUFBQyxJQUFBLENBQUFmLENBQUEsRUFBQUMsQ0FBQSxPQUFBTSxDQUFBLElBQUFELENBQUEsR0FBQVUsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWxCLENBQUEsRUFBQUMsQ0FBQSxPQUFBTSxDQUFBLENBQUFLLEdBQUEsSUFBQUwsQ0FBQSxDQUFBTSxHQUFBLElBQUFQLENBQUEsQ0FBQUUsQ0FBQSxFQUFBUCxDQUFBLEVBQUFNLENBQUEsSUFBQUMsQ0FBQSxDQUFBUCxDQUFBLElBQUFELENBQUEsQ0FBQUMsQ0FBQSxXQUFBTyxDQUFBLEtBQUFSLENBQUEsRUFBQUMsQ0FBQTtBQUFBLFNBQUFkLHVCQUFBYSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLEdBQUFMLENBQUEsS0FBQVUsT0FBQSxFQUFBVixDQUFBO0FBQUEsU0FBQW1CLFNBQUEsV0FBQUEsUUFBQSxHQUFBSCxNQUFBLENBQUFJLE1BQUEsR0FBQUosTUFBQSxDQUFBSSxNQUFBLENBQUFDLElBQUEsZUFBQWpCLENBQUEsYUFBQUosQ0FBQSxNQUFBQSxDQUFBLEdBQUFzQixTQUFBLENBQUFDLE1BQUEsRUFBQXZCLENBQUEsVUFBQUMsQ0FBQSxHQUFBcUIsU0FBQSxDQUFBdEIsQ0FBQSxZQUFBRyxDQUFBLElBQUFGLENBQUEsT0FBQWEsY0FBQSxDQUFBQyxJQUFBLENBQUFkLENBQUEsRUFBQUUsQ0FBQSxNQUFBQyxDQUFBLENBQUFELENBQUEsSUFBQUYsQ0FBQSxDQUFBRSxDQUFBLGFBQUFDLENBQUEsS0FBQWUsUUFBQSxDQUFBSyxLQUFBLE9BQUFGLFNBQUE7QUFBQSxTQUFBRyxRQUFBekIsQ0FBQSxFQUFBRyxDQUFBLFFBQUFGLENBQUEsR0FBQWUsTUFBQSxDQUFBVSxJQUFBLENBQUExQixDQUFBLE9BQUFnQixNQUFBLENBQUFXLHFCQUFBLFFBQUFyQixDQUFBLEdBQUFVLE1BQUEsQ0FBQVcscUJBQUEsQ0FBQTNCLENBQUEsR0FBQUcsQ0FBQSxLQUFBRyxDQUFBLEdBQUFBLENBQUEsQ0FBQXNCLE1BQUEsV0FBQXpCLENBQUEsV0FBQWEsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbEIsQ0FBQSxFQUFBRyxDQUFBLEVBQUEwQixVQUFBLE9BQUE1QixDQUFBLENBQUE2QixJQUFBLENBQUFOLEtBQUEsQ0FBQXZCLENBQUEsRUFBQUssQ0FBQSxZQUFBTCxDQUFBO0FBQUEsU0FBQThCLGNBQUEvQixDQUFBLGFBQUFHLENBQUEsTUFBQUEsQ0FBQSxHQUFBbUIsU0FBQSxDQUFBQyxNQUFBLEVBQUFwQixDQUFBLFVBQUFGLENBQUEsV0FBQXFCLFNBQUEsQ0FBQW5CLENBQUEsSUFBQW1CLFNBQUEsQ0FBQW5CLENBQUEsUUFBQUEsQ0FBQSxPQUFBc0IsT0FBQSxDQUFBVCxNQUFBLENBQUFmLENBQUEsT0FBQStCLE9BQUEsV0FBQTdCLENBQUEsSUFBQThCLGVBQUEsQ0FBQWpDLENBQUEsRUFBQUcsQ0FBQSxFQUFBRixDQUFBLENBQUFFLENBQUEsU0FBQWEsTUFBQSxDQUFBa0IseUJBQUEsR0FBQWxCLE1BQUEsQ0FBQW1CLGdCQUFBLENBQUFuQyxDQUFBLEVBQUFnQixNQUFBLENBQUFrQix5QkFBQSxDQUFBakMsQ0FBQSxLQUFBd0IsT0FBQSxDQUFBVCxNQUFBLENBQUFmLENBQUEsR0FBQStCLE9BQUEsV0FBQTdCLENBQUEsSUFBQWEsTUFBQSxDQUFBQyxjQUFBLENBQUFqQixDQUFBLEVBQUFHLENBQUEsRUFBQWEsTUFBQSxDQUFBRSx3QkFBQSxDQUFBakIsQ0FBQSxFQUFBRSxDQUFBLGlCQUFBSCxDQUFBO0FBQUEsU0FBQWlDLGdCQUFBakMsQ0FBQSxFQUFBRyxDQUFBLEVBQUFGLENBQUEsWUFBQUUsQ0FBQSxHQUFBaUMsY0FBQSxDQUFBakMsQ0FBQSxNQUFBSCxDQUFBLEdBQUFnQixNQUFBLENBQUFDLGNBQUEsQ0FBQWpCLENBQUEsRUFBQUcsQ0FBQSxJQUFBa0MsS0FBQSxFQUFBcEMsQ0FBQSxFQUFBNEIsVUFBQSxNQUFBUyxZQUFBLE1BQUFDLFFBQUEsVUFBQXZDLENBQUEsQ0FBQUcsQ0FBQSxJQUFBRixDQUFBLEVBQUFELENBQUE7QUFBQSxTQUFBb0MsZUFBQW5DLENBQUEsUUFBQU0sQ0FBQSxHQUFBaUMsWUFBQSxDQUFBdkMsQ0FBQSx1Q0FBQU0sQ0FBQSxHQUFBQSxDQUFBLEdBQUFBLENBQUE7QUFBQSxTQUFBaUMsYUFBQXZDLENBQUEsRUFBQUUsQ0FBQSwyQkFBQUYsQ0FBQSxLQUFBQSxDQUFBLFNBQUFBLENBQUEsTUFBQUQsQ0FBQSxHQUFBQyxDQUFBLENBQUF3QyxNQUFBLENBQUFDLFdBQUEsa0JBQUExQyxDQUFBLFFBQUFPLENBQUEsR0FBQVAsQ0FBQSxDQUFBZSxJQUFBLENBQUFkLENBQUEsRUFBQUUsQ0FBQSx1Q0FBQUksQ0FBQSxTQUFBQSxDQUFBLFlBQUFvQyxTQUFBLHlFQUFBeEMsQ0FBQSxHQUFBeUMsTUFBQSxHQUFBQyxNQUFBLEVBQUE1QyxDQUFBO0FBQUEsU0FBQTZDLHlCQUFBOUMsQ0FBQSxFQUFBQyxDQUFBLGdCQUFBRCxDQUFBLGlCQUFBTSxDQUFBLEVBQUFILENBQUEsRUFBQUksQ0FBQSxHQUFBd0MsNkJBQUEsQ0FBQS9DLENBQUEsRUFBQUMsQ0FBQSxPQUFBZSxNQUFBLENBQUFXLHFCQUFBLFFBQUF2QixDQUFBLEdBQUFZLE1BQUEsQ0FBQVcscUJBQUEsQ0FBQTNCLENBQUEsUUFBQUcsQ0FBQSxNQUFBQSxDQUFBLEdBQUFDLENBQUEsQ0FBQW1CLE1BQUEsRUFBQXBCLENBQUEsSUFBQUcsQ0FBQSxHQUFBRixDQUFBLENBQUFELENBQUEsVUFBQUYsQ0FBQSxDQUFBK0MsT0FBQSxDQUFBMUMsQ0FBQSxRQUFBMkMsb0JBQUEsQ0FBQWxDLElBQUEsQ0FBQWYsQ0FBQSxFQUFBTSxDQUFBLE1BQUFDLENBQUEsQ0FBQUQsQ0FBQSxJQUFBTixDQUFBLENBQUFNLENBQUEsYUFBQUMsQ0FBQTtBQUFBLFNBQUF3Qyw4QkFBQTVDLENBQUEsRUFBQUgsQ0FBQSxnQkFBQUcsQ0FBQSxpQkFBQUYsQ0FBQSxnQkFBQUcsQ0FBQSxJQUFBRCxDQUFBLFNBQUFXLGNBQUEsQ0FBQUMsSUFBQSxDQUFBWixDQUFBLEVBQUFDLENBQUEsZ0JBQUFKLENBQUEsQ0FBQWdELE9BQUEsQ0FBQTVDLENBQUEsYUFBQUgsQ0FBQSxDQUFBRyxDQUFBLElBQUFELENBQUEsQ0FBQUMsQ0FBQSxZQUFBSCxDQUFBO0FBSTVDLE1BQU1pRCxvQkFBb0IsZ0JBQUcsSUFBQUMsb0JBQWEsRUFJdkMsSUFBVyxDQUFDO0FBQUMsSUFFSkMsd0JBQXdCLEdBQUFDLE9BQUEsQ0FBQUQsd0JBQUEsMEJBQXhCQSx3QkFBd0I7RUFBeEJBLHdCQUF3QjtFQUF4QkEsd0JBQXdCO0VBQUEsT0FBeEJBLHdCQUF3QjtBQUFBO0FBS3BDLFNBQVNFLFNBQVNBLENBQUM1QixJQUFjLEVBQUU7RUFDakMsT0FBT0EsSUFBSSxDQUFDNkIsR0FBRyxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNlLFNBQVNDLGFBQWFBLENBQUFDLElBQUEsRUFtQ2dDO0VBQUEsSUFuQy9CO01BQ3BDQyxRQUFRO01BQ1JDLFNBQVMsR0FBRyxFQUFFO01BQ2RDLElBQUksR0FBR1Ysd0JBQXdCLENBQUNXLFFBQVE7TUFDeENDLGVBQWU7TUFDZkMsbUJBQW1CO01BQ25CQztJQTZCZ0UsQ0FBQyxHQUFBUCxJQUFBO0lBNUI5RFEsS0FBSyxHQUFBckIsd0JBQUEsQ0FBQWEsSUFBQSxFQUFBNUQsU0FBQTtFQTZCUixNQUFNcUUsYUFBYSxHQUFHUixRQUFRLENBQUNMLEdBQUcsQ0FBRUMsQ0FBQyxJQUFLQSxDQUFDLENBQUNhLEdBQWEsQ0FBQztFQUMxRCxNQUFNQyxnQkFBZ0IsR0FBR0YsYUFBYSxDQUFDRyxJQUFJLENBQUMsR0FBRyxDQUFDO0VBQ2hELE1BQU1DLGVBQWUsR0FBRyxJQUFBQyxrQkFBVyxFQUFDLE1BQU07SUFDeEMsTUFBTUMsZ0JBQWdCLEdBQ3BCLFVBQVUsSUFBSVAsS0FBSyxJQUFJQSxLQUFLLENBQUNRLFFBQVEsR0FDakNQLGFBQWEsQ0FBQ3hDLE1BQU0sQ0FBRTRCLENBQUMsSUFBSyxDQUFDVyxLQUFLLENBQUNRLFFBQVEsQ0FBRUMsUUFBUSxDQUFDcEIsQ0FBQyxDQUFDLENBQUMsR0FDekQsRUFBRTtJQUVSLE9BQ0UsQ0FBQyxVQUFVLElBQUlXLEtBQUssSUFBSUEsS0FBSyxDQUFDUSxRQUFRLEdBQ2xDLENBQUMsR0FBR1IsS0FBSyxDQUFDUSxRQUFRLEVBQUUsR0FBR0QsZ0JBQWdCLENBQUMsR0FDeENHLFNBQVMsS0FBS1QsYUFBYTtFQUVuQyxDQUFDLEVBQUUsQ0FBQ0UsZ0JBQWdCLEVBQUdILEtBQUssQ0FBU1EsUUFBUSxDQUFDLENBQUM7RUFDL0MsTUFBTTtJQUFFRyxPQUFPLEVBQUVDO0VBQVksQ0FBQyxHQUFHLElBQUFDLGFBQU0sRUFBbUIsRUFBRSxDQUFDO0VBQzdELE1BQU1DLFlBQVksR0FBRyxJQUFBQyxrQkFBUyxFQUFnQyxDQUFDO0VBQy9ELE1BQU1DLFlBQVksR0FBRyxJQUFBSCxhQUFNLEVBQXdCLElBQUksQ0FBQztFQUN4RCxNQUFNSSxpQkFBaUIsR0FBRyxJQUFBSixhQUFNLEVBQVNILFNBQVMsQ0FBQztFQUNuRCxNQUFNUSxPQUFPLEdBQUcsSUFBQUwsYUFBTSxFQUFpQixJQUFXLENBQUM7RUFDbkQsTUFBTSxDQUFDTSxNQUFNLEVBQUVDLFFBQVEsQ0FBQyxHQUFHLElBQUFDLGVBQVEsRUFBQ2hCLGVBQWUsQ0FBQztFQUNwRCxJQUFBaUIsZ0JBQVMsRUFBQyxNQUFNRixRQUFRLENBQUNmLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDQSxlQUFlLENBQUMsQ0FBQztFQUUvRCxNQUFNa0IsS0FBSyxHQUFHLElBQUFDLGNBQU8sRUFBQyxNQUFNO0lBQzFCLE9BQU8sQ0FDTCxjQUFjLElBQUl4QixLQUFLLEdBQUdBLEtBQUssQ0FBQ3lCLFlBQVksSUFBSU4sTUFBTSxHQUFHQSxNQUFNLEVBQy9EMUQsTUFBTSxDQUFFdEIsQ0FBQyxJQUFLQSxDQUFDLENBQUNzRSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUlSLGFBQWEsQ0FBQ1EsUUFBUSxDQUFDdEUsQ0FBQyxDQUFDLENBQUM7RUFDL0QsQ0FBQyxFQUFFLENBQUU2RCxLQUFLLENBQVN5QixZQUFZLEVBQUVOLE1BQU0sRUFBRWhCLGdCQUFnQixDQUFDLENBQUM7RUFDM0QsTUFBTXVCLFVBQVUsR0FBRyxJQUFBRixjQUFPLEVBQUMsTUFBTUQsS0FBSyxDQUFDbkMsR0FBRyxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQ2lDLEtBQUssQ0FBQyxDQUFDO0VBQzVFLE1BQU1JLE9BQU8sR0FBRyxJQUFBSCxjQUFPLEVBQUMsTUFBTSxNQUFNLEdBQUdFLFVBQVUsQ0FBQ3RCLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDc0IsVUFBVSxDQUFDLENBQUM7RUFDekUsU0FBU0UsTUFBTUEsQ0FBQSxFQUFHO0lBQ2hCLElBQUlqQyxJQUFJLEtBQUtWLHdCQUF3QixDQUFDNEMsY0FBYyxFQUNsRCxPQUFPWCxPQUFPLENBQUNQLE9BQU8sQ0FBRW1CLGdCQUFnQixDQUNyQ0EsZ0JBQWdCO0lBQ3JCLE9BQU9aLE9BQU8sQ0FBQ1AsT0FBTztFQUN4QjtFQUVBLE1BQU1vQixpQkFBaUIsR0FBSUMsTUFBc0IsSUFBSztJQUNwRCxJQUFJQyxNQUFzQixHQUFHRCxNQUF3QjtJQUNyRCxPQUFPQyxNQUFNLENBQUNDLGFBQWEsS0FBS04sTUFBTSxDQUFDLENBQUMsRUFBRTtNQUN4QyxJQUFJSyxNQUFNLENBQUNDLGFBQWEsS0FBSyxJQUFJLEVBQUU7TUFDbkNELE1BQU0sR0FBR0EsTUFBTSxDQUFDQyxhQUFvQjtJQUN0QztJQUNBLElBQUlDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssYUFBYSxJQUFJSixNQUFNLEtBQUssSUFBSSxFQUMzRCxNQUFNLElBQUlLLEtBQUssQ0FDYixpSEFDRixDQUFDO0lBQ0gsT0FBT0wsTUFBTTtFQUNmLENBQUM7RUFFRCxJQUFBTSxzQkFBZSxFQUFDLE1BQU07SUFDcEIsSUFBSTFDLGVBQWUsRUFDakIrQixNQUFNLENBQUMsQ0FBQyxDQUFDWSxLQUFLLENBQUNDLFdBQVcsQ0FBQyxhQUFhLEtBQUFDLE1BQUEsQ0FBSzdDLGVBQWUsT0FBSSxDQUFDO0VBQ3JFLENBQUMsRUFBRSxDQUFDQSxlQUFlLENBQUMsQ0FBQztFQUVyQixNQUFNOEMsbUJBQW1CLEdBQUcsSUFBQW5CLGNBQU8sRUFBQyxNQUFNO0lBQ3hDLE9BQU8sSUFBQW9CLGlCQUFRLEVBQUMsQ0FBQy9HLENBQU0sRUFBRWdILEdBQXFCLEVBQUVwQixZQUFzQixLQUFLO01BQ3pFLElBQUlvQixHQUFHLENBQUN6RixNQUFNLEdBQUdxRSxZQUFZLENBQUNyRSxNQUFNLElBQUksQ0FBQzZELGlCQUFpQixDQUFDTixPQUFPLEVBQ2hFO01BQ0YsTUFBTXNCLE1BQU0sR0FBR0YsaUJBQWlCLENBQUNsRyxDQUFDLENBQUNtRyxNQUFNLENBQUM7TUFDMUMsTUFBTWMsc0JBQXNCLEdBQUdELEdBQUcsQ0FBQ2hFLE9BQU8sQ0FBQ29ELE1BQU0sQ0FBQztNQUNsRCxNQUFNYyxtQkFBbUIsR0FBR3RCLFlBQVksQ0FBQ3FCLHNCQUFzQixDQUFDO01BQ2hFLE1BQU1FLG9CQUFvQixHQUN4Qi9CLGlCQUFpQixDQUFDTixPQUFPLEtBQUtvQyxtQkFBbUI7TUFDbkQsSUFBSUQsc0JBQXNCLEtBQUssQ0FBQyxDQUFDLElBQUlDLG1CQUFtQixLQUFLckMsU0FBUyxFQUNwRTtNQUNGLElBQUksQ0FBQ3NDLG9CQUFvQixFQUFFO1FBQ3pCLE1BQU07VUFBRUMsT0FBTztVQUFFQztRQUFTLENBQUMsR0FBRyxDQUFDLE1BQU07VUFDbkMsSUFBSXZELElBQUksS0FBS1Ysd0JBQXdCLENBQUM0QyxjQUFjLEVBQUU7WUFDcEQsTUFBTXNCLGdCQUFnQixHQUFHdEgsQ0FBQyxDQUFDdUgsT0FBTztZQUNsQyxNQUFNQyxTQUFTLEdBQUdwQixNQUFNLENBQUNxQixXQUFXO1lBQ3BDLE1BQU1DLE1BQU0sR0FBR0YsU0FBUyxHQUFHLElBQUk7WUFDL0IsTUFBTUosT0FBTyxHQUFHRSxnQkFBZ0IsR0FBR0UsU0FBUyxHQUFHRSxNQUFNO1lBQ3JELE1BQU1MLFFBQVEsR0FBR0MsZ0JBQWdCLEdBQUdJLE1BQU07WUFDMUMsT0FBTztjQUFFTixPQUFPO2NBQUVDO1lBQVMsQ0FBQztVQUM5QixDQUFDLE1BQU07WUFDTCxNQUFNTSxlQUFlLEdBQUczSCxDQUFDLENBQUM0SCxPQUFPO1lBQ2pDLE1BQU1DLFVBQVUsR0FBR3pCLE1BQU0sQ0FBQzBCLFlBQVk7WUFDdEMsTUFBTUosTUFBTSxHQUFHRyxVQUFVLEdBQUcsSUFBSTtZQUNoQyxNQUFNVCxPQUFPLEdBQUdPLGVBQWUsR0FBR0UsVUFBVSxHQUFHSCxNQUFNO1lBQ3JELE1BQU1MLFFBQVEsR0FBR00sZUFBZSxHQUFHRCxNQUFNO1lBQ3pDLE9BQU87Y0FBRU4sT0FBTztjQUFFQztZQUFTLENBQUM7VUFDOUI7UUFDRixDQUFDLEVBQUUsQ0FBQztRQUVKLE1BQU1VLGNBQWMsR0FBSUMsZ0JBQXlCLElBQUs7VUFDcEQsT0FDRUEsZ0JBQWdCLEtBQUtuRCxTQUFTLElBQzlCbUQsZ0JBQWdCLEtBQUs1QyxpQkFBaUIsQ0FBQ04sT0FBTztRQUVsRCxDQUFDO1FBQ0QsTUFBTW1ELG9CQUFvQixHQUN4QmhCLHNCQUFzQixJQUFJRyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdDLE1BQU1jLHVCQUF1QixHQUMzQixDQUFDZCxPQUFPLElBQUlDLFFBQVEsS0FDcEJVLGNBQWMsQ0FBQ25DLFlBQVksQ0FBQ3FDLG9CQUFvQixDQUFDLENBQUM7UUFDcEQsSUFBSUMsdUJBQXVCLEVBQUU7VUFDM0IzQyxRQUFRLENBQUU0QyxDQUFDLElBQUs7WUFDZCxNQUFNQyxhQUFhLEdBQUd4QyxZQUFZLENBQUM1QyxPQUFPLENBQ3hDb0MsaUJBQWlCLENBQUNOLE9BQ3BCLENBQUM7WUFDRCxNQUFNdUQseUJBQXlCLEdBQzdCL0UsU0FBUyxDQUFDNkUsQ0FBQyxDQUFDLENBQUNuRixPQUFPLENBQUNrRSxtQkFBbUIsQ0FBQztZQUMzQyxJQUFJZSxvQkFBb0IsR0FDdEJJLHlCQUF5QixJQUFJaEIsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJZSxhQUFhLEdBQUdILG9CQUFvQixFQUFFQSxvQkFBb0IsRUFBRTtZQUNoRSxNQUFNSyxtQkFBbUIsR0FBR0gsQ0FBQyxDQUFDdkcsTUFBTSxDQUFFNEIsQ0FBQyxJQUFLO2NBQzFDLElBQUlBLENBQUMsQ0FBQytFLFVBQVUsSUFBQTFCLE1BQUEsQ0FBSXpCLGlCQUFpQixDQUFDTixPQUFPLE1BQUcsQ0FBQyxFQUFFLE9BQU8sS0FBSztjQUMvRCxPQUFPdEIsQ0FBQyxLQUFLNEIsaUJBQWlCLENBQUNOLE9BQU87WUFDeEMsQ0FBQyxDQUFDO1lBQ0Z3RCxtQkFBbUIsQ0FBQ0UsTUFBTSxDQUN4QlAsb0JBQW9CLEVBQ3BCLENBQUMsS0FBQXBCLE1BQUEsQ0FDRXpCLGlCQUFpQixDQUFDTixPQUFPLE9BQUErQixNQUFBLENBQUk0QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLENBQzVDLENBQUM7WUFDRCxPQUFPSixtQkFBbUI7VUFDNUIsQ0FBQyxDQUFDO1FBQ0o7TUFDRjtJQUNGLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO0VBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQUE3QyxnQkFBUyxFQUFDLE1BQU07SUFDZCxTQUFTa0QsaUJBQWlCQSxDQUFBLEVBQUc7TUFDM0IsTUFBTTNCLEdBQUcsR0FBRzRCLEtBQUssQ0FBQ0MsSUFBSSxDQUFDOUMsTUFBTSxDQUFDLENBQUMsQ0FBRW5DLFFBQVEsQ0FBcUI7TUFDOUQsTUFBTWtGLHVCQUF1QixHQUFJOUksQ0FBTSxJQUFLO1FBQzFDLE1BQU1nSCxHQUFHLEdBQUc0QixLQUFLLENBQUNDLElBQUksQ0FBQzlDLE1BQU0sQ0FBQyxDQUFDLENBQUVuQyxRQUFRLENBQXFCO1FBQzlEa0QsbUJBQW1CLENBQUM5RyxDQUFDLEVBQUVnSCxHQUFHLEVBQUVuQixVQUFVLENBQUM7TUFDekMsQ0FBQztNQUNELEtBQUssSUFBSWtELEVBQUUsSUFBSS9CLEdBQUcsRUFDaEIrQixFQUFFLENBQUNDLGdCQUFnQixDQUFDLFdBQVcsRUFBRUYsdUJBQXVCLENBQUM7TUFFM0QsT0FBTyxNQUFNO1FBQ1gsS0FBSyxJQUFJQyxFQUFFLElBQUkvQixHQUFHLEVBQ2hCK0IsRUFBRSxDQUFDRSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUVILHVCQUF1QixDQUFDO01BQ2hFLENBQUM7SUFDSDtJQUVBLElBQUloRixJQUFJLEtBQUtWLHdCQUF3QixDQUFDVyxRQUFRLEVBQUU7TUFDOUMsT0FBTzRFLGlCQUFpQixDQUFDLENBQUM7SUFDNUIsQ0FBQyxNQUFNO01BQ0wsSUFBSU8sV0FBdUI7TUFDM0IsSUFBSUMsT0FBTyxHQUFHQyxVQUFVLENBQUMsTUFBTTtRQUM3QkYsV0FBVyxHQUFHUCxpQkFBaUIsQ0FBQyxDQUFDO01BQ25DLENBQUMsRUFBRSxHQUFHLENBQUM7TUFDUCxPQUFPLE1BQU07UUFDWFUsWUFBWSxDQUFDRixPQUFPLENBQUM7UUFDckIsSUFBSUQsV0FBVyxFQUFFQSxXQUFXLENBQUMsQ0FBQztNQUNoQyxDQUFDO0lBQ0g7RUFDRixDQUFDLEVBQUUsQ0FBQ3JELFVBQVUsQ0FBQyxDQUFDO0VBRWhCLElBQUFKLGdCQUFTLEVBQUMsTUFBTTtJQUNkLElBQUksa0JBQWtCLElBQUl0QixLQUFLLEVBQUVBLEtBQUssQ0FBQ21GLGdCQUFnQixDQUFDaEcsU0FBUyxDQUFDZ0MsTUFBTSxDQUFDLENBQUM7RUFDNUUsQ0FBQyxFQUFFLENBQUNBLE1BQU0sQ0FBQyxDQUFDO0VBRVosTUFBTWlFLGFBQWEsR0FBRyxJQUFBdkUsYUFBTSxFQUFDYSxVQUFVLENBQUM7RUFDeEMsSUFBQUosZ0JBQVMsRUFBQyxNQUFNO0lBQ2Q4RCxhQUFhLENBQUN6RSxPQUFPLEdBQUdlLFVBQVU7RUFDcEMsQ0FBQyxFQUFFLENBQUNBLFVBQVUsQ0FBQyxDQUFDO0VBQ2hCLE1BQU0yRCxhQUFhLEdBQUcsSUFBQS9FLGtCQUFXLEVBQy9CZ0YsS0FBQSxJQUFvRDtJQUFBLElBQW5EO01BQUV0RCxNQUFNLEVBQUV1RDtJQUFtQyxDQUFDLEdBQUFELEtBQUE7SUFDN0MsSUFBSS9CLE1BQThCO0lBQ2xDLE1BQU1pQywwQkFBMEIsR0FBR3pELGlCQUFpQixDQUNsRHdELE1BQ0YsQ0FBQztJQUNELE1BQU1FLEdBQUcsR0FBR0QsMEJBQTBCLENBQUNFLHFCQUFxQixDQUFDLENBQUM7SUFDOUQsTUFBTTdDLEdBQUcsR0FBRzRCLEtBQUssQ0FBQ0MsSUFBSSxDQUFDOUMsTUFBTSxDQUFDLENBQUMsQ0FBRW5DLFFBQVEsQ0FBcUI7SUFDOUQsTUFBTWtHLE9BQU8sR0FBRzlDLEdBQUcsQ0FBQ2hFLE9BQU8sQ0FBQzJHLDBCQUEwQixDQUFDO0lBRXZELE1BQU1JLEtBQUssR0FBR0osMEJBQTBCLENBQUNLLFNBQVMsQ0FDaEQsSUFDRixDQUFtQjtJQUNuQjdFLFlBQVksQ0FBQ0wsT0FBTyxHQUFHaUYsS0FBSztJQUM1QixJQUFJekQsT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxhQUFhLEVBQ3hDdUQsS0FBSyxDQUFDRSxZQUFZLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDO0lBQzNERixLQUFLLENBQUNFLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxzQkFBc0IsQ0FBQztJQUM5REYsS0FBSyxDQUFDcEQsS0FBSyxDQUFDdUQsS0FBSyxNQUFBckQsTUFBQSxDQUFNK0MsR0FBRyxDQUFDTSxLQUFLLE9BQUk7SUFDcENILEtBQUssQ0FBQ3BELEtBQUssQ0FBQ3dELE1BQU0sTUFBQXRELE1BQUEsQ0FBTStDLEdBQUcsQ0FBQ08sTUFBTSxPQUFJO0lBQ3RDSixLQUFLLENBQUNwRCxLQUFLLENBQUN5RCxHQUFHLE1BQUF2RCxNQUFBLENBQU0rQyxHQUFHLENBQUNRLEdBQUcsT0FBSTtJQUNoQ0wsS0FBSyxDQUFDcEQsS0FBSyxDQUFDMEQsSUFBSSxNQUFBeEQsTUFBQSxDQUFNK0MsR0FBRyxDQUFDUyxJQUFJLE9BQUk7SUFDbENOLEtBQUssQ0FBQ08sU0FBUyxDQUFDQyxHQUFHLENBQUNDLDRCQUFNLENBQUNULEtBQUssQ0FBQztJQUNqQyxJQUFJL0YsZUFBZSxFQUFFK0YsS0FBSyxDQUFDcEQsS0FBSyxDQUFDOEQsU0FBUyxNQUFBNUQsTUFBQSxDQUFNK0MsR0FBRyxDQUFDTyxNQUFNLE9BQUk7SUFDOURmLFVBQVUsQ0FBQyxNQUFNO01BQ2YsSUFBSWxGLGNBQWMsRUFBRTZGLEtBQUssQ0FBQ08sU0FBUyxDQUFDQyxHQUFHLENBQUNyRyxjQUFjLENBQUM7TUFDdkQsSUFBSUYsZUFBZSxFQUFFK0YsS0FBSyxDQUFDcEQsS0FBSyxDQUFDOEQsU0FBUyxNQUFBNUQsTUFBQSxDQUFNN0MsZUFBZSxPQUFJO0lBQ3JFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFTDJGLDBCQUEwQixDQUFDVyxTQUFTLENBQUNDLEdBQUcsQ0FBQ0MsNEJBQU0sQ0FBQ0UsZUFBZSxDQUFDO0lBQ2hFZiwwQkFBMEIsQ0FBQ1csU0FBUyxDQUFDSyxNQUFNLENBQUNILDRCQUFNLENBQUNJLE9BQU8sQ0FBQztJQUUzRCxNQUFNQyxlQUFlLEdBQUk3SyxDQUEwQixJQUFLO01BQ3RELE1BQU07UUFBRThLLENBQUMsRUFBRUMsRUFBRTtRQUFFQyxDQUFDLEVBQUVDO01BQUcsQ0FBQyxHQUNwQixTQUFTLElBQUlqTCxDQUFDLEdBQUc7UUFBRThLLENBQUMsRUFBRTlLLENBQUMsQ0FBQ2tMLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsS0FBSztRQUFFSCxDQUFDLEVBQUVoTCxDQUFDLENBQUNrTCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNFO01BQU0sQ0FBQyxHQUFHcEwsQ0FBQztNQUN2RSxJQUFJLENBQUMwSCxNQUFNLEVBQUVBLE1BQU0sR0FBRyxDQUFDcUQsRUFBRSxHQUFHbkIsR0FBRyxDQUFDUyxJQUFJLEVBQUVZLEVBQUUsR0FBR3JCLEdBQUcsQ0FBQ1EsR0FBRyxDQUFDO01BRW5ELE1BQU0sQ0FBQzdDLE9BQU8sRUFBRUssT0FBTyxDQUFDLEdBQUdGLE1BQU07TUFDakNxQyxLQUFLLENBQUNwRCxLQUFLLENBQUN5RCxHQUFHLE1BQUF2RCxNQUFBLENBQU1vRSxFQUFFLEdBQUdyRCxPQUFPLE9BQUk7TUFDckNtQyxLQUFLLENBQUNwRCxLQUFLLENBQUMwRCxJQUFJLE1BQUF4RCxNQUFBLENBQU1rRSxFQUFFLEdBQUd4RCxPQUFPLE9BQUk7SUFDeEMsQ0FBQztJQUVEOEQsUUFBUSxDQUFDQyxJQUFJLENBQUNDLFdBQVcsQ0FBQ3hCLEtBQUssQ0FBQztJQUNoQyxNQUFNeUIsV0FBVyxHQUFHQSxDQUFBLEtBQU07TUFDeEJDLE1BQU0sQ0FBQ3hDLG1CQUFtQixDQUFDLFdBQVcsRUFBRTRCLGVBQWUsQ0FBQztNQUN4RFksTUFBTSxDQUFDeEMsbUJBQW1CLENBQUMsV0FBVyxFQUFFNEIsZUFBZSxDQUFDO01BQ3hEWSxNQUFNLENBQUN4QyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUV1QyxXQUFXLENBQUM7TUFDbkRDLE1BQU0sQ0FBQ3hDLG1CQUFtQixDQUFDLFNBQVMsRUFBRXVDLFdBQVcsQ0FBQztNQUNsRDdCLDBCQUEwQixDQUFDaEQsS0FBSyxDQUFDK0UsVUFBVSxHQUFHLFNBQVM7TUFDdkR0RyxpQkFBaUIsQ0FBQ04sT0FBTyxHQUFHRCxTQUFTO01BQ3JDNEcsTUFBTSxDQUFDSixRQUFRLENBQUNDLElBQUksQ0FBQ2hCLFNBQVMsQ0FBQ0ssTUFBTSxDQUFDSCw0QkFBTSxDQUFDbUIsWUFBWSxDQUFDO01BQzFEO1FBQ0UsTUFBTTNFLEdBQUcsR0FBRzRCLEtBQUssQ0FBQ0MsSUFBSSxDQUFDOUMsTUFBTSxDQUFDLENBQUMsQ0FBRW5DLFFBQVEsQ0FBcUI7UUFDOUQsTUFBTWdJLFdBQVcsR0FBRzVFLEdBQUcsQ0FBQzZFLElBQUksQ0FDekJySSxDQUFDLElBQ0EsQ0FBQ0EsQ0FBQyxDQUFDOEcsU0FBUyxDQUFDd0IsUUFBUSxDQUFDdEIsNEJBQU0sQ0FBQ0ksT0FBTyxDQUFDLElBQ3JDcEgsQ0FBQyxDQUFDbUQsS0FBSyxDQUFDOEQsU0FBUyxLQUFLLEtBQzFCLENBQUU7UUFDRixJQUFJekcsZUFBZSxFQUFFO1VBQ25CLE1BQU0rSCxLQUFLLEdBQUdILFdBQVcsQ0FBQzNGLGdCQUFrQztVQUM1RDhGLEtBQUssQ0FBQ3BGLEtBQUssQ0FBQzhELFNBQVMsTUFBQTVELE1BQUEsQ0FBTWtGLEtBQUssQ0FBQ0MsWUFBWSxPQUFJO1VBQ2pERCxLQUFLLENBQUN6QixTQUFTLENBQUNDLEdBQUcsQ0FBQ0MsNEJBQU0sQ0FBQ3lCLGdCQUFnQixDQUFDO1VBQzVDLE1BQU1DLEtBQUssR0FBRyxJQUFBQyxpQkFBUSxFQUFDLE1BQU07WUFDM0JKLEtBQUssQ0FBQzlDLG1CQUFtQixDQUFDLGVBQWUsRUFBRWlELEtBQUssQ0FBQztZQUNqREgsS0FBSyxDQUFDcEYsS0FBSyxDQUFDOEQsU0FBUyxZQUFZO1lBQ2pDc0IsS0FBSyxDQUFDekIsU0FBUyxDQUFDSyxNQUFNLENBQUNILDRCQUFNLENBQUN5QixnQkFBZ0IsQ0FBQztVQUNqRCxDQUFDLENBQUM7VUFDRkYsS0FBSyxDQUFDL0MsZ0JBQWdCLENBQUMsZUFBZSxFQUFFa0QsS0FBSyxDQUFDO1FBQ2hEO1FBQ0EsTUFBTXRDLEdBQUcsR0FBR2dDLFdBQVcsQ0FBQy9CLHFCQUFxQixDQUFDLENBQUM7UUFDL0MsU0FBU3VDLE9BQU9BLENBQUEsRUFBRztVQUNqQixJQUFJcEksZUFBZSxFQUFFO1lBQ25CK0IsTUFBTSxDQUFDLENBQUMsQ0FBQ1ksS0FBSyxDQUFDMEYsY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUM1Q3RHLE1BQU0sQ0FBQyxDQUFDLENBQUNZLEtBQUssQ0FBQzBGLGNBQWMsQ0FBQyxZQUFZLENBQUM7VUFDN0M7VUFFQXBILFlBQVksQ0FBQ3FILFVBQVUsQ0FBQyxZQUFZLENBQUM7VUFDckN2RyxNQUFNLENBQUMsQ0FBQyxDQUFDdUUsU0FBUyxDQUFDSyxNQUFNLENBQUNILDRCQUFNLENBQUMrQixRQUFRLENBQUM7VUFDMUMsSUFBSXRJLG1CQUFtQixFQUNyQjhCLE1BQU0sQ0FBQyxDQUFDLENBQUN1RSxTQUFTLENBQUNLLE1BQU0sQ0FBQzFHLG1CQUFtQixDQUFDO1VBQ2hELEtBQUssSUFBSThFLEVBQUUsSUFBSS9CLEdBQUcsRUFBRStCLEVBQUUsQ0FBQ3VCLFNBQVMsQ0FBQ0ssTUFBTSxDQUFDSCw0QkFBTSxDQUFDSSxPQUFPLENBQUM7VUFDdkRiLEtBQUssQ0FBQ1ksTUFBTSxDQUFDLENBQUM7VUFDZHhGLFlBQVksQ0FBQ0wsT0FBTyxHQUFHLElBQUk7VUFDM0IsS0FBSyxJQUFJaUUsRUFBRSxJQUFJSCxLQUFLLENBQUNDLElBQUksQ0FBQytDLFdBQVcsQ0FBQ2hJLFFBQVEsQ0FBQyxFQUM3Q21GLEVBQUUsQ0FBQ3BDLEtBQUssQ0FBQ3dELE1BQU0sR0FBRyxFQUFFO1FBQ3hCO1FBQ0EsSUFDRUosS0FBSyxDQUFDcEQsS0FBSyxDQUFDeUQsR0FBRyxDQUFDN0IsVUFBVSxDQUFDaUUsSUFBSSxDQUFDQyxLQUFLLENBQUM3QyxHQUFHLENBQUNRLEdBQUcsQ0FBQyxDQUFDc0MsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUMxRDNDLEtBQUssQ0FBQ3BELEtBQUssQ0FBQzBELElBQUksQ0FBQzlCLFVBQVUsQ0FBQ2lFLElBQUksQ0FBQ0MsS0FBSyxDQUFDN0MsR0FBRyxDQUFDUyxJQUFJLENBQUMsQ0FBQ3FDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFDNUQ7VUFDQU4sT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLE1BQU07VUFDTHJDLEtBQUssQ0FBQ3BELEtBQUssQ0FBQ3lELEdBQUcsTUFBQXZELE1BQUEsQ0FBTStDLEdBQUcsQ0FBQ1EsR0FBRyxPQUFJO1VBQ2hDTCxLQUFLLENBQUNwRCxLQUFLLENBQUMwRCxJQUFJLE1BQUF4RCxNQUFBLENBQU0rQyxHQUFHLENBQUNTLElBQUksT0FBSTtVQUNsQ04sS0FBSyxDQUFDcEQsS0FBSyxDQUFDZ0csVUFBVSx3Q0FBd0M7VUFDOUQ1QyxLQUFLLENBQUNmLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxNQUFNO1lBQzVDb0QsT0FBTyxDQUFDLENBQUM7VUFDWCxDQUFDLENBQUM7UUFDSjtNQUNGO0lBQ0YsQ0FBQztJQUNELEtBQUssSUFBSXJELEVBQUUsSUFBSS9CLEdBQUcsRUFBRTtNQUNsQitCLEVBQUUsQ0FBQ3VCLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDQyw0QkFBTSxDQUFDSSxPQUFPLENBQUM7SUFDbEM7SUFDQSxJQUFJNUcsZUFBZSxFQUFFO01BQ25CLEtBQUssSUFBSStFLEVBQUUsSUFBSS9CLEdBQUcsRUFBRStCLEVBQUUsQ0FBQ3BDLEtBQUssQ0FBQzhELFNBQVMsTUFBQTVELE1BQUEsQ0FBTWtDLEVBQUUsQ0FBQ2lELFlBQVksT0FBSTtNQUMvRCxNQUFNWSxZQUFZLEdBQUc5QyxPQUFPLEdBQUc5RixlQUFlO01BQzlDLE1BQU02SSxhQUFhLEdBQ2pCbEQsMEJBQTBCLENBQUNtRCxTQUFTLEdBQUc5RixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM4RixTQUFTO01BQ3pELE1BQU1DLFVBQVUsR0FBR0YsYUFBYSxHQUFHRCxZQUFZO01BQy9DN0csTUFBTSxDQUFDLENBQUMsQ0FBQ1ksS0FBSyxDQUFDb0csVUFBVSxNQUFBbEcsTUFBQSxDQUFNa0csVUFBVSxPQUFJO01BQzdDaEgsTUFBTSxDQUFDLENBQUMsQ0FBQ1ksS0FBSyxDQUFDcUcsU0FBUyxNQUFBbkcsTUFBQSxDQUFNZCxNQUFNLENBQUMsQ0FBQyxDQUFDK0IsWUFBWSxPQUFJO0lBQ3pEO0lBQ0E2QiwwQkFBMEIsQ0FBQ2hELEtBQUssQ0FBQytFLFVBQVUsR0FBRyxRQUFRO0lBQ3REL0IsMEJBQTBCLENBQUNXLFNBQVMsQ0FBQ0ssTUFBTSxDQUFDSCw0QkFBTSxDQUFDSSxPQUFPLENBQUM7SUFDM0Q3RSxNQUFNLENBQUMsQ0FBQyxDQUFDdUUsU0FBUyxDQUFDQyxHQUFHLENBQUNDLDRCQUFNLENBQUMrQixRQUFRLENBQUM7SUFDdkMsSUFBSXRJLG1CQUFtQixFQUFFOEIsTUFBTSxDQUFDLENBQUMsQ0FBQ3VFLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDdEcsbUJBQW1CLENBQUM7SUFDcEVtQixpQkFBaUIsQ0FBQ04sT0FBTyxHQUFHeUUsYUFBYSxDQUFDekUsT0FBTyxDQUFDZ0YsT0FBTyxDQUFDO0lBQzFEN0UsWUFBWSxDQUFDcUgsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN0Q2IsTUFBTSxDQUFDSixRQUFRLENBQUNDLElBQUksQ0FBQ2hCLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDQyw0QkFBTSxDQUFDbUIsWUFBWSxDQUFDO0lBQ3ZERixNQUFNLENBQUN6QyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUV3QyxXQUFXLENBQUM7SUFDL0NDLE1BQU0sQ0FBQ3pDLGdCQUFnQixDQUFDLFdBQVcsRUFBRTZCLGVBQWUsQ0FBQztJQUNyRFksTUFBTSxDQUFDekMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFd0MsV0FBVyxDQUFDO0lBQ2hEQyxNQUFNLENBQUN6QyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUU2QixlQUFlLENBQUM7RUFDdkQsQ0FBQyxFQUNELEVBQ0YsQ0FBQztFQUVELElBQUFuRSxzQkFBZSxFQUFDLE1BQU07SUFDcEIsSUFBSXZCLFlBQVksQ0FBQ0wsT0FBTyxFQUFFO01BQ3hCLE1BQU1rQyxHQUFHLEdBQUc0QixLQUFLLENBQUNDLElBQUksQ0FBQzlDLE1BQU0sQ0FBQyxDQUFDLENBQUVuQyxRQUFRLENBQXFCO01BQzlELE1BQU1nSSxXQUFXLEdBQUc1RSxHQUFHLENBQUM2RSxJQUFJLENBQ3pCckksQ0FBQyxJQUNBLENBQUNBLENBQUMsQ0FBQzhHLFNBQVMsQ0FBQ3dCLFFBQVEsQ0FBQ3RCLDRCQUFNLENBQUNJLE9BQU8sQ0FBQyxJQUFJcEgsQ0FBQyxDQUFDbUQsS0FBSyxDQUFDOEQsU0FBUyxLQUFLLEtBQ25FLENBQUU7TUFDRG1CLFdBQVcsQ0FBQ2hJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBb0IrQyxLQUFLLENBQUN3RCxNQUFNLE1BQUF0RCxNQUFBLENBQ3REMUIsWUFBWSxDQUFDTCxPQUFPLENBQUVnRCxZQUFZLE9BQ2hDO01BQ0pzQixVQUFVLENBQUMsTUFBTTtRQUNkd0MsV0FBVyxDQUFDaEksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFvQitDLEtBQUssQ0FBQ3dELE1BQU0sTUFBQXRELE1BQUEsQ0FDdEQxQixZQUFZLENBQUNMLE9BQU8sQ0FBRWdELFlBQVksT0FDaEM7TUFDTixDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ1Q7RUFDRixDQUFDLEVBQUUsQ0FBQ2pDLFVBQVUsQ0FBQyxDQUFDO0VBRWhCLE1BQU1vSCxRQUFRLEdBQUFsTCxhQUFBLEtBQVFvQyxLQUFLLENBQVM7RUFDcEMsT0FBTzhJLFFBQVEsQ0FBQ3RJLFFBQVE7RUFDeEIsT0FBT3NJLFFBQVEsQ0FBQzNELGdCQUFnQjtFQUVoQyxNQUFNNEQsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHdEosUUFBUSxDQUFDLENBQ25DaEMsTUFBTSxDQUFFNEIsQ0FBQyxJQUFLcUMsVUFBVSxDQUFDakIsUUFBUSxDQUFDcEIsQ0FBQyxDQUFDYSxHQUFhLENBQUMsQ0FBQyxDQUNuRDhJLElBQUksQ0FDSCxDQUFDM0osQ0FBQyxFQUFFNEosQ0FBQyxLQUNIdkgsVUFBVSxDQUFDN0MsT0FBTyxDQUFDUSxDQUFDLENBQUNhLEdBQWEsQ0FBQyxHQUNuQ3dCLFVBQVUsQ0FBQzdDLE9BQU8sQ0FBQ29LLENBQUMsQ0FBQy9JLEdBQWEsQ0FDdEMsQ0FBQyxDQUNBZCxHQUFHLENBQUMsQ0FBQ0MsQ0FBZSxFQUFFakQsQ0FBQyxLQUFBd0IsYUFBQSxDQUFBQSxhQUFBLEtBQ25CeUIsQ0FBQztJQUNKYSxHQUFHLEVBQUVxQixLQUFLLENBQUNuRixDQUFDO0VBQUMsRUFDYixDQUFDO0VBRUwsSUFBQW1HLHNCQUFlLEVBQUMsTUFBTTtJQUNwQlgsTUFBTSxDQUFDLENBQUMsQ0FBRWlELGdCQUFnQixDQUFDLFlBQVksRUFBR2hKLENBQUMsSUFBSztNQUM5QyxNQUFNcU4sYUFBYSxHQUFHdEksV0FBVyxDQUFDOEcsSUFBSSxDQUFFbkMsTUFBTSxJQUM1Q0EsTUFBTSxDQUFDb0MsUUFBUSxDQUFDOUwsQ0FBQyxDQUFDbUcsTUFBYSxDQUNqQyxDQUFDO01BQ0QsSUFBSWtILGFBQWEsRUFBRTtRQUNqQnJOLENBQUMsQ0FBQ3NOLGNBQWMsQ0FBQyxDQUFDO1FBQ2xCOUQsYUFBYSxDQUFDO1VBQ1pyRCxNQUFNLEVBQUVrSDtRQUNWLENBQUMsQ0FBQztRQUVGLE1BQU1FLE1BQU0sR0FBRyxJQUFBeEcsaUJBQVEsRUFBRS9HLENBQWEsSUFBSztVQUN6QyxNQUFNd04sS0FBSyxHQUFHeE4sQ0FBQyxDQUFDa0wsT0FBTyxDQUFDLENBQUMsQ0FBQztVQUMxQixNQUFNLENBQUNKLENBQUMsRUFBRUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQ3dDLEtBQUssQ0FBQ0MsT0FBTyxFQUFFRCxLQUFLLENBQUNFLE9BQU8sQ0FBQztVQUM3QyxNQUFNMUcsR0FBRyxHQUFHNEIsS0FBSyxDQUFDQyxJQUFJLENBQUM5QyxNQUFNLENBQUMsQ0FBQyxDQUFDbkMsUUFBUSxDQUFxQjtVQUM3RCxNQUFNK0osaUJBQWlCLEdBQUczRyxHQUFHLENBQUM0RyxTQUFTLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFdE4sQ0FBQyxLQUFLO1lBQ2hELE1BQU11TixJQUFJLEdBQUdELENBQUMsYUFBREEsQ0FBQyx1QkFBREEsQ0FBQyxDQUFFaEUscUJBQXFCLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUNpRSxJQUFJLEVBQUUsT0FBTyxLQUFLO1lBQ3ZCLE9BQU9BLElBQUksQ0FBQzFELEdBQUcsR0FBR1ksQ0FBQyxJQUFJOEMsSUFBSSxDQUFDMUQsR0FBRyxHQUFHMEQsSUFBSSxDQUFDM0QsTUFBTSxHQUFHYSxDQUFDO1VBQ25ELENBQUMsQ0FBQztVQUNGLElBQUkyQyxpQkFBaUIsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM1QixNQUFNNUUsRUFBRSxHQUFHL0IsR0FBRyxDQUFDMkcsaUJBQWlCLENBQUM7WUFDakMsTUFBTUcsSUFBSSxHQUFHL0UsRUFBRSxDQUFDYyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3ZDL0MsbUJBQW1CLENBQ2pCO2NBQ0VYLE1BQU0sRUFBRTRDLEVBQUU7Y0FDVm5CLE9BQU8sRUFBRW9ELENBQUMsR0FBRzhDLElBQUksQ0FBQzFEO1lBQ3BCLENBQUMsRUFDRHBELEdBQUcsRUFDSHVDLGFBQWEsQ0FBQ3pFLE9BQ2hCLENBQUM7VUFDSDtRQUNGLENBQUMsRUFBRSxHQUFHLENBQUM7UUFDUCxNQUFNN0UsQ0FBQyxHQUFHRCxDQUFDLENBQUNtRyxNQUF3QjtRQUNwQyxNQUFNNEgsV0FBVyxHQUFJL04sQ0FBYSxJQUFLO1VBQ3JDQSxDQUFDLENBQUNnTyxlQUFlLENBQUMsQ0FBQztVQUNuQnZDLE1BQU0sQ0FBQ3dDLGFBQWEsQ0FBQyxJQUFJQyxVQUFVLENBQUNsTyxDQUFDLENBQUNtTyxJQUFJLEVBQUVuTyxDQUFRLENBQUMsQ0FBQztVQUN0RHVOLE1BQU0sQ0FBQ3ZOLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxNQUFNb08sUUFBUSxHQUFJcE8sQ0FBYSxJQUFLO1VBQ2xDQyxDQUFDLENBQUNnSixtQkFBbUIsQ0FBQyxXQUFXLEVBQUU4RSxXQUFXLENBQUM7VUFDL0M5TixDQUFDLENBQUNnSixtQkFBbUIsQ0FBQyxVQUFVLEVBQUVtRixRQUFRLENBQUM7VUFDM0MzQyxNQUFNLENBQUN3QyxhQUFhLENBQUMsSUFBSUMsVUFBVSxDQUFDbE8sQ0FBQyxDQUFDbU8sSUFBSSxFQUFFbk8sQ0FBUSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNEQyxDQUFDLENBQUMrSSxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUrRSxXQUFXLENBQUM7UUFDNUM5TixDQUFDLENBQUMrSSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUVvRixRQUFRLENBQUM7TUFDMUM7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sTUFBTXBPLENBQUMsR0FBRyxJQUFBMkYsY0FBTyxFQUNmLE9BQU87SUFDTDBJLFVBQVUsRUFBR3RGLEVBQWtCLElBQUs7TUFDbENBLEVBQUUsQ0FBQ0MsZ0JBQWdCLENBQUMsV0FBVyxFQUFFUSxhQUFhLENBQUM7TUFDL0N6RSxXQUFXLENBQUNqRCxJQUFJLENBQUNpSCxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNEdUYsWUFBWSxFQUFHdkYsRUFBa0IsSUFBSztNQUNwQ0EsRUFBRSxDQUFDRSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUVPLGFBQWEsQ0FBQztNQUNsRHpFLFdBQVcsQ0FBQ3lELE1BQU0sQ0FBQ3pELFdBQVcsQ0FBQy9CLE9BQU8sQ0FBQytGLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0R3RixFQUFFLEVBQUV0SixZQUFZLENBQUN1SjtFQUNuQixDQUFDLENBQUMsRUFDRixFQUNGLENBQUM7RUFFRCxvQkFDRW5QLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQStOLGFBQUEsQ0FBQ3ZMLG9CQUFvQixDQUFDd0wsUUFBUTtJQUFDck0sS0FBSyxFQUFFckM7RUFBRSxnQkFDdENYLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQStOLGFBQUEsUUFBQXROLFFBQUE7SUFDRXdOLEdBQUcsRUFBRXRKLE9BQVE7SUFDYnhCLFNBQVMsS0FBQWdELE1BQUEsQ0FBSzJELDRCQUFNLENBQUNvRSxJQUFJLE9BQUEvSCxNQUFBLENBQUloRCxTQUFTLE9BQUFnRCxNQUFBLENBQ3BDN0MsZUFBZSxHQUFHd0csNEJBQU0sQ0FBQ3FFLFVBQVUsR0FBRyxFQUFFO0VBQ3ZDLEdBQ0M1QixRQUFRLEdBRVhuSixJQUFJLEtBQUtWLHdCQUF3QixDQUFDVyxRQUFRLGdCQUN6QzFFLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQStOLGFBQUEsQ0FBQy9PLGlCQUFBLENBQUFnQixPQUFnQixRQUFFd00sZ0JBQW1DLENBQUMsZ0JBRXZEN04sTUFBQSxDQUFBcUIsT0FBQSxDQUFBK04sYUFBQSxDQUFDbFAsdUJBQUEsQ0FBQW1CLE9BQXNCO0lBQ3JCbUQsU0FBUyxFQUFFMkcsNEJBQU0sQ0FBQ21DLFVBQVc7SUFDN0JtQyxjQUFjLEVBQUVDLG9DQUF3QixDQUFDQyxNQUFPO0lBQ2hEQyxNQUFNLEVBQUU7TUFDTkMsUUFBUSxFQUFFO1FBQ1JDLGVBQWUsRUFBRSxFQUFFO1FBQ25CQyxjQUFjLEVBQUU7TUFDbEIsQ0FBQztNQUNEQyxPQUFPLEVBQUU7UUFDUEYsZUFBZSxFQUFFM0UsNEJBQU0sQ0FBQzhFLFlBQVk7UUFDcENGLGNBQWMsRUFBRUcseUJBQWdCLENBQUNDO01BQ25DO0lBQ0YsQ0FBRTtJQUNGQyxnQkFBZ0IsS0FBQTVJLE1BQUEsQ0FBS2hELFNBQVM7RUFBRyxnQkFFakN4RSxNQUFBLENBQUFxQixPQUFBLENBQUErTixhQUFBLENBQUNwUCxNQUFBLENBQUFxUSxRQUFRO0lBQUNyTCxHQUFHLEVBQUV5QjtFQUFRLEdBQ3BCLENBQUMsR0FBR2xDLFFBQVEsQ0FBQyxDQUNYaEMsTUFBTSxDQUFFNEIsQ0FBQyxJQUFLcUMsVUFBVSxDQUFDakIsUUFBUSxDQUFDcEIsQ0FBQyxDQUFDYSxHQUFhLENBQUMsQ0FBQyxDQUNuRDhJLElBQUksQ0FDSCxDQUFDM0osQ0FBQyxFQUFFNEosQ0FBQyxLQUNIdkgsVUFBVSxDQUFDN0MsT0FBTyxDQUFDUSxDQUFDLENBQUNhLEdBQWEsQ0FBQyxHQUNuQ3dCLFVBQVUsQ0FBQzdDLE9BQU8sQ0FBQ29LLENBQUMsQ0FBQy9JLEdBQWEsQ0FDdEMsQ0FBQyxDQUNBZCxHQUFHLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFakQsQ0FBQyxrQkFDUmxCLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQStOLGFBQUEsQ0FBQ2tCLFdBQVc7SUFBQ3RMLEdBQUcsRUFBRTlELENBQUU7SUFBQ3FQLEVBQUUsRUFBRXBNLENBQUMsQ0FBQ2E7RUFBYyxHQUN0Q2IsQ0FDVSxDQUNkLENBQ0ssQ0FDWSxDQUV2QixDQUN3QixDQUFDO0FBRXBDO0FBRUEsU0FBU21NLFdBQVdBLENBQUFFLEtBQUEsRUFBc0Q7RUFBQSxJQUFyRDtJQUFFak0sUUFBUTtJQUFFZ007RUFBc0MsQ0FBQyxHQUFBQyxLQUFBO0VBQ3RFLE1BQU07SUFBRUM7RUFBUSxDQUFDLEdBQUcsSUFBQUMsZ0JBQU8sRUFBQ0gsRUFBRSxFQUFFL0ssU0FBUyxFQUFFO0lBQ3pDbUwsV0FBVyxFQUFFQSxDQUFDQyxFQUFFLEVBQUVDLEVBQUUsRUFBRWpRLENBQUMsS0FBSztNQUMxQkEsQ0FBQyxDQUFDa1EsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUNuTyxPQUFPLENBQzlCb08sR0FBRyxJQUFNQSxHQUFHLENBQUN6SixLQUFLLENBQUMrRSxVQUFVLEdBQUcsUUFDbkMsQ0FBQztJQUNILENBQUM7SUFDRDJFLFlBQVlBLENBQUN0RyxLQUFLLEVBQUU7TUFDbEI7SUFBQSxDQUNEO0lBQ0R1RyxTQUFTLEVBQUVBLENBQUEsS0FBTTtNQUNmLElBQUlSLE9BQU8sQ0FBQ2hMLE9BQU8sRUFDakJnTCxPQUFPLENBQUNoTCxPQUFPLENBQ1pxTCxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FDdkJuTyxPQUFPLENBQUVvTyxHQUFHLElBQU1BLEdBQUcsQ0FBQ3pKLEtBQUssQ0FBQytFLFVBQVUsR0FBRyxFQUFHLENBQUM7SUFDcEQ7RUFDRixDQUFDLENBQUM7RUFDRixvQkFBT3JNLE1BQUEsQ0FBQXFCLE9BQUEsQ0FBQStOLGFBQUE7SUFBS0UsR0FBRyxFQUFFbUI7RUFBUSxHQUFFbE0sUUFBYyxDQUFDO0FBQzVDO0FBRU8sU0FBUzJNLHNCQUFzQkEsQ0FBQSxFQUFHO0VBQ3ZDLE1BQU1DLFNBQVMsR0FBRyxJQUFBeEwsYUFBTSxFQUFpQixJQUFXLENBQUM7RUFDckQsTUFBTXlMLEdBQUcsR0FBRyxJQUFBQyxpQkFBVSxFQUFDeE4sb0JBQW9CLENBQUM7RUFDNUMsSUFBQXdELHNCQUFlLEVBQUMsTUFBTTtJQUNwQixJQUFJLENBQUMrSixHQUFHLEVBQUU7SUFDVixNQUFNO01BQUVwQyxVQUFVO01BQUVDO0lBQWEsQ0FBQyxHQUFHbUMsR0FBRztJQUN4Q3BDLFVBQVUsQ0FBQ21DLFNBQVMsQ0FBQzFMLE9BQVEsQ0FBQztJQUM5QixPQUFPLE1BQU13SixZQUFZLENBQUNrQyxTQUFTLENBQUMxTCxPQUFRLENBQUM7RUFDL0MsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUNOLE9BQU87SUFDTDBMLFNBQVMsRUFBRUMsR0FBRyxHQUFHRCxTQUFTLEdBQUczTDtFQUMvQixDQUFDO0FBQ0g7QUFFTyxTQUFTOEwsa0JBQWtCQSxDQUNoQ0MsTUFFQyxFQUNEO0VBQ0EsTUFBTTtJQUFFckM7RUFBRyxDQUFDLEdBQUcsSUFBQW1DLGlCQUFVLEVBQUN4TixvQkFBb0IsQ0FBQztFQUMvQyxJQUFBdUMsZ0JBQVMsRUFBQyxNQUFNO0lBQ2QsTUFBTW9MLGFBQW9CLEdBQUcsRUFBRTtJQUMvQixLQUFLLElBQUlDLFNBQVMsSUFBSUYsTUFBTSxFQUFFO01BQzVCQyxhQUFhLENBQUMvTyxJQUFJLENBQUN5TSxFQUFFLENBQUN1QyxTQUFTLEVBQVlGLE1BQU0sQ0FBQ0UsU0FBUyxDQUFXLENBQUMsQ0FBQztJQUMxRTtJQUNBLE9BQU8sTUFBTTtNQUNYRCxhQUFhLENBQUM3TyxPQUFPLENBQUUrTyxDQUFDLElBQUtBLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDSCxNQUFNLENBQUMsQ0FBQztBQUNkIiwiaWdub3JlTGlzdCI6W119
438
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGhyb3R0bGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX1VuY29udHJvbGxlZFRyYW5zaXRpb24iLCJfVHJhbnNpdGlvbk1vZHVsZSIsIl91c2VIZXJvIiwiX0FuaW1hdGVkRW50cmFuY2UiLCJfVHJhbnNpdGlvbiIsIl9PcmRlcmFibGVMaXN0TW9kdWxlIiwiX3VzZUV2ZW50cyIsIl9vd25FdmVudCIsIl9leGNsdWRlZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFwcGx5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiT3JkZXJhYmxlTGlzdENvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlIiwiZXhwb3J0cyIsImNsZWFuS2V5cyIsIm1hcCIsImEiLCJzcGxpdCIsIk9yZGVyYWJsZUxpc3QiLCJfcmVmIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJtb2RlIiwiVkVSVElDQUwiLCJzaHJpbmtUb09uT3JkZXIiLCJyZW9yZGVyaW5nQ2xhc3NOYW1lIiwiY2xvbmVDbGFzc05hbWUiLCJwcm9wcyIsImF2YWlsYWJsZUtleXMiLCJrZXkiLCJhdmFpbGFibGVLZXlzRGVwIiwiam9pbiIsImluaXRpYWxpemVPcmRlciIsInVzZUNhbGxiYWNrIiwibWlzc2luZ09yZGVyS2V5cyIsImtleU9yZGVyIiwiaW5jbHVkZXMiLCJ1bmRlZmluZWQiLCJjdXJyZW50IiwiYW5jaG9yc0xpc3QiLCJ1c2VSZWYiLCJldmVudEVtaXR0ZXIiLCJ1c2VFdmVudHMiLCJjdXJyZW50Q2xvbmUiLCJjdXJyZW50V29ya2luZ0tleSIsInJvb3RSZWYiLCJfb3JkZXIiLCJzZXRPcmRlciIsInVzZVN0YXRlIiwidXNlRWZmZWN0Iiwib3JkZXIiLCJ1c2VNZW1vIiwiY3VycmVudE9yZGVyIiwiY2xlYW5PcmRlciIsIm9yZGVySWQiLCJyb290RWwiLCJUV09fRElNRU5TSU9OUyIsImxhc3RFbGVtZW50Q2hpbGQiLCJmaW5kUGFyZW50RWxlbWVudCIsInRhcmdldCIsInBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJFcnJvciIsInVzZUxheW91dEVmZmVjdCIsInN0eWxlIiwic2V0UHJvcGVydHkiLCJjb25jYXQiLCJjYWxjdWxhdGVSZW9yZGVyaW5nIiwidGhyb3R0bGUiLCJlbHMiLCJpbmRleE9mS2V5SW5DbGVhbk9yZGVyIiwia2V5T2ZUaGVPdmVyRWxlbWVudCIsImlzRHJhZ2dpbmdPd25FbGVtZW50IiwiaXNBZnRlciIsImlzQmVmb3JlIiwiZGlzdGFuY2VGcm9tTGVmdCIsIm9mZnNldFgiLCJ3aWR0aE9mRWwiLCJjbGllbnRXaWR0aCIsIm9mZnNldCIsImRpc3RhbmNlRnJvbVRvcCIsIm9mZnNldFkiLCJoZWlnaHRPZkVsIiwiY2xpZW50SGVpZ2h0IiwiY2hlY2tJZkNhbk1vdmUiLCJrZXlPZk92ZXJFbGVtZW50IiwiaW5kZXhPZlRoZU5ld0VsZW1lbnQiLCJzaG91bGRUcmlnZ2VyUmVvcmRlcmluZyIsInAiLCJwcmV2aW91c0luZGV4IiwiaW5kZXhPZktleUluUHJvdmlkZWRPcmRlciIsIm9yZGVyV2l0aG91dEN1cnJlbnQiLCJzdGFydHNXaXRoIiwic3BsaWNlIiwiRGF0ZSIsIm5vdyIsInJlZ2lzdGVyTGlzdGVuZXJzIiwiQXJyYXkiLCJmcm9tIiwiY2FsY3VsYXRlUmVvcmRlcmluZ0NhbGwiLCJlbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5zdWJzY3JpYmUiLCJ0aW1lb3V0Iiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsIm9uQ2hhbmdlS2V5T3JkZXIiLCJjbGVhbk9yZGVyUmVmIiwib25BbmNob3JDbGljayIsIl9yZWYyIiwiYW5jaG9yIiwib3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IiLCJib3giLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJlbEluZGV4IiwiY2xvbmUiLCJjbG9uZU5vZGUiLCJzZXRBdHRyaWJ1dGUiLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJTdHlsZXMiLCJtYXhIZWlnaHQiLCJjdXJyZW50T3JkZXJpbmciLCJyZW1vdmUiLCJ2aXNpYmxlIiwibW92ZW1lbnRDb250cm9sIiwieCIsIngxIiwieSIsInkxIiwidG91Y2hlcyIsInBhZ2VYIiwicGFnZVkiLCJkb2N1bWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImRlbGV0ZUNsb25lIiwid2luZG93IiwidmlzaWJpbGl0eSIsInVuc2VsZWN0YWJsZSIsImVsSW52aXNpYmxlIiwiZmluZCIsImNvbnRhaW5zIiwiY2hpbGQiLCJzY3JvbGxIZWlnaHQiLCJ0cmFuc2l0aW9uSGVpZ2h0Iiwib25FbmQiLCJvd25FdmVudCIsImNsZWFuVXAiLCJyZW1vdmVQcm9wZXJ0eSIsImRpc3BhdGNoZXIiLCJvcmRlcmluZyIsIk1hdGgiLCJmbG9vciIsInRvU3RyaW5nIiwidHJhbnNpdGlvbiIsInRhcmdldEhlaWdodCIsImN1cnJlbnRIZWlnaHQiLCJvZmZzZXRUb3AiLCJwYWRkaW5nVG9wIiwibWluSGVpZ2h0IiwidG9TcHJlYWQiLCJjaGlsZHJlblRvUmVuZGVyIiwic29ydCIsImIiLCJyZWxhdGVkQW5jaG9yIiwicHJldmVudERlZmF1bHQiLCJtb3ZlQ2IiLCJ0b3VjaCIsImNsaWVudFgiLCJjbGllbnRZIiwiY3VycmVudEVsZW1lbnRJZHgiLCJmaW5kSW5kZXgiLCJjIiwicmVjdCIsInRvdWNoTW92ZUNiIiwic3RvcFByb3BhZ2F0aW9uIiwiZGlzcGF0Y2hFdmVudCIsIlRvdWNoRXZlbnQiLCJ0eXBlIiwicmVtb3ZlQ2IiLCJiaW5kQW5jaG9yIiwidW5iaW5kQW5jaG9yIiwib24iLCJzdWJzY3JpYmVyIiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIiwicmVmIiwicm9vdCIsInNocmlua2FibGUiLCJ0cmFuc2l0aW9uVHlwZSIsIlRyYW5zaXRpb25BbmltYXRpb25UeXBlcyIsIkNVU1RPTSIsImNvbmZpZyIsImJhY2t3YXJkIiwiZWxlbWVudEVudGVyaW5nIiwiZWxlbWVudEV4aXRpbmciLCJmb3J3YXJkIiwic3R1YkVudGVyaW5nIiwiVHJhbnNpdGlvblN0eWxlcyIsImZhZGVPdXQiLCJjb250ZW50Q2xhc3NOYW1lIiwiRnJhZ21lbnQiLCJIZXJvV3JhcHBlciIsImlkIiwiX3JlZjMiLCJoZXJvUmVmIiwidXNlSGVybyIsIm9uSGVyb1N0YXJ0IiwiX2MiLCJfbyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpbWciLCJvbkhlcm9DbG9uZWQiLCJvbkhlcm9FbmQiLCJ1c2VPcmRlcmFibGVMaXN0QW5jaG9yIiwiYW5jaG9yUmVmIiwiY3R4IiwidXNlQ29udGV4dCIsInVzZU9yZGVyYWJsZUV2ZW50cyIsImV2ZW50cyIsInVuc3Vic2NyaWJlcnMiLCJldmVudE5hbWUiLCJ1Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvT3JkZXJhYmxlTGlzdC9PcmRlcmFibGVMaXN0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdGhyb3R0bGUgZnJvbSBcImxvZGFzaC90aHJvdHRsZVwiO1xuaW1wb3J0IFJlYWN0LCB7XG4gIGNyZWF0ZUNvbnRleHQsXG4gIERldGFpbGVkSFRNTFByb3BzLFxuICBGcmFnbWVudCxcbiAgSFRNTEF0dHJpYnV0ZXMsXG4gIFByb3BzV2l0aENoaWxkcmVuLFxuICBSZWFjdEVsZW1lbnQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgVW5jb250cm9sbGVkVHJhbnNpdGlvbiBmcm9tIFwiLi4vVW5jb250cm9sbGVkVHJhbnNpdGlvblwiO1xuaW1wb3J0IFRyYW5zaXRpb25TdHlsZXMgZnJvbSBcIi4uL1RyYW5zaXRpb24vVHJhbnNpdGlvbi5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHVzZUhlcm8gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUhlcm9cIjtcbmltcG9ydCBBbmltYXRlZEVudHJhbmNlIGZyb20gXCIuLi9BbmltYXRlZEVudHJhbmNlXCI7XG5pbXBvcnQgeyBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMgfSBmcm9tIFwiLi4vVHJhbnNpdGlvblwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi9PcmRlcmFibGVMaXN0Lm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdXNlRXZlbnRzIGZyb20gXCIuLi8uLi9ob29rcy91dGlsaXR5L3VzZUV2ZW50c1wiO1xuaW1wb3J0IG93bkV2ZW50IGZyb20gXCIuLi8uLi91dGlscy9vd25FdmVudFwiO1xuXG50eXBlIEV2ZW50cyA9IFwib3JkZXItc3RvcFwiIHwgXCJvcmRlci1zdGFydFwiO1xuXG5jb25zdCBPcmRlcmFibGVMaXN0Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8e1xuICBiaW5kQW5jaG9yOiAoYmluZEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkO1xuICB1bmJpbmRBbmNob3I6IChiaW5kRWxlbWVudDogSFRNTERpdkVsZW1lbnQpID0+IHZvaWQ7XG4gIG9uOiAoZXZlbnROYW1lOiBFdmVudHMsIGNiOiAoKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xufT4obnVsbCBhcyBhbnkpO1xuXG5leHBvcnQgZW51bSBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGUge1xuICBWRVJUSUNBTCA9IFwidlwiLFxuICBUV09fRElNRU5TSU9OUyA9IFwiaHZcIixcbn1cblxuZnVuY3Rpb24gY2xlYW5LZXlzKGtleXM6IHN0cmluZ1tdKSB7XG4gIHJldHVybiBrZXlzLm1hcCgoYSkgPT4gYS5zcGxpdChcIjtcIilbMF0pO1xufVxuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGRpc3BsYXlzIGEgbGlzdCBvZiBpdGVtcyB0aGF0IGNhbiBiZSByZW9yZGVyZWQgYnkgZHJhZ2dpbmcgdGhlbSB3aXRoIHlvdXIgbW91c2Ugb3IgdG91Y2guXG4gKiBJdCBzdXBwb3J0cyBzaW1wbGUgdmVydGljYWwgZHJhZ2dpbmcgYW5kIG1vcmUgYWR2YW5jZWQgMkQgcmVvcmRlcmluZywgd2l0aCBzbW9vdGggYW5pbWF0aW9uc1xuICogd2hlbiBpdGVtcyBtb3ZlIGFyb3VuZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gT3JkZXJhYmxlTGlzdCh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUgPSBcIlwiLFxuICBtb2RlID0gT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlLlZFUlRJQ0FMLFxuICBzaHJpbmtUb09uT3JkZXIsXG4gIHJlb3JkZXJpbmdDbGFzc05hbWUsXG4gIGNsb25lQ2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufToge1xuICBjaGlsZHJlbjogUmVhY3RFbGVtZW50W107XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgbW9kZT86IE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZTtcbiAgLyoqXG4gICAqIElmIHByb3ZpZGVkLCBtYWtlcyB0aGUgZWxlbWVudHMgc2hyaW5rIHRvIHRoaXMgdmFsdWUgaW4gcHggd2hlbiBvcmRlcmluZyBlbGVtZW50c1xuICAgKi9cbiAgc2hyaW5rVG9Pbk9yZGVyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGNsYXNzIHRvIGFwcGx5IHdoZW4gcmVvcmRlcmluZ1xuICAgKi9cbiAgcmVvcmRlcmluZ0NsYXNzTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBjbGFzcyB0byBhcHBseSB0byB0aGUgY2xvbmUgZWxcbiAgICovXG4gIGNsb25lQ2xhc3NOYW1lPzogc3RyaW5nO1xufSAmIChcbiAgfCB7XG4gICAgICBrZXlPcmRlcj86IHN0cmluZ1tdO1xuICAgICAgb25DaGFuZ2VLZXlPcmRlcjogKG5ld09yZGVyOiBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgICB9XG4gIHwge1xuICAgICAgY3VycmVudE9yZGVyPzogc3RyaW5nW107XG4gICAgfVxuKSAmXG4gIERldGFpbGVkSFRNTFByb3BzPEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiwgSFRNTERpdkVsZW1lbnQ+KSB7XG4gIGNvbnN0IGF2YWlsYWJsZUtleXMgPSBjaGlsZHJlbi5tYXAoKGEpID0+IGEua2V5IGFzIHN0cmluZyk7XG4gIGNvbnN0IGF2YWlsYWJsZUtleXNEZXAgPSBhdmFpbGFibGVLZXlzLmpvaW4oXCIsXCIpO1xuICBjb25zdCBpbml0aWFsaXplT3JkZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgbWlzc2luZ09yZGVyS2V5cyA9XG4gICAgICBcImtleU9yZGVyXCIgaW4gcHJvcHMgJiYgcHJvcHMua2V5T3JkZXJcbiAgICAgICAgPyBhdmFpbGFibGVLZXlzLmZpbHRlcigoYSkgPT4gIXByb3BzLmtleU9yZGVyIS5pbmNsdWRlcyhhKSlcbiAgICAgICAgOiBbXTtcblxuICAgIHJldHVybiAoXG4gICAgICAoXCJrZXlPcmRlclwiIGluIHByb3BzICYmIHByb3BzLmtleU9yZGVyXG4gICAgICAgID8gWy4uLnByb3BzLmtleU9yZGVyLCAuLi5taXNzaW5nT3JkZXJLZXlzXVxuICAgICAgICA6IHVuZGVmaW5lZCkgfHwgYXZhaWxhYmxlS2V5c1xuICAgICk7XG4gIH0sIFthdmFpbGFibGVLZXlzRGVwLCAocHJvcHMgYXMgYW55KS5rZXlPcmRlcl0pO1xuICBjb25zdCB7IGN1cnJlbnQ6IGFuY2hvcnNMaXN0IH0gPSB1c2VSZWY8SFRNTERpdkVsZW1lbnRbXT4oW10pO1xuICBjb25zdCBldmVudEVtaXR0ZXIgPSB1c2VFdmVudHM8RXZlbnRzLCB7IFtrIGluIEV2ZW50c106IFtdIH0+KCk7XG4gIGNvbnN0IGN1cnJlbnRDbG9uZSA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjdXJyZW50V29ya2luZ0tleSA9IHVzZVJlZjxzdHJpbmc+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IHJvb3RSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwgYXMgYW55KTtcbiAgY29uc3QgW19vcmRlciwgc2V0T3JkZXJdID0gdXNlU3RhdGUoaW5pdGlhbGl6ZU9yZGVyKTtcbiAgdXNlRWZmZWN0KCgpID0+IHNldE9yZGVyKGluaXRpYWxpemVPcmRlcigpKSwgW2luaXRpYWxpemVPcmRlcl0pO1xuXG4gIGNvbnN0IG9yZGVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIFwiY3VycmVudE9yZGVyXCIgaW4gcHJvcHMgPyBwcm9wcy5jdXJyZW50T3JkZXIgfHwgX29yZGVyIDogX29yZGVyXG4gICAgKS5maWx0ZXIoKG8pID0+IG8uaW5jbHVkZXMoXCI7XCIpIHx8IGF2YWlsYWJsZUtleXMuaW5jbHVkZXMobykpO1xuICB9LCBbKHByb3BzIGFzIGFueSkuY3VycmVudE9yZGVyLCBfb3JkZXIsIGF2YWlsYWJsZUtleXNEZXBdKTtcbiAgY29uc3QgY2xlYW5PcmRlciA9IHVzZU1lbW8oKCkgPT4gb3JkZXIubWFwKChhKSA9PiBhLnNwbGl0KFwiO1wiKVswXSksIFtvcmRlcl0pO1xuICBjb25zdCBvcmRlcklkID0gdXNlTWVtbygoKSA9PiBcImtleS1cIiArIGNsZWFuT3JkZXIuam9pbihcIlwiKSwgW2NsZWFuT3JkZXJdKTtcbiAgZnVuY3Rpb24gcm9vdEVsKCkge1xuICAgIGlmIChtb2RlID09PSBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGUuVFdPX0RJTUVOU0lPTlMpXG4gICAgICByZXR1cm4gcm9vdFJlZi5jdXJyZW50IS5sYXN0RWxlbWVudENoaWxkIVxuICAgICAgICAubGFzdEVsZW1lbnRDaGlsZCEgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgcmV0dXJuIHJvb3RSZWYuY3VycmVudCEgYXMgSFRNTERpdkVsZW1lbnQ7XG4gIH1cblxuICBjb25zdCBmaW5kUGFyZW50RWxlbWVudCA9ICh0YXJnZXQ6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgbGV0IHBhcmVudDogSFRNTERpdkVsZW1lbnQgPSB0YXJnZXQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgd2hpbGUgKHBhcmVudC5wYXJlbnRFbGVtZW50ICE9PSByb290RWwoKSkge1xuICAgICAgaWYgKHBhcmVudC5wYXJlbnRFbGVtZW50ID09PSBudWxsKSBicmVhaztcbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50IGFzIGFueTtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIgJiYgcGFyZW50ID09PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkl0IHNlZW1zIGxpa2Ugd2UgY291bGQgbm90IGZpbmQgYSByZWxhdGlvbiBiZXR3ZWVuIHRoaXMgZWxlbWVudCBhbmQgdGhlIHJvb3QgbGlzdC4gQXJlIHlvdSB1c2luZyBwb3J0YWxzIG1heWJlP1wiXG4gICAgICApO1xuICAgIHJldHVybiBwYXJlbnQ7XG4gIH07XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hyaW5rVG9Pbk9yZGVyKVxuICAgICAgcm9vdEVsKCkuc3R5bGUuc2V0UHJvcGVydHkoXCItLXNocmluay10b1wiLCBgJHtzaHJpbmtUb09uT3JkZXJ9cHhgKTtcbiAgfSwgW3Nocmlua1RvT25PcmRlcl0pO1xuXG4gIGNvbnN0IGNhbGN1bGF0ZVJlb3JkZXJpbmcgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhyb3R0bGUoKGU6IGFueSwgZWxzOiBIVE1MRGl2RWxlbWVudFtdLCBjdXJyZW50T3JkZXI6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBpZiAoZWxzLmxlbmd0aCA+IGN1cnJlbnRPcmRlci5sZW5ndGggfHwgIWN1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNvbnN0IHBhcmVudCA9IGZpbmRQYXJlbnRFbGVtZW50KGUudGFyZ2V0KTtcbiAgICAgIGNvbnN0IGluZGV4T2ZLZXlJbkNsZWFuT3JkZXIgPSBlbHMuaW5kZXhPZihwYXJlbnQpO1xuICAgICAgY29uc3Qga2V5T2ZUaGVPdmVyRWxlbWVudCA9IGN1cnJlbnRPcmRlcltpbmRleE9mS2V5SW5DbGVhbk9yZGVyXTtcbiAgICAgIGNvbnN0IGlzRHJhZ2dpbmdPd25FbGVtZW50ID1cbiAgICAgICAgY3VycmVudFdvcmtpbmdLZXkuY3VycmVudCA9PT0ga2V5T2ZUaGVPdmVyRWxlbWVudDtcbiAgICAgIGlmIChpbmRleE9mS2V5SW5DbGVhbk9yZGVyID09PSAtMSB8fCBrZXlPZlRoZU92ZXJFbGVtZW50ID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmICghaXNEcmFnZ2luZ093bkVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgeyBpc0FmdGVyLCBpc0JlZm9yZSB9ID0gKCgpID0+IHtcbiAgICAgICAgICBpZiAobW9kZSA9PT0gT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlLlRXT19ESU1FTlNJT05TKSB7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21MZWZ0ID0gZS5vZmZzZXRYO1xuICAgICAgICAgICAgY29uc3Qgd2lkdGhPZkVsID0gcGFyZW50LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gd2lkdGhPZkVsICogMC4yNTtcbiAgICAgICAgICAgIGNvbnN0IGlzQWZ0ZXIgPSBkaXN0YW5jZUZyb21MZWZ0ID4gd2lkdGhPZkVsIC0gb2Zmc2V0O1xuICAgICAgICAgICAgY29uc3QgaXNCZWZvcmUgPSBkaXN0YW5jZUZyb21MZWZ0IDwgb2Zmc2V0O1xuICAgICAgICAgICAgcmV0dXJuIHsgaXNBZnRlciwgaXNCZWZvcmUgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tVG9wID0gZS5vZmZzZXRZO1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0T2ZFbCA9IHBhcmVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBoZWlnaHRPZkVsICogMC4yNTtcbiAgICAgICAgICAgIGNvbnN0IGlzQWZ0ZXIgPSBkaXN0YW5jZUZyb21Ub3AgPiBoZWlnaHRPZkVsIC0gb2Zmc2V0O1xuICAgICAgICAgICAgY29uc3QgaXNCZWZvcmUgPSBkaXN0YW5jZUZyb21Ub3AgPCBvZmZzZXQ7XG4gICAgICAgICAgICByZXR1cm4geyBpc0FmdGVyLCBpc0JlZm9yZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcblxuICAgICAgICBjb25zdCBjaGVja0lmQ2FuTW92ZSA9IChrZXlPZk92ZXJFbGVtZW50Pzogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGtleU9mT3ZlckVsZW1lbnQgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAga2V5T2ZPdmVyRWxlbWVudCAhPT0gY3VycmVudFdvcmtpbmdLZXkuY3VycmVudFxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGluZGV4T2ZUaGVOZXdFbGVtZW50ID1cbiAgICAgICAgICBpbmRleE9mS2V5SW5DbGVhbk9yZGVyICsgKGlzQWZ0ZXIgPyAxIDogLTEpO1xuICAgICAgICBjb25zdCBzaG91bGRUcmlnZ2VyUmVvcmRlcmluZyA9XG4gICAgICAgICAgKGlzQWZ0ZXIgfHwgaXNCZWZvcmUpICYmXG4gICAgICAgICAgY2hlY2tJZkNhbk1vdmUoY3VycmVudE9yZGVyW2luZGV4T2ZUaGVOZXdFbGVtZW50XSk7XG4gICAgICAgIGlmIChzaG91bGRUcmlnZ2VyUmVvcmRlcmluZykge1xuICAgICAgICAgIHNldE9yZGVyKChwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c0luZGV4ID0gY3VycmVudE9yZGVyLmluZGV4T2YoXG4gICAgICAgICAgICAgIGN1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnQhXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaW5kZXhPZktleUluUHJvdmlkZWRPcmRlciA9XG4gICAgICAgICAgICAgIGNsZWFuS2V5cyhwKS5pbmRleE9mKGtleU9mVGhlT3ZlckVsZW1lbnQpO1xuICAgICAgICAgICAgbGV0IGluZGV4T2ZUaGVOZXdFbGVtZW50ID1cbiAgICAgICAgICAgICAgaW5kZXhPZktleUluUHJvdmlkZWRPcmRlciArIChpc0JlZm9yZSA/IC0xIDogMCk7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNJbmRleCA+IGluZGV4T2ZUaGVOZXdFbGVtZW50KSBpbmRleE9mVGhlTmV3RWxlbWVudCsrO1xuICAgICAgICAgICAgY29uc3Qgb3JkZXJXaXRob3V0Q3VycmVudCA9IHAuZmlsdGVyKChhKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChhLnN0YXJ0c1dpdGgoYCR7Y3VycmVudFdvcmtpbmdLZXkuY3VycmVudH07YCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIGEgIT09IGN1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG9yZGVyV2l0aG91dEN1cnJlbnQuc3BsaWNlKFxuICAgICAgICAgICAgICBpbmRleE9mVGhlTmV3RWxlbWVudCxcbiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgYCR7Y3VycmVudFdvcmtpbmdLZXkuY3VycmVudH07JHtEYXRlLm5vdygpfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gb3JkZXJXaXRob3V0Q3VycmVudDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDEwMDAgLyA2MCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIHJlZ2lzdGVyTGlzdGVuZXJzKCkge1xuICAgICAgY29uc3QgZWxzID0gQXJyYXkuZnJvbShyb290RWwoKSEuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W107XG4gICAgICBjb25zdCBjYWxjdWxhdGVSZW9yZGVyaW5nQ2FsbCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZWxzID0gQXJyYXkuZnJvbShyb290RWwoKSEuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W107XG4gICAgICAgIGNhbGN1bGF0ZVJlb3JkZXJpbmcoZSwgZWxzLCBjbGVhbk9yZGVyKTtcbiAgICAgIH07XG4gICAgICBmb3IgKGxldCBlbCBvZiBlbHMpXG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgY2FsY3VsYXRlUmVvcmRlcmluZ0NhbGwpO1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBlbCBvZiBlbHMpXG4gICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBjYWxjdWxhdGVSZW9yZGVyaW5nQ2FsbCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtb2RlID09PSBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGUuVkVSVElDQUwpIHtcbiAgICAgIHJldHVybiByZWdpc3Rlckxpc3RlbmVycygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdW5zdWJzY3JpYmU6ICgpID0+IHZvaWQ7XG4gICAgICBsZXQgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB1bnN1YnNjcmliZSA9IHJlZ2lzdGVyTGlzdGVuZXJzKCk7XG4gICAgICB9LCAyNTApO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICBpZiAodW5zdWJzY3JpYmUpIHVuc3Vic2NyaWJlKCk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2NsZWFuT3JkZXJdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChcIm9uQ2hhbmdlS2V5T3JkZXJcIiBpbiBwcm9wcykgcHJvcHMub25DaGFuZ2VLZXlPcmRlcihjbGVhbktleXMoX29yZGVyKSk7XG4gIH0sIFtfb3JkZXJdKTtcblxuICBjb25zdCBjbGVhbk9yZGVyUmVmID0gdXNlUmVmKGNsZWFuT3JkZXIpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNsZWFuT3JkZXJSZWYuY3VycmVudCA9IGNsZWFuT3JkZXI7XG4gIH0sIFtjbGVhbk9yZGVyXSk7XG4gIGNvbnN0IG9uQW5jaG9yQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoeyB0YXJnZXQ6IGFuY2hvciB9OiBQaWNrPE1vdXNlRXZlbnQsIFwidGFyZ2V0XCI+KSA9PiB7XG4gICAgICBsZXQgb2Zmc2V0OiBbeDogbnVtYmVyLCB5OiBudW1iZXJdO1xuICAgICAgY29uc3Qgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IgPSBmaW5kUGFyZW50RWxlbWVudChcbiAgICAgICAgYW5jaG9yIGFzIEhUTUxEaXZFbGVtZW50XG4gICAgICApO1xuICAgICAgY29uc3QgYm94ID0gb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBlbHMgPSBBcnJheS5mcm9tKHJvb3RFbCgpIS5jaGlsZHJlbikgYXMgSFRNTERpdkVsZW1lbnRbXTtcbiAgICAgIGNvbnN0IGVsSW5kZXggPSBlbHMuaW5kZXhPZihvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvcik7XG5cbiAgICAgIGNvbnN0IGNsb25lID0gb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IuY2xvbmVOb2RlKFxuICAgICAgICB0cnVlXG4gICAgICApIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgY3VycmVudENsb25lLmN1cnJlbnQgPSBjbG9uZTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKVxuICAgICAgICBjbG9uZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXRlc3RpZFwiLCBcIm9yZGVyYWJsZS1saXN0LWNsb25lXCIpO1xuICAgICAgY2xvbmUuc2V0QXR0cmlidXRlKFwiZGF0YS1vcmRlcmFibGVpZFwiLCBcIm9yZGVyYWJsZS1saXN0LWNsb25lXCIpO1xuICAgICAgY2xvbmUuc3R5bGUud2lkdGggPSBgJHtib3gud2lkdGh9cHhgO1xuICAgICAgY2xvbmUuc3R5bGUuaGVpZ2h0ID0gYCR7Ym94LmhlaWdodH1weGA7XG4gICAgICBjbG9uZS5zdHlsZS50b3AgPSBgJHtib3gudG9wfXB4YDtcbiAgICAgIGNsb25lLnN0eWxlLmxlZnQgPSBgJHtib3gubGVmdH1weGA7XG4gICAgICBjbG9uZS5jbGFzc0xpc3QuYWRkKFN0eWxlcy5jbG9uZSk7XG4gICAgICBpZiAoc2hyaW5rVG9Pbk9yZGVyKSBjbG9uZS5zdHlsZS5tYXhIZWlnaHQgPSBgJHtib3guaGVpZ2h0fXB4YDtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoY2xvbmVDbGFzc05hbWUpIGNsb25lLmNsYXNzTGlzdC5hZGQoY2xvbmVDbGFzc05hbWUpO1xuICAgICAgICBpZiAoc2hyaW5rVG9Pbk9yZGVyKSBjbG9uZS5zdHlsZS5tYXhIZWlnaHQgPSBgJHtzaHJpbmtUb09uT3JkZXJ9cHhgO1xuICAgICAgfSwgMCk7XG5cbiAgICAgIG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLmNsYXNzTGlzdC5hZGQoU3R5bGVzLmN1cnJlbnRPcmRlcmluZyk7XG4gICAgICBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy52aXNpYmxlKTtcblxuICAgICAgY29uc3QgbW92ZW1lbnRDb250cm9sID0gKGU6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgeDogeDEsIHk6IHkxIH0gPVxuICAgICAgICAgIFwidG91Y2hlc1wiIGluIGUgPyB7IHg6IGUudG91Y2hlc1swXS5wYWdlWCwgeTogZS50b3VjaGVzWzBdLnBhZ2VZIH0gOiBlO1xuICAgICAgICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gW3gxIC0gYm94LmxlZnQsIHkxIC0gYm94LnRvcF07XG5cbiAgICAgICAgY29uc3QgW29mZnNldFgsIG9mZnNldFldID0gb2Zmc2V0O1xuICAgICAgICBjbG9uZS5zdHlsZS50b3AgPSBgJHt5MSAtIG9mZnNldFl9cHhgO1xuICAgICAgICBjbG9uZS5zdHlsZS5sZWZ0ID0gYCR7eDEgLSBvZmZzZXRYfXB4YDtcbiAgICAgIH07XG5cbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2xvbmUpO1xuICAgICAgY29uc3QgZGVsZXRlQ2xvbmUgPSAoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIG1vdmVtZW50Q29udHJvbCk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIG1vdmVtZW50Q29udHJvbCk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgZGVsZXRlQ2xvbmUpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgZGVsZXRlQ2xvbmUpO1xuICAgICAgICBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5zdHlsZS52aXNpYmlsaXR5ID0gXCJpbml0aWFsXCI7XG4gICAgICAgIGN1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLnVuc2VsZWN0YWJsZSk7XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBlbHMgPSBBcnJheS5mcm9tKHJvb3RFbCgpIS5jaGlsZHJlbikgYXMgSFRNTERpdkVsZW1lbnRbXTtcbiAgICAgICAgICBjb25zdCBlbEludmlzaWJsZSA9IGVscy5maW5kKFxuICAgICAgICAgICAgKGEpID0+XG4gICAgICAgICAgICAgICFhLmNsYXNzTGlzdC5jb250YWlucyhTdHlsZXMudmlzaWJsZSkgJiZcbiAgICAgICAgICAgICAgYS5zdHlsZS5tYXhIZWlnaHQgIT09IFwiMHB4XCJcbiAgICAgICAgICApITtcbiAgICAgICAgICBpZiAoc2hyaW5rVG9Pbk9yZGVyKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IGVsSW52aXNpYmxlLmxhc3RFbGVtZW50Q2hpbGQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgICAgICBjaGlsZC5zdHlsZS5tYXhIZWlnaHQgPSBgJHtjaGlsZC5zY3JvbGxIZWlnaHR9cHhgO1xuICAgICAgICAgICAgY2hpbGQuY2xhc3NMaXN0LmFkZChTdHlsZXMudHJhbnNpdGlvbkhlaWdodCk7XG4gICAgICAgICAgICBjb25zdCBvbkVuZCA9IG93bkV2ZW50KCgpID0+IHtcbiAgICAgICAgICAgICAgY2hpbGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgb25FbmQpO1xuICAgICAgICAgICAgICBjaGlsZC5zdHlsZS5tYXhIZWlnaHQgPSBgaW5pdGlhbGA7XG4gICAgICAgICAgICAgIGNoaWxkLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLnRyYW5zaXRpb25IZWlnaHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjaGlsZC5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCBvbkVuZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGJveCA9IGVsSW52aXNpYmxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIGZ1bmN0aW9uIGNsZWFuVXAoKSB7XG4gICAgICAgICAgICBpZiAoc2hyaW5rVG9Pbk9yZGVyKSB7XG4gICAgICAgICAgICAgIHJvb3RFbCgpLnN0eWxlLnJlbW92ZVByb3BlcnR5KFwicGFkZGluZy10b3BcIik7XG4gICAgICAgICAgICAgIHJvb3RFbCgpLnN0eWxlLnJlbW92ZVByb3BlcnR5KFwibWluLWhlaWdodFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXZlbnRFbWl0dGVyLmRpc3BhdGNoZXIoXCJvcmRlci1zdG9wXCIpO1xuICAgICAgICAgICAgcm9vdEVsKCkuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMub3JkZXJpbmcpO1xuICAgICAgICAgICAgaWYgKHJlb3JkZXJpbmdDbGFzc05hbWUpXG4gICAgICAgICAgICAgIHJvb3RFbCgpLmNsYXNzTGlzdC5yZW1vdmUocmVvcmRlcmluZ0NsYXNzTmFtZSk7XG4gICAgICAgICAgICBmb3IgKGxldCBlbCBvZiBlbHMpIGVsLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLnZpc2libGUpO1xuICAgICAgICAgICAgY2xvbmUucmVtb3ZlKCk7XG4gICAgICAgICAgICBjdXJyZW50Q2xvbmUuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICBmb3IgKGxldCBlbCBvZiBBcnJheS5mcm9tKGVsSW52aXNpYmxlLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdKVxuICAgICAgICAgICAgICBlbC5zdHlsZS5oZWlnaHQgPSBcIlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjbG9uZS5zdHlsZS50b3Auc3RhcnRzV2l0aChNYXRoLmZsb29yKGJveC50b3ApLnRvU3RyaW5nKCkpICYmXG4gICAgICAgICAgICBjbG9uZS5zdHlsZS5sZWZ0LnN0YXJ0c1dpdGgoTWF0aC5mbG9vcihib3gubGVmdCkudG9TdHJpbmcoKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNsZWFuVXAoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xvbmUuc3R5bGUudG9wID0gYCR7Ym94LnRvcH1weGA7XG4gICAgICAgICAgICBjbG9uZS5zdHlsZS5sZWZ0ID0gYCR7Ym94LmxlZnR9cHhgO1xuICAgICAgICAgICAgY2xvbmUuc3R5bGUudHJhbnNpdGlvbiA9IGB0b3AgNTAwbXMgbGluZWFyLCBsZWZ0IDUwMG1zIGxpbmVhcmA7XG4gICAgICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgIGNsZWFuVXAoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGZvciAobGV0IGVsIG9mIGVscykge1xuICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKFN0eWxlcy52aXNpYmxlKTtcbiAgICAgIH1cbiAgICAgIGlmIChzaHJpbmtUb09uT3JkZXIpIHtcbiAgICAgICAgZm9yIChsZXQgZWwgb2YgZWxzKSBlbC5zdHlsZS5tYXhIZWlnaHQgPSBgJHtlbC5zY3JvbGxIZWlnaHR9cHhgO1xuICAgICAgICBjb25zdCB0YXJnZXRIZWlnaHQgPSBlbEluZGV4ICogc2hyaW5rVG9Pbk9yZGVyO1xuICAgICAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID1cbiAgICAgICAgICBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5vZmZzZXRUb3AgLSBlbHNbMF0ub2Zmc2V0VG9wO1xuICAgICAgICBjb25zdCBwYWRkaW5nVG9wID0gY3VycmVudEhlaWdodCAtIHRhcmdldEhlaWdodDtcbiAgICAgICAgcm9vdEVsKCkuc3R5bGUucGFkZGluZ1RvcCA9IGAke3BhZGRpbmdUb3B9cHhgO1xuICAgICAgICByb290RWwoKS5zdHlsZS5taW5IZWlnaHQgPSBgJHtyb290RWwoKS5jbGllbnRIZWlnaHR9cHhgO1xuICAgICAgfVxuICAgICAgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3Iuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG4gICAgICBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy52aXNpYmxlKTtcbiAgICAgIHJvb3RFbCgpLmNsYXNzTGlzdC5hZGQoU3R5bGVzLm9yZGVyaW5nKTtcbiAgICAgIGlmIChyZW9yZGVyaW5nQ2xhc3NOYW1lKSByb290RWwoKS5jbGFzc0xpc3QuYWRkKHJlb3JkZXJpbmdDbGFzc05hbWUpO1xuICAgICAgY3VycmVudFdvcmtpbmdLZXkuY3VycmVudCA9IGNsZWFuT3JkZXJSZWYuY3VycmVudFtlbEluZGV4XTtcbiAgICAgIGV2ZW50RW1pdHRlci5kaXNwYXRjaGVyKFwib3JkZXItc3RhcnRcIik7XG4gICAgICB3aW5kb3cuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFN0eWxlcy51bnNlbGVjdGFibGUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGRlbGV0ZUNsb25lKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIG1vdmVtZW50Q29udHJvbCk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIGRlbGV0ZUNsb25lKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIG1vdmVtZW50Q29udHJvbCk7XG4gICAgfSxcbiAgICBbXVxuICApO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRDbG9uZS5jdXJyZW50KSB7XG4gICAgICBjb25zdCBlbHMgPSBBcnJheS5mcm9tKHJvb3RFbCgpIS5jaGlsZHJlbikgYXMgSFRNTERpdkVsZW1lbnRbXTtcbiAgICAgIGNvbnN0IGVsSW52aXNpYmxlID0gZWxzLmZpbmQoXG4gICAgICAgIChhKSA9PlxuICAgICAgICAgICFhLmNsYXNzTGlzdC5jb250YWlucyhTdHlsZXMudmlzaWJsZSkgJiYgYS5zdHlsZS5tYXhIZWlnaHQgIT09IFwiMHB4XCJcbiAgICAgICkhO1xuICAgICAgKGVsSW52aXNpYmxlLmNoaWxkcmVuWzBdIGFzIEhUTUxEaXZFbGVtZW50KS5zdHlsZS5oZWlnaHQgPSBgJHtcbiAgICAgICAgY3VycmVudENsb25lLmN1cnJlbnQhLmNsaWVudEhlaWdodFxuICAgICAgfXB4YDtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAoZWxJbnZpc2libGUuY2hpbGRyZW5bMV0gYXMgSFRNTERpdkVsZW1lbnQpLnN0eWxlLmhlaWdodCA9IGAke1xuICAgICAgICAgIGN1cnJlbnRDbG9uZS5jdXJyZW50IS5jbGllbnRIZWlnaHRcbiAgICAgICAgfXB4YDtcbiAgICAgIH0sIDE1MCk7XG4gICAgfVxuICB9LCBbY2xlYW5PcmRlcl0pO1xuXG4gIGNvbnN0IHRvU3ByZWFkID0geyAuLi5wcm9wcyB9IGFzIGFueTtcbiAgZGVsZXRlIHRvU3ByZWFkLmtleU9yZGVyO1xuICBkZWxldGUgdG9TcHJlYWQub25DaGFuZ2VLZXlPcmRlcjtcblxuICBjb25zdCBjaGlsZHJlblRvUmVuZGVyID0gWy4uLmNoaWxkcmVuXVxuICAgIC5maWx0ZXIoKGEpID0+IGNsZWFuT3JkZXIuaW5jbHVkZXMoYS5rZXkgYXMgc3RyaW5nKSlcbiAgICAuc29ydChcbiAgICAgIChhLCBiKSA9PlxuICAgICAgICBjbGVhbk9yZGVyLmluZGV4T2YoYS5rZXkgYXMgc3RyaW5nKSAtXG4gICAgICAgIGNsZWFuT3JkZXIuaW5kZXhPZihiLmtleSBhcyBzdHJpbmcpXG4gICAgKVxuICAgIC5tYXAoKGE6IFJlYWN0RWxlbWVudCwgaSkgPT4gKHtcbiAgICAgIC4uLmEsXG4gICAgICBrZXk6IG9yZGVyW2ldLFxuICAgIH0pKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIHJvb3RFbCgpIS5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCAoZSkgPT4ge1xuICAgICAgY29uc3QgcmVsYXRlZEFuY2hvciA9IGFuY2hvcnNMaXN0LmZpbmQoKGFuY2hvcikgPT5cbiAgICAgICAgYW5jaG9yLmNvbnRhaW5zKGUudGFyZ2V0IGFzIGFueSlcbiAgICAgICk7XG4gICAgICBpZiAocmVsYXRlZEFuY2hvcikge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uQW5jaG9yQ2xpY2soe1xuICAgICAgICAgIHRhcmdldDogcmVsYXRlZEFuY2hvcixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgbW92ZUNiID0gdGhyb3R0bGUoKGU6IFRvdWNoRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCB0b3VjaCA9IGUudG91Y2hlc1swXTtcbiAgICAgICAgICBjb25zdCBbeCwgeV0gPSBbdG91Y2guY2xpZW50WCwgdG91Y2guY2xpZW50WV07XG4gICAgICAgICAgY29uc3QgZWxzID0gQXJyYXkuZnJvbShyb290RWwoKS5jaGlsZHJlbikgYXMgSFRNTERpdkVsZW1lbnRbXTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudElkeCA9IGVscy5maW5kSW5kZXgoKGMsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlY3QgPSBjPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGlmICghcmVjdCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHJlY3QudG9wIDwgeSAmJiByZWN0LnRvcCArIHJlY3QuaGVpZ2h0ID4geTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnRJZHggIT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBlbCA9IGVsc1tjdXJyZW50RWxlbWVudElkeF07XG4gICAgICAgICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjYWxjdWxhdGVSZW9yZGVyaW5nKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBlbCxcbiAgICAgICAgICAgICAgICBvZmZzZXRZOiB5IC0gcmVjdC50b3AsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVscyxcbiAgICAgICAgICAgICAgY2xlYW5PcmRlclJlZi5jdXJyZW50XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgY29uc3QgdCA9IGUudGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICBjb25zdCB0b3VjaE1vdmVDYiA9IChlOiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgVG91Y2hFdmVudChlLnR5cGUsIGUgYXMgYW55KSk7XG4gICAgICAgICAgbW92ZUNiKGUpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZW1vdmVDYiA9IChlOiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAgICAgdC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRvdWNoTW92ZUNiKTtcbiAgICAgICAgICB0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLCByZW1vdmVDYik7XG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IFRvdWNoRXZlbnQoZS50eXBlLCBlIGFzIGFueSkpO1xuICAgICAgICB9O1xuICAgICAgICB0LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdG91Y2hNb3ZlQ2IpO1xuICAgICAgICB0LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLCByZW1vdmVDYik7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgYmluZEFuY2hvcjogKGVsOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIG9uQW5jaG9yQ2xpY2spO1xuICAgICAgICBhbmNob3JzTGlzdC5wdXNoKGVsKTtcbiAgICAgIH0sXG4gICAgICB1bmJpbmRBbmNob3I6IChlbDogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCBvbkFuY2hvckNsaWNrKTtcbiAgICAgICAgYW5jaG9yc0xpc3Quc3BsaWNlKGFuY2hvcnNMaXN0LmluZGV4T2YoZWwpLCAxKTtcbiAgICAgIH0sXG4gICAgICBvbjogZXZlbnRFbWl0dGVyLnN1YnNjcmliZXIsXG4gICAgfSksXG4gICAgW11cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxPcmRlcmFibGVMaXN0Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZX0+XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17cm9vdFJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZXMucm9vdH0gJHtjbGFzc05hbWV9ICR7XG4gICAgICAgICAgc2hyaW5rVG9Pbk9yZGVyID8gU3R5bGVzLnNocmlua2FibGUgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgICB7Li4udG9TcHJlYWR9XG4gICAgICA+XG4gICAgICAgIHttb2RlID09PSBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGUuVkVSVElDQUwgPyAoXG4gICAgICAgICAgPEFuaW1hdGVkRW50cmFuY2U+e2NoaWxkcmVuVG9SZW5kZXJ9PC9BbmltYXRlZEVudHJhbmNlPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxVbmNvbnRyb2xsZWRUcmFuc2l0aW9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e1N0eWxlcy50cmFuc2l0aW9ufVxuICAgICAgICAgICAgdHJhbnNpdGlvblR5cGU9e1RyYW5zaXRpb25BbmltYXRpb25UeXBlcy5DVVNUT019XG4gICAgICAgICAgICBjb25maWc9e3tcbiAgICAgICAgICAgICAgYmFja3dhcmQ6IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFwiXCIsXG4gICAgICAgICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFwiXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGZvcndhcmQ6IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5zdHViRW50ZXJpbmcsXG4gICAgICAgICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFRyYW5zaXRpb25TdHlsZXMuZmFkZU91dCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjb250ZW50Q2xhc3NOYW1lPXtgJHtjbGFzc05hbWV9YH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtvcmRlcklkfT5cbiAgICAgICAgICAgICAge1suLi5jaGlsZHJlbl1cbiAgICAgICAgICAgICAgICAuZmlsdGVyKChhKSA9PiBjbGVhbk9yZGVyLmluY2x1ZGVzKGEua2V5IGFzIHN0cmluZykpXG4gICAgICAgICAgICAgICAgLnNvcnQoXG4gICAgICAgICAgICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgICAgY2xlYW5PcmRlci5pbmRleE9mKGEua2V5IGFzIHN0cmluZykgLVxuICAgICAgICAgICAgICAgICAgICBjbGVhbk9yZGVyLmluZGV4T2YoYi5rZXkgYXMgc3RyaW5nKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAubWFwKChhLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8SGVyb1dyYXBwZXIga2V5PXtpfSBpZD17YS5rZXkgYXMgc3RyaW5nfT5cbiAgICAgICAgICAgICAgICAgICAge2F9XG4gICAgICAgICAgICAgICAgICA8L0hlcm9XcmFwcGVyPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICA8L1VuY29udHJvbGxlZFRyYW5zaXRpb24+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L09yZGVyYWJsZUxpc3RDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufVxuXG5mdW5jdGlvbiBIZXJvV3JhcHBlcih7IGNoaWxkcmVuLCBpZCB9OiBQcm9wc1dpdGhDaGlsZHJlbjx7IGlkOiBzdHJpbmcgfT4pIHtcbiAgY29uc3QgeyBoZXJvUmVmIH0gPSB1c2VIZXJvKGlkLCB1bmRlZmluZWQsIHtcbiAgICBvbkhlcm9TdGFydDogKF9jLCBfbywgdCkgPT4ge1xuICAgICAgdC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpLmZvckVhY2goXG4gICAgICAgIChpbWcpID0+IChpbWcuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCIpXG4gICAgICApO1xuICAgIH0sXG4gICAgb25IZXJvQ2xvbmVkKGNsb25lKSB7XG4gICAgICAvLyBpZiAoIWNsb25lLmNsYXNzTGlzdC5jb250YWlucyhTdHlsZXMudmlzaWJsZSkpIGNsb25lLnN0eWxlLm9wYWNpdHkgPSBcIjBcIjtcbiAgICB9LFxuICAgIG9uSGVyb0VuZDogKCkgPT4ge1xuICAgICAgaWYgKGhlcm9SZWYuY3VycmVudClcbiAgICAgICAgaGVyb1JlZi5jdXJyZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilcbiAgICAgICAgICAuZm9yRWFjaCgoaW1nKSA9PiAoaW1nLnN0eWxlLnZpc2liaWxpdHkgPSBcIlwiKSk7XG4gICAgfSxcbiAgfSk7XG4gIHJldHVybiA8ZGl2IHJlZj17aGVyb1JlZn0+e2NoaWxkcmVufTwvZGl2Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU9yZGVyYWJsZUxpc3RBbmNob3IoKSB7XG4gIGNvbnN0IGFuY2hvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCBhcyBhbnkpO1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KE9yZGVyYWJsZUxpc3RDb250ZXh0KTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWN0eCkgcmV0dXJuO1xuICAgIGNvbnN0IHsgYmluZEFuY2hvciwgdW5iaW5kQW5jaG9yIH0gPSBjdHg7XG4gICAgYmluZEFuY2hvcihhbmNob3JSZWYuY3VycmVudCEpO1xuICAgIHJldHVybiAoKSA9PiB1bmJpbmRBbmNob3IoYW5jaG9yUmVmLmN1cnJlbnQhKTtcbiAgfSwgW10pO1xuICByZXR1cm4ge1xuICAgIGFuY2hvclJlZjogY3R4ID8gYW5jaG9yUmVmIDogdW5kZWZpbmVkLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlT3JkZXJhYmxlRXZlbnRzKFxuICBldmVudHM6IHtcbiAgICBbayBpbiBFdmVudHNdOiAoKSA9PiB2b2lkO1xuICB9XG4pIHtcbiAgY29uc3QgeyBvbiB9ID0gdXNlQ29udGV4dChPcmRlcmFibGVMaXN0Q29udGV4dCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmVyczogYW55W10gPSBbXTtcbiAgICBmb3IgKGxldCBldmVudE5hbWUgaW4gZXZlbnRzKSB7XG4gICAgICB1bnN1YnNjcmliZXJzLnB1c2gob24oZXZlbnROYW1lIGFzIEV2ZW50cywgZXZlbnRzW2V2ZW50TmFtZSBhcyBFdmVudHNdKSk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB1bnN1YnNjcmliZXJzLmZvckVhY2goKHUpID0+IHUoKSk7XG4gICAgfTtcbiAgfSwgW2V2ZW50c10pO1xufVxuIl0sIm1hcHBp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
@@ -20,6 +20,11 @@ export declare function AnimatedPaginationIndicator(props: ComponentProps<typeof
20
20
  /**
21
21
  * A cool component to indicate how many pages are
22
22
  **/
23
+ /**
24
+ * A pagination indicator component that displays the current page
25
+ * and total number of pages using animated circular indicators.
26
+ * It updates visually when scrolling through pages.
27
+ */
23
28
  declare const PaginationIndicator: React.ForwardRefExoticComponent<{
24
29
  scrollableRef: RefObject<HTMLDivElement>;
25
30
  estimatedWidth?: number | undefined;
@@ -250,6 +250,11 @@ function _PaginationIndicator(_ref2, ref) {
250
250
  /**
251
251
  * A cool component to indicate how many pages are
252
252
  **/
253
+ /**
254
+ * A pagination indicator component that displays the current page
255
+ * and total number of pages using animated circular indicators.
256
+ * It updates visually when scrolling through pages.
257
+ */
253
258
  const PaginationIndicator = /*#__PURE__*/(0, _react.forwardRef)(_PaginationIndicator);
254
259
  var _default = exports.default = PaginationIndicator;
255
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIk1BWF9CQUxMUyIsImVhY2hCYWxsV2lkdGhFbSIsIkNFTlRFUl9HVUlERV9CQUxMIiwiUGFnaW5hdGlvbkluZGljYXRvck1vZGUiLCJleHBvcnRzIiwiUGFnaW5hdGlvbkluZGljYXRvclZpZXciLCJfcmVmIiwic2l6ZSIsInBhZ2UiLCJjdXJyZW50UGFnZSIsInBhZ2VzIiwiZGVjaW1hbFBhZ2VzIiwiY2xhc3NOYW1lIiwib25DbGlja1BhZ2UiLCJtb2RlIiwiQ0VOVEVSRUQiLCJpbmZpbml0ZSIsIm1heEJhbGxzIiwidXNlTWVtbyIsImZsb29yIiwiTWF0aCIsIm1vZHVsdXMiLCJjdXJyZW50Rmxvb3JNb2R1bHVzIiwiZXF1aXZhbGVudCIsInJhbmQiLCJyYW5kb20iLCJ0b1N0cmluZyIsInBhZ2VJbmRleCIsImNlaWwiLCJudW1CYWxscyIsImluZGV4Rm9yVGhlQmFsbHNDZW50ZXIiLCJiYWxscyIsImluZGV4Rm9yTGFzdFBhZ2VzIiwiaXNDZW50ZXJQYWdlIiwicmVzZXRQYWdlSW5kZXgiLCJsZWZ0IiwicHVzaEJhbGxzVG9SaWdodEJ5IiwicHVzaEJhbGxzVG9MZWZ0QnkiLCJwdXNoR3VpZGVUb1JpZ2h0QnkiLCJtaW4iLCJwdXNoVG9MZWZ0IiwiQXJyYXkiLCJmaWxsIiwidW5kZWZpbmVkIiwibWFwIiwiXyIsImlzTGFzdEJhbGwiLCJpc0ZpcnN0QmFsbCIsImRpYW1ldGVyIiwicGFkZGluZyIsImNyZWF0ZUVsZW1lbnQiLCJ3aWR0aCIsImNvbmNhdCIsImhlaWdodCIsIngiLCJ5IiwicngiLCJiYWxsU2l6ZSIsIlNUQVJUIiwia2V5Iiwib25DbGljayIsInBhZ2VDbGlja2VkIiwicm91bmQiLCJndWlkZUJhbGwiLCJwYWdlQmFsbHMiLCJyZXZlcnNlIiwidmVyc2lvbiIsInhtbG5zIiwic3R5bGUiLCJtaW5XaWR0aCIsImZvbnRTaXplIiwiaWQiLCJpbiIsInJlc3VsdCIsInN0ZERldmlhdGlvbiIsInZhbHVlcyIsImluMiIsImZpbHRlciIsIm1hc2siLCJvcGFjaXR5IiwiY3Vyc29yIiwiQW5pbWF0ZWRQYWdpbmF0aW9uSW5kaWNhdG9yIiwicHJvcHMiLCJwcmV2UGFnZSIsInVzZVJlZiIsInBhZ2VQcm9ncmVzcyIsInNldFBhZ2VQcm9ncmVzcyIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiZGlmZiIsImN1cnJlbnQiLCJkaWZmUGVyU3RlcCIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJwcmV2IiwibmV4dCIsImNsZWFySW50ZXJ2YWwiLCJOdW1iZXIiLCJ0b0ZpeGVkIiwiZHVyYXRpb24iLCJfUGFnaW5hdGlvbkluZGljYXRvciIsIl9yZWYyIiwicmVmIiwic2Nyb2xsYWJsZVJlZiIsImVzdGltYXRlZFdpZHRoIiwic2V0Q3VycmVudFBhZ2UiLCJkZWZzIiwic2V0RGVmcyIsInJlZnJlc2hQYWdlcyIsInVzZUNhbGxiYWNrIiwibWF4V2lkdGgiLCJzY3JvbGxXaWR0aCIsImNsaWVudFdpZHRoIiwidXBkYXRlUGFnZUluZGljYXRvcnMiLCJ0YXJnZXQiLCJlYWNoUGFnZVdpZHRoIiwic2Nyb2xsTGVmdCIsImxhc3RQYWdlUHJvZ3Jlc3MiLCJtYXhpbXVtUHJvZ3Jlc3MiLCJkaWZmVG9NYXgiLCJjdXJyZW50UHJvZ3Jlc3NPbkRpZmYiLCJwIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImVsIiwib25TY3JvbGwiLCJjdXJyZW50VGFyZ2V0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhc3NpdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiUGFnaW5hdGlvbkluZGljYXRvciIsImZvcndhcmRSZWYiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1BhZ2luYXRpb25JbmRpY2F0b3IvUGFnaW5hdGlvbkluZGljYXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIENvbXBvbmVudFByb3BzLFxuICBGb3J3YXJkZWRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IE1BWF9CQUxMUyA9IDc7XG5jb25zdCBlYWNoQmFsbFdpZHRoRW0gPSAxLjI7XG5cbmNvbnN0IENFTlRFUl9HVUlERV9CQUxMID0gMTtcblxuZXhwb3J0IGVudW0gUGFnaW5hdGlvbkluZGljYXRvck1vZGUge1xuICAvKiogVGhpcyB3aWxsIG1ha2UgdGhlIGd1aWRlIGJhbGwgYmUga2VwdCBvbiBjZW50ZXIgICovXG4gIENFTlRFUkVELFxuXG4gIC8qKiBUaGlzIHdpbGwgbWFrZSB0aGUgZ3VpZGUgYmFsbCBtb3ZlLCB3aGlsZSB0aGUgaW5kaWNhdG9yIGJhbGxzIGtlZXAgaW4gcGxhY2UgKi9cbiAgU1RBUlQsXG59XG5leHBvcnQgZnVuY3Rpb24gUGFnaW5hdGlvbkluZGljYXRvclZpZXcoe1xuICBzaXplLFxuICBwYWdlOiBjdXJyZW50UGFnZSxcbiAgcGFnZXM6IGRlY2ltYWxQYWdlcyxcbiAgY2xhc3NOYW1lLFxuICBvbkNsaWNrUGFnZSxcbiAgbW9kZSA9IFBhZ2luYXRpb25JbmRpY2F0b3JNb2RlLkNFTlRFUkVELFxuICBpbmZpbml0ZSxcbn06IHtcbiAgc2l6ZTogbnVtYmVyO1xuICBwYWdlOiBudW1iZXI7XG4gIHBhZ2VzOiBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgb25DbGlja1BhZ2U/OiAocGFnZTogbnVtYmVyKSA9PiB2b2lkO1xuICBtb2RlPzogUGFnaW5hdGlvbkluZGljYXRvck1vZGU7XG4gIGluZmluaXRlPzogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgbWF4QmFsbHMgPSB1c2VNZW1vKCgpID0+IChpbmZpbml0ZSA/IDUgOiBNQVhfQkFMTFMpLCBbaW5maW5pdGVdKTtcbiAgY29uc3QgcGFnZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGZsb29yID0gTWF0aC5mbG9vcihkZWNpbWFsUGFnZXMpO1xuICAgIGNvbnN0IG1vZHVsdXMgPSBkZWNpbWFsUGFnZXMgJSBmbG9vcjtcblxuICAgIGlmIChjdXJyZW50UGFnZSA+IGZsb29yKSB7XG4gICAgICBjb25zdCBjdXJyZW50Rmxvb3JNb2R1bHVzID0gY3VycmVudFBhZ2UgJSBmbG9vcjtcbiAgICAgIGNvbnN0IGVxdWl2YWxlbnQgPSAoY3VycmVudEZsb29yTW9kdWx1cyAqIDEwMCkgLyBtb2R1bHVzO1xuXG4gICAgICByZXR1cm4gZmxvb3IgKyBlcXVpdmFsZW50IC8gMTAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3VycmVudFBhZ2U7XG4gICAgfVxuICB9LCBbY3VycmVudFBhZ2UsIGRlY2ltYWxQYWdlc10pO1xuICBjb25zdCByYW5kID0gdXNlTWVtbygoKSA9PiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCksIFtdKTtcbiAgY29uc3QgcGFnZUluZGV4ID0gcGFnZSAtIDE7XG4gIGNvbnN0IHBhZ2VzID0gdXNlTWVtbygoKSA9PiBNYXRoLmNlaWwoZGVjaW1hbFBhZ2VzKSwgW2RlY2ltYWxQYWdlc10pO1xuICBjb25zdCBudW1CYWxscyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG51bUJhbGxzID0gcGFnZXMgPj0gbWF4QmFsbHMgPyBtYXhCYWxscyA6IE1hdGguY2VpbChwYWdlcyk7XG5cbiAgICByZXR1cm4gbnVtQmFsbHM7XG4gIH0sIFtwYWdlc10pO1xuXG4gIGNvbnN0IGluZGV4Rm9yVGhlQmFsbHNDZW50ZXIgPSB1c2VNZW1vKFxuICAgICgpID0+IChpbmZpbml0ZSA/IG51bUJhbGxzIC0gNSA6IG51bUJhbGxzIC0gMSkgLyAyLFxuICAgIFtudW1CYWxscywgaW5maW5pdGVdXG4gICk7XG4gIGNvbnN0IGJhbGxzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaW5kZXhGb3JMYXN0UGFnZXMgPSBwYWdlcyArIDEgLSBpbmRleEZvclRoZUJhbGxzQ2VudGVyO1xuICAgIC8qKlxuICAgICAqIElzIHRoZSBwYWdlIGluZGV4IChwb3NpdGlvbiBvZiB0aGUgY2VudGVyKVxuICAgICAqIGFmdGVyIHRoZSBmaXJzdCBwYWdlcyBhbmRcbiAgICAgKiBiZWZvcmUgdGhlIGxhc3QgcGFnZXMgKi9cbiAgICBjb25zdCBpc0NlbnRlclBhZ2UgPVxuICAgICAgbnVtQmFsbHMgPj0gbWF4QmFsbHMgJiZcbiAgICAgIHBhZ2VJbmRleCA+IGluZGV4Rm9yVGhlQmFsbHNDZW50ZXIgJiZcbiAgICAgIHBhZ2VJbmRleCA8IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMTtcbiAgICBsZXQgbW9kdWx1cyA9XG4gICAgICBwYWdlSW5kZXggJVxuICAgICAgKDEgKyAoaW5kZXhGb3JUaGVCYWxsc0NlbnRlciAtIE1hdGguZmxvb3IoaW5kZXhGb3JUaGVCYWxsc0NlbnRlcikpKTtcbiAgICBjb25zdCByZXNldFBhZ2VJbmRleCA9IGlzQ2VudGVyUGFnZVxuICAgICAgPyBpbmRleEZvclRoZUJhbGxzQ2VudGVyICsgbW9kdWx1c1xuICAgICAgOiBwYWdlcyA8IG1heEJhbGxzXG4gICAgICA/IHBhZ2VJbmRleFxuICAgICAgOiBwYWdlSW5kZXggPj0gaW5kZXhGb3JMYXN0UGFnZXMgLSAxXG4gICAgICA/IG51bUJhbGxzIC0gKHBhZ2VzIC0gcGFnZUluZGV4KVxuICAgICAgOiBwYWdlSW5kZXg7XG4gICAgY29uc3QgbGVmdCA9IGVhY2hCYWxsV2lkdGhFbSAqIHJlc2V0UGFnZUluZGV4O1xuICAgIGNvbnN0IHsgcHVzaEJhbGxzVG9SaWdodEJ5LCBwdXNoQmFsbHNUb0xlZnRCeSwgcHVzaEd1aWRlVG9SaWdodEJ5IH0gPVxuICAgICAgbW9kZSA9PT0gUGFnaW5hdGlvbkluZGljYXRvck1vZGUuQ0VOVEVSRURcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwdXNoQmFsbHNUb1JpZ2h0Qnk6IE1hdGgubWluKHBhZ2VzLCBtYXhCYWxscykgKiBlYWNoQmFsbFdpZHRoRW0sXG4gICAgICAgICAgICBwdXNoQmFsbHNUb0xlZnRCeTogbGVmdCxcbiAgICAgICAgICAgIHB1c2hHdWlkZVRvUmlnaHRCeTogMCxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgcHVzaEJhbGxzVG9SaWdodEJ5OiAoZWFjaEJhbGxXaWR0aEVtIC0gMC41KSAvIDIsXG4gICAgICAgICAgICBwdXNoQmFsbHNUb0xlZnRCeTogMCxcbiAgICAgICAgICAgIHB1c2hHdWlkZVRvUmlnaHRCeTogbGVmdCxcbiAgICAgICAgICB9O1xuICAgIGxldCBwdXNoVG9MZWZ0OiBudW1iZXIgPSAwO1xuICAgIHJldHVybiBuZXcgQXJyYXkoQ0VOVEVSX0dVSURFX0JBTEwgKyBudW1CYWxscylcbiAgICAgIC5maWxsKHVuZGVmaW5lZClcbiAgICAgIC5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgY29uc3QgaXNMYXN0QmFsbCA9IGkgPT09IG51bUJhbGxzIC0gMTtcbiAgICAgICAgY29uc3QgaXNGaXJzdEJhbGwgPSBpID09PSAwO1xuXG4gICAgICAgIGlmIChpID09PSBudW1CYWxscykge1xuICAgICAgICAgIGNvbnN0IGRpYW1ldGVyID0gMC40NSAqIDI7XG4gICAgICAgICAgY29uc3QgcGFkZGluZyA9IChlYWNoQmFsbFdpZHRoRW0gLSBkaWFtZXRlcikgLyAyO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICBmaWxsPVwiI2ZmZlwiXG4gICAgICAgICAgICAgIHdpZHRoPXtgJHtkaWFtZXRlcn1lbWB9XG4gICAgICAgICAgICAgIGhlaWdodD17YCR7ZGlhbWV0ZXJ9ZW1gfVxuICAgICAgICAgICAgICB4PXtgJHtcbiAgICAgICAgICAgICAgICBwdXNoQmFsbHNUb1JpZ2h0QnkgLSBwYWRkaW5nICsgcHVzaEd1aWRlVG9SaWdodEJ5IC0gcHVzaFRvTGVmdFxuICAgICAgICAgICAgICB9ZW1gfVxuICAgICAgICAgICAgICB5PXtgJHtwYWRkaW5nfWVtYH1cbiAgICAgICAgICAgICAgcng9e2Ake2RpYW1ldGVyIC8gMn1lbWB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYWxsU2l6ZSA9XG4gICAgICAgICAgbnVtQmFsbHMgPCBtYXhCYWxsc1xuICAgICAgICAgICAgPyAwLjVcbiAgICAgICAgICAgIDogcGFnZSA8PSBpbmRleEZvclRoZUJhbGxzQ2VudGVyICsgMSAmJiBpc0xhc3RCYWxsXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogcGFnZUluZGV4ID49IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMSAmJiBpc0ZpcnN0QmFsbFxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IGlzQ2VudGVyUGFnZVxuICAgICAgICAgICAgPyBpc0ZpcnN0QmFsbFxuICAgICAgICAgICAgICA/IDAuNSAtIG1vZHVsdXMgKiAwLjVcbiAgICAgICAgICAgICAgOiBpc0xhc3RCYWxsXG4gICAgICAgICAgICAgID8gbW9kdWx1cyAqIDAuNVxuICAgICAgICAgICAgICA6IDAuNVxuICAgICAgICAgICAgOiAwLjU7XG5cbiAgICAgICAgaWYgKGkgPT09IDAgJiYgbW9kZSA9PT0gUGFnaW5hdGlvbkluZGljYXRvck1vZGUuU1RBUlQpXG4gICAgICAgICAgcHVzaFRvTGVmdCA9ICgwLjUgLSBiYWxsU2l6ZSkgKiAyLjQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAga2V5PXtgZ3VpZGUtJHtpfWB9XG4gICAgICAgICAgICB3aWR0aD17YCR7YmFsbFNpemUgKiAxLjJ9ZW1gfVxuICAgICAgICAgICAgaGVpZ2h0PXtgJHtiYWxsU2l6ZSAqIDEuMn1lbWB9XG4gICAgICAgICAgICB4PXtgJHtcbiAgICAgICAgICAgICAgcHVzaEJhbGxzVG9SaWdodEJ5ICtcbiAgICAgICAgICAgICAgaSAqIGVhY2hCYWxsV2lkdGhFbSAtXG4gICAgICAgICAgICAgIHB1c2hCYWxsc1RvTGVmdEJ5IC1cbiAgICAgICAgICAgICAgcHVzaFRvTGVmdFxuICAgICAgICAgICAgfWVtYH1cbiAgICAgICAgICAgIHk9e2AkeyhlYWNoQmFsbFdpZHRoRW0gLSBiYWxsU2l6ZSAqIDEuMikgLyAyfWVtYH1cbiAgICAgICAgICAgIHJ4PXtgJHsoYmFsbFNpemUgKiAxLjIpIC8gMn1lbWB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvbkNsaWNrUGFnZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VDbGlja2VkID1cbiAgICAgICAgICAgICAgICAgICghaXNDZW50ZXJQYWdlXG4gICAgICAgICAgICAgICAgICAgID8gcGFnZUluZGV4ID49IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMVxuICAgICAgICAgICAgICAgICAgICAgID8gTWF0aC5mbG9vcihwYWdlKSAtIHJlc2V0UGFnZUluZGV4IC0gMVxuICAgICAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAgICAgICAgICAgICA6IE1hdGguZmxvb3IocGFnZSkgLSAoaW5kZXhGb3JUaGVCYWxsc0NlbnRlciArIDEpKSArXG4gICAgICAgICAgICAgICAgICAxICtcbiAgICAgICAgICAgICAgICAgIGk7XG4gICAgICAgICAgICAgICAgb25DbGlja1BhZ2UoTWF0aC5yb3VuZChwYWdlQ2xpY2tlZCkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfSwgW2luZGV4Rm9yVGhlQmFsbHNDZW50ZXIsIHBhZ2VJbmRleCwgcGFnZXNdKTtcbiAgY29uc3QgW2d1aWRlQmFsbCwgLi4ucGFnZUJhbGxzXSA9IGJhbGxzLnJldmVyc2UoKTtcbiAgbGV0IHdpZHRoID0gZWFjaEJhbGxXaWR0aEVtICogTWF0aC5taW4ocGFnZXMsIG1heEJhbGxzKSAqIDI7XG4gIGlmIChtb2RlID09PSBQYWdpbmF0aW9uSW5kaWNhdG9yTW9kZS5TVEFSVCkgd2lkdGggLz0gMjtcblxuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIHdpZHRoOiBgJHt3aWR0aH1lbWAsXG4gICAgICAgIG1pbldpZHRoOiBgJHt3aWR0aH1lbWAsXG4gICAgICAgIGhlaWdodDogXCIxLjJlbVwiLFxuICAgICAgICBmb250U2l6ZTogYCR7c2l6ZX1weGAsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxmaWx0ZXIgaWQ9e2Bnb28tJHtyYW5kfWB9PlxuICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgaW49XCJTb3VyY2VHcmFwaGljXCIgcmVzdWx0PVwiYmx1clwiIHN0ZERldmlhdGlvbj1cIjVcIiAvPlxuICAgICAgICA8ZmVDb2xvck1hdHJpeFxuICAgICAgICAgIGluPVwiYmx1clwiXG4gICAgICAgICAgbW9kZT1cIm1hdHJpeFwiXG4gICAgICAgICAgdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMTggLTdcIlxuICAgICAgICAgIHJlc3VsdD1cImdvb1wiXG4gICAgICAgIC8+XG4gICAgICAgIDxmZUJsZW5kIGluMj1cImdvb1wiIGluPVwiU291cmNlR3JhcGhpY1wiIHJlc3VsdD1cIm1peFwiIC8+XG4gICAgICA8L2ZpbHRlcj5cbiAgICAgIDxtYXNrIGlkPXtgbWFzay0ke3JhbmR9YH0+XG4gICAgICAgIDxnIGZpbHRlcj17YHVybCgjJHtgZ29vLSR7cmFuZH1gfSlgfSBmaWxsPVwiI2ZmZlwiPlxuICAgICAgICAgIHtbcGFnZUJhbGxzXX1cbiAgICAgICAgICB7Z3VpZGVCYWxsfVxuICAgICAgICA8L2c+XG4gICAgICA8L21hc2s+XG4gICAgICA8cmVjdFxuICAgICAgICB4PVwiMFwiXG4gICAgICAgIHk9XCIwXCJcbiAgICAgICAgbWFzaz17YHVybCgjJHtgbWFzay0ke3JhbmR9YH0pYH1cbiAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgICAgIHN0eWxlPXt7IGZpbGw6IFwidmFyKC0tZGlnaXRhbC1ibHVlKVwiIH19XG4gICAgICA+PC9yZWN0PlxuICAgICAge29uQ2xpY2tQYWdlICYmIChcbiAgICAgICAgPGcgb3BhY2l0eT17MH0gc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fT5cbiAgICAgICAgICB7cGFnZUJhbGxzfVxuICAgICAgICA8L2c+XG4gICAgICApfVxuICAgIDwvc3ZnPlxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQW5pbWF0ZWRQYWdpbmF0aW9uSW5kaWNhdG9yKFxuICBwcm9wczogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBhZ2luYXRpb25JbmRpY2F0b3JWaWV3PiAmIHtcbiAgICBkdXJhdGlvbjogbnVtYmVyO1xuICB9XG4pIHtcbiAgY29uc3QgcHJldlBhZ2UgPSB1c2VSZWYocHJvcHMucGFnZSk7XG4gIGNvbnN0IFtwYWdlUHJvZ3Jlc3MsIHNldFBhZ2VQcm9ncmVzc10gPSB1c2VTdGF0ZShwcm9wcy5wYWdlKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBkaWZmID0gcHJvcHMucGFnZSAtIHByZXZQYWdlLmN1cnJlbnQ7XG4gICAgY29uc3QgZGlmZlBlclN0ZXAgPSBkaWZmIC8gNjA7XG5cbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHNldFBhZ2VQcm9ncmVzcygocHJldikgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gcHJldiArIGRpZmZQZXJTdGVwO1xuICAgICAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgICAgICBpZiAobmV4dCA8PSBwcm9wcy5wYWdlKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5wYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobmV4dCA+PSBwcm9wcy5wYWdlKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5wYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTnVtYmVyKG5leHQudG9GaXhlZCgyKSk7XG4gICAgICB9KTtcbiAgICB9LCBwcm9wcy5kdXJhdGlvbiAvIDYwKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwcmV2UGFnZS5jdXJyZW50ID0gcHJvcHMucGFnZTtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgIH07XG4gIH0sIFtwcm9wcy5wYWdlXSk7XG5cbiAgcmV0dXJuIDxQYWdpbmF0aW9uSW5kaWNhdG9yVmlldyB7Li4ucHJvcHN9IHBhZ2U9e3BhZ2VQcm9ncmVzc30gLz47XG59XG5cbmZ1bmN0aW9uIF9QYWdpbmF0aW9uSW5kaWNhdG9yKFxuICB7XG4gICAgc2Nyb2xsYWJsZVJlZixcbiAgICBlc3RpbWF0ZWRXaWR0aCxcbiAgICBzaXplLFxuICAgIGNsYXNzTmFtZSA9IFwiXCIsXG4gICAgb25DbGlja1BhZ2UsXG4gICAgbW9kZSxcbiAgICBpbmZpbml0ZSxcbiAgfToge1xuICAgIHNjcm9sbGFibGVSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gICAgZXN0aW1hdGVkV2lkdGg/OiBudW1iZXI7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBvbkNsaWNrUGFnZT86IChwYWdlOiBudW1iZXIpID0+IHZvaWQ7XG4gIH0gJiBQaWNrPENvbXBvbmVudFByb3BzPHR5cGVvZiBQYWdpbmF0aW9uSW5kaWNhdG9yVmlldz4sIFwibW9kZVwiIHwgXCJpbmZpbml0ZVwiPixcbiAgcmVmOiBGb3J3YXJkZWRSZWY8e1xuICAgIHJlZnJlc2hQYWdlczogKCkgPT4gdm9pZDtcbiAgfT5cbikge1xuICBjb25zdCBbY3VycmVudFBhZ2UsIHNldEN1cnJlbnRQYWdlXSA9IHVzZVN0YXRlKDEpO1xuXG4gIGNvbnN0IFtkZWZzLCBzZXREZWZzXSA9XG4gICAgdXNlU3RhdGU8e1xuICAgICAgcGFnZXM6IG51bWJlcjtcbiAgICB9PigpO1xuXG4gIGNvbnN0IHJlZnJlc2hQYWdlcyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNjcm9sbGFibGVSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgIGNvbnN0IG1heFdpZHRoID1cbiAgICAgIGVzdGltYXRlZFdpZHRoID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBzY3JvbGxhYmxlUmVmLmN1cnJlbnQhLnNjcm9sbFdpZHRoXG4gICAgICAgIDogZXN0aW1hdGVkV2lkdGg7XG5cbiAgICBjb25zdCBwYWdlcyA9IG1heFdpZHRoIC8gc2Nyb2xsYWJsZVJlZi5jdXJyZW50IS5jbGllbnRXaWR0aDtcbiAgICBpZiAocGFnZXMgPiAxKVxuICAgICAgc2V0RGVmcyh7XG4gICAgICAgIHBhZ2VzOiBpbmZpbml0ZSA/IHBhZ2VzICsgMiA6IHBhZ2VzLFxuICAgICAgfSk7XG4gIH0sIFtlc3RpbWF0ZWRXaWR0aCwgaW5maW5pdGVdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gcmVmcmVzaFBhZ2VzKCksIFtyZWZyZXNoUGFnZXNdKTtcblxuICBjb25zdCB1cGRhdGVQYWdlSW5kaWNhdG9ycyA9IHVzZUNhbGxiYWNrKFxuICAgICh0YXJnZXQ6IEhUTUxEaXZFbGVtZW50LCBwYWdlczogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoIXNjcm9sbGFibGVSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgZWFjaFBhZ2VXaWR0aCA9IHNjcm9sbGFibGVSZWYuY3VycmVudCEuY2xpZW50V2lkdGg7XG4gICAgICBjb25zdCBwYWdlID0gMSArIHRhcmdldC5zY3JvbGxMZWZ0IC8gZWFjaFBhZ2VXaWR0aDtcbiAgICAgIGNvbnN0IGxhc3RQYWdlUHJvZ3Jlc3MgPSBNYXRoLmZsb29yKHBhZ2VzKSArIDE7XG4gICAgICBjb25zdCBtYXhpbXVtUHJvZ3Jlc3MgPSBwYWdlcyArIDE7XG5cbiAgICAgIGNvbnN0IGRpZmZUb01heCA9IG1heGltdW1Qcm9ncmVzcyAtIGxhc3RQYWdlUHJvZ3Jlc3M7XG4gICAgICBjb25zdCBjdXJyZW50UHJvZ3Jlc3NPbkRpZmYgPSBwYWdlIC0gbGFzdFBhZ2VQcm9ncmVzcztcblxuICAgICAgaWYgKHBhZ2UgPiBsYXN0UGFnZVByb2dyZXNzKSB7XG4gICAgICAgIGNvbnN0IHAgPSBsYXN0UGFnZVByb2dyZXNzICsgY3VycmVudFByb2dyZXNzT25EaWZmIC8gZGlmZlRvTWF4O1xuICAgICAgICBzZXRDdXJyZW50UGFnZShwKTtcbiAgICAgIH0gZWxzZSBzZXRDdXJyZW50UGFnZShwYWdlKTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShcbiAgICByZWYsXG4gICAgKCkgPT4gKHtcbiAgICAgIHJlZnJlc2hQYWdlcyxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkZWZzKSByZXR1cm47XG4gICAgY29uc3QgZWwgPSBzY3JvbGxhYmxlUmVmLmN1cnJlbnQhO1xuICAgIGNvbnN0IG9uU2Nyb2xsID0gKGU6IEV2ZW50KSA9PlxuICAgICAgdXBkYXRlUGFnZUluZGljYXRvcnMoZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50LCBkZWZzLnBhZ2VzKTtcbiAgICB1cGRhdGVQYWdlSW5kaWNhdG9ycyhlbCwgZGVmcy5wYWdlcyk7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBvblNjcm9sbCwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBvblNjcm9sbCk7XG4gICAgfTtcbiAgfSwgW2RlZnNdKTtcblxuICBjb25zdCBwYWdlcyA9IHVzZU1lbW8oKCkgPT4gKGRlZnMgPyBkZWZzLnBhZ2VzIDogdW5kZWZpbmVkKSwgW2RlZnNdKTtcblxuICByZXR1cm4gIXBhZ2VzID8gbnVsbCA6IChcbiAgICA8UGFnaW5hdGlvbkluZGljYXRvclZpZXdcbiAgICAgIHBhZ2VzPXtwYWdlc31cbiAgICAgIHBhZ2U9e2N1cnJlbnRQYWdlfVxuICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgb25DbGlja1BhZ2U9e29uQ2xpY2tQYWdlfVxuICAgICAgbW9kZT17bW9kZX1cbiAgICAgIGluZmluaXRlPXtpbmZpbml0ZX1cbiAgICAvPlxuICApO1xufVxuXG4vKipcbiAqIEEgY29vbCBjb21wb25lbnQgdG8gaW5kaWNhdGUgaG93IG1hbnkgcGFnZXMgYXJlXG4gKiovXG5jb25zdCBQYWdpbmF0aW9uSW5kaWNhdG9yID0gZm9yd2FyZFJlZihfUGFnaW5hdGlvbkluZGljYXRvcik7XG5leHBvcnQgZGVmYXVsdCBQYWdpbmF0aW9uSW5kaWNhdG9yO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFXZSxTQUFBRCx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEs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
260
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIk1BWF9CQUxMUyIsImVhY2hCYWxsV2lkdGhFbSIsIkNFTlRFUl9HVUlERV9CQUxMIiwiUGFnaW5hdGlvbkluZGljYXRvck1vZGUiLCJleHBvcnRzIiwiUGFnaW5hdGlvbkluZGljYXRvclZpZXciLCJfcmVmIiwic2l6ZSIsInBhZ2UiLCJjdXJyZW50UGFnZSIsInBhZ2VzIiwiZGVjaW1hbFBhZ2VzIiwiY2xhc3NOYW1lIiwib25DbGlja1BhZ2UiLCJtb2RlIiwiQ0VOVEVSRUQiLCJpbmZpbml0ZSIsIm1heEJhbGxzIiwidXNlTWVtbyIsImZsb29yIiwiTWF0aCIsIm1vZHVsdXMiLCJjdXJyZW50Rmxvb3JNb2R1bHVzIiwiZXF1aXZhbGVudCIsInJhbmQiLCJyYW5kb20iLCJ0b1N0cmluZyIsInBhZ2VJbmRleCIsImNlaWwiLCJudW1CYWxscyIsImluZGV4Rm9yVGhlQmFsbHNDZW50ZXIiLCJiYWxscyIsImluZGV4Rm9yTGFzdFBhZ2VzIiwiaXNDZW50ZXJQYWdlIiwicmVzZXRQYWdlSW5kZXgiLCJsZWZ0IiwicHVzaEJhbGxzVG9SaWdodEJ5IiwicHVzaEJhbGxzVG9MZWZ0QnkiLCJwdXNoR3VpZGVUb1JpZ2h0QnkiLCJtaW4iLCJwdXNoVG9MZWZ0IiwiQXJyYXkiLCJmaWxsIiwidW5kZWZpbmVkIiwibWFwIiwiXyIsImlzTGFzdEJhbGwiLCJpc0ZpcnN0QmFsbCIsImRpYW1ldGVyIiwicGFkZGluZyIsImNyZWF0ZUVsZW1lbnQiLCJ3aWR0aCIsImNvbmNhdCIsImhlaWdodCIsIngiLCJ5IiwicngiLCJiYWxsU2l6ZSIsIlNUQVJUIiwia2V5Iiwib25DbGljayIsInBhZ2VDbGlja2VkIiwicm91bmQiLCJndWlkZUJhbGwiLCJwYWdlQmFsbHMiLCJyZXZlcnNlIiwidmVyc2lvbiIsInhtbG5zIiwic3R5bGUiLCJtaW5XaWR0aCIsImZvbnRTaXplIiwiaWQiLCJpbiIsInJlc3VsdCIsInN0ZERldmlhdGlvbiIsInZhbHVlcyIsImluMiIsImZpbHRlciIsIm1hc2siLCJvcGFjaXR5IiwiY3Vyc29yIiwiQW5pbWF0ZWRQYWdpbmF0aW9uSW5kaWNhdG9yIiwicHJvcHMiLCJwcmV2UGFnZSIsInVzZVJlZiIsInBhZ2VQcm9ncmVzcyIsInNldFBhZ2VQcm9ncmVzcyIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiZGlmZiIsImN1cnJlbnQiLCJkaWZmUGVyU3RlcCIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJwcmV2IiwibmV4dCIsImNsZWFySW50ZXJ2YWwiLCJOdW1iZXIiLCJ0b0ZpeGVkIiwiZHVyYXRpb24iLCJfUGFnaW5hdGlvbkluZGljYXRvciIsIl9yZWYyIiwicmVmIiwic2Nyb2xsYWJsZVJlZiIsImVzdGltYXRlZFdpZHRoIiwic2V0Q3VycmVudFBhZ2UiLCJkZWZzIiwic2V0RGVmcyIsInJlZnJlc2hQYWdlcyIsInVzZUNhbGxiYWNrIiwibWF4V2lkdGgiLCJzY3JvbGxXaWR0aCIsImNsaWVudFdpZHRoIiwidXBkYXRlUGFnZUluZGljYXRvcnMiLCJ0YXJnZXQiLCJlYWNoUGFnZVdpZHRoIiwic2Nyb2xsTGVmdCIsImxhc3RQYWdlUHJvZ3Jlc3MiLCJtYXhpbXVtUHJvZ3Jlc3MiLCJkaWZmVG9NYXgiLCJjdXJyZW50UHJvZ3Jlc3NPbkRpZmYiLCJwIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImVsIiwib25TY3JvbGwiLCJjdXJyZW50VGFyZ2V0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhc3NpdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiUGFnaW5hdGlvbkluZGljYXRvciIsImZvcndhcmRSZWYiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1BhZ2luYXRpb25JbmRpY2F0b3IvUGFnaW5hdGlvbkluZGljYXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIENvbXBvbmVudFByb3BzLFxuICBGb3J3YXJkZWRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IE1BWF9CQUxMUyA9IDc7XG5jb25zdCBlYWNoQmFsbFdpZHRoRW0gPSAxLjI7XG5cbmNvbnN0IENFTlRFUl9HVUlERV9CQUxMID0gMTtcblxuZXhwb3J0IGVudW0gUGFnaW5hdGlvbkluZGljYXRvck1vZGUge1xuICAvKiogVGhpcyB3aWxsIG1ha2UgdGhlIGd1aWRlIGJhbGwgYmUga2VwdCBvbiBjZW50ZXIgICovXG4gIENFTlRFUkVELFxuXG4gIC8qKiBUaGlzIHdpbGwgbWFrZSB0aGUgZ3VpZGUgYmFsbCBtb3ZlLCB3aGlsZSB0aGUgaW5kaWNhdG9yIGJhbGxzIGtlZXAgaW4gcGxhY2UgKi9cbiAgU1RBUlQsXG59XG5leHBvcnQgZnVuY3Rpb24gUGFnaW5hdGlvbkluZGljYXRvclZpZXcoe1xuICBzaXplLFxuICBwYWdlOiBjdXJyZW50UGFnZSxcbiAgcGFnZXM6IGRlY2ltYWxQYWdlcyxcbiAgY2xhc3NOYW1lLFxuICBvbkNsaWNrUGFnZSxcbiAgbW9kZSA9IFBhZ2luYXRpb25JbmRpY2F0b3JNb2RlLkNFTlRFUkVELFxuICBpbmZpbml0ZSxcbn06IHtcbiAgc2l6ZTogbnVtYmVyO1xuICBwYWdlOiBudW1iZXI7XG4gIHBhZ2VzOiBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgb25DbGlja1BhZ2U/OiAocGFnZTogbnVtYmVyKSA9PiB2b2lkO1xuICBtb2RlPzogUGFnaW5hdGlvbkluZGljYXRvck1vZGU7XG4gIGluZmluaXRlPzogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgbWF4QmFsbHMgPSB1c2VNZW1vKCgpID0+IChpbmZpbml0ZSA/IDUgOiBNQVhfQkFMTFMpLCBbaW5maW5pdGVdKTtcbiAgY29uc3QgcGFnZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGZsb29yID0gTWF0aC5mbG9vcihkZWNpbWFsUGFnZXMpO1xuICAgIGNvbnN0IG1vZHVsdXMgPSBkZWNpbWFsUGFnZXMgJSBmbG9vcjtcblxuICAgIGlmIChjdXJyZW50UGFnZSA+IGZsb29yKSB7XG4gICAgICBjb25zdCBjdXJyZW50Rmxvb3JNb2R1bHVzID0gY3VycmVudFBhZ2UgJSBmbG9vcjtcbiAgICAgIGNvbnN0IGVxdWl2YWxlbnQgPSAoY3VycmVudEZsb29yTW9kdWx1cyAqIDEwMCkgLyBtb2R1bHVzO1xuXG4gICAgICByZXR1cm4gZmxvb3IgKyBlcXVpdmFsZW50IC8gMTAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3VycmVudFBhZ2U7XG4gICAgfVxuICB9LCBbY3VycmVudFBhZ2UsIGRlY2ltYWxQYWdlc10pO1xuICBjb25zdCByYW5kID0gdXNlTWVtbygoKSA9PiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCksIFtdKTtcbiAgY29uc3QgcGFnZUluZGV4ID0gcGFnZSAtIDE7XG4gIGNvbnN0IHBhZ2VzID0gdXNlTWVtbygoKSA9PiBNYXRoLmNlaWwoZGVjaW1hbFBhZ2VzKSwgW2RlY2ltYWxQYWdlc10pO1xuICBjb25zdCBudW1CYWxscyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG51bUJhbGxzID0gcGFnZXMgPj0gbWF4QmFsbHMgPyBtYXhCYWxscyA6IE1hdGguY2VpbChwYWdlcyk7XG5cbiAgICByZXR1cm4gbnVtQmFsbHM7XG4gIH0sIFtwYWdlc10pO1xuXG4gIGNvbnN0IGluZGV4Rm9yVGhlQmFsbHNDZW50ZXIgPSB1c2VNZW1vKFxuICAgICgpID0+IChpbmZpbml0ZSA/IG51bUJhbGxzIC0gNSA6IG51bUJhbGxzIC0gMSkgLyAyLFxuICAgIFtudW1CYWxscywgaW5maW5pdGVdXG4gICk7XG4gIGNvbnN0IGJhbGxzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaW5kZXhGb3JMYXN0UGFnZXMgPSBwYWdlcyArIDEgLSBpbmRleEZvclRoZUJhbGxzQ2VudGVyO1xuICAgIC8qKlxuICAgICAqIElzIHRoZSBwYWdlIGluZGV4IChwb3NpdGlvbiBvZiB0aGUgY2VudGVyKVxuICAgICAqIGFmdGVyIHRoZSBmaXJzdCBwYWdlcyBhbmRcbiAgICAgKiBiZWZvcmUgdGhlIGxhc3QgcGFnZXMgKi9cbiAgICBjb25zdCBpc0NlbnRlclBhZ2UgPVxuICAgICAgbnVtQmFsbHMgPj0gbWF4QmFsbHMgJiZcbiAgICAgIHBhZ2VJbmRleCA+IGluZGV4Rm9yVGhlQmFsbHNDZW50ZXIgJiZcbiAgICAgIHBhZ2VJbmRleCA8IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMTtcbiAgICBsZXQgbW9kdWx1cyA9XG4gICAgICBwYWdlSW5kZXggJVxuICAgICAgKDEgKyAoaW5kZXhGb3JUaGVCYWxsc0NlbnRlciAtIE1hdGguZmxvb3IoaW5kZXhGb3JUaGVCYWxsc0NlbnRlcikpKTtcbiAgICBjb25zdCByZXNldFBhZ2VJbmRleCA9IGlzQ2VudGVyUGFnZVxuICAgICAgPyBpbmRleEZvclRoZUJhbGxzQ2VudGVyICsgbW9kdWx1c1xuICAgICAgOiBwYWdlcyA8IG1heEJhbGxzXG4gICAgICA/IHBhZ2VJbmRleFxuICAgICAgOiBwYWdlSW5kZXggPj0gaW5kZXhGb3JMYXN0UGFnZXMgLSAxXG4gICAgICA/IG51bUJhbGxzIC0gKHBhZ2VzIC0gcGFnZUluZGV4KVxuICAgICAgOiBwYWdlSW5kZXg7XG4gICAgY29uc3QgbGVmdCA9IGVhY2hCYWxsV2lkdGhFbSAqIHJlc2V0UGFnZUluZGV4O1xuICAgIGNvbnN0IHsgcHVzaEJhbGxzVG9SaWdodEJ5LCBwdXNoQmFsbHNUb0xlZnRCeSwgcHVzaEd1aWRlVG9SaWdodEJ5IH0gPVxuICAgICAgbW9kZSA9PT0gUGFnaW5hdGlvbkluZGljYXRvck1vZGUuQ0VOVEVSRURcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwdXNoQmFsbHNUb1JpZ2h0Qnk6IE1hdGgubWluKHBhZ2VzLCBtYXhCYWxscykgKiBlYWNoQmFsbFdpZHRoRW0sXG4gICAgICAgICAgICBwdXNoQmFsbHNUb0xlZnRCeTogbGVmdCxcbiAgICAgICAgICAgIHB1c2hHdWlkZVRvUmlnaHRCeTogMCxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgcHVzaEJhbGxzVG9SaWdodEJ5OiAoZWFjaEJhbGxXaWR0aEVtIC0gMC41KSAvIDIsXG4gICAgICAgICAgICBwdXNoQmFsbHNUb0xlZnRCeTogMCxcbiAgICAgICAgICAgIHB1c2hHdWlkZVRvUmlnaHRCeTogbGVmdCxcbiAgICAgICAgICB9O1xuICAgIGxldCBwdXNoVG9MZWZ0OiBudW1iZXIgPSAwO1xuICAgIHJldHVybiBuZXcgQXJyYXkoQ0VOVEVSX0dVSURFX0JBTEwgKyBudW1CYWxscylcbiAgICAgIC5maWxsKHVuZGVmaW5lZClcbiAgICAgIC5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgY29uc3QgaXNMYXN0QmFsbCA9IGkgPT09IG51bUJhbGxzIC0gMTtcbiAgICAgICAgY29uc3QgaXNGaXJzdEJhbGwgPSBpID09PSAwO1xuXG4gICAgICAgIGlmIChpID09PSBudW1CYWxscykge1xuICAgICAgICAgIGNvbnN0IGRpYW1ldGVyID0gMC40NSAqIDI7XG4gICAgICAgICAgY29uc3QgcGFkZGluZyA9IChlYWNoQmFsbFdpZHRoRW0gLSBkaWFtZXRlcikgLyAyO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICBmaWxsPVwiI2ZmZlwiXG4gICAgICAgICAgICAgIHdpZHRoPXtgJHtkaWFtZXRlcn1lbWB9XG4gICAgICAgICAgICAgIGhlaWdodD17YCR7ZGlhbWV0ZXJ9ZW1gfVxuICAgICAgICAgICAgICB4PXtgJHtcbiAgICAgICAgICAgICAgICBwdXNoQmFsbHNUb1JpZ2h0QnkgLSBwYWRkaW5nICsgcHVzaEd1aWRlVG9SaWdodEJ5IC0gcHVzaFRvTGVmdFxuICAgICAgICAgICAgICB9ZW1gfVxuICAgICAgICAgICAgICB5PXtgJHtwYWRkaW5nfWVtYH1cbiAgICAgICAgICAgICAgcng9e2Ake2RpYW1ldGVyIC8gMn1lbWB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYWxsU2l6ZSA9XG4gICAgICAgICAgbnVtQmFsbHMgPCBtYXhCYWxsc1xuICAgICAgICAgICAgPyAwLjVcbiAgICAgICAgICAgIDogcGFnZSA8PSBpbmRleEZvclRoZUJhbGxzQ2VudGVyICsgMSAmJiBpc0xhc3RCYWxsXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogcGFnZUluZGV4ID49IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMSAmJiBpc0ZpcnN0QmFsbFxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IGlzQ2VudGVyUGFnZVxuICAgICAgICAgICAgPyBpc0ZpcnN0QmFsbFxuICAgICAgICAgICAgICA/IDAuNSAtIG1vZHVsdXMgKiAwLjVcbiAgICAgICAgICAgICAgOiBpc0xhc3RCYWxsXG4gICAgICAgICAgICAgID8gbW9kdWx1cyAqIDAuNVxuICAgICAgICAgICAgICA6IDAuNVxuICAgICAgICAgICAgOiAwLjU7XG5cbiAgICAgICAgaWYgKGkgPT09IDAgJiYgbW9kZSA9PT0gUGFnaW5hdGlvbkluZGljYXRvck1vZGUuU1RBUlQpXG4gICAgICAgICAgcHVzaFRvTGVmdCA9ICgwLjUgLSBiYWxsU2l6ZSkgKiAyLjQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAga2V5PXtgZ3VpZGUtJHtpfWB9XG4gICAgICAgICAgICB3aWR0aD17YCR7YmFsbFNpemUgKiAxLjJ9ZW1gfVxuICAgICAgICAgICAgaGVpZ2h0PXtgJHtiYWxsU2l6ZSAqIDEuMn1lbWB9XG4gICAgICAgICAgICB4PXtgJHtcbiAgICAgICAgICAgICAgcHVzaEJhbGxzVG9SaWdodEJ5ICtcbiAgICAgICAgICAgICAgaSAqIGVhY2hCYWxsV2lkdGhFbSAtXG4gICAgICAgICAgICAgIHB1c2hCYWxsc1RvTGVmdEJ5IC1cbiAgICAgICAgICAgICAgcHVzaFRvTGVmdFxuICAgICAgICAgICAgfWVtYH1cbiAgICAgICAgICAgIHk9e2AkeyhlYWNoQmFsbFdpZHRoRW0gLSBiYWxsU2l6ZSAqIDEuMikgLyAyfWVtYH1cbiAgICAgICAgICAgIHJ4PXtgJHsoYmFsbFNpemUgKiAxLjIpIC8gMn1lbWB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvbkNsaWNrUGFnZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VDbGlja2VkID1cbiAgICAgICAgICAgICAgICAgICghaXNDZW50ZXJQYWdlXG4gICAgICAgICAgICAgICAgICAgID8gcGFnZUluZGV4ID49IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMVxuICAgICAgICAgICAgICAgICAgICAgID8gTWF0aC5mbG9vcihwYWdlKSAtIHJlc2V0UGFnZUluZGV4IC0gMVxuICAgICAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAgICAgICAgICAgICA6IE1hdGguZmxvb3IocGFnZSkgLSAoaW5kZXhGb3JUaGVCYWxsc0NlbnRlciArIDEpKSArXG4gICAgICAgICAgICAgICAgICAxICtcbiAgICAgICAgICAgICAgICAgIGk7XG4gICAgICAgICAgICAgICAgb25DbGlja1BhZ2UoTWF0aC5yb3VuZChwYWdlQ2xpY2tlZCkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfSwgW2luZGV4Rm9yVGhlQmFsbHNDZW50ZXIsIHBhZ2VJbmRleCwgcGFnZXNdKTtcbiAgY29uc3QgW2d1aWRlQmFsbCwgLi4ucGFnZUJhbGxzXSA9IGJhbGxzLnJldmVyc2UoKTtcbiAgbGV0IHdpZHRoID0gZWFjaEJhbGxXaWR0aEVtICogTWF0aC5taW4ocGFnZXMsIG1heEJhbGxzKSAqIDI7XG4gIGlmIChtb2RlID09PSBQYWdpbmF0aW9uSW5kaWNhdG9yTW9kZS5TVEFSVCkgd2lkdGggLz0gMjtcblxuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIHdpZHRoOiBgJHt3aWR0aH1lbWAsXG4gICAgICAgIG1pbldpZHRoOiBgJHt3aWR0aH1lbWAsXG4gICAgICAgIGhlaWdodDogXCIxLjJlbVwiLFxuICAgICAgICBmb250U2l6ZTogYCR7c2l6ZX1weGAsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxmaWx0ZXIgaWQ9e2Bnb28tJHtyYW5kfWB9PlxuICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgaW49XCJTb3VyY2VHcmFwaGljXCIgcmVzdWx0PVwiYmx1clwiIHN0ZERldmlhdGlvbj1cIjVcIiAvPlxuICAgICAgICA8ZmVDb2xvck1hdHJpeFxuICAgICAgICAgIGluPVwiYmx1clwiXG4gICAgICAgICAgbW9kZT1cIm1hdHJpeFwiXG4gICAgICAgICAgdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMTggLTdcIlxuICAgICAgICAgIHJlc3VsdD1cImdvb1wiXG4gICAgICAgIC8+XG4gICAgICAgIDxmZUJsZW5kIGluMj1cImdvb1wiIGluPVwiU291cmNlR3JhcGhpY1wiIHJlc3VsdD1cIm1peFwiIC8+XG4gICAgICA8L2ZpbHRlcj5cbiAgICAgIDxtYXNrIGlkPXtgbWFzay0ke3JhbmR9YH0+XG4gICAgICAgIDxnIGZpbHRlcj17YHVybCgjJHtgZ29vLSR7cmFuZH1gfSlgfSBmaWxsPVwiI2ZmZlwiPlxuICAgICAgICAgIHtbcGFnZUJhbGxzXX1cbiAgICAgICAgICB7Z3VpZGVCYWxsfVxuICAgICAgICA8L2c+XG4gICAgICA8L21hc2s+XG4gICAgICA8cmVjdFxuICAgICAgICB4PVwiMFwiXG4gICAgICAgIHk9XCIwXCJcbiAgICAgICAgbWFzaz17YHVybCgjJHtgbWFzay0ke3JhbmR9YH0pYH1cbiAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgICAgIHN0eWxlPXt7IGZpbGw6IFwidmFyKC0tZGlnaXRhbC1ibHVlKVwiIH19XG4gICAgICA+PC9yZWN0PlxuICAgICAge29uQ2xpY2tQYWdlICYmIChcbiAgICAgICAgPGcgb3BhY2l0eT17MH0gc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fT5cbiAgICAgICAgICB7cGFnZUJhbGxzfVxuICAgICAgICA8L2c+XG4gICAgICApfVxuICAgIDwvc3ZnPlxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQW5pbWF0ZWRQYWdpbmF0aW9uSW5kaWNhdG9yKFxuICBwcm9wczogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBhZ2luYXRpb25JbmRpY2F0b3JWaWV3PiAmIHtcbiAgICBkdXJhdGlvbjogbnVtYmVyO1xuICB9XG4pIHtcbiAgY29uc3QgcHJldlBhZ2UgPSB1c2VSZWYocHJvcHMucGFnZSk7XG4gIGNvbnN0IFtwYWdlUHJvZ3Jlc3MsIHNldFBhZ2VQcm9ncmVzc10gPSB1c2VTdGF0ZShwcm9wcy5wYWdlKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBkaWZmID0gcHJvcHMucGFnZSAtIHByZXZQYWdlLmN1cnJlbnQ7XG4gICAgY29uc3QgZGlmZlBlclN0ZXAgPSBkaWZmIC8gNjA7XG5cbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHNldFBhZ2VQcm9ncmVzcygocHJldikgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gcHJldiArIGRpZmZQZXJTdGVwO1xuICAgICAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgICAgICBpZiAobmV4dCA8PSBwcm9wcy5wYWdlKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5wYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobmV4dCA+PSBwcm9wcy5wYWdlKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5wYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTnVtYmVyKG5leHQudG9GaXhlZCgyKSk7XG4gICAgICB9KTtcbiAgICB9LCBwcm9wcy5kdXJhdGlvbiAvIDYwKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwcmV2UGFnZS5jdXJyZW50ID0gcHJvcHMucGFnZTtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgIH07XG4gIH0sIFtwcm9wcy5wYWdlXSk7XG5cbiAgcmV0dXJuIDxQYWdpbmF0aW9uSW5kaWNhdG9yVmlldyB7Li4ucHJvcHN9IHBhZ2U9e3BhZ2VQcm9ncmVzc30gLz47XG59XG5cbmZ1bmN0aW9uIF9QYWdpbmF0aW9uSW5kaWNhdG9yKFxuICB7XG4gICAgc2Nyb2xsYWJsZVJlZixcbiAgICBlc3RpbWF0ZWRXaWR0aCxcbiAgICBzaXplLFxuICAgIGNsYXNzTmFtZSA9IFwiXCIsXG4gICAgb25DbGlja1BhZ2UsXG4gICAgbW9kZSxcbiAgICBpbmZpbml0ZSxcbiAgfToge1xuICAgIHNjcm9sbGFibGVSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gICAgZXN0aW1hdGVkV2lkdGg/OiBudW1iZXI7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBvbkNsaWNrUGFnZT86IChwYWdlOiBudW1iZXIpID0+IHZvaWQ7XG4gIH0gJiBQaWNrPENvbXBvbmVudFByb3BzPHR5cGVvZiBQYWdpbmF0aW9uSW5kaWNhdG9yVmlldz4sIFwibW9kZVwiIHwgXCJpbmZpbml0ZVwiPixcbiAgcmVmOiBGb3J3YXJkZWRSZWY8e1xuICAgIHJlZnJlc2hQYWdlczogKCkgPT4gdm9pZDtcbiAgfT5cbikge1xuICBjb25zdCBbY3VycmVudFBhZ2UsIHNldEN1cnJlbnRQYWdlXSA9IHVzZVN0YXRlKDEpO1xuXG4gIGNvbnN0IFtkZWZzLCBzZXREZWZzXSA9XG4gICAgdXNlU3RhdGU8e1xuICAgICAgcGFnZXM6IG51bWJlcjtcbiAgICB9PigpO1xuXG4gIGNvbnN0IHJlZnJlc2hQYWdlcyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNjcm9sbGFibGVSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgIGNvbnN0IG1heFdpZHRoID1cbiAgICAgIGVzdGltYXRlZFdpZHRoID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBzY3JvbGxhYmxlUmVmLmN1cnJlbnQhLnNjcm9sbFdpZHRoXG4gICAgICAgIDogZXN0aW1hdGVkV2lkdGg7XG5cbiAgICBjb25zdCBwYWdlcyA9IG1heFdpZHRoIC8gc2Nyb2xsYWJsZVJlZi5jdXJyZW50IS5jbGllbnRXaWR0aDtcbiAgICBpZiAocGFnZXMgPiAxKVxuICAgICAgc2V0RGVmcyh7XG4gICAgICAgIHBhZ2VzOiBpbmZpbml0ZSA/IHBhZ2VzICsgMiA6IHBhZ2VzLFxuICAgICAgfSk7XG4gIH0sIFtlc3RpbWF0ZWRXaWR0aCwgaW5maW5pdGVdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gcmVmcmVzaFBhZ2VzKCksIFtyZWZyZXNoUGFnZXNdKTtcblxuICBjb25zdCB1cGRhdGVQYWdlSW5kaWNhdG9ycyA9IHVzZUNhbGxiYWNrKFxuICAgICh0YXJnZXQ6IEhUTUxEaXZFbGVtZW50LCBwYWdlczogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoIXNjcm9sbGFibGVSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgZWFjaFBhZ2VXaWR0aCA9IHNjcm9sbGFibGVSZWYuY3VycmVudCEuY2xpZW50V2lkdGg7XG4gICAgICBjb25zdCBwYWdlID0gMSArIHRhcmdldC5zY3JvbGxMZWZ0IC8gZWFjaFBhZ2VXaWR0aDtcbiAgICAgIGNvbnN0IGxhc3RQYWdlUHJvZ3Jlc3MgPSBNYXRoLmZsb29yKHBhZ2VzKSArIDE7XG4gICAgICBjb25zdCBtYXhpbXVtUHJvZ3Jlc3MgPSBwYWdlcyArIDE7XG5cbiAgICAgIGNvbnN0IGRpZmZUb01heCA9IG1heGltdW1Qcm9ncmVzcyAtIGxhc3RQYWdlUHJvZ3Jlc3M7XG4gICAgICBjb25zdCBjdXJyZW50UHJvZ3Jlc3NPbkRpZmYgPSBwYWdlIC0gbGFzdFBhZ2VQcm9ncmVzcztcblxuICAgICAgaWYgKHBhZ2UgPiBsYXN0UGFnZVByb2dyZXNzKSB7XG4gICAgICAgIGNvbnN0IHAgPSBsYXN0UGFnZVByb2dyZXNzICsgY3VycmVudFByb2dyZXNzT25EaWZmIC8gZGlmZlRvTWF4O1xuICAgICAgICBzZXRDdXJyZW50UGFnZShwKTtcbiAgICAgIH0gZWxzZSBzZXRDdXJyZW50UGFnZShwYWdlKTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShcbiAgICByZWYsXG4gICAgKCkgPT4gKHtcbiAgICAgIHJlZnJlc2hQYWdlcyxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkZWZzKSByZXR1cm47XG4gICAgY29uc3QgZWwgPSBzY3JvbGxhYmxlUmVmLmN1cnJlbnQhO1xuICAgIGNvbnN0IG9uU2Nyb2xsID0gKGU6IEV2ZW50KSA9PlxuICAgICAgdXBkYXRlUGFnZUluZGljYXRvcnMoZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50LCBkZWZzLnBhZ2VzKTtcbiAgICB1cGRhdGVQYWdlSW5kaWNhdG9ycyhlbCwgZGVmcy5wYWdlcyk7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBvblNjcm9sbCwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBvblNjcm9sbCk7XG4gICAgfTtcbiAgfSwgW2RlZnNdKTtcblxuICBjb25zdCBwYWdlcyA9IHVzZU1lbW8oKCkgPT4gKGRlZnMgPyBkZWZzLnBhZ2VzIDogdW5kZWZpbmVkKSwgW2RlZnNdKTtcblxuICByZXR1cm4gIXBhZ2VzID8gbnVsbCA6IChcbiAgICA8UGFnaW5hdGlvbkluZGljYXRvclZpZXdcbiAgICAgIHBhZ2VzPXtwYWdlc31cbiAgICAgIHBhZ2U9e2N1cnJlbnRQYWdlfVxuICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgb25DbGlja1BhZ2U9e29uQ2xpY2tQYWdlfVxuICAgICAgbW9kZT17bW9kZX1cbiAgICAgIGluZmluaXRlPXtpbmZpbml0ZX1cbiAgICAvPlxuICApO1xufVxuXG4vKipcbiAqIEEgY29vbCBjb21wb25lbnQgdG8gaW5kaWNhdGUgaG93IG1hbnkgcGFnZXMgYXJlXG4gKiovXG4vKipcbiAqIEEgcGFnaW5hdGlvbiBpbmRpY2F0b3IgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgdGhlIGN1cnJlbnQgcGFnZVxuICogYW5kIHRvdGFsIG51bWJlciBvZiBwYWdlcyB1c2luZyBhbmltYXRlZCBjaXJjdWxhciBpbmRpY2F0b3JzLlxuICogSXQgdXBkYXRlcyB2aXN1YWxseSB3aGVuIHNjcm9sbGluZyB0aHJvdWdoIHBhZ2VzLlxuICovXG5jb25zdCBQYWdpbmF0aW9uSW5kaWNhdG9yID0gZm9yd2FyZFJlZihfUGFnaW5hdGlvbkluZGljYXRvcik7XG5leHBvcnQgZGVmYXVsdCBQYWdpbmF0aW9uSW5kaWNhdG9yO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFXZSxTQUFBRCx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUosdUJBQUEsWUFBQUEsQ0FBQUUsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFDLE9BQUEsRUFBQVYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsR0FBQU0sQ0FBQSxDQUFBTyxHQUFBLENBQUFiLENBQUEsRUFBQVEsQ0FBQSxnQkFBQVAsQ0FBQSxJQUFBRCxDQUFBLGdCQUFBQyxDQUFBLE9BQUFhLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZixDQUFBLEVBQUFDLENBQUEsT0FBQU0sQ0FBQSxJQUFBRCxDQUFBLEdBQUFVLE1BQUEsQ0FBQUMsY0FBQSxLQUFBRCxNQUFBLENBQUFFLHdCQUFBLENBQUFsQixDQUFBLEVBQUFDLENBQUEsT0FBQU0sQ0FBQSxDQUFBSyxHQUFBLElBQUFMLENBQUEsQ0FBQU0sR0FBQSxJQUFBUCxDQUFBLENBQUFFLENBQUEsRUFBQVAsQ0FBQSxFQUFBTSxDQUFBLElBQUFDLENBQUEsQ0FBQVAsQ0FBQSxJQUFBRCxDQUFBLENBQUFDLENBQUEsV0FBQU8s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
@@ -12,5 +12,9 @@ type Props = PropsWithChildren<{
12
12
  /**
13
13
  * It holds a children and animates a tilt effect relative to mouse position
14
14
  **/
15
+ /**
16
+ * A component that creates a 3D tilt effect on its content based on where you move your mouse or touch the screen.
17
+ * When active, the element tilts and responds to your cursor position, creating an interactive depth effect.
18
+ **/
15
19
  declare const Parallax: React.ForwardRefExoticComponent<Omit<Props, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
20
  export default Parallax;
@@ -159,6 +159,10 @@ function _Parallax(_ref, ref) {
159
159
  /**
160
160
  * It holds a children and animates a tilt effect relative to mouse position
161
161
  **/
162
+ /**
163
+ * A component that creates a 3D tilt effect on its content based on where you move your mouse or touch the screen.
164
+ * When active, the element tilts and responds to your cursor position, creating an interactive depth effect.
165
+ **/
162
166
  const Parallax = /*#__PURE__*/(0, _react.forwardRef)(_Parallax);
163
167
  var _default = exports.default = Parallax;
164
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX1BhcmFsbGF4TW9kdWxlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9oZWxwZXJzIiwiX3VzZVRpbHQiLCJfZXhjbHVkZWQiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTUFYSU1VTV9QQVJBTExBWCIsIngiLCJ5IiwiX1BhcmFsbGF4IiwiX3JlZiIsInJlZiIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiYWN0aXZlIiwib25DbGljayIsInJlZmxlY3Rpb24iLCJtYXhQYXJhbGxheCIsInByb3BzIiwicGFyYWxsYXhhYmxlUmVmIiwidXNlUmVmIiwicmVmbGVjdGlvblJlZiIsIm11bHRpcGxpZXJSZWYiLCJpbml0aWFsUG9zaXRpb25SZWYiLCJ1bmRlZmluZWQiLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwiZWwiLCJnZXRDb21wdXRlZFN0eWxlIiwidHJhbnNmb3JtIiwic3R5bGUiLCJjb25jYXQiLCJ1cGRhdGVQb3NpdGlvbnMiLCJyZWxhdGl2ZVRvWCIsInJlbGF0aXZlVG9ZIiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwieDAiLCJ4VyIsImhlaWdodCIsInkwIiwieUgiLCJsZWZ0IiwiY2xpZW50V2lkdGgiLCJ0b3AiLCJjbGllbnRIZWlnaHQiLCJkaXN0YW5jZU9mZlJpZ2h0IiwiY2FsY3VsYXRlRGlzdGFuY2VSZWxhdGl2ZVRvQm91bmRzIiwiZGlzdGFuY2VPZmZCb3R0b20iLCJob3dNdWNoVG9Sb3RhdGVZIiwiZ2l2ZW5UaGVSZWxhdGl2ZVBvc2l0aW9uSG93TXVjaFRvUm90YXRlIiwiaG93TXVjaFRvUm90YXRlWCIsImhvd011Y2hUb09wYWNpZnkiLCJNYXRoIiwiYWJzIiwiaG93TXVjaFRvT3BhY2lmeUhvcml6b250YWwiLCJtYXgiLCJvcGFjaXR5IiwibWluIiwiaGFuZGxlciIsInRocm90dGxlIiwiX3JlZjIiLCJ0b3VjaEhhbmRsZXIiLCJfcmVmMyIsInRvdWNoZXMiLCJwYWdlWCIsInBhZ2VZIiwibW91c2VEb3duSGFuZGxlciIsIm1vdXNlVXBIYW5kbGVyIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9pbnZlcnNlTWF0cml4IiwiX2xpbWl0cyIsImJldGEiLCJnYW1tYSIsIm9yaWVudGF0aW9uTGlzdGVuZXIiLCJfcmVmNCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvZmZzZXQiLCJfYmV0YSIsIl9nYW1tYSIsImZsYXR0ZW5NYXRyaXgiLCJpbnZlcnRNYXRyaXgiLCJnZW5lcmF0ZU1hdHJpeEZyb21PcGVyYXRpb25zIiwidHlwZSIsImFuZ2xlIiwiam9pbiIsImNyZWF0ZUVsZW1lbnQiLCJTdHlsZXMiLCJwYXJhbGxheCIsIlBhcmFsbGF4IiwiZm9yd2FyZFJlZiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1BhcmFsbGF4L1BhcmFsbGF4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgRGV0YWlsZWRIVE1MUHJvcHMsXG4gIEZvcndhcmRlZFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSFRNTEF0dHJpYnV0ZXMsXG4gIE11dGFibGVSZWZPYmplY3QsXG4gIFByb3BzV2l0aENoaWxkcmVuLFxuICB1c2VFZmZlY3QsXG4gIHVzZVJlZixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0aHJvdHRsZSB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBTdHlsZXMgZnJvbSBcIi4vUGFyYWxsYXgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7XG4gIGZsYXR0ZW5NYXRyaXgsXG4gIGdlbmVyYXRlTWF0cml4RnJvbU9wZXJhdGlvbnMsXG4gIGludmVydE1hdHJpeCxcbn0gZnJvbSBcIi4vbWF0aC9oZWxwZXJzXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVEaXN0YW5jZVJlbGF0aXZlVG9Cb3VuZHMsIGdpdmVuVGhlUmVsYXRpdmVQb3NpdGlvbkhvd011Y2hUb1JvdGF0ZSB9IGZyb20gXCIuLi8uLi9ob29rcy91aS91c2VUaWx0XCI7XG5cbmNvbnN0IE1BWElNVU1fUEFSQUxMQVggPSB7XG4gIHg6IDIwLFxuICB5OiAyMCxcbn07XG5cbnR5cGUgUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgYWN0aXZlOiBib29sZWFuO1xuICBvbkNsaWNrPzogKGU6IGFueSkgPT4gdm9pZDtcbiAgcmVmbGVjdGlvbj86IGJvb2xlYW47XG4gIG1heFBhcmFsbGF4Pzoge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG4gIH07XG59PiAmXG4gIERldGFpbGVkSFRNTFByb3BzPEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiwgSFRNTERpdkVsZW1lbnQ+O1xuXG5mdW5jdGlvbiBfUGFyYWxsYXgoXG4gIHtcbiAgICBjaGlsZHJlbixcbiAgICBjbGFzc05hbWUgPSBcIlwiLFxuICAgIGFjdGl2ZSxcbiAgICBvbkNsaWNrLFxuICAgIHJlZmxlY3Rpb24sXG4gICAgbWF4UGFyYWxsYXggPSBNQVhJTVVNX1BBUkFMTEFYLFxuICAgIC4uLnByb3BzXG4gIH06IFByb3BzLFxuICByZWY6IEZvcndhcmRlZFJlZjxIVE1MRGl2RWxlbWVudD5cbikge1xuICBjb25zdCBwYXJhbGxheGFibGVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCByZWZsZWN0aW9uUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbXVsdGlwbGllclJlZiA9IHVzZVJlZjxudW1iZXI+KDEpO1xuICBjb25zdCBpbml0aWFsUG9zaXRpb25SZWYgPSB1c2VSZWY8c3RyaW5nPih1bmRlZmluZWQpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYpXG4gICAgICAocmVmIGFzIE11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+KS5jdXJyZW50ID1cbiAgICAgICAgcGFyYWxsYXhhYmxlUmVmLmN1cnJlbnQhO1xuICAgIGNvbnN0IGVsID0gcGFyYWxsYXhhYmxlUmVmLmN1cnJlbnQhO1xuICAgIGlmIChhY3RpdmUgJiYgIWluaXRpYWxQb3NpdGlvblJlZi5jdXJyZW50KSB7XG4gICAgICBpbml0aWFsUG9zaXRpb25SZWYuY3VycmVudCA9IGdldENvbXB1dGVkU3R5bGUoZWwpLnRyYW5zZm9ybTtcbiAgICAgIGlmIChpbml0aWFsUG9zaXRpb25SZWYuY3VycmVudCA9PT0gXCJub25lXCIpXG4gICAgICAgIGluaXRpYWxQb3NpdGlvblJlZi5jdXJyZW50ID0gXCJcIjtcbiAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGAke2luaXRpYWxQb3NpdGlvblJlZi5jdXJyZW50fSByb3RhdGVYKDBkZWcpIHJvdGF0ZVkoMGRlZykgdHJhbnNsYXRlWigwcHgpYDtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIH0sIFthY3RpdmVdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gcGFyYWxsYXhhYmxlUmVmLmN1cnJlbnQhO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZVBvc2l0aW9ucyA9IChyZWxhdGl2ZVRvWDogbnVtYmVyLCByZWxhdGl2ZVRvWTogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHdpZHRoOiBbeDAsIHhXXSxcbiAgICAgICAgICBoZWlnaHQ6IFt5MCwgeUhdLFxuICAgICAgICB9ID0ge1xuICAgICAgICAgIHdpZHRoOiBbcmVjdC5sZWZ0LCBlbC5jbGllbnRXaWR0aF0sXG4gICAgICAgICAgaGVpZ2h0OiBbcmVjdC50b3AsIGVsLmNsaWVudEhlaWdodF0sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlT2ZmUmlnaHQgPSBjYWxjdWxhdGVEaXN0YW5jZVJlbGF0aXZlVG9Cb3VuZHMoXG4gICAgICAgICAgcmVsYXRpdmVUb1gsXG4gICAgICAgICAgeDAsXG4gICAgICAgICAgeFcsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkaXN0YW5jZU9mZkJvdHRvbSA9IGNhbGN1bGF0ZURpc3RhbmNlUmVsYXRpdmVUb0JvdW5kcyhcbiAgICAgICAgICByZWxhdGl2ZVRvWSxcbiAgICAgICAgICB5MCxcbiAgICAgICAgICB5SCxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhvd011Y2hUb1JvdGF0ZVkgPVxuICAgICAgICAgIGdpdmVuVGhlUmVsYXRpdmVQb3NpdGlvbkhvd011Y2hUb1JvdGF0ZShcbiAgICAgICAgICAgIGRpc3RhbmNlT2ZmUmlnaHQsXG4gICAgICAgICAgICBtYXhQYXJhbGxheC55XG4gICAgICAgICAgKSAqIG11bHRpcGxpZXJSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgaG93TXVjaFRvUm90YXRlWCA9XG4gICAgICAgICAgZ2l2ZW5UaGVSZWxhdGl2ZVBvc2l0aW9uSG93TXVjaFRvUm90YXRlKFxuICAgICAgICAgICAgZGlzdGFuY2VPZmZCb3R0b20sXG4gICAgICAgICAgICBtYXhQYXJhbGxheC54XG4gICAgICAgICAgKSAqIG11bHRpcGxpZXJSZWYuY3VycmVudDtcblxuICAgICAgICBjb25zdCBob3dNdWNoVG9PcGFjaWZ5ID0gTWF0aC5hYnMoXG4gICAgICAgICAgTWF0aC5hYnMoZGlzdGFuY2VPZmZCb3R0b20gLSAwLjUpIC8gMC41XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhvd011Y2hUb09wYWNpZnlIb3Jpem9udGFsID0gTWF0aC5tYXgoXG4gICAgICAgICAgTWF0aC5hYnMoTWF0aC5hYnMoZGlzdGFuY2VPZmZSaWdodCAtIDAuNSkgLyAwLjUpLFxuICAgICAgICAgIE1hdGguYWJzKE1hdGguYWJzKGRpc3RhbmNlT2ZmQm90dG9tIC0gMC41KSAvIDAuNSlcbiAgICAgICAgKTtcblxuICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgJHtpbml0aWFsUG9zaXRpb25SZWYuY3VycmVudFxuICAgICAgICAgIH0gcm90YXRlWSgke2hvd011Y2hUb1JvdGF0ZVl9ZGVnKSByb3RhdGVYKCR7LWhvd011Y2hUb1JvdGF0ZVh9ZGVnKSB0cmFuc2xhdGVaKCR7bXVsdGlwbGllclJlZi5jdXJyZW50ID09PSAxID8gMCA6IC0zMFxuICAgICAgICAgIH1weClgO1xuXG4gICAgICAgIGlmIChyZWZsZWN0aW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICByZWZsZWN0aW9uUmVmLmN1cnJlbnQuc3R5bGUubGVmdCA9IGAkeygxIC0gZGlzdGFuY2VPZmZSaWdodCkgKiAxMDB9JWA7XG4gICAgICAgICAgcmVmbGVjdGlvblJlZi5jdXJyZW50LnN0eWxlLnRvcCA9IGAkeygxIC0gZGlzdGFuY2VPZmZCb3R0b20pICogMTAwfSVgO1xuICAgICAgICAgIHJlZmxlY3Rpb25SZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gYCR7TWF0aC5taW4oXG4gICAgICAgICAgICBob3dNdWNoVG9PcGFjaWZ5LFxuICAgICAgICAgICAgaG93TXVjaFRvT3BhY2lmeUhvcml6b250YWxcbiAgICAgICAgICApfWA7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBoYW5kbGVyID0gdGhyb3R0bGUoKHsgeCwgeSB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHVwZGF0ZVBvc2l0aW9ucyh4LCB5KTtcbiAgICAgIH0sIDEwMDAgLyAzMCk7XG4gICAgICBjb25zdCB0b3VjaEhhbmRsZXIgPSB0aHJvdHRsZSgoeyB0b3VjaGVzIH06IFRvdWNoRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyBwYWdlWCwgcGFnZVkgfSA9IHRvdWNoZXNbMF07XG4gICAgICAgIHVwZGF0ZVBvc2l0aW9ucyhwYWdlWCwgcGFnZVkpO1xuICAgICAgfSwgMTAwMCAvIDMwKTtcbiAgICAgIGNvbnN0IG1vdXNlRG93bkhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIG11bHRpcGxpZXJSZWYuY3VycmVudCA9IDEuNTtcbiAgICAgIH07XG4gICAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgbXVsdGlwbGllclJlZi5jdXJyZW50ID0gMTtcbiAgICAgIH07XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBoYW5kbGVyKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRvdWNoSGFuZGxlcik7XG4gICAgICBsZXQgX2ludmVyc2VNYXRyaXg6IG51bWJlcltdIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgX2xpbWl0czoge1xuICAgICAgICBbayBpbiBcImJldGFcIiB8IFwiZ2FtbWFcIl0/OiBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgfSA9IHtcbiAgICAgICAgYmV0YTogdW5kZWZpbmVkLFxuICAgICAgICBnYW1tYTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IG9yaWVudGF0aW9uTGlzdGVuZXI6IChlOiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50KSA9PiB2b2lkID0gKHtcbiAgICAgICAgYmV0YSxcbiAgICAgICAgZ2FtbWEsXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGJldGEgPSBiZXRhISAqIDAuNTtcbiAgICAgICAgZ2FtbWEgPSBnYW1tYSEgKiAwLjU7XG4gICAgICAgIGlmICghX2ludmVyc2VNYXRyaXgpIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0b3VjaEhhbmRsZXIpO1xuICAgICAgICAgIGNvbnN0IG9mZnNldCA9IDEyLjU7XG4gICAgICAgICAgX2xpbWl0cy5iZXRhID0gW2JldGEhIC0gb2Zmc2V0LCBiZXRhISArIG9mZnNldF07XG4gICAgICAgICAgX2xpbWl0cy5nYW1tYSA9IFtnYW1tYSEgLSBvZmZzZXQsIGdhbW1hISArIG9mZnNldF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgX2JldGEgPSBNYXRoLm1pbihcbiAgICAgICAgICBfbGltaXRzLmJldGEhWzFdLFxuICAgICAgICAgIE1hdGgubWF4KF9saW1pdHMuYmV0YSFbMF0sIGJldGEhKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBfZ2FtbWEgPSBNYXRoLm1pbihcbiAgICAgICAgICBfbGltaXRzLmdhbW1hIVsxXSxcbiAgICAgICAgICBNYXRoLm1heChfbGltaXRzLmdhbW1hIVswXSwgZ2FtbWEhKVxuICAgICAgICApO1xuICAgICAgICBpZiAoIV9pbnZlcnNlTWF0cml4KSB7XG4gICAgICAgICAgX2ludmVyc2VNYXRyaXggPSBmbGF0dGVuTWF0cml4KFxuICAgICAgICAgICAgaW52ZXJ0TWF0cml4KFxuICAgICAgICAgICAgICBnZW5lcmF0ZU1hdHJpeEZyb21PcGVyYXRpb25zKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwicm90YXRlWVwiLFxuICAgICAgICAgICAgICAgICAgYW5nbGU6IF9nYW1tYSEsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcInJvdGF0ZVhcIixcbiAgICAgICAgICAgICAgICAgIGFuZ2xlOiAtX2JldGEhLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYG1hdHJpeDNkKCR7X2ludmVyc2VNYXRyaXguam9pbihcbiAgICAgICAgICBcIixcIlxuICAgICAgICApfSkgcm90YXRlWCgkey1fYmV0YSF9ZGVnKSByb3RhdGVZKCR7X2dhbW1hfWRlZylgO1xuICAgICAgfTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZGV2aWNlb3JpZW50YXRpb25cIiwgb3JpZW50YXRpb25MaXN0ZW5lcik7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsICgpID0+IHtcbiAgICAgICAgX2ludmVyc2VNYXRyaXggPSB1bmRlZmluZWQ7XG4gICAgICB9KTtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIG1vdXNlRG93bkhhbmRsZXIpO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIG1vdXNlVXBIYW5kbGVyKTtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgbW91c2VEb3duSGFuZGxlcik7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBtb3VzZVVwSGFuZGxlcik7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZGV2aWNlb3JpZW50YXRpb25cIiwgb3JpZW50YXRpb25MaXN0ZW5lcik7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIGhhbmRsZXIpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0b3VjaEhhbmRsZXIpO1xuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIG1vdXNlRG93bkhhbmRsZXIpO1xuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBtb3VzZVVwSGFuZGxlcik7XG4gICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIG1vdXNlRG93bkhhbmRsZXIpO1xuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgbW91c2VVcEhhbmRsZXIpO1xuICAgICAgICAvLyBlbC5zdHlsZS50cmFuc2Zvcm0gPSBpbml0aWFsUG9zaXRpb25SZWYuY3VycmVudCE7XG4gICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGByb3RhdGVYKDBkZWcpIHJvdGF0ZVkoMGRlZykgdHJhbnNsYXRlWigwcHgpYDtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbYWN0aXZlXSk7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIHJlZj17cGFyYWxsYXhhYmxlUmVmfVxuICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZXMucGFyYWxsYXh9ICR7Y2xhc3NOYW1lfWB9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgICAge3JlZmxlY3Rpb24gJiYgPGRpdiByZWY9e3JlZmxlY3Rpb25SZWZ9IGNsYXNzTmFtZT17U3R5bGVzLnJlZmxlY3Rpb259IC8+fVxuICAgIDwvZGl2PlxuICApO1xufVxuXG4vKipcbiAqIEl0IGhvbGRzIGEgY2hpbGRyZW4gYW5kIGFuaW1hdGVzIGEgdGlsdCBlZmZlY3QgcmVsYXRpdmUgdG8gbW91c2UgcG9zaXRpb25cbiAqKi9cbmNvbnN0IFBh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
168
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX1BhcmFsbGF4TW9kdWxlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9oZWxwZXJzIiwiX3VzZVRpbHQiLCJfZXhjbHVkZWQiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTUFYSU1VTV9QQVJBTExBWCIsIngiLCJ5IiwiX1BhcmFsbGF4IiwiX3JlZiIsInJlZiIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiYWN0aXZlIiwib25DbGljayIsInJlZmxlY3Rpb24iLCJtYXhQYXJhbGxheCIsInByb3BzIiwicGFyYWxsYXhhYmxlUmVmIiwidXNlUmVmIiwicmVmbGVjdGlvblJlZiIsIm11bHRpcGxpZXJSZWYiLCJpbml0aWFsUG9zaXRpb25SZWYiLCJ1bmRlZmluZWQiLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwiZWwiLCJnZXRDb21wdXRlZFN0eWxlIiwidHJhbnNmb3JtIiwic3R5bGUiLCJjb25jYXQiLCJ1cGRhdGVQb3NpdGlvbnMiLCJyZWxhdGl2ZVRvWCIsInJlbGF0aXZlVG9ZIiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwieDAiLCJ4VyIsImhlaWdodCIsInkwIiwieUgiLCJsZWZ0IiwiY2xpZW50V2lkdGgiLCJ0b3AiLCJjbGllbnRIZWlnaHQiLCJkaXN0YW5jZU9mZlJpZ2h0IiwiY2FsY3VsYXRlRGlzdGFuY2VSZWxhdGl2ZVRvQm91bmRzIiwiZGlzdGFuY2VPZmZCb3R0b20iLCJob3dNdWNoVG9Sb3RhdGVZIiwiZ2l2ZW5UaGVSZWxhdGl2ZVBvc2l0aW9uSG93TXVjaFRvUm90YXRlIiwiaG93TXVjaFRvUm90YXRlWCIsImhvd011Y2hUb09wYWNpZnkiLCJNYXRoIiwiYWJzIiwiaG93TXVjaFRvT3BhY2lmeUhvcml6b250YWwiLCJtYXgiLCJvcGFjaXR5IiwibWluIiwiaGFuZGxlciIsInRocm90dGxlIiwiX3JlZjIiLCJ0b3VjaEhhbmRsZXIiLCJfcmVmMyIsInRvdWNoZXMiLCJwYWdlWCIsInBhZ2VZIiwibW91c2VEb3duSGFuZGxlciIsIm1vdXNlVXBIYW5kbGVyIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9pbnZlcnNlTWF0cml4IiwiX2xpbWl0cyIsImJldGEiLCJnYW1tYSIsIm9yaWVudGF0aW9uTGlzdGVuZXIiLCJfcmVmNCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvZmZzZXQiLCJfYmV0YSIsIl9nYW1tYSIsImZsYXR0ZW5NYXRyaXgiLCJpbnZlcnRNYXRyaXgiLCJnZW5lcmF0ZU1hdHJpeEZyb21PcGVyYXRpb25zIiwidHlwZSIsImFuZ2xlIiwiam9pbiIsImNyZWF0ZUVsZW1lbnQiLCJTdHlsZXMiLCJwYXJhbGxheCIsIlBhcmFsbGF4IiwiZm9yd2FyZFJlZiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1BhcmFsbGF4L1BhcmFsbGF4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgRGV0YWlsZWRIVE1MUHJvcHMsXG4gIEZvcndhcmRlZFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSFRNTEF0dHJpYnV0ZXMsXG4gIE11dGFibGVSZWZPYmplY3QsXG4gIFByb3BzV2l0aENoaWxkcmVuLFxuICB1c2VFZmZlY3QsXG4gIHVzZVJlZixcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0aHJvdHRsZSB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBTdHlsZXMgZnJvbSBcIi4vUGFyYWxsYXgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7XG4gIGZsYXR0ZW5NYXRyaXgsXG4gIGdlbmVyYXRlTWF0cml4RnJvbU9wZXJhdGlvbnMsXG4gIGludmVydE1hdHJpeCxcbn0gZnJvbSBcIi4vbWF0aC9oZWxwZXJzXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVEaXN0YW5jZVJlbGF0aXZlVG9Cb3VuZHMsIGdpdmVuVGhlUmVsYXRpdmVQb3NpdGlvbkhvd011Y2hUb1JvdGF0ZSB9IGZyb20gXCIuLi8uLi9ob29rcy91aS91c2VUaWx0XCI7XG5cbmNvbnN0IE1BWElNVU1fUEFSQUxMQVggPSB7XG4gIHg6IDIwLFxuICB5OiAyMCxcbn07XG5cbnR5cGUgUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgYWN0aXZlOiBib29sZWFuO1xuICBvbkNsaWNrPzogKGU6IGFueSkgPT4gdm9pZDtcbiAgcmVmbGVjdGlvbj86IGJvb2xlYW47XG4gIG1heFBhcmFsbGF4Pzoge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG4gIH07XG59PiAmXG4gIERldGFpbGVkSFRNTFByb3BzPEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiwgSFRNTERpdkVsZW1lbnQ+O1xuXG5mdW5jdGlvbiBfUGFyYWxsYXgoXG4gIHtcbiAgICBjaGlsZHJlbixcbiAgICBjbGFzc05hbWUgPSBcIlwiLFxuICAgIGFjdGl2ZSxcbiAgICBvbkNsaWNrLFxuICAgIHJlZmxlY3Rpb24sXG4gICAgbWF4UGFyYWxsYXggPSBNQVhJTVVNX1BBUkFMTEFYLFxuICAgIC4uLnByb3BzXG4gIH06IFByb3BzLFxuICByZWY6IEZvcndhcmRlZFJlZjxIVE1MRGl2RWxlbWVudD5cbikge1xuICBjb25zdCBwYXJhbGxheGFibGVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCByZWZsZWN0aW9uUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbXVsdGlwbGllclJlZiA9IHVzZVJlZjxudW1iZXI+KDEpO1xuICBjb25zdCBpbml0aWFsUG9zaXRpb25SZWYgPSB1c2VSZWY8c3RyaW5nPih1bmRlZmluZWQpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYpXG4gICAgICAocmVmIGFzIE11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+KS5jdXJyZW50ID1cbiAgICAgICAgcGFyYWxsYXhhYmxlUmVmLmN1cnJlbnQhO1xuICAgIGNvbnN0IGVsID0gcGFyYWxsYXhhYmxlUmVmLmN1cnJlbnQhO1xuICAgIGlmIChhY3RpdmUgJiYgIWluaXRpYWxQb3NpdGlvblJlZi5jdXJyZW50KSB7XG4gICAgICBpbml0aWFsUG9zaXRpb25SZWYuY3VycmVudCA9IGdldENvbXB1dGVkU3R5bGUoZWwpLnRyYW5zZm9ybTtcbiAgICAgIGlmIChpbml0aWFsUG9zaXRpb25SZWYuY3VycmVudCA9PT0gXCJub25lXCIpXG4gICAgICAgIGluaXRpYWxQb3NpdGlvblJlZi5jdXJyZW50ID0gXCJcIjtcbiAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGAke2luaXRpYWxQb3NpdGlvblJlZi5jdXJyZW50fSByb3RhdGVYKDBkZWcpIHJvdGF0ZVkoMGRlZykgdHJhbnNsYXRlWigwcHgpYDtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIH0sIFthY3RpdmVdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gcGFyYWxsYXhhYmxlUmVmLmN1cnJlbnQhO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZVBvc2l0aW9ucyA9IChyZWxhdGl2ZVRvWDogbnVtYmVyLCByZWxhdGl2ZVRvWTogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHdpZHRoOiBbeDAsIHhXXSxcbiAgICAgICAgICBoZWlnaHQ6IFt5MCwgeUhdLFxuICAgICAgICB9ID0ge1xuICAgICAgICAgIHdpZHRoOiBbcmVjdC5sZWZ0LCBlbC5jbGllbnRXaWR0aF0sXG4gICAgICAgICAgaGVpZ2h0OiBbcmVjdC50b3AsIGVsLmNsaWVudEhlaWdodF0sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlT2ZmUmlnaHQgPSBjYWxjdWxhdGVEaXN0YW5jZVJlbGF0aXZlVG9Cb3VuZHMoXG4gICAgICAgICAgcmVsYXRpdmVUb1gsXG4gICAgICAgICAgeDAsXG4gICAgICAgICAgeFcsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkaXN0YW5jZU9mZkJvdHRvbSA9IGNhbGN1bGF0ZURpc3RhbmNlUmVsYXRpdmVUb0JvdW5kcyhcbiAgICAgICAgICByZWxhdGl2ZVRvWSxcbiAgICAgICAgICB5MCxcbiAgICAgICAgICB5SCxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhvd011Y2hUb1JvdGF0ZVkgPVxuICAgICAgICAgIGdpdmVuVGhlUmVsYXRpdmVQb3NpdGlvbkhvd011Y2hUb1JvdGF0ZShcbiAgICAgICAgICAgIGRpc3RhbmNlT2ZmUmlnaHQsXG4gICAgICAgICAgICBtYXhQYXJhbGxheC55XG4gICAgICAgICAgKSAqIG11bHRpcGxpZXJSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgaG93TXVjaFRvUm90YXRlWCA9XG4gICAgICAgICAgZ2l2ZW5UaGVSZWxhdGl2ZVBvc2l0aW9uSG93TXVjaFRvUm90YXRlKFxuICAgICAgICAgICAgZGlzdGFuY2VPZmZCb3R0b20sXG4gICAgICAgICAgICBtYXhQYXJhbGxheC54XG4gICAgICAgICAgKSAqIG11bHRpcGxpZXJSZWYuY3VycmVudDtcblxuICAgICAgICBjb25zdCBob3dNdWNoVG9PcGFjaWZ5ID0gTWF0aC5hYnMoXG4gICAgICAgICAgTWF0aC5hYnMoZGlzdGFuY2VPZmZCb3R0b20gLSAwLjUpIC8gMC41XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhvd011Y2hUb09wYWNpZnlIb3Jpem9udGFsID0gTWF0aC5tYXgoXG4gICAgICAgICAgTWF0aC5hYnMoTWF0aC5hYnMoZGlzdGFuY2VPZmZSaWdodCAtIDAuNSkgLyAwLjUpLFxuICAgICAgICAgIE1hdGguYWJzKE1hdGguYWJzKGRpc3RhbmNlT2ZmQm90dG9tIC0gMC41KSAvIDAuNSlcbiAgICAgICAgKTtcblxuICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgJHtpbml0aWFsUG9zaXRpb25SZWYuY3VycmVudFxuICAgICAgICAgIH0gcm90YXRlWSgke2hvd011Y2hUb1JvdGF0ZVl9ZGVnKSByb3RhdGVYKCR7LWhvd011Y2hUb1JvdGF0ZVh9ZGVnKSB0cmFuc2xhdGVaKCR7bXVsdGlwbGllclJlZi5jdXJyZW50ID09PSAxID8gMCA6IC0zMFxuICAgICAgICAgIH1weClgO1xuXG4gICAgICAgIGlmIChyZWZsZWN0aW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICByZWZsZWN0aW9uUmVmLmN1cnJlbnQuc3R5bGUubGVmdCA9IGAkeygxIC0gZGlzdGFuY2VPZmZSaWdodCkgKiAxMDB9JWA7XG4gICAgICAgICAgcmVmbGVjdGlvblJlZi5jdXJyZW50LnN0eWxlLnRvcCA9IGAkeygxIC0gZGlzdGFuY2VPZmZCb3R0b20pICogMTAwfSVgO1xuICAgICAgICAgIHJlZmxlY3Rpb25SZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gYCR7TWF0aC5taW4oXG4gICAgICAgICAgICBob3dNdWNoVG9PcGFjaWZ5LFxuICAgICAgICAgICAgaG93TXVjaFRvT3BhY2lmeUhvcml6b250YWxcbiAgICAgICAgICApfWA7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBoYW5kbGVyID0gdGhyb3R0bGUoKHsgeCwgeSB9OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHVwZGF0ZVBvc2l0aW9ucyh4LCB5KTtcbiAgICAgIH0sIDEwMDAgLyAzMCk7XG4gICAgICBjb25zdCB0b3VjaEhhbmRsZXIgPSB0aHJvdHRsZSgoeyB0b3VjaGVzIH06IFRvdWNoRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyBwYWdlWCwgcGFnZVkgfSA9IHRvdWNoZXNbMF07XG4gICAgICAgIHVwZGF0ZVBvc2l0aW9ucyhwYWdlWCwgcGFnZVkpO1xuICAgICAgfSwgMTAwMCAvIDMwKTtcbiAgICAgIGNvbnN0IG1vdXNlRG93bkhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIG11bHRpcGxpZXJSZWYuY3VycmVudCA9IDEuNTtcbiAgICAgIH07XG4gICAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgbXVsdGlwbGllclJlZi5jdXJyZW50ID0gMTtcbiAgICAgIH07XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBoYW5kbGVyKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRvdWNoSGFuZGxlcik7XG4gICAgICBsZXQgX2ludmVyc2VNYXRyaXg6IG51bWJlcltdIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgX2xpbWl0czoge1xuICAgICAgICBbayBpbiBcImJldGFcIiB8IFwiZ2FtbWFcIl0/OiBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgfSA9IHtcbiAgICAgICAgYmV0YTogdW5kZWZpbmVkLFxuICAgICAgICBnYW1tYTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IG9yaWVudGF0aW9uTGlzdGVuZXI6IChlOiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50KSA9PiB2b2lkID0gKHtcbiAgICAgICAgYmV0YSxcbiAgICAgICAgZ2FtbWEsXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGJldGEgPSBiZXRhISAqIDAuNTtcbiAgICAgICAgZ2FtbWEgPSBnYW1tYSEgKiAwLjU7XG4gICAgICAgIGlmICghX2ludmVyc2VNYXRyaXgpIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0b3VjaEhhbmRsZXIpO1xuICAgICAgICAgIGNvbnN0IG9mZnNldCA9IDEyLjU7XG4gICAgICAgICAgX2xpbWl0cy5iZXRhID0gW2JldGEhIC0gb2Zmc2V0LCBiZXRhISArIG9mZnNldF07XG4gICAgICAgICAgX2xpbWl0cy5nYW1tYSA9IFtnYW1tYSEgLSBvZmZzZXQsIGdhbW1hISArIG9mZnNldF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgX2JldGEgPSBNYXRoLm1pbihcbiAgICAgICAgICBfbGltaXRzLmJldGEhWzFdLFxuICAgICAgICAgIE1hdGgubWF4KF9saW1pdHMuYmV0YSFbMF0sIGJldGEhKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBfZ2FtbWEgPSBNYXRoLm1pbihcbiAgICAgICAgICBfbGltaXRzLmdhbW1hIVsxXSxcbiAgICAgICAgICBNYXRoLm1heChfbGltaXRzLmdhbW1hIVswXSwgZ2FtbWEhKVxuICAgICAgICApO1xuICAgICAgICBpZiAoIV9pbnZlcnNlTWF0cml4KSB7XG4gICAgICAgICAgX2ludmVyc2VNYXRyaXggPSBmbGF0dGVuTWF0cml4KFxuICAgICAgICAgICAgaW52ZXJ0TWF0cml4KFxuICAgICAgICAgICAgICBnZW5lcmF0ZU1hdHJpeEZyb21PcGVyYXRpb25zKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwicm90YXRlWVwiLFxuICAgICAgICAgICAgICAgICAgYW5nbGU6IF9nYW1tYSEsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcInJvdGF0ZVhcIixcbiAgICAgICAgICAgICAgICAgIGFuZ2xlOiAtX2JldGEhLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYG1hdHJpeDNkKCR7X2ludmVyc2VNYXRyaXguam9pbihcbiAgICAgICAgICBcIixcIlxuICAgICAgICApfSkgcm90YXRlWCgkey1fYmV0YSF9ZGVnKSByb3RhdGVZKCR7X2dhbW1hfWRlZylgO1xuICAgICAgfTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZGV2aWNlb3JpZW50YXRpb25cIiwgb3JpZW50YXRpb25MaXN0ZW5lcik7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsICgpID0+IHtcbiAgICAgICAgX2ludmVyc2VNYXRyaXggPSB1bmRlZmluZWQ7XG4gICAgICB9KTtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIG1vdXNlRG93bkhhbmRsZXIpO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIG1vdXNlVXBIYW5kbGVyKTtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgbW91c2VEb3duSGFuZGxlcik7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBtb3VzZVVwSGFuZGxlcik7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZGV2aWNlb3JpZW50YXRpb25cIiwgb3JpZW50YXRpb25MaXN0ZW5lcik7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIGhhbmRsZXIpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0b3VjaEhhbmRsZXIpO1xuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIG1vdXNlRG93bkhhbmRsZXIpO1xuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBtb3VzZVVwSGFuZGxlcik7XG4gICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIG1vdXNlRG93bkhhbmRsZXIpO1xuICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgbW91c2VVcEhhbmRsZXIpO1xuICAgICAgICAvLyBlbC5zdHlsZS50cmFuc2Zvcm0gPSBpbml0aWFsUG9zaXRpb25SZWYuY3VycmVudCE7XG4gICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGByb3RhdGVYKDBkZWcpIHJvdGF0ZVkoMGRlZykgdHJhbnNsYXRlWigwcHgpYDtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbYWN0aXZlXSk7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIHJlZj17cGFyYWxsYXhhYmxlUmVmfVxuICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZXMucGFyYWxsYXh9ICR7Y2xhc3NOYW1lfWB9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgICAge3JlZmxlY3Rpb24gJiYgPGRpdiByZWY9e3JlZmxlY3Rpb25SZWZ9IGNsYXNzTmFtZT17U3R5bGVzLnJlZmxlY3Rpb259IC8+fVxuICAgIDwvZGl2PlxuICApO1xufVxuXG4vKipcbiAqIEl0IGhvbGRzIGEgY2hpbGRyZW4gYW5kIGFuaW1hdGVzIGEgdGlsdCBlZmZlY3QgcmVsYXRpdmUgdG8gbW91c2UgcG9zaXRpb25cbiAqKi9cbi8qKlxuICogQSBjb21wb25lbnQgdGhhdCBjcmVhdGVzIGEgM0QgdGlsdCBlZmZlY3Qgb24gaXRzIGNvbnRlbnQgYmFzZWQgb24gd2hlcmUgeW91IG1vdmUgeW91ciBtb3VzZSBvciB0b3VjaCB0aGUgc2NyZWVuLlxuICogV2hlbiBhY3RpdmUsIHRoZSBlbGVtZW50IHRpbHRzIGFuZCByZXNwb25kcyB0byB5b3VyIGN1cnNvciBwb3NpdGlvbiwgY3JlYXRpbmcgYW4gaW50ZXJhY3RpdmUgZGVwdGggZWZmZWN0LlxuICoqL1xuY29uc3QgUGFyYWxsYXggPSBmb3J3YXJkUmVmKF9QYXJhbGxheCk7XG5leHBvcnQgZGVmYXVsdCBQYXJhbGxheDsiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQVVBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGVBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUtBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUFvSCxNQUFBTSxTQUFBO0FBQUEsU0FBQUgsdUJBQUFJLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBUix3QkFBQVEsQ0FBQSxFQUFBRyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQVosdUJBQUEsWUFBQUEsQ0FBQVEsQ0FBQSxFQUFBRyxDQUFBLFNBQUFBLENBQUEsSUFBQUgsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsU0FBQUQsQ0FBQSxNQUFBTyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFSLE9BQUEsRUFBQUYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUyxDQUFBLE1BQUFGLENBQUEsR0FBQUosQ0FB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