@kando-env/kando-ui 1.2.314-alpha.1 → 1.2.314-alpha.11

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 (579) hide show
  1. package/lib/Router.js +72 -35
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +33 -23
  3. package/lib/Widgets/EventsRow/EventsRow.js +37 -25
  4. package/lib/Widgets/Map/GraphUtils.js +3 -3
  5. package/lib/Widgets/Map/Map.js +84 -67
  6. package/lib/Widgets/Map/MapUtils.js +39 -40
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +86 -50
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +33 -28
  9. package/lib/Widgets/Map/areas/AreaUtils.js +50 -49
  10. package/lib/Widgets/Map/areas/Patterns.js +6 -6
  11. package/lib/Widgets/Map/edges/Edge.js +31 -24
  12. package/lib/Widgets/Map/edges/Edges.js +23 -19
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +44 -23
  14. package/lib/Widgets/Map/events/Event.js +17 -17
  15. package/lib/Widgets/Map/events/EventIndicator.js +52 -57
  16. package/lib/Widgets/Map/events/EventPath.js +22 -24
  17. package/lib/Widgets/Map/events/EventUtils.js +79 -56
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +18 -17
  19. package/lib/Widgets/Map/events/PointOfEvent.js +34 -29
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +36 -29
  21. package/lib/Widgets/Map/events/Snail.js +20 -19
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +86 -93
  23. package/lib/Widgets/Map/map/FloatingGraph.js +18 -22
  24. package/lib/Widgets/Map/map/GraphDateButton.js +17 -25
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +12 -13
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +15 -16
  27. package/lib/Widgets/Map/points/PointIcon.js +13 -15
  28. package/lib/Widgets/Map/points/PointMarker.js +95 -67
  29. package/lib/Widgets/Map/points/PointMarkers.js +66 -45
  30. package/lib/Widgets/Map/points/PointUtils.js +64 -58
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +44 -27
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +17 -14
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +11 -10
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +3 -3
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +57 -28
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -3
  37. package/lib/Widgets/MostPolluting/Areas/styles.js +3 -3
  38. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +8 -11
  39. package/lib/Widgets/MostPolluting/Factories/Factories.js +64 -33
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +17 -14
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +7 -7
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +10 -12
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +3 -3
  44. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -2
  45. package/lib/Widgets/MostPolluting/Factories/styles.js +3 -3
  46. package/lib/Widgets/MostPolluting/MostPolluting.js +24 -19
  47. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +22 -18
  48. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +4 -6
  49. package/lib/Widgets/MostPolluting/ShowMore/styles.js +4 -6
  50. package/lib/Widgets/MostPolluting/assets/index.js +10 -10
  51. package/lib/Widgets/MostPolluting/components/ChangePercent.js +13 -19
  52. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +30 -35
  53. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +31 -34
  54. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +35 -39
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +26 -27
  56. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +47 -51
  57. package/lib/Widgets/MostPolluting/styles.js +3 -3
  58. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +5 -7
  59. package/lib/Widgets/PotentialImpactSummary/Icon.js +5 -7
  60. package/lib/Widgets/PotentialImpactSummary/index.js +27 -19
  61. package/lib/Widgets/PotentialImpactSummary/index.test.js +52 -47
  62. package/lib/Widgets/PotentialImpactSummary/styles.js +7 -7
  63. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +7 -9
  64. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +17 -22
  65. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +32 -35
  66. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +24 -26
  67. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +37 -35
  68. package/lib/Widgets/QualitySummary/QualitySummary.js +13 -9
  69. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -4
  70. package/lib/Widgets/QualitySummary/styles.js +13 -19
  71. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +13 -12
  72. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +24 -25
  73. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +24 -29
  74. package/lib/Widgets/UtilityInformation/UtilityInformation.js +40 -23
  75. package/lib/Widgets/UtilityInformation/styles.js +22 -31
  76. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -3
  77. package/lib/assets/icons/TopNavbar/index.js +6 -6
  78. package/lib/assets/icons/TrendSvg.js +6 -6
  79. package/lib/assets/icons/index.js +14 -14
  80. package/lib/assets/icons/kandoStepper/index.js +5 -5
  81. package/lib/assets/icons/siteTypes/index.js +1 -1
  82. package/lib/components/ApplyButton/ApplyButton.js +8 -8
  83. package/lib/components/Backdrop/Backdrop.js +4 -6
  84. package/lib/components/ContentLoader/ContentLoader.js +9 -11
  85. package/lib/components/ContentLoader/index.js +1 -1
  86. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +9 -10
  87. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +5 -3
  88. package/lib/components/CustomInputs/DoubleTabs/styles.js +12 -20
  89. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +19 -12
  90. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +4 -6
  91. package/lib/components/CustomInputs/Search/Search.js +60 -39
  92. package/lib/components/CustomInputs/Select/Select.js +55 -42
  93. package/lib/components/CustomInputs/Select/Select.stories.js +6 -4
  94. package/lib/components/DamageType/DamageType.js +56 -34
  95. package/lib/components/DataLoaderError/DataLoaderError.js +6 -8
  96. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +10 -9
  97. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +71 -70
  98. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +37 -27
  99. package/lib/components/DischargeHeatmap/HighchartsOptions.js +12 -10
  100. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
  101. package/lib/components/DischargeHeatmap/popupText.js +9 -9
  102. package/lib/components/DischargeHeatmap/titles.js +3 -3
  103. package/lib/components/ErrorBoundary.js +41 -27
  104. package/lib/components/Events/Events.js +45 -28
  105. package/lib/components/Graph/Graph.js +86 -67
  106. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +21 -17
  107. package/lib/components/Header/DoubleTabs/DoubleTabs.js +26 -18
  108. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +5 -3
  109. package/lib/components/Header/DoubleTabs/styles.js +4 -4
  110. package/lib/components/Header/Header.js +2 -2
  111. package/lib/components/Header/Header.stories.js +5 -3
  112. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +23 -23
  113. package/lib/components/Header/InfoBar/InfoBar.js +104 -44
  114. package/lib/components/Header/InfoBar/Search/Control.js +9 -9
  115. package/lib/components/Header/InfoBar/Search/GroupLabel.js +4 -6
  116. package/lib/components/Header/InfoBar/Search/Search.js +19 -14
  117. package/lib/components/Header/InfoBar/Search/SearchContainer.js +27 -15
  118. package/lib/components/Header/InfoBar/Search/searchStyle.js +49 -41
  119. package/lib/components/Header/InfoBar/TimeFilter.js +14 -11
  120. package/lib/components/Header/KandoNavbar/KandoNavbar.js +87 -62
  121. package/lib/components/Header/Slideshow/Slideshow.js +89 -67
  122. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +4 -6
  123. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +23 -21
  124. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +13 -13
  125. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +32 -26
  126. package/lib/components/Header/Toolbar/Toolbar.js +74 -55
  127. package/lib/components/InfoBar/InfoBar.js +23 -10
  128. package/lib/components/InfoBar/InfoBar.stories.js +5 -3
  129. package/lib/components/KandoModal/KandoModal.js +37 -23
  130. package/lib/components/Link.js +7 -8
  131. package/lib/components/Links/CustomRedirect/CustomRedirect.js +8 -9
  132. package/lib/components/Links/StyledLink/StyledLink.js +12 -12
  133. package/lib/components/Links/StyledNavLink/StyledNavLink.js +10 -11
  134. package/lib/components/LiveEvents/CarouselSlide.js +7 -9
  135. package/lib/components/LiveEvents/LiveEvents.js +3 -5
  136. package/lib/components/LoaderByPercent/LoaderByPercent.js +28 -36
  137. package/lib/components/Map/Map.js +22 -19
  138. package/lib/components/Modal/Modal.js +9 -9
  139. package/lib/components/NarrowHeader.js +31 -17
  140. package/lib/components/PointInfo/PointInfo.js +16 -18
  141. package/lib/components/PopupModal/PopupModal.js +16 -12
  142. package/lib/components/PopupModal/PopupModal.stories.js +19 -15
  143. package/lib/components/Sector/Sector.js +6 -8
  144. package/lib/components/Sector/Sector.test.js +20 -19
  145. package/lib/components/Sector/sectorIcons.js +2 -2
  146. package/lib/components/SevereEvent/Eta/Eta.js +51 -48
  147. package/lib/components/SevereEvent/Eta/styles.js +6 -10
  148. package/lib/components/SevereEvent/SevereEvent.js +34 -27
  149. package/lib/components/Spinner/Spinner.js +7 -7
  150. package/lib/components/Spinner/Spinner.stories.js +6 -4
  151. package/lib/components/Spinner/styles.js +12 -20
  152. package/lib/components/Tabs/Tabs.js +27 -18
  153. package/lib/components/Tabs/Tabs.stories.js +6 -4
  154. package/lib/components/Tabs/assets/index.js +5 -5
  155. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +15 -12
  156. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +45 -34
  157. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +31 -19
  158. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +21 -16
  159. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +11 -11
  160. package/lib/components/TimeRangeSelector/TimeRangeList.js +24 -23
  161. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +24 -16
  162. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +29 -28
  163. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +6 -4
  164. package/lib/components/TimeRangeSelector/constants.js +3 -3
  165. package/lib/components/Toggle/Toggle.js +15 -10
  166. package/lib/components/TrendGraph/TrendGraph.js +38 -22
  167. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +30 -24
  168. package/lib/development-environment/index.js +12 -8
  169. package/lib/development-environment/mock/browser.js +4 -2
  170. package/lib/development-environment/mock/get.js +10 -8
  171. package/lib/development-environment/mock/handlers.js +2 -2
  172. package/lib/development-environment/mock/mockBus.js +4 -4
  173. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -2
  174. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -2
  175. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -2
  176. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -2
  177. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -2
  178. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -2
  179. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -2
  180. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -2
  181. package/lib/development-environment/mock/mockObjects/data-search.js +2 -2
  182. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -2
  183. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -2
  184. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -2
  185. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -2
  186. package/lib/development-environment/mock/mockObjects/metascore.js +2 -2
  187. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -2
  188. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -2
  189. package/lib/development-environment/mock/mockObjects/site-info.js +2 -2
  190. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -2
  191. package/lib/development-environment/togly/ToglyDashboard.js +22 -13
  192. package/lib/development-environment/togly/ToglyItem.js +28 -25
  193. package/lib/development-environment/togly/init.js +2 -2
  194. package/lib/development-environment/togly/macro.js +9 -13
  195. package/lib/development-environment/togly/useDoubleKeyDown.js +9 -7
  196. package/lib/development-environment/togly/useLocalStorage.js +18 -13
  197. package/lib/hooks/useApi.js +55 -19
  198. package/lib/hooks/useApiWithDashboardQuery.js +49 -30
  199. package/lib/hooks/useClickOutside.js +3 -3
  200. package/lib/hooks/useInitializeHeaders.js +5 -5
  201. package/lib/hooks/useKandoFetch.js +28 -15
  202. package/lib/hooks/useMap.js +34 -22
  203. package/lib/hooks/useNavContext.js +26 -22
  204. package/lib/hooks/useRemoveExistingLayers.js +6 -6
  205. package/lib/hooks/useUpdateEventBodyTail.js +17 -13
  206. package/lib/hooks/useUserTimeZone.js +34 -35
  207. package/lib/hooks/useUserTimeZone.test.js +26 -23
  208. package/lib/hooks/useWindowSize.js +14 -7
  209. package/lib/i18n/en.json +2 -2
  210. package/lib/i18n/en_uk.json +1 -1
  211. package/lib/i18n/fr.json +1 -1
  212. package/lib/i18n/he.json +4 -4
  213. package/lib/i18n/it.json +1 -1
  214. package/lib/index.js +12 -11
  215. package/lib/macros/getVersion.js +2 -2
  216. package/lib/pages/AreaPage/AreaPage.js +69 -29
  217. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +16 -15
  218. package/lib/pages/AreaPage/Dashboard/Dashboard.js +18 -16
  219. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +22 -14
  220. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +4 -4
  221. package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +67 -34
  222. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +7 -7
  223. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +9 -9
  224. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -3
  225. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -2
  226. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +4 -4
  227. package/lib/pages/AssessmentPage/AssessmentPage.js +43 -37
  228. package/lib/pages/CannyWidget/Feedback.js +13 -13
  229. package/lib/pages/CovidPage/CovidPage.js +13 -8
  230. package/lib/pages/CovidPage/components/Body.js +27 -25
  231. package/lib/pages/CovidPage/components/Map.js +37 -27
  232. package/lib/pages/CovidPage/components/Sidebar.js +13 -14
  233. package/lib/pages/CovidPage/components/Summary.js +26 -19
  234. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +30 -24
  235. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +73 -51
  236. package/lib/pages/CovidPage/components/areas/Area.js +35 -24
  237. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +43 -44
  238. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +35 -32
  239. package/lib/pages/CovidPage/components/areas/AreasList.js +41 -29
  240. package/lib/pages/CovidPage/components/areas/Sort.js +14 -11
  241. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  242. package/lib/pages/DashboardMap/AreaCard.js +17 -21
  243. package/lib/pages/DashboardMap/AssessmentIcon.js +6 -7
  244. package/lib/pages/DashboardMap/FactoryCard.js +19 -23
  245. package/lib/pages/DashboardMap/HighchartsOptions.js +4 -5
  246. package/lib/pages/DashboardMap/List.js +53 -42
  247. package/lib/pages/DashboardMap/ListContext.js +19 -15
  248. package/lib/pages/DashboardMap/Loader.js +2 -2
  249. package/lib/pages/DashboardMap/SeverityBadge.js +18 -10
  250. package/lib/pages/DashboardMap/WWTPMap.js +54 -41
  251. package/lib/pages/DashboardMap/WaterDischarge.js +8 -8
  252. package/lib/pages/DashboardMap/Widget.js +78 -78
  253. package/lib/pages/DashboardMap/utils.js +22 -18
  254. package/lib/pages/EventsPage/Body/Body.js +15 -20
  255. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +19 -17
  256. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +35 -27
  257. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +6 -8
  258. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +7 -11
  259. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +30 -21
  260. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +63 -52
  261. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +23 -17
  262. package/lib/pages/EventsPage/EventsPage.js +10 -7
  263. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +37 -25
  264. package/lib/pages/EventsPage/events/MoreInfo.js +16 -17
  265. package/lib/pages/EventsPage/events/Sidebar.js +16 -21
  266. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +35 -30
  267. package/lib/pages/EventsPage/events/event_info/EventDetails.js +29 -32
  268. package/lib/pages/EventsPage/events/event_info/EventInfo.js +40 -41
  269. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +4 -4
  270. package/lib/pages/EventsPage/events/event_info/EventSection.js +15 -13
  271. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +38 -43
  272. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +46 -38
  273. package/lib/pages/EventsPage/events/event_info/Header/Header.js +4 -6
  274. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +31 -28
  275. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +4 -4
  276. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +36 -29
  277. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +6 -4
  278. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +21 -22
  279. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +8 -10
  280. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +7 -9
  281. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +7 -11
  282. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +6 -6
  283. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +3 -5
  284. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +2 -2
  285. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +10 -12
  286. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +4 -6
  287. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +12 -10
  288. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +3 -5
  289. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +5 -7
  290. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +5 -7
  291. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +4 -6
  292. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +9 -11
  293. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +15 -15
  294. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +6 -6
  295. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +5 -7
  296. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +15 -17
  297. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +4 -4
  298. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +8 -10
  299. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +10 -13
  300. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +41 -0
  301. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +2 -2
  302. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +3 -3
  303. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +37 -24
  304. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +36 -29
  305. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +9 -11
  306. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +17 -15
  307. package/lib/pages/EventsPage/events/event_info/sources/Source.js +28 -25
  308. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +24 -21
  309. package/lib/pages/EventsPage/events/event_info/styles.js +12 -20
  310. package/lib/pages/EventsPage/events/events_list/EventItem.js +18 -17
  311. package/lib/pages/EventsPage/events/events_list/EventUtils.js +10 -10
  312. package/lib/pages/EventsPage/events/events_list/EventsList.js +134 -113
  313. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +53 -38
  314. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +108 -72
  315. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +69 -52
  316. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +41 -38
  317. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +36 -29
  318. package/lib/pages/EventsPage/events/events_list/Sort.js +16 -13
  319. package/lib/pages/ImportFileWizard/FileUploadRespones.js +19 -12
  320. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +4 -6
  321. package/lib/pages/ImportFileWizard/ImportFile.js +22 -20
  322. package/lib/pages/ImportFileWizard/ResponseBody.js +33 -24
  323. package/lib/pages/ImportFileWizard/ValidationForm.js +19 -20
  324. package/lib/pages/ImportFileWizard/ValidationResponse.js +21 -21
  325. package/lib/pages/ImportFileWizard/importFileUtils.js +1 -1
  326. package/lib/pages/ImportGisPage/ImportGisContainer.js +24 -21
  327. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +23 -21
  328. package/lib/pages/ImportGisPage/importGisUtils.js +20 -12
  329. package/lib/pages/ImportGisProcess/index.js +15 -12
  330. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +12 -7
  331. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +19 -17
  332. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -3
  333. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +57 -28
  334. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +8 -6
  335. package/lib/pages/NotificationsPage/Notification/Notification.js +12 -16
  336. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -2
  337. package/lib/pages/NotificationsPage/Notifications.stories.js +6 -4
  338. package/lib/pages/NotificationsPage/NotificationsPage.js +36 -18
  339. package/lib/pages/NotificationsPage/assets/index.js +9 -9
  340. package/lib/pages/NotificationsPageV2/NotificationsPage.js +93 -70
  341. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +62 -93
  342. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +137 -126
  343. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +71 -71
  344. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +87 -90
  345. package/lib/pages/NotificationsPageV2/notificationUtils.js +33 -39
  346. package/lib/pages/OldSitePage/OldSitePage.js +131 -56
  347. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +5 -5
  348. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  349. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +6 -8
  350. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +20 -18
  351. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +7 -9
  352. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +18 -12
  353. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +12 -16
  354. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  355. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +11 -17
  356. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +63 -51
  357. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +7 -9
  358. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +53 -29
  359. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -4
  360. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  361. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +10 -11
  362. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +11 -10
  363. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +22 -26
  364. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +28 -26
  365. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  366. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +9 -15
  367. package/lib/pages/ProfilePage/Container.js +2 -2
  368. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +39 -23
  369. package/lib/pages/ProfilePage/ProfilePage.js +199 -111
  370. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +33 -25
  371. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +15 -18
  372. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +25 -23
  373. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +116 -56
  374. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +20 -17
  375. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +10 -12
  376. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +38 -37
  377. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +26 -25
  378. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +16 -16
  379. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +15 -13
  380. package/lib/pages/SamplingsPage/NavigationDropdown.js +29 -42
  381. package/lib/pages/SamplingsPage/NewSamplingAction.js +97 -73
  382. package/lib/pages/SamplingsPage/SamplingMobileModal.js +97 -123
  383. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +22 -21
  384. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +22 -34
  385. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +56 -33
  386. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +18 -15
  387. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +6 -8
  388. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +191 -107
  389. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +53 -47
  390. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +38 -42
  391. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +38 -42
  392. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +22 -21
  393. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -3
  394. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +6 -10
  395. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +51 -50
  396. package/lib/pages/SamplingsPage/SamplingsMobileList.js +28 -21
  397. package/lib/pages/SamplingsPage/SamplingsPage.js +31 -25
  398. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +57 -49
  399. package/lib/pages/SamplingsPage/samplingsPageUtils.js +75 -67
  400. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +4 -6
  401. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  402. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +10 -14
  403. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +8 -9
  404. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +23 -26
  405. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +17 -14
  406. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +32 -36
  407. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +7 -9
  408. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +24 -15
  409. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +12 -16
  410. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  411. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +11 -17
  412. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +70 -58
  413. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +7 -9
  414. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +26 -15
  415. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -5
  416. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  417. package/lib/pages/SitePage/SamplingParameters/body/Body.js +8 -8
  418. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +37 -29
  419. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  420. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +11 -10
  421. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +53 -53
  422. package/lib/pages/SitePage/SamplingParameters/dataParser.js +38 -29
  423. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +9 -11
  424. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  425. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +9 -15
  426. package/lib/pages/SitePage/SiteInformation/ContributorItem.js +7 -9
  427. package/lib/pages/SitePage/SiteInformation/EmptyState.js +7 -11
  428. package/lib/pages/SitePage/SiteInformation/PollutionContributor.js +10 -11
  429. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +45 -34
  430. package/lib/pages/SitePage/SiteInformation/style.js +9 -15
  431. package/lib/pages/SitePage/SitePage.js +69 -29
  432. package/lib/pages/UploadLabResult/index.js +13 -13
  433. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +35 -26
  434. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +8 -6
  435. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +8 -9
  436. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +5 -3
  437. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +47 -46
  438. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +6 -10
  439. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +2 -2
  440. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +6 -4
  441. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +9 -10
  442. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +12 -15
  443. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +7 -7
  444. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -2
  445. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +21 -15
  446. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +30 -26
  447. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +16 -15
  448. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +15 -8
  449. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +33 -24
  450. package/lib/pages/WbeDashboard/ExpandableComponent.js +8 -9
  451. package/lib/pages/WbeDashboard/GraphWrapper.js +34 -28
  452. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -17
  453. package/lib/pages/WbeDashboard/SearchInput.js +20 -15
  454. package/lib/pages/WbeDashboard/SummaryGraph.js +76 -50
  455. package/lib/pages/WbeDashboard/SummaryGraphModal.js +17 -19
  456. package/lib/pages/WbeDashboard/Tabs.js +10 -10
  457. package/lib/pages/WbeDashboard/WbeDashboardPage.js +210 -145
  458. package/lib/pages/WbeDashboard/WbeSummaryBar.js +47 -39
  459. package/lib/pages/WwtpPage/DashboardCard.js +20 -23
  460. package/lib/pages/WwtpPage/DischargePatternCard.js +24 -20
  461. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +5 -7
  462. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +18 -19
  463. package/lib/pages/WwtpPage/Map.js +3 -5
  464. package/lib/pages/WwtpPage/OrganicCard.js +2 -2
  465. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +2 -2
  466. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +4 -6
  467. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +8 -9
  468. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +14 -18
  469. package/lib/pages/WwtpPage/PredictionCard.js +2 -2
  470. package/lib/pages/WwtpPage/TrendCard.js +24 -20
  471. package/lib/pages/WwtpPage/UpgradeBox.js +2 -2
  472. package/lib/pages/WwtpPage/WwtpPage.js +7 -7
  473. package/lib/pages/WwtpPage/WwtpPageContainer.js +16 -21
  474. package/lib/providers/Slideshow/SlideshowContext.js +9 -11
  475. package/lib/providers/Slideshow/SlideshowProvider.js +38 -22
  476. package/lib/providers/Slideshow/SlideshowRunner.js +19 -17
  477. package/lib/providers/UrlHistory/UrlHistoryContext.js +4 -6
  478. package/lib/providers/UrlHistory/UrlHistoryProvider.js +11 -12
  479. package/lib/providers/UrlHistory/index.js +2 -2
  480. package/lib/providers/UrlHistory/useLastVisited.js +4 -4
  481. package/lib/store/ImportGis/actionTypes.js +1 -1
  482. package/lib/store/ImportGis/actionsCreator.js +5 -7
  483. package/lib/store/ImportGis/reducer.js +29 -40
  484. package/lib/store/WBE/actionTypes.js +2 -2
  485. package/lib/store/WBE/reducer.js +9 -13
  486. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +14 -24
  487. package/lib/store/areas/actionTypes.js +4 -4
  488. package/lib/store/areas/actions.js +13 -7
  489. package/lib/store/areas/reducer.js +6 -8
  490. package/lib/store/context/actionTypes.js +3 -3
  491. package/lib/store/context/actions.js +3 -3
  492. package/lib/store/context/contextMiddlewares.js +16 -14
  493. package/lib/store/context/reducer.js +9 -13
  494. package/lib/store/dashboard/dashboardSlice.js +10 -18
  495. package/lib/store/edges/actionTypes.js +5 -5
  496. package/lib/store/edges/actions.js +8 -4
  497. package/lib/store/edges/reducer.js +17 -13
  498. package/lib/store/events/actionTypes.js +17 -17
  499. package/lib/store/events/actions.js +7 -3
  500. package/lib/store/events/models/IEvent.js +1 -1
  501. package/lib/store/events/reducer.js +49 -42
  502. package/lib/store/global/actionTypes.js +11 -11
  503. package/lib/store/global/actions.js +4 -6
  504. package/lib/store/global/reducer.js +10 -11
  505. package/lib/store/permissions/permissionsSlice.js +8 -12
  506. package/lib/store/points/actionTypes.js +3 -3
  507. package/lib/store/points/actions.js +7 -3
  508. package/lib/store/points/reducer.js +5 -7
  509. package/lib/store/rootActionTypes.js +2 -2
  510. package/lib/store/rootReducer.js +12 -17
  511. package/lib/store/rootStore.js +5 -5
  512. package/lib/store/samplings/actionTypes.js +1 -1
  513. package/lib/store/samplings/reducer.js +14 -16
  514. package/lib/styles/StylesLayout.js +3 -5
  515. package/lib/styles/theme/theme.js +27 -26
  516. package/lib/test/mocks/browser.js +4 -2
  517. package/lib/test/test-utils.js +15 -17
  518. package/lib/ui-kit/Button/Button.js +79 -127
  519. package/lib/ui-kit/Button/Button.test.js +29 -24
  520. package/lib/ui-kit/Checkbox/Checkbox.js +20 -30
  521. package/lib/ui-kit/ContentCard/ContentCard.js +17 -14
  522. package/lib/ui-kit/Dashboard/Dashboard.js +19 -22
  523. package/lib/ui-kit/DropDown/DropDown.js +19 -17
  524. package/lib/ui-kit/DropDown/DropDown.test.js +12 -12
  525. package/lib/ui-kit/DropDown/DropDownItem.js +21 -24
  526. package/lib/ui-kit/DropDown/DropdownToggle.js +8 -12
  527. package/lib/ui-kit/EmptyState/EmptyState.js +3 -5
  528. package/lib/ui-kit/IconAction/IconAction.js +5 -7
  529. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +62 -46
  530. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +48 -57
  531. package/lib/ui-kit/InletsPie/InletsPie.js +13 -15
  532. package/lib/ui-kit/InletsPie/options.js +6 -6
  533. package/lib/ui-kit/KandoList/KandoList.js +12 -14
  534. package/lib/ui-kit/KandoTable/KandoTable.js +40 -48
  535. package/lib/ui-kit/KandoTable/KandoTable.test.js +22 -16
  536. package/lib/ui-kit/Layout/Layout.js +4 -6
  537. package/lib/ui-kit/MobileInput/MobileInput.js +49 -55
  538. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +16 -13
  539. package/lib/ui-kit/OrganicEvents/GaugeChart.js +5 -7
  540. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +6 -6
  541. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +20 -27
  542. package/lib/ui-kit/OrganicEvents/TextInfo.js +10 -15
  543. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +8 -10
  544. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +15 -12
  545. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -3
  546. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +19 -19
  547. package/lib/ui-kit/ScoreGauge/constant.js +3 -3
  548. package/lib/ui-kit/TimeLineChart/TrendChart.js +38 -50
  549. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +7 -8
  550. package/lib/ui-kit/Tooltip/Tooltip.js +8 -14
  551. package/lib/ui-kit/index.js +8 -8
  552. package/lib/ui-kit/kandoStepper/KandoStepper.js +11 -11
  553. package/lib/ui-kit/siteName/SiteName.js +8 -11
  554. package/lib/utilities/ActionUtility.js +7 -7
  555. package/lib/utilities/Alert.js +17 -21
  556. package/lib/utilities/Analytics.js +11 -11
  557. package/lib/utilities/Array.js +5 -4
  558. package/lib/utilities/Enum.js +51 -15
  559. package/lib/utilities/ErrorBoundary.js +41 -27
  560. package/lib/utilities/File.js +69 -40
  561. package/lib/utilities/GetDir.js +7 -8
  562. package/lib/utilities/KandoDate.js +15 -7
  563. package/lib/utilities/KandoModal.js +26 -16
  564. package/lib/utilities/LocalStorage.js +7 -5
  565. package/lib/utilities/ThousandsToK.js +2 -2
  566. package/lib/utilities/TimeFormat.js +20 -21
  567. package/lib/utilities/Truncate.js +24 -16
  568. package/lib/utilities/edgesMath.js +15 -14
  569. package/lib/utilities/i18n.js +3 -3
  570. package/lib/utilities/kql.js +12 -10
  571. package/lib/utilities/map/icons.js +3 -3
  572. package/lib/utilities/polylinedecorator.js +112 -87
  573. package/lib/utilities/scoreToData.js +10 -10
  574. package/lib/utilities/scoreToData.test.js +5 -5
  575. package/lib/utilities/time.js +8 -8
  576. package/lib/utilities/uploadToS3.js +11 -11
  577. package/lib/utilities/urls.js +19 -17
  578. package/package.json +6 -3
  579. package/lib/ui-kit/TimeLineChart/test.json +0 -25656
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.WbeDashboardPage = void 0;
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
8
11
  var _styledComponents = _interopRequireDefault(require("styled-components"));
9
12
  var _react = _interopRequireWildcard(require("react"));
10
13
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
@@ -24,7 +27,7 @@ var _nvlStatusHelper = require("../CovidPage/components/nvlStatusHelper");
24
27
  var _Map = require("../../Widgets/Map/Map");
25
28
  var _KandoTable = require("ui-kit/KandoTable/KandoTable");
26
29
  var _Tabs = require("./Tabs");
27
- var _useKandoFetch = _interopRequireDefault(require("../../hooks/useKandoFetch"));
30
+ var _useKandoFetch2 = _interopRequireDefault(require("../../hooks/useKandoFetch"));
28
31
  var _useQueryURL = _interopRequireDefault(require("../../hooks/useQueryURL"));
29
32
  var _Dropdown = _interopRequireDefault(require("react-bootstrap/cjs/Dropdown"));
30
33
  var _DropdownButton = _interopRequireDefault(require("react-bootstrap/cjs/DropdownButton"));
@@ -35,25 +38,30 @@ var _Spinner = require("../../components/Spinner/Spinner");
35
38
  var _WbeSummaryBar = require("./WbeSummaryBar");
36
39
  var _ErrorBoundary = _interopRequireDefault(require("../../utilities/ErrorBoundary"));
37
40
  var _theme = require("../../styles/theme/theme");
38
- var _useKandoFetch2 = _interopRequireDefault(require("hooks/useKandoFetch"));
41
+ var _useKandoFetch3 = _interopRequireDefault(require("hooks/useKandoFetch"));
39
42
  var _urls = require("utilities/urls");
40
43
  var _useUserTimeZone = require("hooks/useUserTimeZone");
41
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
42
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
- const TABLE_ROWS_PER_PAGE = 25;
44
- const MAPBOX_WBE_DASHBOARD_STYLE = 'ckzzkjsi7005f14o9im0mczs9';
45
- const WbeDashboardPage = () => {
46
- const getWAId = () => {
44
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
45
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
46
+ var TABLE_ROWS_PER_PAGE = 25;
47
+ var MAPBOX_WBE_DASHBOARD_STYLE = 'ckzzkjsi7005f14o9im0mczs9';
48
+ // This is specifically for customer AF-Eldoret
49
+ // There are two ids, one for staging and one for prodution
50
+ var CLEAR_TITLE_FOR_WA_IDS = [565, 558];
51
+ var WbeDashboardPage = function WbeDashboardPage() {
52
+ var getWAId = function getWAId() {
47
53
  return query.get('water_authority_id');
48
54
  };
49
- const fetchUrl = firstParam => {
55
+ var fetchUrl = function fetchUrl(firstParam) {
50
56
  return "/api_ui/wbe_dashboard/".concat(selectedPathogen, "/").concat(firstParam, "?water_authority_id=").concat(getWAId());
51
57
  };
52
- const pathogensUrl = () => (0, _urls.urls)({
53
- waterAuthorityId: getWAId()
54
- }).wbeDashboard.pathogens.url;
55
- const DEFAULT_TABS = [_i18n.default.t('components.wbe_dashboard.cities'), _i18n.default.t('components.wbe_dashboard.monitored_areas')];
56
- const convertTabNameToParam = tab_name => {
58
+ var pathogensUrl = function pathogensUrl() {
59
+ return (0, _urls.urls)({
60
+ waterAuthorityId: getWAId()
61
+ }).wbeDashboard.pathogens.url;
62
+ };
63
+ var DEFAULT_TABS = [_i18n.default.t('components.wbe_dashboard.cities'), _i18n.default.t('components.wbe_dashboard.monitored_areas')];
64
+ var convertTabNameToParam = function convertTabNameToParam(tab_name) {
57
65
  if (tab_name === _i18n.default.t('components.wbe_dashboard.cities')) {
58
66
  return 'city';
59
67
  } else if (tab_name === _i18n.default.t('components.wbe_dashboard.monitored_areas')) {
@@ -61,32 +69,55 @@ const WbeDashboardPage = () => {
61
69
  }
62
70
  return 'city';
63
71
  };
64
- const query = (0, _useQueryURL.default)();
65
- const getPathogen = () => {
72
+ var query = (0, _useQueryURL.default)();
73
+ var getPathogen = function getPathogen() {
66
74
  return query.get('pathogen') || 'covid';
67
75
  };
68
- const [currentData, setCurrentData] = (0, _react.useState)([]);
69
- const [mapAreas, setMapAreas] = (0, _react.useState)([]);
70
- const [mapZoom, setMapZoom] = (0, _react.useState)([]);
71
- const [rows, setRows] = (0, _react.useState)([]);
72
- const [tabs, setTabs] = (0, _react.useState)(DEFAULT_TABS);
73
- const [selectedTab, setSelectedTab] = (0, _react.useState)(tabs[0]);
74
- const [selectedPathogen, setSelectedPathogen] = (0, _react.useState)(getPathogen());
75
- const {
76
- data,
77
- isFetching,
78
- setFetching
79
- } = (0, _useKandoFetch.default)(fetchUrl(convertTabNameToParam(selectedTab)));
80
- const {
81
- data: pathogens,
82
- isFetching: isFetchingPathogens
83
- } = (0, _useKandoFetch2.default)(pathogensUrl());
84
- const dispatch = (0, _reactRedux.useDispatch)();
85
- const navContext = (0, _reactRedux.useSelector)(state => state.nav_context_data.navContext);
86
- const globalData = (0, _reactRedux.useSelector)(state => state.global_data);
87
- const isRtl = navContext.locale === 'he' ? true : false;
88
- const colorForRow = row => {
89
- let quality;
76
+ var _useState = (0, _react.useState)([]),
77
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
78
+ currentData = _useState2[0],
79
+ setCurrentData = _useState2[1];
80
+ var _useState3 = (0, _react.useState)([]),
81
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
82
+ mapAreas = _useState4[0],
83
+ setMapAreas = _useState4[1];
84
+ var _useState5 = (0, _react.useState)([]),
85
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
86
+ mapZoom = _useState6[0],
87
+ setMapZoom = _useState6[1];
88
+ var _useState7 = (0, _react.useState)([]),
89
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
90
+ rows = _useState8[0],
91
+ setRows = _useState8[1];
92
+ var _useState9 = (0, _react.useState)(DEFAULT_TABS),
93
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
94
+ tabs = _useState10[0],
95
+ setTabs = _useState10[1];
96
+ var _useState11 = (0, _react.useState)(tabs[0]),
97
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
98
+ selectedTab = _useState12[0],
99
+ setSelectedTab = _useState12[1];
100
+ var _useState13 = (0, _react.useState)(getPathogen()),
101
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
102
+ selectedPathogen = _useState14[0],
103
+ setSelectedPathogen = _useState14[1];
104
+ var _useKandoFetch = (0, _useKandoFetch2.default)(fetchUrl(convertTabNameToParam(selectedTab))),
105
+ data = _useKandoFetch.data,
106
+ isFetching = _useKandoFetch.isFetching,
107
+ setFetching = _useKandoFetch.setFetching;
108
+ var _UseKandoFetch = (0, _useKandoFetch3.default)(pathogensUrl()),
109
+ pathogens = _UseKandoFetch.data,
110
+ isFetchingPathogens = _UseKandoFetch.isFetching;
111
+ var dispatch = (0, _reactRedux.useDispatch)();
112
+ var navContext = (0, _reactRedux.useSelector)(function (state) {
113
+ return state.nav_context_data.navContext;
114
+ });
115
+ var globalData = (0, _reactRedux.useSelector)(function (state) {
116
+ return state.global_data;
117
+ });
118
+ var isRtl = navContext.locale === 'he' ? true : false;
119
+ var colorForRow = function colorForRow(row) {
120
+ var quality;
90
121
  if (!row.sample_active) {
91
122
  quality = 'inactive-sampling';
92
123
  } else if (isInfected(row.nvl)) {
@@ -96,80 +127,104 @@ const WbeDashboardPage = () => {
96
127
  }
97
128
  return "row_name--".concat(quality);
98
129
  };
99
- const userFormat = (0, _useUserTimeZone.useUserSelectedDateFormat)();
100
- const columns = _react.default.useMemo(() => [{
101
- name: _i18n.default.t('components.wbe_dashboard.name'),
102
- selector: row => row.name,
103
- sortable: true,
104
- cell: row => /*#__PURE__*/_react.default.createElement(RowName, {
105
- isRtl: isRtl
106
- }, /*#__PURE__*/_react.default.createElement("div", {
107
- "data-tag": "allowRowEvents",
108
- className: "row_name ".concat(colorForRow(row)),
109
- onClick: () => {
110
- handleAreaClick(row);
130
+ var userFormat = (0, _useUserTimeZone.useUserSelectedDateFormat)();
131
+ var columns = _react.default.useMemo(function () {
132
+ return [{
133
+ name: _i18n.default.t('components.wbe_dashboard.name'),
134
+ selector: function selector(row) {
135
+ return row.name;
136
+ },
137
+ sortable: true,
138
+ cell: function cell(row) {
139
+ return /*#__PURE__*/_react.default.createElement(RowName, {
140
+ isRtl: isRtl
141
+ }, /*#__PURE__*/_react.default.createElement("div", {
142
+ "data-tag": "allowRowEvents",
143
+ className: "row_name ".concat(colorForRow(row)),
144
+ onClick: function onClick() {
145
+ handleAreaClick(row);
146
+ }
147
+ }, /*#__PURE__*/_react.default.createElement("div", {
148
+ className: 'expandable-icon'
149
+ }, /*#__PURE__*/_react.default.createElement("span", null, row.has_children && /*#__PURE__*/_react.default.createElement(_DrillDownIcon.ReactComponent, null), !row.has_children && /*#__PURE__*/_react.default.createElement(_BaseLevel.ReactComponent, null))), /*#__PURE__*/_react.default.createElement("span", {
150
+ className: 'name'
151
+ }, /*#__PURE__*/_react.default.createElement(_Truncate.default, {
152
+ characters: 3,
153
+ inheritTextAlign: true
154
+ }, row.name))));
111
155
  }
112
- }, /*#__PURE__*/_react.default.createElement("div", {
113
- className: 'expandable-icon'
114
- }, /*#__PURE__*/_react.default.createElement("span", null, row.has_children && /*#__PURE__*/_react.default.createElement(_DrillDownIcon.ReactComponent, null), !row.has_children && /*#__PURE__*/_react.default.createElement(_BaseLevel.ReactComponent, null))), /*#__PURE__*/_react.default.createElement("span", {
115
- className: 'name'
116
- }, /*#__PURE__*/_react.default.createElement(_Truncate.default, {
117
- characters: 3,
118
- inheritTextAlign: true
119
- }, row.name))))
120
- }, {
121
- name: _i18n.default.t('components.wbe_dashboard.nvl_score'),
122
- selector: row => row.nvl,
123
- sortable: true,
124
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
125
- "data-tag": "allowRowEvents"
126
- }, row.nvl)
127
- }, {
128
- name: _i18n.default.t('components.wbe_dashboard.percentage_from_last_sampling'),
129
- selector: row => row.nvl_change,
130
- sortable: true,
131
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
132
- "data-tag": "allowRowEvents",
133
- style: {
134
- direction: 'ltr'
156
+ }, {
157
+ name: _i18n.default.t('components.wbe_dashboard.nvl_score'),
158
+ selector: function selector(row) {
159
+ return row.nvl;
160
+ },
161
+ sortable: true,
162
+ cell: function cell(row) {
163
+ return /*#__PURE__*/_react.default.createElement("div", {
164
+ "data-tag": "allowRowEvents"
165
+ }, row.nvl);
135
166
  }
136
- }, /*#__PURE__*/_react.default.createElement("span", {
137
- style: {
138
- color: '#000000',
139
- margin: '0 6px'
167
+ }, {
168
+ name: _i18n.default.t('components.wbe_dashboard.percentage_from_last_sampling'),
169
+ selector: function selector(row) {
170
+ return row.nvl_change;
171
+ },
172
+ sortable: true,
173
+ cell: function cell(row) {
174
+ return /*#__PURE__*/_react.default.createElement("div", {
175
+ "data-tag": "allowRowEvents",
176
+ style: {
177
+ direction: 'ltr'
178
+ }
179
+ }, /*#__PURE__*/_react.default.createElement("span", {
180
+ style: {
181
+ color: '#000000',
182
+ margin: '0 6px'
183
+ }
184
+ }, row.nvl_change, "%"), /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
185
+ icon: row.nvl_change > 0 ? _freeSolidSvgIcons.faChevronUp : _freeSolidSvgIcons.faChevronDown
186
+ }));
140
187
  }
141
- }, row.nvl_change, "%"), /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
142
- icon: row.nvl_change > 0 ? _freeSolidSvgIcons.faChevronUp : _freeSolidSvgIcons.faChevronDown
143
- }))
144
- }, {
145
- name: _i18n.default.t('components.wbe_dashboard.last_sampled'),
146
- selector: 'last_sampled',
147
- sortable: row => row.last_updated,
148
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
149
- "data-tag": "allowRowEvents"
150
- }, row.last_updated === null ? '-' : (0, _useUserTimeZone.dayFormatFromTime)(row.last_updated, userFormat))
151
- }, {
152
- name: _i18n.default.t('components.wbe_dashboard.trend_graph'),
153
- selector: 'trend_graph',
154
- sortable: true,
155
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
156
- "data-tag": "allowRowEvents"
157
- }, /*#__PURE__*/_react.default.createElement(_GraphWrapper.GraphWrapper, {
158
- key: row.id,
159
- row: row,
160
- water_authority_id: getWAId(),
161
- pathogen: selectedPathogen
162
- }))
163
- }, {
164
- name: _i18n.default.t('components.wbe_dashboard.population'),
165
- selector: row => row.population,
166
- sortable: true,
167
- cell: row => /*#__PURE__*/_react.default.createElement("div", {
168
- "data-tag": "allowRowEvents"
169
- }, (0, _ThousandsToK.kFormatter)(parseInt(row.population)))
170
- }], [isRtl, selectedPathogen, userFormat]);
171
- const initializeMapAreas = areas => {
172
- const mappedWithColor = areas.map(a => {
188
+ }, {
189
+ name: _i18n.default.t('components.wbe_dashboard.last_sampled'),
190
+ selector: 'last_sampled',
191
+ sortable: function sortable(row) {
192
+ return row.last_updated;
193
+ },
194
+ cell: function cell(row) {
195
+ return /*#__PURE__*/_react.default.createElement("div", {
196
+ "data-tag": "allowRowEvents"
197
+ }, row.last_updated === null ? '-' : (0, _useUserTimeZone.dayFormatFromTime)(row.last_updated, userFormat));
198
+ }
199
+ }, {
200
+ name: _i18n.default.t('components.wbe_dashboard.trend_graph'),
201
+ selector: 'trend_graph',
202
+ sortable: true,
203
+ cell: function cell(row) {
204
+ return /*#__PURE__*/_react.default.createElement("div", {
205
+ "data-tag": "allowRowEvents"
206
+ }, /*#__PURE__*/_react.default.createElement(_GraphWrapper.GraphWrapper, {
207
+ key: row.id,
208
+ row: row,
209
+ water_authority_id: getWAId(),
210
+ pathogen: selectedPathogen
211
+ }));
212
+ }
213
+ }, {
214
+ name: _i18n.default.t('components.wbe_dashboard.population'),
215
+ selector: function selector(row) {
216
+ return row.population;
217
+ },
218
+ sortable: true,
219
+ cell: function cell(row) {
220
+ return /*#__PURE__*/_react.default.createElement("div", {
221
+ "data-tag": "allowRowEvents"
222
+ }, (0, _ThousandsToK.kFormatter)(parseInt(row.population)));
223
+ }
224
+ }];
225
+ }, [isRtl, selectedPathogen, userFormat]);
226
+ var initializeMapAreas = function initializeMapAreas(areas) {
227
+ var mappedWithColor = areas.map(function (a) {
173
228
  a.wbe_dashboard_name = a.name;
174
229
  a.showColorOnlyInBorders = true;
175
230
  if (!a.sample_active) {
@@ -186,16 +241,16 @@ const WbeDashboardPage = () => {
186
241
  });
187
242
  setMapAreas(mappedWithColor);
188
243
  };
189
- const zoomToArea = area => {
244
+ var zoomToArea = function zoomToArea(area) {
190
245
  area.shape_data !== undefined && setMapZoom(area.shape_data);
191
246
  };
192
- const zoomAllAreas = data => {
193
- const shapeData = data.map(datum => {
247
+ var zoomAllAreas = function zoomAllAreas(data) {
248
+ var shapeData = data.map(function (datum) {
194
249
  return datum.shape_data;
195
250
  });
196
251
  setMapZoom(shapeData);
197
252
  };
198
- const isInfected = nvl => {
253
+ var isInfected = function isInfected(nvl) {
199
254
  if ((0, _nvlStatusHelper.levelNVL)(nvl) === 'clean') {
200
255
  return false;
201
256
  } else if ((0, _nvlStatusHelper.levelNVL)(nvl) === 'low' || (0, _nvlStatusHelper.levelNVL)(nvl) === 'medium' || (0, _nvlStatusHelper.levelNVL)(nvl) === 'high') {
@@ -203,21 +258,25 @@ const WbeDashboardPage = () => {
203
258
  }
204
259
  return;
205
260
  };
206
- const history = (0, _reactRouterDom.useHistory)();
207
- const waterAuthorityId = (0, _reactRedux.useSelector)(state => state.global_data.waterAuthorityId);
208
- const dir = navContext.locale === 'he' ? _reactDataTableComponent.Direction.RTL : _reactDataTableComponent.Direction.LTR;
209
- const filterResultsAndSetRows = text => {
210
- let results = currentData.filter(function (el) {
261
+ var history = (0, _reactRouterDom.useHistory)();
262
+ var waterAuthorityId = (0, _reactRedux.useSelector)(function (state) {
263
+ return state.global_data.waterAuthorityId;
264
+ });
265
+ var dir = navContext.locale === 'he' ? _reactDataTableComponent.Direction.RTL : _reactDataTableComponent.Direction.LTR;
266
+ var filterResultsAndSetRows = function filterResultsAndSetRows(text) {
267
+ var results = currentData.filter(function (el) {
211
268
  return el.name.toLowerCase().includes(text.toLowerCase());
212
269
  });
213
270
  setRows(results);
214
271
  };
215
- const handleOnRowExpand = (expanded, row) => {
272
+ var handleOnRowExpand = function handleOnRowExpand(expanded, row) {
216
273
  expanded && zoomToArea(row);
217
274
  !expanded && zoomAllAreas(data);
218
275
  };
219
- const waterAuthorityName = (0, _reactRedux.useSelector)(state => state.global_data.waterAuthorityName);
220
- const handleSelectPathogenClick = pathogen => {
276
+ var waterAuthorityName = (0, _reactRedux.useSelector)(function (state) {
277
+ return state.global_data.waterAuthorityName;
278
+ });
279
+ var handleSelectPathogenClick = function handleSelectPathogenClick(pathogen) {
221
280
  (0, _Analytics.analyticsTrack)('WBE Status Report - Pathogen change clicked', {
222
281
  pathogen: pathogen,
223
282
  utility_name: waterAuthorityName
@@ -225,10 +284,10 @@ const WbeDashboardPage = () => {
225
284
  setSelectedPathogen(pathogen);
226
285
  history.push("/wbe_dashboard/index?locale=".concat(navContext.locale, "&water_authority_id=").concat(waterAuthorityId, "&pathogen=").concat(pathogen));
227
286
  };
228
- const fetchForTabSelection = tab => {
287
+ var fetchForTabSelection = function fetchForTabSelection(tab) {
229
288
  setFetching(true);
230
- _axios.default.get(fetchUrl(tab)).then(response => {
231
- let responseData = response.data.data;
289
+ _axios.default.get(fetchUrl(tab)).then(function (response) {
290
+ var responseData = response.data.data;
232
291
  setFetching(false);
233
292
  setTabs(DEFAULT_TABS);
234
293
  setRows(responseData);
@@ -237,7 +296,7 @@ const WbeDashboardPage = () => {
237
296
  zoomAllAreas(responseData);
238
297
  });
239
298
  };
240
- const handleTabSelectionClick = tab => {
299
+ var handleTabSelectionClick = function handleTabSelectionClick(tab) {
241
300
  if (!isFetching) {
242
301
  setSelectedTab(tab);
243
302
  if (tab !== _i18n.default.t('components.wbe_dashboard.custom')) {
@@ -246,24 +305,24 @@ const WbeDashboardPage = () => {
246
305
  }
247
306
  }
248
307
  };
249
- const initializeDrilledArea = response => {
250
- let data = response.data.data;
308
+ var initializeDrilledArea = function initializeDrilledArea(response) {
309
+ var data = response.data.data;
251
310
  setRows(data);
252
311
  setCurrentData(data);
253
312
  initializeMapAreas(data);
254
313
  zoomAllAreas(data);
255
314
  };
256
- const handleAreaClick = area => {
315
+ var handleAreaClick = function handleAreaClick(area) {
257
316
  zoomToArea(area);
258
317
  if (area.has_children) {
259
- setTabs([...tabs, _i18n.default.t('components.wbe_dashboard.custom')]);
318
+ setTabs([].concat((0, _toConsumableArray2.default)(tabs), [_i18n.default.t('components.wbe_dashboard.custom')]));
260
319
  setSelectedTab(_i18n.default.t('components.wbe_dashboard.custom'));
261
- _axios.default.get(fetchUrl(area.id)).then(response => {
320
+ _axios.default.get(fetchUrl(area.id)).then(function (response) {
262
321
  initializeDrilledArea(response);
263
322
  });
264
323
  }
265
324
  };
266
- const initializeComponent = () => {
325
+ var initializeComponent = function initializeComponent() {
267
326
  setCurrentData(data);
268
327
  setRows(data);
269
328
  (0, _Analytics.analyticsTrack)('WBE Status Report', {
@@ -275,23 +334,27 @@ const WbeDashboardPage = () => {
275
334
  initializeMapAreas(data);
276
335
  zoomAllAreas(data);
277
336
  };
278
- (0, _react.useEffect)(() => {
337
+ (0, _react.useEffect)(function () {
279
338
  if (!isFetching && data !== null) {
280
339
  initializeComponent();
281
340
  }
282
341
  }, [isFetching, selectedPathogen, data]);
283
- const pathogenTitle = !isFetchingPathogens && (pathogens === null || pathogens === void 0 ? void 0 : pathogens.find(item => item.toLowerCase() === selectedPathogen.toLowerCase())) || '';
284
- const dropDownTitle = pathogenTitle || _i18n.default.t('components.wbe_dashboard.pathogen_not_found');
285
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Content, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("h1", null, "".concat(_i18n.default.t('components.wbe_dashboard.table_name'), " (").concat(pathogenTitle || getPathogen(), ")")), !isFetchingPathogens && pathogens.length === 0 && /*#__PURE__*/_react.default.createElement("h3", null, _i18n.default.t('components.wbe_dashboard.pathogen_not_found')), /*#__PURE__*/_react.default.createElement(ActionsContainer, null, !isFetchingPathogens && pathogens.length > 1 && /*#__PURE__*/_react.default.createElement(_DropdownButton.default, {
342
+ var pathogenTitle = !isFetchingPathogens && waterAuthorityId && !CLEAR_TITLE_FOR_WA_IDS.includes(waterAuthorityId) && "(".concat((pathogens === null || pathogens === void 0 ? void 0 : pathogens.find(function (item) {
343
+ return item.toLowerCase() === selectedPathogen.toLowerCase();
344
+ })) || getPathogen(), ")") || '';
345
+ var dropDownTitle = pathogenTitle || _i18n.default.t('components.wbe_dashboard.pathogen_not_found');
346
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Content, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("h1", null, "".concat(_i18n.default.t('components.wbe_dashboard.table_name'), " ").concat(pathogenTitle)), !isFetchingPathogens && (pathogens === null || pathogens === void 0 ? void 0 : pathogens.length) === 0 && /*#__PURE__*/_react.default.createElement("h3", null, _i18n.default.t('components.wbe_dashboard.pathogen_not_found')), /*#__PURE__*/_react.default.createElement(ActionsContainer, null, !isFetchingPathogens && (pathogens === null || pathogens === void 0 ? void 0 : pathogens.length) > 1 && /*#__PURE__*/_react.default.createElement(_DropdownButton.default, {
286
347
  id: "dropdown-basic-button",
287
348
  className: 'button button--sort',
288
349
  title: dropDownTitle + ' ',
289
350
  variant: "secondary"
290
- }, pathogens.map(pathogen => {
351
+ }, pathogens.map(function (pathogen) {
291
352
  return /*#__PURE__*/_react.default.createElement(_Dropdown.default.Item, {
292
353
  key: pathogen,
293
354
  href: "#",
294
- onClick: () => handleSelectPathogenClick(pathogen),
355
+ onClick: function onClick() {
356
+ return handleSelectPathogenClick(pathogen);
357
+ },
295
358
  style: {
296
359
  textAlign: navContext.locale === 'he' ? 'right' : 'left'
297
360
  }
@@ -334,28 +397,30 @@ const WbeDashboardPage = () => {
334
397
  })))));
335
398
  };
336
399
  exports.WbeDashboardPage = WbeDashboardPage;
337
- const RowName = _styledComponents.default.div.withConfig({
400
+ var RowName = _styledComponents.default.div.withConfig({
338
401
  displayName: "WbeDashboardPage__RowName",
339
402
  componentId: "sc-14f81cv-0"
340
- })(["width:100%;.row_name{.expandable-icon{width:30px;height:30px;transition:.2s ease-in;border-radius:4px;display:flex;align-items:center;padding:0 4px;span{margin-inline-start:2px;}}&--clean{color:#27a63a;.expandable-icon{background:#27a63a;}}&--infected{color:#e10036;.expandable-icon{background:#e10036;}}&--inactive-sampling{color:", ";.expandable-icon{background:", ";}}.name{position:absolute;font-weight:100;", " top:16px;width:7.5em;margin-inline-start:3px;}}}"], _theme.theme.colorScheme.natural.n60, _theme.theme.colorScheme.natural.n60, p => p.isRtl ? 'right: 51px;' : 'left: 51px;');
341
- const ActionsContainer = _styledComponents.default.div.withConfig({
403
+ })(["width:100%;.row_name{.expandable-icon{width:30px;height:30px;transition:.2s ease-in;border-radius:4px;display:flex;align-items:center;padding:0 4px;span{margin-inline-start:2px;}}&--clean{color:#27a63a;.expandable-icon{background:#27a63a;}}&--infected{color:#e10036;.expandable-icon{background:#e10036;}}&--inactive-sampling{color:", ";.expandable-icon{background:", ";}}.name{position:absolute;font-weight:100;", " top:16px;width:7.5em;margin-inline-start:3px;}}}"], _theme.theme.colorScheme.natural.n60, _theme.theme.colorScheme.natural.n60, function (p) {
404
+ return p.isRtl ? 'right: 51px;' : 'left: 51px;';
405
+ });
406
+ var ActionsContainer = _styledComponents.default.div.withConfig({
342
407
  displayName: "WbeDashboardPage__ActionsContainer",
343
408
  componentId: "sc-14f81cv-1"
344
409
  })(["display:flex;justify-content:start;align-items:center;"]);
345
- const FirstSection = _styledComponents.default.div.withConfig({
410
+ var FirstSection = _styledComponents.default.div.withConfig({
346
411
  displayName: "WbeDashboardPage__FirstSection",
347
412
  componentId: "sc-14f81cv-2"
348
413
  })(["margin:85px 0 20px 0;"]);
349
- const SecondSection = _styledComponents.default.div.withConfig({
414
+ var SecondSection = _styledComponents.default.div.withConfig({
350
415
  displayName: "WbeDashboardPage__SecondSection",
351
416
  componentId: "sc-14f81cv-3"
352
417
  })(["padding:20px;background:#fcfcfc;border:1px solid #e7e7e7;border-radius:6px;"]);
353
- const MapTableContainer = _styledComponents.default.div.withConfig({
418
+ var MapTableContainer = _styledComponents.default.div.withConfig({
354
419
  displayName: "WbeDashboardPage__MapTableContainer",
355
420
  componentId: "sc-14f81cv-4"
356
421
  })(["display:flex;justify-content:start;flex-direction:row-reverse;.map-container{width:unset !important;.event-timerange{display:none;}#map{height:69vh;width:30vw;}}[data-testid='kando-table']{width:100%;}[data-column-id='1']{justify-content:flex-start !important;overflow:visible;position:relative;cursor:pointer;&:hover{.name{color:white !important;}.expandable-icon{width:calc(120px + 1vw);transition:0.2s cubic-bezier(0.65,0.05,0.36,1);}}}.spinner-container{width:100%;display:flex;justify-content:center;}"]);
357
- const Content = _styledComponents.default.div.withConfig({
422
+ var Content = _styledComponents.default.div.withConfig({
358
423
  displayName: "WbeDashboardPage__Content",
359
424
  componentId: "sc-14f81cv-5"
360
425
  })(["@media (max-width:576px){padding:20px;}h1{font-weight:bold;}padding:60px 60px;"]);
361
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaTE4biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdFJvdXRlckRvbSIsIl9BbmFseXRpY3MiLCJfU2VhcmNoSW5wdXQiLCJfcmVhY3RGb250YXdlc29tZSIsIl9HcmFwaFdyYXBwZXIiLCJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJfYWN0aW9ucyIsIl9UaG91c2FuZHNUb0siLCJfRHJpbGxEb3duSWNvbiIsIl9CYXNlTGV2ZWwiLCJfcmVhY3REYXRhVGFibGVDb21wb25lbnQiLCJfbnZsU3RhdHVzSGVscGVyIiwiX01hcCIsIl9LYW5kb1RhYmxlIiwiX1RhYnMiLCJfdXNlS2FuZG9GZXRjaCIsIl91c2VRdWVyeVVSTCIsIl9Ecm9wZG93biIsIl9Ecm9wZG93bkJ1dHRvbiIsIl9heGlvcyIsIl9UcnVuY2F0ZSIsIl9FeHBhbmRhYmxlQ29tcG9uZW50IiwiX1NwaW5uZXIiLCJfV2JlU3VtbWFyeUJhciIsIl9FcnJvckJvdW5kYXJ5IiwiX3RoZW1lIiwiX3VzZUthbmRvRmV0Y2gyIiwiX3VybHMiLCJfdXNlVXNlclRpbWVab25lIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIlRBQkxFX1JPV1NfUEVSX1BBR0UiLCJNQVBCT1hfV0JFX0RBU0hCT0FSRF9TVFlMRSIsIldiZURhc2hib2FyZFBhZ2UiLCJnZXRXQUlkIiwicXVlcnkiLCJmZXRjaFVybCIsImZpcnN0UGFyYW0iLCJjb25jYXQiLCJzZWxlY3RlZFBhdGhvZ2VuIiwicGF0aG9nZW5zVXJsIiwidXJscyIsIndhdGVyQXV0aG9yaXR5SWQiLCJ3YmVEYXNoYm9hcmQiLCJwYXRob2dlbnMiLCJ1cmwiLCJERUZBVUxUX1RBQlMiLCJpMThuIiwidCIsImNvbnZlcnRUYWJOYW1lVG9QYXJhbSIsInRhYl9uYW1lIiwidXNlUXVlcnlVUkwiLCJnZXRQYXRob2dlbiIsImN1cnJlbnREYXRhIiwic2V0Q3VycmVudERhdGEiLCJ1c2VTdGF0ZSIsIm1hcEFyZWFzIiwic2V0TWFwQXJlYXMiLCJtYXBab29tIiwic2V0TWFwWm9vbSIsInJvd3MiLCJzZXRSb3dzIiwidGFicyIsInNldFRhYnMiLCJzZWxlY3RlZFRhYiIsInNldFNlbGVjdGVkVGFiIiwic2V0U2VsZWN0ZWRQYXRob2dlbiIsImRhdGEiLCJpc0ZldGNoaW5nIiwic2V0RmV0Y2hpbmciLCJ1c2VLYW5kb0ZldGNoIiwiaXNGZXRjaGluZ1BhdGhvZ2VucyIsIlVzZUthbmRvRmV0Y2giLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwibmF2Q29udGV4dCIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJuYXZfY29udGV4dF9kYXRhIiwiZ2xvYmFsRGF0YSIsImdsb2JhbF9kYXRhIiwiaXNSdGwiLCJsb2NhbGUiLCJjb2xvckZvclJvdyIsInJvdyIsInF1YWxpdHkiLCJzYW1wbGVfYWN0aXZlIiwiaXNJbmZlY3RlZCIsIm52bCIsInVzZXJGb3JtYXQiLCJ1c2VVc2VyU2VsZWN0ZWREYXRlRm9ybWF0IiwiY29sdW1ucyIsIlJlYWN0IiwidXNlTWVtbyIsIm5hbWUiLCJzZWxlY3RvciIsInNvcnRhYmxlIiwiY2VsbCIsImNyZWF0ZUVsZW1lbnQiLCJSb3dOYW1lIiwiY2xhc3NOYW1lIiwib25DbGljayIsImhhbmRsZUFyZWFDbGljayIsImhhc19jaGlsZHJlbiIsIlJlYWN0Q29tcG9uZW50IiwiY2hhcmFjdGVycyIsImluaGVyaXRUZXh0QWxpZ24iLCJudmxfY2hhbmdlIiwic3R5bGUiLCJkaXJlY3Rpb24iLCJjb2xvciIsIm1hcmdpbiIsIkZvbnRBd2Vzb21lSWNvbiIsImljb24iLCJmYUNoZXZyb25VcCIsImZhQ2hldnJvbkRvd24iLCJsYXN0X3VwZGF0ZWQiLCJkYXlGb3JtYXRGcm9tVGltZSIsIkdyYXBoV3JhcHBlciIsImlkIiwid2F0ZXJfYXV0aG9yaXR5X2lkIiwicGF0aG9nZW4iLCJwb3B1bGF0aW9uIiwia0Zvcm1hdHRlciIsInBhcnNlSW50IiwiaW5pdGlhbGl6ZU1hcEFyZWFzIiwiYXJlYXMiLCJtYXBwZWRXaXRoQ29sb3IiLCJtYXAiLCJhIiwid2JlX2Rhc2hib2FyZF9uYW1lIiwic2hvd0NvbG9yT25seUluQm9yZGVycyIsInRoZW1lIiwiY29sb3JTY2hlbWUiLCJuYXR1cmFsIiwibjYwIiwiUjEwMCIsIkcxMDAiLCJ6b29tVG9BcmVhIiwiYXJlYSIsInNoYXBlX2RhdGEiLCJ1bmRlZmluZWQiLCJ6b29tQWxsQXJlYXMiLCJzaGFwZURhdGEiLCJkYXR1bSIsImxldmVsTlZMIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJkaXIiLCJEaXJlY3Rpb24iLCJSVEwiLCJMVFIiLCJmaWx0ZXJSZXN1bHRzQW5kU2V0Um93cyIsInRleHQiLCJyZXN1bHRzIiwiZmlsdGVyIiwiZWwiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiaGFuZGxlT25Sb3dFeHBhbmQiLCJleHBhbmRlZCIsIndhdGVyQXV0aG9yaXR5TmFtZSIsImhhbmRsZVNlbGVjdFBhdGhvZ2VuQ2xpY2siLCJhbmFseXRpY3NUcmFjayIsInV0aWxpdHlfbmFtZSIsInB1c2giLCJmZXRjaEZvclRhYlNlbGVjdGlvbiIsInRhYiIsImF4aW9zIiwidGhlbiIsInJlc3BvbnNlIiwicmVzcG9uc2VEYXRhIiwiaGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2siLCJpbml0aWFsaXplRHJpbGxlZEFyZWEiLCJpbml0aWFsaXplQ29tcG9uZW50IiwidXBkYXRlTmF2Q29udGV4dCIsInVzZUVmZmVjdCIsInBhdGhvZ2VuVGl0bGUiLCJmaW5kIiwiaXRlbSIsImRyb3BEb3duVGl0bGUiLCJGcmFnbWVudCIsIkNvbnRlbnQiLCJsZW5ndGgiLCJBY3Rpb25zQ29udGFpbmVyIiwidGl0bGUiLCJ2YXJpYW50IiwiSXRlbSIsImhyZWYiLCJ0ZXh0QWxpZ24iLCJGaXJzdFNlY3Rpb24iLCJXYmVTdW1tYXJ5QmFyIiwiU2Vjb25kU2VjdGlvbiIsIlNlYXJjaElucHV0Iiwib25DaGFuZ2VCZWhhdmlvciIsIlRhYnMiLCJoYW5kbGVPbkNsaWNrIiwiTWFwVGFibGVDb250YWluZXIiLCJTcGlubmVyIiwiTWFwIiwiYXJlYVRvQ2VudGVyQnkiLCJlZGdlcyIsInBvaW50cyIsIm1hcEJveFN0eWxlIiwiS2FuZG9UYWJsZSIsIm9uUm93RXhwYW5kVG9nZ2xlZCIsImV4cGFuZGFibGVSb3dzIiwicGFnaW5hdGlvblBlclBhZ2UiLCJyb3dDb21wb25lbnQiLCJFeHBhbmRlZENvbXBvbmVudCIsImV4cGFuZGFibGVSb3dzQ29tcG9uZW50UHJvcHMiLCJkZWZhdWx0U29ydEZpZWxkSWQiLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2Iiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiLCJwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhZ2VzL1diZURhc2hib2FyZC9XYmVEYXNoYm9hcmRQYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgeyBhbmFseXRpY3NUcmFjayB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICcuL1NlYXJjaElucHV0JztcbmltcG9ydCB7IEZvbnRBd2Vzb21lSWNvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9yZWFjdC1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBHcmFwaFdyYXBwZXIgfSBmcm9tICcuL0dyYXBoV3JhcHBlcic7XG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25VcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vc3RvcmUvcm9vdFJlZHVjZXInO1xuaW1wb3J0IHsgdXBkYXRlTmF2Q29udGV4dCB9IGZyb20gJy4uLy4uL3N0b3JlL2NvbnRleHQvYWN0aW9ucyc7XG5pbXBvcnQgeyBrRm9ybWF0dGVyIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1Rob3VzYW5kc1RvSyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBEcmlsbERvd25JY29uIH0gZnJvbSAnLi9EcmlsbERvd25JY29uLnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBCYXNlTGV2ZWwgfSBmcm9tICcuL0Jhc2VMZXZlbC5zdmcnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAncmVhY3QtZGF0YS10YWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgbGV2ZWxOVkwgfSBmcm9tICcuLi9Db3ZpZFBhZ2UvY29tcG9uZW50cy9udmxTdGF0dXNIZWxwZXInO1xuaW1wb3J0IHsgTWFwIH0gZnJvbSAnLi4vLi4vV2lkZ2V0cy9NYXAvTWFwJztcbmltcG9ydCB7IEthbmRvVGFibGUgfSBmcm9tICdzcmMvdWkta2l0L0thbmRvVGFibGUvS2FuZG9UYWJsZSc7XG5pbXBvcnQgeyBUYWJzIH0gZnJvbSAnLi9UYWJzJztcbmltcG9ydCB1c2VLYW5kb0ZldGNoIGZyb20gJy4uLy4uL2hvb2tzL3VzZUthbmRvRmV0Y2gnO1xuaW1wb3J0IHVzZVF1ZXJ5VVJMIGZyb20gJy4uLy4uL2hvb2tzL3VzZVF1ZXJ5VVJMJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMvbWFjcm8nO1xuaW1wb3J0IERyb3Bkb3duIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd24nO1xuaW1wb3J0IERyb3Bkb3duQnV0dG9uIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd25CdXR0b24nO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBUcnVuY2F0ZSBmcm9tICcuLi8uLi91dGlsaXRpZXMvVHJ1bmNhdGUnO1xuaW1wb3J0IHsgRXhwYW5kZWRDb21wb25lbnQgfSBmcm9tICcuL0V4cGFuZGFibGVDb21wb25lbnQnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyJztcbmltcG9ydCB7IFdiZVN1bW1hcnlCYXIgfSBmcm9tICcuL1diZVN1bW1hcnlCYXInO1xuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuaW1wb3J0IFVzZUthbmRvRmV0Y2ggZnJvbSAnc3JjL2hvb2tzL3VzZUthbmRvRmV0Y2gnO1xuaW1wb3J0IHsgdXJscyB9IGZyb20gJ3NyYy91dGlsaXRpZXMvdXJscyc7XG5pbXBvcnQge1xuICBkYXlGb3JtYXRGcm9tVGltZSxcbiAgdXNlVXNlclNlbGVjdGVkRGF0ZUZvcm1hdCxcbn0gZnJvbSAnc3JjL2hvb2tzL3VzZVVzZXJUaW1lWm9uZSc7XG5jb25zdCBUQUJMRV9ST1dTX1BFUl9QQUdFID0gMjU7XG5jb25zdCBNQVBCT1hfV0JFX0RBU0hCT0FSRF9TVFlMRSA9ICdja3p6a2pzaTcwMDVmMTRvOWltMG1jenM5JztcblxuZXhwb3J0IGNvbnN0IFdiZURhc2hib2FyZFBhZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IGdldFdBSWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgnd2F0ZXJfYXV0aG9yaXR5X2lkJyk7XG4gIH07XG4gIGNvbnN0IGZldGNoVXJsID0gKGZpcnN0UGFyYW0pID0+IHtcbiAgICByZXR1cm4gYC9hcGlfdWkvd2JlX2Rhc2hib2FyZC8ke3NlbGVjdGVkUGF0aG9nZW59LyR7Zmlyc3RQYXJhbX0/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7Z2V0V0FJZCgpfWA7XG4gIH07XG4gIGNvbnN0IHBhdGhvZ2Vuc1VybCA9ICgpID0+XG4gICAgdXJscyh7IHdhdGVyQXV0aG9yaXR5SWQ6IGdldFdBSWQoKSB9KS53YmVEYXNoYm9hcmQucGF0aG9nZW5zLnVybDtcbiAgY29uc3QgREVGQVVMVF9UQUJTID0gW1xuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmNpdGllcycpLFxuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm1vbml0b3JlZF9hcmVhcycpLFxuICBdO1xuICBjb25zdCBjb252ZXJ0VGFiTmFtZVRvUGFyYW0gPSAodGFiX25hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmICh0YWJfbmFtZSA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY2l0aWVzJykpIHtcbiAgICAgIHJldHVybiAnY2l0eSc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRhYl9uYW1lID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKVxuICAgICkge1xuICAgICAgcmV0dXJuICdtb25pdG9yZWQnO1xuICAgIH1cblxuICAgIHJldHVybiAnY2l0eSc7XG4gIH07XG4gIGNvbnN0IHF1ZXJ5ID0gdXNlUXVlcnlVUkwoKTtcbiAgY29uc3QgZ2V0UGF0aG9nZW4gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgncGF0aG9nZW4nKSB8fCAnY292aWQnO1xuICB9O1xuXG4gIGNvbnN0IFtjdXJyZW50RGF0YSwgc2V0Q3VycmVudERhdGFdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbbWFwQXJlYXMsIHNldE1hcEFyZWFzXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFttYXBab29tLCBzZXRNYXBab29tXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IHVzZVN0YXRlPGFueT4oW10pO1xuICBjb25zdCBbdGFicywgc2V0VGFic10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oREVGQVVMVF9UQUJTKTtcbiAgY29uc3QgW3NlbGVjdGVkVGFiLCBzZXRTZWxlY3RlZFRhYl0gPSB1c2VTdGF0ZTxzdHJpbmc+KHRhYnNbMF0pO1xuICBjb25zdCBbc2VsZWN0ZWRQYXRob2dlbiwgc2V0U2VsZWN0ZWRQYXRob2dlbl0gPSB1c2VTdGF0ZTxzdHJpbmc+KFxuICAgIGdldFBhdGhvZ2VuKCksXG4gICk7XG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZywgc2V0RmV0Y2hpbmcgfSA9IHVzZUthbmRvRmV0Y2goXG4gICAgZmV0Y2hVcmwoY29udmVydFRhYk5hbWVUb1BhcmFtKHNlbGVjdGVkVGFiKSksXG4gICk7XG4gIGNvbnN0IHsgZGF0YTogcGF0aG9nZW5zLCBpc0ZldGNoaW5nOiBpc0ZldGNoaW5nUGF0aG9nZW5zIH0gPSBVc2VLYW5kb0ZldGNoKFxuICAgIHBhdGhvZ2Vuc1VybCgpLFxuICApO1xuXG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgbmF2Q29udGV4dCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLm5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dCxcbiAgKTtcbiAgY29uc3QgZ2xvYmFsRGF0YSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLmdsb2JhbF9kYXRhLFxuICApO1xuICBjb25zdCBpc1J0bDogYm9vbGVhbiA9IG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gdHJ1ZSA6IGZhbHNlO1xuICBjb25zdCBjb2xvckZvclJvdyA9IChyb3cpID0+IHtcbiAgICBsZXQgcXVhbGl0eTtcbiAgICBpZiAoIXJvdy5zYW1wbGVfYWN0aXZlKSB7XG4gICAgICBxdWFsaXR5ID0gJ2luYWN0aXZlLXNhbXBsaW5nJztcbiAgICB9IGVsc2UgaWYgKGlzSW5mZWN0ZWQocm93Lm52bCkpIHtcbiAgICAgIHF1YWxpdHkgPSAnaW5mZWN0ZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWFsaXR5ID0gJ2NsZWFuJztcbiAgICB9XG5cbiAgICByZXR1cm4gYHJvd19uYW1lLS0ke3F1YWxpdHl9YDtcbiAgfTtcblxuICBjb25zdCB1c2VyRm9ybWF0ID0gdXNlVXNlclNlbGVjdGVkRGF0ZUZvcm1hdCgpO1xuICBjb25zdCBjb2x1bW5zOiBhbnkgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubmFtZScpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93Lm5hbWUsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG5hbWU6IHN0cmluZzsgbnZsOiBudW1iZXI7IGhhc19jaGlsZHJlbjogYm9vbGVhbiB9KSA9PiAoXG4gICAgICAgICAgPFJvd05hbWUgaXNSdGw9e2lzUnRsfT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHJvd19uYW1lICR7Y29sb3JGb3JSb3cocm93KX1gfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQXJlYUNsaWNrKHJvdyk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZXhwYW5kYWJsZS1pY29uJ30+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICB7cm93Lmhhc19jaGlsZHJlbiAmJiA8RHJpbGxEb3duSWNvbiAvPn1cbiAgICAgICAgICAgICAgICAgIHshcm93Lmhhc19jaGlsZHJlbiAmJiA8QmFzZUxldmVsIC8+fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17J25hbWUnfT5cbiAgICAgICAgICAgICAgICA8VHJ1bmNhdGUgY2hhcmFjdGVycz17M30gaW5oZXJpdFRleHRBbGlnbj17dHJ1ZX0+XG4gICAgICAgICAgICAgICAgICB7cm93Lm5hbWV9XG4gICAgICAgICAgICAgICAgPC9UcnVuY2F0ZT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9Sb3dOYW1lPlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubnZsX3Njb3JlJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cubnZsLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBudmw6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+e3Jvdy5udmx9PC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wZXJjZW50YWdlX2Zyb21fbGFzdF9zYW1wbGluZycpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93Lm52bF9jaGFuZ2UsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG52bF9jaGFuZ2U6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXJlY3Rpb246ICdsdHInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBjb2xvcjogJyMwMDAwMDAnLCBtYXJnaW46ICcwIDZweCcgfX0+XG4gICAgICAgICAgICAgIHtyb3cubnZsX2NoYW5nZX0lXG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgPEZvbnRBd2Vzb21lSWNvblxuICAgICAgICAgICAgICAgIGljb249e3Jvdy5udmxfY2hhbmdlID4gMCA/IGZhQ2hldnJvblVwIDogZmFDaGV2cm9uRG93bn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmxhc3Rfc2FtcGxlZCcpLFxuICAgICAgICBzZWxlY3RvcjogJ2xhc3Rfc2FtcGxlZCcsXG4gICAgICAgIHNvcnRhYmxlOiAocm93KSA9PiByb3cubGFzdF91cGRhdGVkLFxuICAgICAgICBjZWxsOiAocm93OiB7IGxhc3RfdXBkYXRlZDogc3RyaW5nIH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIj5cbiAgICAgICAgICAgIHtyb3cubGFzdF91cGRhdGVkID09PSBudWxsXG4gICAgICAgICAgICAgID8gJy0nXG4gICAgICAgICAgICAgIDogZGF5Rm9ybWF0RnJvbVRpbWUocm93Lmxhc3RfdXBkYXRlZCwgdXNlckZvcm1hdCl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC50cmVuZF9ncmFwaCcpLFxuICAgICAgICBzZWxlY3RvcjogJ3RyZW5kX2dyYXBoJyxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgaWQ6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+XG4gICAgICAgICAgICA8R3JhcGhXcmFwcGVyXG4gICAgICAgICAgICAgIGtleT17cm93LmlkfVxuICAgICAgICAgICAgICByb3c9e3Jvd31cbiAgICAgICAgICAgICAgd2F0ZXJfYXV0aG9yaXR5X2lkPXtnZXRXQUlkKCl9XG4gICAgICAgICAgICAgIHBhdGhvZ2VuPXtzZWxlY3RlZFBhdGhvZ2VufVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnBvcHVsYXRpb24nKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5wb3B1bGF0aW9uLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBwb3B1bGF0aW9uOiBzdHJpbmcgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiPlxuICAgICAgICAgICAge2tGb3JtYXR0ZXIocGFyc2VJbnQocm93LnBvcHVsYXRpb24pKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbaXNSdGwsIHNlbGVjdGVkUGF0aG9nZW4sIHVzZXJGb3JtYXRdLFxuICApO1xuXG4gIGNvbnN0IGluaXRpYWxpemVNYXBBcmVhcyA9IChhcmVhcykgPT4ge1xuICAgIGNvbnN0IG1hcHBlZFdpdGhDb2xvciA9IGFyZWFzLm1hcCgoYTogYW55KSA9PiB7XG4gICAgICBhLndiZV9kYXNoYm9hcmRfbmFtZSA9IGEubmFtZTtcbiAgICAgIGEuc2hvd0NvbG9yT25seUluQm9yZGVycyA9IHRydWU7XG5cbiAgICAgIGlmICghYS5zYW1wbGVfYWN0aXZlKSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MDtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0luZmVjdGVkKGEubnZsKSkge1xuICAgICAgICBhLmNvbG9yID0gdGhlbWUuY29sb3JTY2hlbWUuZGF0YS5SMTAwO1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5kYXRhLkcxMDA7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0TWFwQXJlYXMobWFwcGVkV2l0aENvbG9yKTtcbiAgfTtcblxuICBjb25zdCB6b29tVG9BcmVhID0gKGFyZWEpID0+IHtcbiAgICBhcmVhLnNoYXBlX2RhdGEgIT09IHVuZGVmaW5lZCAmJiBzZXRNYXBab29tKGFyZWEuc2hhcGVfZGF0YSk7XG4gIH07XG5cbiAgY29uc3Qgem9vbUFsbEFyZWFzID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCBzaGFwZURhdGEgPSBkYXRhLm1hcCgoZGF0dW0pID0+IHtcbiAgICAgIHJldHVybiBkYXR1bS5zaGFwZV9kYXRhO1xuICAgIH0pO1xuXG4gICAgc2V0TWFwWm9vbShzaGFwZURhdGEpO1xuICB9O1xuXG4gIGNvbnN0IGlzSW5mZWN0ZWQgPSAobnZsOiBudW1iZXIpID0+IHtcbiAgICBpZiAobGV2ZWxOVkwobnZsKSA9PT0gJ2NsZWFuJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsZXZlbE5WTChudmwpID09PSAnbG93JyB8fFxuICAgICAgbGV2ZWxOVkwobnZsKSA9PT0gJ21lZGl1bScgfHxcbiAgICAgIGxldmVsTlZMKG52bCkgPT09ICdoaWdoJ1xuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9O1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCB3YXRlckF1dGhvcml0eUlkID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT5cbiAgICAgIHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICk7XG5cbiAgY29uc3QgZGlyOiBEaXJlY3Rpb24gPVxuICAgIG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gRGlyZWN0aW9uLlJUTCA6IERpcmVjdGlvbi5MVFI7XG5cbiAgY29uc3QgZmlsdGVyUmVzdWx0c0FuZFNldFJvd3MgPSAodGV4dDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IHJlc3VsdHMgPSBjdXJyZW50RGF0YS5maWx0ZXIoZnVuY3Rpb24gKGVsOiBhbnkpIHtcbiAgICAgIHJldHVybiBlbC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGV4dC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9KTtcblxuICAgIHNldFJvd3MocmVzdWx0cyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT25Sb3dFeHBhbmQgPSAoZXhwYW5kZWQsIHJvdykgPT4ge1xuICAgIGV4cGFuZGVkICYmIHpvb21Ub0FyZWEocm93KTtcbiAgICAhZXhwYW5kZWQgJiYgem9vbUFsbEFyZWFzKGRhdGEpO1xuICB9O1xuXG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5TmFtZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlOYW1lLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFBhdGhvZ2VuQ2xpY2sgPSAocGF0aG9nZW4pID0+IHtcbiAgICBhbmFseXRpY3NUcmFjaygnV0JFIFN0YXR1cyBSZXBvcnQgLSBQYXRob2dlbiBjaGFuZ2UgY2xpY2tlZCcsIHtcbiAgICAgIHBhdGhvZ2VuOiBwYXRob2dlbixcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIHNldFNlbGVjdGVkUGF0aG9nZW4ocGF0aG9nZW4pO1xuICAgIGhpc3RvcnkucHVzaChcbiAgICAgIGAvd2JlX2Rhc2hib2FyZC9pbmRleD9sb2NhbGU9JHtuYXZDb250ZXh0LmxvY2FsZX0md2F0ZXJfYXV0aG9yaXR5X2lkPSR7d2F0ZXJBdXRob3JpdHlJZH0mcGF0aG9nZW49JHtwYXRob2dlbn1gLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hGb3JUYWJTZWxlY3Rpb24gPSAodGFiKSA9PiB7XG4gICAgc2V0RmV0Y2hpbmcodHJ1ZSk7XG4gICAgYXhpb3MuZ2V0KGZldGNoVXJsKHRhYikpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICBsZXQgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuXG4gICAgICBzZXRGZXRjaGluZyhmYWxzZSk7XG4gICAgICBzZXRUYWJzKERFRkFVTFRfVEFCUyk7XG4gICAgICBzZXRSb3dzKHJlc3BvbnNlRGF0YSk7XG4gICAgICBzZXRDdXJyZW50RGF0YShyZXNwb25zZURhdGEpO1xuICAgICAgaW5pdGlhbGl6ZU1hcEFyZWFzKHJlc3BvbnNlRGF0YSk7XG4gICAgICB6b29tQWxsQXJlYXMocmVzcG9uc2VEYXRhKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUYWJTZWxlY3Rpb25DbGljayA9ICh0YWIpID0+IHtcbiAgICBpZiAoIWlzRmV0Y2hpbmcpIHtcbiAgICAgIHNldFNlbGVjdGVkVGFiKHRhYik7XG5cbiAgICAgIGlmICh0YWIgIT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmN1c3RvbScpKSB7XG4gICAgICAgIHRhYiA9XG4gICAgICAgICAgdGFiID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jaXRpZXMnKVxuICAgICAgICAgICAgPyAnY2l0eSdcbiAgICAgICAgICAgIDogdGFiID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKVxuICAgICAgICAgICAgPyAnbW9uaXRvcmVkJ1xuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICBmZXRjaEZvclRhYlNlbGVjdGlvbih0YWIpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBpbml0aWFsaXplRHJpbGxlZEFyZWEgPSAocmVzcG9uc2UpID0+IHtcbiAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICBzZXRSb3dzKGRhdGEpO1xuICAgIHNldEN1cnJlbnREYXRhKGRhdGEpO1xuICAgIGluaXRpYWxpemVNYXBBcmVhcyhkYXRhKTtcbiAgICB6b29tQWxsQXJlYXMoZGF0YSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQXJlYUNsaWNrID0gKGFyZWEpID0+IHtcbiAgICB6b29tVG9BcmVhKGFyZWEpO1xuXG4gICAgaWYgKGFyZWEuaGFzX2NoaWxkcmVuKSB7XG4gICAgICBzZXRUYWJzKFsuLi50YWJzLCBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jdXN0b20nKV0pO1xuICAgICAgc2V0U2VsZWN0ZWRUYWIoaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY3VzdG9tJykpO1xuXG4gICAgICBheGlvcy5nZXQoZmV0Y2hVcmwoYXJlYS5pZCkpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGluaXRpYWxpemVEcmlsbGVkQXJlYShyZXNwb25zZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNvbXBvbmVudCA9ICgpID0+IHtcbiAgICBzZXRDdXJyZW50RGF0YShkYXRhKTtcbiAgICBzZXRSb3dzKGRhdGEpO1xuICAgIGFuYWx5dGljc1RyYWNrKCdXQkUgU3RhdHVzIFJlcG9ydCcsIHtcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIGRpc3BhdGNoKHVwZGF0ZU5hdkNvbnRleHQoeyBuYW1lOiAnd2JlX2Rhc2hib2FyZCcgfSkpO1xuICAgIGluaXRpYWxpemVNYXBBcmVhcyhkYXRhKTtcbiAgICB6b29tQWxsQXJlYXMoZGF0YSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRmV0Y2hpbmcgJiYgZGF0YSAhPT0gbnVsbCkge1xuICAgICAgaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICAgIH1cbiAgfSwgW2lzRmV0Y2hpbmcsIHNlbGVjdGVkUGF0aG9nZW4sIGRhdGFdKTtcblxuICBjb25zdCBwYXRob2dlblRpdGxlID1cbiAgICAoIWlzRmV0Y2hpbmdQYXRob2dlbnMgJiZcbiAgICAgIHBhdGhvZ2Vucz8uZmluZChcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0udG9Mb3dlckNhc2UoKSA9PT0gc2VsZWN0ZWRQYXRob2dlbi50b0xvd2VyQ2FzZSgpLFxuICAgICAgKSkgfHxcbiAgICAnJztcbiAgY29uc3QgZHJvcERvd25UaXRsZSA9XG4gICAgcGF0aG9nZW5UaXRsZSB8fCBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wYXRob2dlbl9ub3RfZm91bmQnKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Q29udGVudD5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDE+XG4gICAgICAgICAgICB7YCR7aTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQudGFibGVfbmFtZScpfSAoJHtcbiAgICAgICAgICAgICAgcGF0aG9nZW5UaXRsZSB8fCBnZXRQYXRob2dlbigpXG4gICAgICAgICAgICB9KWB9XG4gICAgICAgICAgPC9oMT5cbiAgICAgICAgICB7IWlzRmV0Y2hpbmdQYXRob2dlbnMgJiYgcGF0aG9nZW5zLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICA8aDM+e2kxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnBhdGhvZ2VuX25vdF9mb3VuZCcpfTwvaDM+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8QWN0aW9uc0NvbnRhaW5lcj5cbiAgICAgICAgICAgIHshaXNGZXRjaGluZ1BhdGhvZ2VucyAmJiBwYXRob2dlbnMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICAgIDxEcm9wZG93bkJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiZHJvcGRvd24tYmFzaWMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydidXR0b24gYnV0dG9uLS1zb3J0J31cbiAgICAgICAgICAgICAgICB0aXRsZT17ZHJvcERvd25UaXRsZSArICcgJ31cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtwYXRob2dlbnMubWFwKChwYXRob2dlbikgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duLkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e3BhdGhvZ2VufVxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RQYXRob2dlbkNsaWNrKHBhdGhvZ2VuKX1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZDb250ZXh0LmxvY2FsZSA9PT0gJ2hlJyA/ICdyaWdodCcgOiAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtwYXRob2dlbn1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5JdGVtPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bkJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9BY3Rpb25zQ29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPEZpcnN0U2VjdGlvbj5cbiAgICAgICAgICA8V2JlU3VtbWFyeUJhclxuICAgICAgICAgICAgcGF0aG9nZW49e3NlbGVjdGVkUGF0aG9nZW59XG4gICAgICAgICAgICB3YXRlckF1dGhvcml0eUlkPXt3YXRlckF1dGhvcml0eUlkfVxuICAgICAgICAgICAgaXNSdGw9e2lzUnRsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRmlyc3RTZWN0aW9uPlxuXG4gICAgICAgIDxTZWNvbmRTZWN0aW9uPlxuICAgICAgICAgIDxTZWFyY2hJbnB1dCBvbkNoYW5nZUJlaGF2aW9yPXtmaWx0ZXJSZXN1bHRzQW5kU2V0Um93c30gLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3RhYnMtY29udGFpbmVyJ30+XG4gICAgICAgICAgICA8VGFic1xuICAgICAgICAgICAgICB0YWJzPXt0YWJzfVxuICAgICAgICAgICAgICBzZWxlY3RlZFRhYj17c2VsZWN0ZWRUYWJ9XG4gICAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2s9e2hhbmRsZVRhYlNlbGVjdGlvbkNsaWNrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8TWFwVGFibGVDb250YWluZXIgaXNSdGw9e2lzUnRsfT5cbiAgICAgICAgICAgIHtpc0ZldGNoaW5nICYmIDxTcGlubmVyIC8+fVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydtYXAtY29udGFpbmVyJ30+XG4gICAgICAgICAgICAgIHshaXNGZXRjaGluZyAmJiByb3dzICE9PSBudWxsICYmIG1hcFpvb20gIT09IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgICAgICAgICAgPE1hcFxuICAgICAgICAgICAgICAgICAgICBhcmVhcz17bWFwQXJlYXN9XG4gICAgICAgICAgICAgICAgICAgIGFyZWFUb0NlbnRlckJ5PXttYXBab29tfVxuICAgICAgICAgICAgICAgICAgICBlZGdlcz17W119XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cz17W119XG4gICAgICAgICAgICAgICAgICAgIGdsb2JhbF9kYXRhPXtnbG9iYWxEYXRhfVxuICAgICAgICAgICAgICAgICAgICBtYXBCb3hTdHlsZT17TUFQQk9YX1dCRV9EQVNIQk9BUkRfU1RZTEV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgeyFpc0ZldGNoaW5nICYmIHJvd3MgIT09IG51bGwgJiYgKFxuICAgICAgICAgICAgICA8S2FuZG9UYWJsZVxuICAgICAgICAgICAgICAgIG9uUm93RXhwYW5kVG9nZ2xlZD17aGFuZGxlT25Sb3dFeHBhbmR9XG4gICAgICAgICAgICAgICAgZGF0YT17cm93c31cbiAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbj17ZGlyfVxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGVSb3dzPXt0cnVlfVxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25QZXJQYWdlPXtUQUJMRV9ST1dTX1BFUl9QQUdFfVxuICAgICAgICAgICAgICAgIHJvd0NvbXBvbmVudD17RXhwYW5kZWRDb21wb25lbnR9XG4gICAgICAgICAgICAgICAgZXhwYW5kYWJsZVJvd3NDb21wb25lbnRQcm9wcz17eyBwYXRob2dlbjogc2VsZWN0ZWRQYXRob2dlbiB9fVxuICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0RmllbGRJZD17M31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9NYXBUYWJsZUNvbnRhaW5lcj5cbiAgICAgICAgPC9TZWNvbmRTZWN0aW9uPlxuICAgICAgPC9Db250ZW50PlxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgUm93TmFtZSA9IHN0eWxlZC5kaXY8eyBpc1J0bDogYm9vbGVhbiB9PmBcbiAgICB3aWR0aDogMTAwJTtcbiAgICAgIFxuICAgIC5yb3dfbmFtZSB7XG4gICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgdHJhbnNpdGlvbjogLjJzIGVhc2UtaW47ICAgICAgXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMCA0cHg7XG4gICAgICAgIFxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAycHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICYtLWNsZWFuIHtcbiAgICAgICAgIGNvbG9yOiAjMjdhNjNhOyBcbiAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzI3YTYzYTsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0taW5mZWN0ZWQge1xuICAgICAgICAgIGNvbG9yOiAjZTEwMDM2O1xuICAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2UxMDAzNjsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0taW5hY3RpdmUtc2FtcGxpbmcge1xuICAgICAgICAgIGNvbG9yOiAke3RoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwfTtcbiAgICAgICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNjB9OyAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAubmFtZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDA7XG4gICAgICAgICAgJHsocCkgPT4gKHAuaXNSdGwgPyAncmlnaHQ6IDUxcHg7JyA6ICdsZWZ0OiA1MXB4OycpfVxuICAgICAgICAgIHRvcDogMTZweDtcbiAgICAgICAgICB3aWR0aDogNy41ZW07XG4gICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogM3B4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBgO1xuXG5jb25zdCBBY3Rpb25zQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEZpcnN0U2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbjogODVweCAwIDIwcHggMDtcbmA7XG5cbmNvbnN0IFNlY29uZFNlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAyMHB4O1xuICBiYWNrZ3JvdW5kOiAjZmNmY2ZjO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTdlN2U3O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG5gO1xuXG5jb25zdCBNYXBUYWJsZUNvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyBpc1J0bDogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAubWFwLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgLmV2ZW50LXRpbWVyYW5nZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAjbWFwIHtcbiAgICAgIGhlaWdodDogNjl2aDtcbiAgICAgIHdpZHRoOiAzMHZ3O1xuICAgIH1cbiAgfVxuICBbZGF0YS10ZXN0aWQ9J2thbmRvLXRhYmxlJ10ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG4gIFtkYXRhLWNvbHVtbi1pZD0nMSddIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICY6aG92ZXIge1xuICAgICAgLm5hbWUge1xuICAgICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICB3aWR0aDogY2FsYygxMjBweCArIDF2dyk7XG4gICAgICAgIHRyYW5zaXRpb246IDAuMnMgY3ViaWMtYmV6aWVyKDAuNjUsIDAuMDUsIDAuMzYsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5zcGlubmVyLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuYDtcblxuY29uc3QgQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gIH1cblxuICBoMSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICBwYWRkaW5nOiA2MHB4IDYw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
426
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaTE4biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdFJvdXRlckRvbSIsIl9BbmFseXRpY3MiLCJfU2VhcmNoSW5wdXQiLCJfcmVhY3RGb250YXdlc29tZSIsIl9HcmFwaFdyYXBwZXIiLCJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJfYWN0aW9ucyIsIl9UaG91c2FuZHNUb0siLCJfRHJpbGxEb3duSWNvbiIsIl9CYXNlTGV2ZWwiLCJfcmVhY3REYXRhVGFibGVDb21wb25lbnQiLCJfbnZsU3RhdHVzSGVscGVyIiwiX01hcCIsIl9LYW5kb1RhYmxlIiwiX1RhYnMiLCJfdXNlS2FuZG9GZXRjaDIiLCJfdXNlUXVlcnlVUkwiLCJfRHJvcGRvd24iLCJfRHJvcGRvd25CdXR0b24iLCJfYXhpb3MiLCJfVHJ1bmNhdGUiLCJfRXhwYW5kYWJsZUNvbXBvbmVudCIsIl9TcGlubmVyIiwiX1diZVN1bW1hcnlCYXIiLCJfRXJyb3JCb3VuZGFyeSIsIl90aGVtZSIsIl91c2VLYW5kb0ZldGNoMyIsIl91cmxzIiwiX3VzZVVzZXJUaW1lWm9uZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiVEFCTEVfUk9XU19QRVJfUEFHRSIsIk1BUEJPWF9XQkVfREFTSEJPQVJEX1NUWUxFIiwiQ0xFQVJfVElUTEVfRk9SX1dBX0lEUyIsIldiZURhc2hib2FyZFBhZ2UiLCJnZXRXQUlkIiwicXVlcnkiLCJmZXRjaFVybCIsImZpcnN0UGFyYW0iLCJjb25jYXQiLCJzZWxlY3RlZFBhdGhvZ2VuIiwicGF0aG9nZW5zVXJsIiwidXJscyIsIndhdGVyQXV0aG9yaXR5SWQiLCJ3YmVEYXNoYm9hcmQiLCJwYXRob2dlbnMiLCJ1cmwiLCJERUZBVUxUX1RBQlMiLCJpMThuIiwidCIsImNvbnZlcnRUYWJOYW1lVG9QYXJhbSIsInRhYl9uYW1lIiwidXNlUXVlcnlVUkwiLCJnZXRQYXRob2dlbiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImN1cnJlbnREYXRhIiwic2V0Q3VycmVudERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIm1hcEFyZWFzIiwic2V0TWFwQXJlYXMiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsIm1hcFpvb20iLCJzZXRNYXBab29tIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJyb3dzIiwic2V0Um93cyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUxMCIsInRhYnMiLCJzZXRUYWJzIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInNlbGVjdGVkVGFiIiwic2V0U2VsZWN0ZWRUYWIiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0Iiwic2V0U2VsZWN0ZWRQYXRob2dlbiIsIl91c2VLYW5kb0ZldGNoIiwidXNlS2FuZG9GZXRjaCIsImRhdGEiLCJpc0ZldGNoaW5nIiwic2V0RmV0Y2hpbmciLCJfVXNlS2FuZG9GZXRjaCIsIlVzZUthbmRvRmV0Y2giLCJpc0ZldGNoaW5nUGF0aG9nZW5zIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsIm5hdkNvbnRleHQiLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwibmF2X2NvbnRleHRfZGF0YSIsImdsb2JhbERhdGEiLCJnbG9iYWxfZGF0YSIsImlzUnRsIiwibG9jYWxlIiwiY29sb3JGb3JSb3ciLCJyb3ciLCJxdWFsaXR5Iiwic2FtcGxlX2FjdGl2ZSIsImlzSW5mZWN0ZWQiLCJudmwiLCJ1c2VyRm9ybWF0IiwidXNlVXNlclNlbGVjdGVkRGF0ZUZvcm1hdCIsImNvbHVtbnMiLCJSZWFjdCIsInVzZU1lbW8iLCJuYW1lIiwic2VsZWN0b3IiLCJzb3J0YWJsZSIsImNlbGwiLCJjcmVhdGVFbGVtZW50IiwiUm93TmFtZSIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJoYW5kbGVBcmVhQ2xpY2siLCJoYXNfY2hpbGRyZW4iLCJSZWFjdENvbXBvbmVudCIsImNoYXJhY3RlcnMiLCJpbmhlcml0VGV4dEFsaWduIiwibnZsX2NoYW5nZSIsInN0eWxlIiwiZGlyZWN0aW9uIiwiY29sb3IiLCJtYXJnaW4iLCJGb250QXdlc29tZUljb24iLCJpY29uIiwiZmFDaGV2cm9uVXAiLCJmYUNoZXZyb25Eb3duIiwibGFzdF91cGRhdGVkIiwiZGF5Rm9ybWF0RnJvbVRpbWUiLCJHcmFwaFdyYXBwZXIiLCJpZCIsIndhdGVyX2F1dGhvcml0eV9pZCIsInBhdGhvZ2VuIiwicG9wdWxhdGlvbiIsImtGb3JtYXR0ZXIiLCJwYXJzZUludCIsImluaXRpYWxpemVNYXBBcmVhcyIsImFyZWFzIiwibWFwcGVkV2l0aENvbG9yIiwibWFwIiwiYSIsIndiZV9kYXNoYm9hcmRfbmFtZSIsInNob3dDb2xvck9ubHlJbkJvcmRlcnMiLCJ0aGVtZSIsImNvbG9yU2NoZW1lIiwibmF0dXJhbCIsIm42MCIsIlIxMDAiLCJHMTAwIiwiem9vbVRvQXJlYSIsImFyZWEiLCJzaGFwZV9kYXRhIiwidW5kZWZpbmVkIiwiem9vbUFsbEFyZWFzIiwic2hhcGVEYXRhIiwiZGF0dW0iLCJsZXZlbE5WTCIsImhpc3RvcnkiLCJ1c2VIaXN0b3J5IiwiZGlyIiwiRGlyZWN0aW9uIiwiUlRMIiwiTFRSIiwiZmlsdGVyUmVzdWx0c0FuZFNldFJvd3MiLCJ0ZXh0IiwicmVzdWx0cyIsImZpbHRlciIsImVsIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImhhbmRsZU9uUm93RXhwYW5kIiwiZXhwYW5kZWQiLCJ3YXRlckF1dGhvcml0eU5hbWUiLCJoYW5kbGVTZWxlY3RQYXRob2dlbkNsaWNrIiwiYW5hbHl0aWNzVHJhY2siLCJ1dGlsaXR5X25hbWUiLCJwdXNoIiwiZmV0Y2hGb3JUYWJTZWxlY3Rpb24iLCJ0YWIiLCJheGlvcyIsInRoZW4iLCJyZXNwb25zZSIsInJlc3BvbnNlRGF0YSIsImhhbmRsZVRhYlNlbGVjdGlvbkNsaWNrIiwiaW5pdGlhbGl6ZURyaWxsZWRBcmVhIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImluaXRpYWxpemVDb21wb25lbnQiLCJ1cGRhdGVOYXZDb250ZXh0IiwidXNlRWZmZWN0IiwicGF0aG9nZW5UaXRsZSIsImZpbmQiLCJpdGVtIiwiZHJvcERvd25UaXRsZSIsIkZyYWdtZW50IiwiQ29udGVudCIsImxlbmd0aCIsIkFjdGlvbnNDb250YWluZXIiLCJ0aXRsZSIsInZhcmlhbnQiLCJJdGVtIiwiaHJlZiIsInRleHRBbGlnbiIsIkZpcnN0U2VjdGlvbiIsIldiZVN1bW1hcnlCYXIiLCJTZWNvbmRTZWN0aW9uIiwiU2VhcmNoSW5wdXQiLCJvbkNoYW5nZUJlaGF2aW9yIiwiVGFicyIsImhhbmRsZU9uQ2xpY2siLCJNYXBUYWJsZUNvbnRhaW5lciIsIlNwaW5uZXIiLCJNYXAiLCJhcmVhVG9DZW50ZXJCeSIsImVkZ2VzIiwicG9pbnRzIiwibWFwQm94U3R5bGUiLCJLYW5kb1RhYmxlIiwib25Sb3dFeHBhbmRUb2dnbGVkIiwiZXhwYW5kYWJsZVJvd3MiLCJwYWdpbmF0aW9uUGVyUGFnZSIsInJvd0NvbXBvbmVudCIsIkV4cGFuZGVkQ29tcG9uZW50IiwiZXhwYW5kYWJsZVJvd3NDb21wb25lbnRQcm9wcyIsImRlZmF1bHRTb3J0RmllbGRJZCIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsInAiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvV2JlRGFzaGJvYXJkL1diZURhc2hib2FyZFBhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IHVzZUhpc3RvcnkgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IGFuYWx5dGljc1RyYWNrIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0FuYWx5dGljcyc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJy4vU2VhcmNoSW5wdXQnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVJY29uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3JlYWN0LWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IEdyYXBoV3JhcHBlciB9IGZyb20gJy4vR3JhcGhXcmFwcGVyJztcbmltcG9ydCB7IGZhQ2hldnJvbkRvd24sIGZhQ2hldnJvblVwIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IGFwcFJlZHVjZXIgfSBmcm9tICcuLi8uLi9zdG9yZS9yb290UmVkdWNlcic7XG5pbXBvcnQgeyB1cGRhdGVOYXZDb250ZXh0IH0gZnJvbSAnLi4vLi4vc3RvcmUvY29udGV4dC9hY3Rpb25zJztcbmltcG9ydCB7IGtGb3JtYXR0ZXIgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvVGhvdXNhbmRzVG9LJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIERyaWxsRG93bkljb24gfSBmcm9tICcuL0RyaWxsRG93bkljb24uc3ZnJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIEJhc2VMZXZlbCB9IGZyb20gJy4vQmFzZUxldmVsLnN2Zyc7XG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdyZWFjdC1kYXRhLXRhYmxlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBsZXZlbE5WTCB9IGZyb20gJy4uL0NvdmlkUGFnZS9jb21wb25lbnRzL252bFN0YXR1c0hlbHBlcic7XG5pbXBvcnQgeyBNYXAgfSBmcm9tICcuLi8uLi9XaWRnZXRzL01hcC9NYXAnO1xuaW1wb3J0IHsgS2FuZG9UYWJsZSB9IGZyb20gJ3NyYy91aS1raXQvS2FuZG9UYWJsZS9LYW5kb1RhYmxlJztcbmltcG9ydCB7IFRhYnMgfSBmcm9tICcuL1RhYnMnO1xuaW1wb3J0IHVzZUthbmRvRmV0Y2ggZnJvbSAnLi4vLi4vaG9va3MvdXNlS2FuZG9GZXRjaCc7XG5pbXBvcnQgdXNlUXVlcnlVUkwgZnJvbSAnLi4vLi4vaG9va3MvdXNlUXVlcnlVUkwnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cy9tYWNybyc7XG5pbXBvcnQgRHJvcGRvd24gZnJvbSAncmVhY3QtYm9vdHN0cmFwL2Nqcy9Ecm9wZG93bic7XG5pbXBvcnQgRHJvcGRvd25CdXR0b24gZnJvbSAncmVhY3QtYm9vdHN0cmFwL2Nqcy9Ecm9wZG93bkJ1dHRvbic7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IFRydW5jYXRlIGZyb20gJy4uLy4uL3V0aWxpdGllcy9UcnVuY2F0ZSc7XG5pbXBvcnQgeyBFeHBhbmRlZENvbXBvbmVudCB9IGZyb20gJy4vRXhwYW5kYWJsZUNvbXBvbmVudCc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9TcGlubmVyL1NwaW5uZXInO1xuaW1wb3J0IHsgV2JlU3VtbWFyeUJhciB9IGZyb20gJy4vV2JlU3VtbWFyeUJhcic7XG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICcuLi8uLi91dGlsaXRpZXMvRXJyb3JCb3VuZGFyeSc7XG5pbXBvcnQgeyB0aGVtZSB9IGZyb20gJy4uLy4uL3N0eWxlcy90aGVtZS90aGVtZSc7XG5pbXBvcnQgVXNlS2FuZG9GZXRjaCBmcm9tICdzcmMvaG9va3MvdXNlS2FuZG9GZXRjaCc7XG5pbXBvcnQgeyB1cmxzIH0gZnJvbSAnc3JjL3V0aWxpdGllcy91cmxzJztcbmltcG9ydCB7XG4gIGRheUZvcm1hdEZyb21UaW1lLFxuICB1c2VVc2VyU2VsZWN0ZWREYXRlRm9ybWF0LFxufSBmcm9tICdzcmMvaG9va3MvdXNlVXNlclRpbWVab25lJztcbmNvbnN0IFRBQkxFX1JPV1NfUEVSX1BBR0UgPSAyNTtcbmNvbnN0IE1BUEJPWF9XQkVfREFTSEJPQVJEX1NUWUxFID0gJ2NrenpranNpNzAwNWYxNG85aW0wbWN6czknO1xuLy8gVGhpcyBpcyBzcGVjaWZpY2FsbHkgZm9yIGN1c3RvbWVyIEFGLUVsZG9yZXRcbi8vIFRoZXJlIGFyZSB0d28gaWRzLCBvbmUgZm9yIHN0YWdpbmcgYW5kIG9uZSBmb3IgcHJvZHV0aW9uXG5jb25zdCBDTEVBUl9USVRMRV9GT1JfV0FfSURTID0gWzU2NSwgNTU4XTtcblxuZXhwb3J0IGNvbnN0IFdiZURhc2hib2FyZFBhZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IGdldFdBSWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgnd2F0ZXJfYXV0aG9yaXR5X2lkJyk7XG4gIH07XG4gIGNvbnN0IGZldGNoVXJsID0gKGZpcnN0UGFyYW0pID0+IHtcbiAgICByZXR1cm4gYC9hcGlfdWkvd2JlX2Rhc2hib2FyZC8ke3NlbGVjdGVkUGF0aG9nZW59LyR7Zmlyc3RQYXJhbX0/d2F0ZXJfYXV0aG9yaXR5X2lkPSR7Z2V0V0FJZCgpfWA7XG4gIH07XG4gIGNvbnN0IHBhdGhvZ2Vuc1VybCA9ICgpID0+XG4gICAgdXJscyh7IHdhdGVyQXV0aG9yaXR5SWQ6IGdldFdBSWQoKSB9KS53YmVEYXNoYm9hcmQucGF0aG9nZW5zLnVybDtcbiAgY29uc3QgREVGQVVMVF9UQUJTID0gW1xuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmNpdGllcycpLFxuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm1vbml0b3JlZF9hcmVhcycpLFxuICBdO1xuICBjb25zdCBjb252ZXJ0VGFiTmFtZVRvUGFyYW0gPSAodGFiX25hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmICh0YWJfbmFtZSA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY2l0aWVzJykpIHtcbiAgICAgIHJldHVybiAnY2l0eSc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRhYl9uYW1lID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKVxuICAgICkge1xuICAgICAgcmV0dXJuICdtb25pdG9yZWQnO1xuICAgIH1cblxuICAgIHJldHVybiAnY2l0eSc7XG4gIH07XG4gIGNvbnN0IHF1ZXJ5ID0gdXNlUXVlcnlVUkwoKTtcbiAgY29uc3QgZ2V0UGF0aG9nZW4gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgncGF0aG9nZW4nKSB8fCAnY292aWQnO1xuICB9O1xuXG4gIGNvbnN0IFtjdXJyZW50RGF0YSwgc2V0Q3VycmVudERhdGFdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbbWFwQXJlYXMsIHNldE1hcEFyZWFzXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFttYXBab29tLCBzZXRNYXBab29tXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IHVzZVN0YXRlPGFueT4oW10pO1xuICBjb25zdCBbdGFicywgc2V0VGFic10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oREVGQVVMVF9UQUJTKTtcbiAgY29uc3QgW3NlbGVjdGVkVGFiLCBzZXRTZWxlY3RlZFRhYl0gPSB1c2VTdGF0ZTxzdHJpbmc+KHRhYnNbMF0pO1xuICBjb25zdCBbc2VsZWN0ZWRQYXRob2dlbiwgc2V0U2VsZWN0ZWRQYXRob2dlbl0gPSB1c2VTdGF0ZTxzdHJpbmc+KFxuICAgIGdldFBhdGhvZ2VuKCksXG4gICk7XG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZywgc2V0RmV0Y2hpbmcgfSA9IHVzZUthbmRvRmV0Y2goXG4gICAgZmV0Y2hVcmwoY29udmVydFRhYk5hbWVUb1BhcmFtKHNlbGVjdGVkVGFiKSksXG4gICk7XG4gIGNvbnN0IHsgZGF0YTogcGF0aG9nZW5zLCBpc0ZldGNoaW5nOiBpc0ZldGNoaW5nUGF0aG9nZW5zIH0gPSBVc2VLYW5kb0ZldGNoKFxuICAgIHBhdGhvZ2Vuc1VybCgpLFxuICApO1xuXG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgbmF2Q29udGV4dCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLm5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dCxcbiAgKTtcbiAgY29uc3QgZ2xvYmFsRGF0YSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLmdsb2JhbF9kYXRhLFxuICApO1xuICBjb25zdCBpc1J0bDogYm9vbGVhbiA9IG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gdHJ1ZSA6IGZhbHNlO1xuICBjb25zdCBjb2xvckZvclJvdyA9IChyb3cpID0+IHtcbiAgICBsZXQgcXVhbGl0eTtcbiAgICBpZiAoIXJvdy5zYW1wbGVfYWN0aXZlKSB7XG4gICAgICBxdWFsaXR5ID0gJ2luYWN0aXZlLXNhbXBsaW5nJztcbiAgICB9IGVsc2UgaWYgKGlzSW5mZWN0ZWQocm93Lm52bCkpIHtcbiAgICAgIHF1YWxpdHkgPSAnaW5mZWN0ZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWFsaXR5ID0gJ2NsZWFuJztcbiAgICB9XG5cbiAgICByZXR1cm4gYHJvd19uYW1lLS0ke3F1YWxpdHl9YDtcbiAgfTtcblxuICBjb25zdCB1c2VyRm9ybWF0ID0gdXNlVXNlclNlbGVjdGVkRGF0ZUZvcm1hdCgpO1xuICBjb25zdCBjb2x1bW5zOiBhbnkgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubmFtZScpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93Lm5hbWUsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG5hbWU6IHN0cmluZzsgbnZsOiBudW1iZXI7IGhhc19jaGlsZHJlbjogYm9vbGVhbiB9KSA9PiAoXG4gICAgICAgICAgPFJvd05hbWUgaXNSdGw9e2lzUnRsfT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHJvd19uYW1lICR7Y29sb3JGb3JSb3cocm93KX1gfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQXJlYUNsaWNrKHJvdyk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnZXhwYW5kYWJsZS1pY29uJ30+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICB7cm93Lmhhc19jaGlsZHJlbiAmJiA8RHJpbGxEb3duSWNvbiAvPn1cbiAgICAgICAgICAgICAgICAgIHshcm93Lmhhc19jaGlsZHJlbiAmJiA8QmFzZUxldmVsIC8+fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17J25hbWUnfT5cbiAgICAgICAgICAgICAgICA8VHJ1bmNhdGUgY2hhcmFjdGVycz17M30gaW5oZXJpdFRleHRBbGlnbj17dHJ1ZX0+XG4gICAgICAgICAgICAgICAgICB7cm93Lm5hbWV9XG4gICAgICAgICAgICAgICAgPC9UcnVuY2F0ZT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9Sb3dOYW1lPlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubnZsX3Njb3JlJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cubnZsLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBudmw6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+e3Jvdy5udmx9PC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wZXJjZW50YWdlX2Zyb21fbGFzdF9zYW1wbGluZycpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93Lm52bF9jaGFuZ2UsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG52bF9jaGFuZ2U6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXJlY3Rpb246ICdsdHInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBjb2xvcjogJyMwMDAwMDAnLCBtYXJnaW46ICcwIDZweCcgfX0+XG4gICAgICAgICAgICAgIHtyb3cubnZsX2NoYW5nZX0lXG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgPEZvbnRBd2Vzb21lSWNvblxuICAgICAgICAgICAgICAgIGljb249e3Jvdy5udmxfY2hhbmdlID4gMCA/IGZhQ2hldnJvblVwIDogZmFDaGV2cm9uRG93bn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmxhc3Rfc2FtcGxlZCcpLFxuICAgICAgICBzZWxlY3RvcjogJ2xhc3Rfc2FtcGxlZCcsXG4gICAgICAgIHNvcnRhYmxlOiAocm93KSA9PiByb3cubGFzdF91cGRhdGVkLFxuICAgICAgICBjZWxsOiAocm93OiB7IGxhc3RfdXBkYXRlZDogc3RyaW5nIH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIj5cbiAgICAgICAgICAgIHtyb3cubGFzdF91cGRhdGVkID09PSBudWxsXG4gICAgICAgICAgICAgID8gJy0nXG4gICAgICAgICAgICAgIDogZGF5Rm9ybWF0RnJvbVRpbWUocm93Lmxhc3RfdXBkYXRlZCwgdXNlckZvcm1hdCl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC50cmVuZF9ncmFwaCcpLFxuICAgICAgICBzZWxlY3RvcjogJ3RyZW5kX2dyYXBoJyxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgaWQ6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+XG4gICAgICAgICAgICA8R3JhcGhXcmFwcGVyXG4gICAgICAgICAgICAgIGtleT17cm93LmlkfVxuICAgICAgICAgICAgICByb3c9e3Jvd31cbiAgICAgICAgICAgICAgd2F0ZXJfYXV0aG9yaXR5X2lkPXtnZXRXQUlkKCl9XG4gICAgICAgICAgICAgIHBhdGhvZ2VuPXtzZWxlY3RlZFBhdGhvZ2VufVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnBvcHVsYXRpb24nKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5wb3B1bGF0aW9uLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBwb3B1bGF0aW9uOiBzdHJpbmcgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiPlxuICAgICAgICAgICAge2tGb3JtYXR0ZXIocGFyc2VJbnQocm93LnBvcHVsYXRpb24pKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbaXNSdGwsIHNlbGVjdGVkUGF0aG9nZW4sIHVzZXJGb3JtYXRdLFxuICApO1xuXG4gIGNvbnN0IGluaXRpYWxpemVNYXBBcmVhcyA9IChhcmVhcykgPT4ge1xuICAgIGNvbnN0IG1hcHBlZFdpdGhDb2xvciA9IGFyZWFzLm1hcCgoYTogYW55KSA9PiB7XG4gICAgICBhLndiZV9kYXNoYm9hcmRfbmFtZSA9IGEubmFtZTtcbiAgICAgIGEuc2hvd0NvbG9yT25seUluQm9yZGVycyA9IHRydWU7XG5cbiAgICAgIGlmICghYS5zYW1wbGVfYWN0aXZlKSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MDtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0luZmVjdGVkKGEubnZsKSkge1xuICAgICAgICBhLmNvbG9yID0gdGhlbWUuY29sb3JTY2hlbWUuZGF0YS5SMTAwO1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5kYXRhLkcxMDA7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0TWFwQXJlYXMobWFwcGVkV2l0aENvbG9yKTtcbiAgfTtcblxuICBjb25zdCB6b29tVG9BcmVhID0gKGFyZWEpID0+IHtcbiAgICBhcmVhLnNoYXBlX2RhdGEgIT09IHVuZGVmaW5lZCAmJiBzZXRNYXBab29tKGFyZWEuc2hhcGVfZGF0YSk7XG4gIH07XG5cbiAgY29uc3Qgem9vbUFsbEFyZWFzID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCBzaGFwZURhdGEgPSBkYXRhLm1hcCgoZGF0dW0pID0+IHtcbiAgICAgIHJldHVybiBkYXR1bS5zaGFwZV9kYXRhO1xuICAgIH0pO1xuXG4gICAgc2V0TWFwWm9vbShzaGFwZURhdGEpO1xuICB9O1xuXG4gIGNvbnN0IGlzSW5mZWN0ZWQgPSAobnZsOiBudW1iZXIpID0+IHtcbiAgICBpZiAobGV2ZWxOVkwobnZsKSA9PT0gJ2NsZWFuJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsZXZlbE5WTChudmwpID09PSAnbG93JyB8fFxuICAgICAgbGV2ZWxOVkwobnZsKSA9PT0gJ21lZGl1bScgfHxcbiAgICAgIGxldmVsTlZMKG52bCkgPT09ICdoaWdoJ1xuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9O1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCB3YXRlckF1dGhvcml0eUlkID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT5cbiAgICAgIHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICk7XG5cbiAgY29uc3QgZGlyOiBEaXJlY3Rpb24gPVxuICAgIG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gRGlyZWN0aW9uLlJUTCA6IERpcmVjdGlvbi5MVFI7XG5cbiAgY29uc3QgZmlsdGVyUmVzdWx0c0FuZFNldFJvd3MgPSAodGV4dDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IHJlc3VsdHMgPSBjdXJyZW50RGF0YS5maWx0ZXIoZnVuY3Rpb24gKGVsOiBhbnkpIHtcbiAgICAgIHJldHVybiBlbC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGV4dC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9KTtcblxuICAgIHNldFJvd3MocmVzdWx0cyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT25Sb3dFeHBhbmQgPSAoZXhwYW5kZWQsIHJvdykgPT4ge1xuICAgIGV4cGFuZGVkICYmIHpvb21Ub0FyZWEocm93KTtcbiAgICAhZXhwYW5kZWQgJiYgem9vbUFsbEFyZWFzKGRhdGEpO1xuICB9O1xuXG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5TmFtZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlOYW1lLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFBhdGhvZ2VuQ2xpY2sgPSAocGF0aG9nZW4pID0+IHtcbiAgICBhbmFseXRpY3NUcmFjaygnV0JFIFN0YXR1cyBSZXBvcnQgLSBQYXRob2dlbiBjaGFuZ2UgY2xpY2tlZCcsIHtcbiAgICAgIHBhdGhvZ2VuOiBwYXRob2dlbixcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIHNldFNlbGVjdGVkUGF0aG9nZW4ocGF0aG9nZW4pO1xuICAgIGhpc3RvcnkucHVzaChcbiAgICAgIGAvd2JlX2Rhc2hib2FyZC9pbmRleD9sb2NhbGU9JHtuYXZDb250ZXh0LmxvY2FsZX0md2F0ZXJfYXV0aG9yaXR5X2lkPSR7d2F0ZXJBdXRob3JpdHlJZH0mcGF0aG9nZW49JHtwYXRob2dlbn1gLFxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hGb3JUYWJTZWxlY3Rpb24gPSAodGFiKSA9PiB7XG4gICAgc2V0RmV0Y2hpbmcodHJ1ZSk7XG4gICAgYXhpb3MuZ2V0KGZldGNoVXJsKHRhYikpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICBsZXQgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuXG4gICAgICBzZXRGZXRjaGluZyhmYWxzZSk7XG4gICAgICBzZXRUYWJzKERFRkFVTFRfVEFCUyk7XG4gICAgICBzZXRSb3dzKHJlc3BvbnNlRGF0YSk7XG4gICAgICBzZXRDdXJyZW50RGF0YShyZXNwb25zZURhdGEpO1xuICAgICAgaW5pdGlhbGl6ZU1hcEFyZWFzKHJlc3BvbnNlRGF0YSk7XG4gICAgICB6b29tQWxsQXJlYXMocmVzcG9uc2VEYXRhKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUYWJTZWxlY3Rpb25DbGljayA9ICh0YWIpID0+IHtcbiAgICBpZiAoIWlzRmV0Y2hpbmcpIHtcbiAgICAgIHNldFNlbGVjdGVkVGFiKHRhYik7XG5cbiAgICAgIGlmICh0YWIgIT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmN1c3RvbScpKSB7XG4gICAgICAgIHRhYiA9XG4gICAgICAgICAgdGFiID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jaXRpZXMnKVxuICAgICAgICAgICAgPyAnY2l0eSdcbiAgICAgICAgICAgIDogdGFiID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKVxuICAgICAgICAgICAgPyAnbW9uaXRvcmVkJ1xuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICBmZXRjaEZvclRhYlNlbGVjdGlvbih0YWIpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBpbml0aWFsaXplRHJpbGxlZEFyZWEgPSAocmVzcG9uc2UpID0+IHtcbiAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICBzZXRSb3dzKGRhdGEpO1xuICAgIHNldEN1cnJlbnREYXRhKGRhdGEpO1xuICAgIGluaXRpYWxpemVNYXBBcmVhcyhkYXRhKTtcbiAgICB6b29tQWxsQXJlYXMoZGF0YSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQXJlYUNsaWNrID0gKGFyZWEpID0+IHtcbiAgICB6b29tVG9BcmVhKGFyZWEpO1xuXG4gICAgaWYgKGFyZWEuaGFzX2NoaWxkcmVuKSB7XG4gICAgICBzZXRUYWJzKFsuLi50YWJzLCBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jdXN0b20nKV0pO1xuICAgICAgc2V0U2VsZWN0ZWRUYWIoaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY3VzdG9tJykpO1xuXG4gICAgICBheGlvcy5nZXQoZmV0Y2hVcmwoYXJlYS5pZCkpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGluaXRpYWxpemVEcmlsbGVkQXJlYShyZXNwb25zZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNvbXBvbmVudCA9ICgpID0+IHtcbiAgICBzZXRDdXJyZW50RGF0YShkYXRhKTtcbiAgICBzZXRSb3dzKGRhdGEpO1xuICAgIGFuYWx5dGljc1RyYWNrKCdXQkUgU3RhdHVzIFJlcG9ydCcsIHtcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIGRpc3BhdGNoKHVwZGF0ZU5hdkNvbnRleHQoeyBuYW1lOiAnd2JlX2Rhc2hib2FyZCcgfSkpO1xuICAgIGluaXRpYWxpemVNYXBBcmVhcyhkYXRhKTtcbiAgICB6b29tQWxsQXJlYXMoZGF0YSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRmV0Y2hpbmcgJiYgZGF0YSAhPT0gbnVsbCkge1xuICAgICAgaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICAgIH1cbiAgfSwgW2lzRmV0Y2hpbmcsIHNlbGVjdGVkUGF0aG9nZW4sIGRhdGFdKTtcblxuICBjb25zdCBwYXRob2dlblRpdGxlID1cbiAgICAoIWlzRmV0Y2hpbmdQYXRob2dlbnMgJiZcbiAgICAgIHdhdGVyQXV0aG9yaXR5SWQgJiZcbiAgICAgICFDTEVBUl9USVRMRV9GT1JfV0FfSURTLmluY2x1ZGVzKHdhdGVyQXV0aG9yaXR5SWQpICYmXG4gICAgICBgKCR7XG4gICAgICAgIHBhdGhvZ2Vucz8uZmluZChcbiAgICAgICAgICAoaXRlbSkgPT4gaXRlbS50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFBhdGhvZ2VuLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICkgfHwgZ2V0UGF0aG9nZW4oKVxuICAgICAgfSlgKSB8fFxuICAgICcnO1xuXG4gIGNvbnN0IGRyb3BEb3duVGl0bGUgPVxuICAgIHBhdGhvZ2VuVGl0bGUgfHwgaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQucGF0aG9nZW5fbm90X2ZvdW5kJyk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPENvbnRlbnQ+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGgxPlxuICAgICAgICAgICAge2Ake2kxOG4udChcbiAgICAgICAgICAgICAgJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC50YWJsZV9uYW1lJyxcbiAgICAgICAgICAgICl9ICR7cGF0aG9nZW5UaXRsZX1gfVxuICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgeyFpc0ZldGNoaW5nUGF0aG9nZW5zICYmIHBhdGhvZ2Vucz8ubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgIDxoMz57aTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQucGF0aG9nZW5fbm90X2ZvdW5kJyl9PC9oMz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxBY3Rpb25zQ29udGFpbmVyPlxuICAgICAgICAgICAgeyFpc0ZldGNoaW5nUGF0aG9nZW5zICYmIHBhdGhvZ2Vucz8ubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICAgIDxEcm9wZG93bkJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiZHJvcGRvd24tYmFzaWMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydidXR0b24gYnV0dG9uLS1zb3J0J31cbiAgICAgICAgICAgICAgICB0aXRsZT17ZHJvcERvd25UaXRsZSArICcgJ31cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtwYXRob2dlbnMubWFwKChwYXRob2dlbikgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duLkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e3BhdGhvZ2VufVxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RQYXRob2dlbkNsaWNrKHBhdGhvZ2VuKX1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZDb250ZXh0LmxvY2FsZSA9PT0gJ2hlJyA/ICdyaWdodCcgOiAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtwYXRob2dlbn1cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5JdGVtPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bkJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9BY3Rpb25zQ29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPEZpcnN0U2VjdGlvbj5cbiAgICAgICAgICA8V2JlU3VtbWFyeUJhclxuICAgICAgICAgICAgcGF0aG9nZW49e3NlbGVjdGVkUGF0aG9nZW59XG4gICAgICAgICAgICB3YXRlckF1dGhvcml0eUlkPXt3YXRlckF1dGhvcml0eUlkfVxuICAgICAgICAgICAgaXNSdGw9e2lzUnRsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRmlyc3RTZWN0aW9uPlxuXG4gICAgICAgIDxTZWNvbmRTZWN0aW9uPlxuICAgICAgICAgIDxTZWFyY2hJbnB1dCBvbkNoYW5nZUJlaGF2aW9yPXtmaWx0ZXJSZXN1bHRzQW5kU2V0Um93c30gLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3RhYnMtY29udGFpbmVyJ30+XG4gICAgICAgICAgICA8VGFic1xuICAgICAgICAgICAgICB0YWJzPXt0YWJzfVxuICAgICAgICAgICAgICBzZWxlY3RlZFRhYj17c2VsZWN0ZWRUYWJ9XG4gICAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2s9e2hhbmRsZVRhYlNlbGVjdGlvbkNsaWNrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8TWFwVGFibGVDb250YWluZXIgaXNSdGw9e2lzUnRsfT5cbiAgICAgICAgICAgIHtpc0ZldGNoaW5nICYmIDxTcGlubmVyIC8+fVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydtYXAtY29udGFpbmVyJ30+XG4gICAgICAgICAgICAgIHshaXNGZXRjaGluZyAmJiByb3dzICE9PSBudWxsICYmIG1hcFpvb20gIT09IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgICAgICAgICAgPE1hcFxuICAgICAgICAgICAgICAgICAgICBhcmVhcz17bWFwQXJlYXN9XG4gICAgICAgICAgICAgICAgICAgIGFyZWFUb0NlbnRlckJ5PXttYXBab29tfVxuICAgICAgICAgICAgICAgICAgICBlZGdlcz17W119XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cz17W119XG4gICAgICAgICAgICAgICAgICAgIGdsb2JhbF9kYXRhPXtnbG9iYWxEYXRhfVxuICAgICAgICAgICAgICAgICAgICBtYXBCb3hTdHlsZT17TUFQQk9YX1dCRV9EQVNIQk9BUkRfU1RZTEV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgeyFpc0ZldGNoaW5nICYmIHJvd3MgIT09IG51bGwgJiYgKFxuICAgICAgICAgICAgICA8S2FuZG9UYWJsZVxuICAgICAgICAgICAgICAgIG9uUm93RXhwYW5kVG9nZ2xlZD17aGFuZGxlT25Sb3dFeHBhbmR9XG4gICAgICAgICAgICAgICAgZGF0YT17cm93c31cbiAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbj17ZGlyfVxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGVSb3dzPXt0cnVlfVxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25QZXJQYWdlPXtUQUJMRV9ST1dTX1BFUl9QQUdFfVxuICAgICAgICAgICAgICAgIHJvd0NvbXBvbmVudD17RXhwYW5kZWRDb21wb25lbnR9XG4gICAgICAgICAgICAgICAgZXhwYW5kYWJsZVJvd3NDb21wb25lbnRQcm9wcz17eyBwYXRob2dlbjogc2VsZWN0ZWRQYXRob2dlbiB9fVxuICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0RmllbGRJZD17M31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9NYXBUYWJsZUNvbnRhaW5lcj5cbiAgICAgICAgPC9TZWNvbmRTZWN0aW9uPlxuICAgICAgPC9Db250ZW50PlxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgUm93TmFtZSA9IHN0eWxlZC5kaXY8eyBpc1J0bDogYm9vbGVhbiB9PmBcbiAgICB3aWR0aDogMTAwJTtcbiAgICAgIFxuICAgIC5yb3dfbmFtZSB7XG4gICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgdHJhbnNpdGlvbjogLjJzIGVhc2UtaW47ICAgICAgXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMCA0cHg7XG4gICAgICAgIFxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAycHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICYtLWNsZWFuIHtcbiAgICAgICAgIGNvbG9yOiAjMjdhNjNhOyBcbiAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzI3YTYzYTsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0taW5mZWN0ZWQge1xuICAgICAgICAgIGNvbG9yOiAjZTEwMDM2O1xuICAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2UxMDAzNjsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0taW5hY3RpdmUtc2FtcGxpbmcge1xuICAgICAgICAgIGNvbG9yOiAke3RoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwfTtcbiAgICAgICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNjB9OyAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAubmFtZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDA7XG4gICAgICAgICAgJHsocCkgPT4gKHAuaXNSdGwgPyAncmlnaHQ6IDUxcHg7JyA6ICdsZWZ0OiA1MXB4OycpfVxuICAgICAgICAgIHRvcDogMTZweDtcbiAgICAgICAgICB3aWR0aDogNy41ZW07XG4gICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogM3B4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBgO1xuXG5jb25zdCBBY3Rpb25zQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEZpcnN0U2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbjogODVweCAwIDIwcHggMDtcbmA7XG5cbmNvbnN0IFNlY29uZFNlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAyMHB4O1xuICBiYWNrZ3JvdW5kOiAjZmNmY2ZjO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTdlN2U3O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG5gO1xuXG5jb25zdCBNYXBUYWJsZUNvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyBpc1J0bDogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAubWFwLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgLmV2ZW50LXRpbWVyYW5nZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAjbWFwIHtcbiAgICAgIGhlaWdodDogNjl2aDtcbiAgICAgIHdpZHRoOiAzMHZ3O1xuICAgIH1cbiAgfVxuICBbZGF0YS10ZXN0aWQ9J2thbmRvLXRhYmxlJ10ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG4gIFtkYXRhLWNvbHVtbi1pZD0nMSddIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICY6aG92ZXIge1xuICAgICAgLm5hbWUge1xuICAgICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICB3aWR0aDogY2FsYygxMjBweCArIDF2dyk7XG4gICAgICAgIHRyYW5zaXRpb246IDAuMnMgY3ViaWMtYmV6aWVyKDAuNjUsIDAuMDUsIDAuMzYsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5zcGlubmVyLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuYDtcblxuY29uc3QgQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gIH1cblxuICBoMSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICBwYWRkaW5nOiA2MHB4IDYwcHg7XG5gO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGVBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGlCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxrQkFBQSxHQUFBVCxPQUFBO0FBRUEsSUFBQVUsUUFBQSxHQUFBVixPQUFB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