@kando-env/kando-ui 1.2.376 → 1.2.378

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 (586) hide show
  1. package/lib/Router.js +73 -36
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +35 -25
  3. package/lib/Widgets/EventsRow/EventsRow.js +39 -27
  4. package/lib/Widgets/Map/GraphUtils.js +3 -3
  5. package/lib/Widgets/Map/Map.js +94 -72
  6. package/lib/Widgets/Map/MapUtils.js +61 -64
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +77 -53
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +24 -23
  9. package/lib/Widgets/Map/areas/AreaUtils.js +46 -47
  10. package/lib/Widgets/Map/areas/Patterns.js +4 -4
  11. package/lib/Widgets/Map/edges/Edge.js +35 -31
  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 +60 -65
  16. package/lib/Widgets/Map/events/EventPath.js +22 -24
  17. package/lib/Widgets/Map/events/EventUtils.js +80 -60
  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 +37 -30
  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 +15 -22
  28. package/lib/Widgets/Map/points/PointMarker.js +87 -71
  29. package/lib/Widgets/Map/points/PointMarkers.js +66 -45
  30. package/lib/Widgets/Map/points/PointUtils.js +83 -145
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +48 -30
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +10 -29
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +12 -11
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +3 -3
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +60 -31
  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 +70 -39
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +18 -15
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +8 -8
  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 +42 -23
  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 +35 -45
  54. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +35 -39
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +27 -28
  56. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +50 -54
  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 +6 -8
  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 +15 -23
  71. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +13 -12
  72. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +26 -27
  73. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +24 -29
  74. package/lib/Widgets/UtilityInformation/UtilityInformation.js +44 -30
  75. package/lib/Widgets/UtilityInformation/styles.js +25 -34
  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 +15 -15
  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 +9 -9
  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 +12 -13
  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 +20 -13
  90. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +4 -6
  91. package/lib/components/CustomInputs/Search/Search.js +63 -42
  92. package/lib/components/CustomInputs/Select/Select.js +58 -45
  93. package/lib/components/CustomInputs/Select/Select.stories.js +6 -4
  94. package/lib/components/DamageType/DamageType.js +57 -35
  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 +10 -10
  102. package/lib/components/DischargeHeatmap/titles.js +3 -3
  103. package/lib/components/ErrorBoundary.js +41 -27
  104. package/lib/components/Events/Events.js +58 -41
  105. package/lib/components/Graph/Graph.js +97 -70
  106. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +21 -17
  107. package/lib/components/Header/DoubleTabs/DoubleTabs.js +33 -25
  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 +108 -90
  113. package/lib/components/Header/InfoBar/InfoBar.js +103 -74
  114. package/lib/components/Header/InfoBar/Search/Control.js +9 -9
  115. package/lib/components/Header/InfoBar/Search/GroupLabel.js +5 -7
  116. package/lib/components/Header/InfoBar/Search/Search.js +21 -16
  117. package/lib/components/Header/InfoBar/Search/SearchContainer.js +33 -21
  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 +89 -64
  121. package/lib/components/Header/Slideshow/Slideshow.js +90 -68
  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 +18 -18
  125. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +43 -37
  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 +41 -27
  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 +29 -37
  137. package/lib/components/Map/Map.js +23 -20
  138. package/lib/components/Modal/Modal.js +9 -9
  139. package/lib/components/NarrowHeader.js +31 -17
  140. package/lib/components/PointInfo/PointInfo.js +17 -19
  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 +52 -49
  147. package/lib/components/SevereEvent/Eta/styles.js +6 -10
  148. package/lib/components/SevereEvent/SevereEvent.js +37 -30
  149. package/lib/components/Spinner/Spinner.js +8 -8
  150. package/lib/components/Spinner/Spinner.stories.js +6 -4
  151. package/lib/components/Spinner/styles.js +14 -22
  152. package/lib/components/Tabs/Tabs.js +29 -21
  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 +51 -40
  157. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +31 -19
  158. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +25 -20
  159. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -13
  160. package/lib/components/TimeRangeSelector/TimeRangeList.js +24 -23
  161. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +25 -17
  162. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +32 -31
  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 +17 -12
  166. package/lib/components/TrendGraph/TrendGraph.js +39 -23
  167. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +33 -27
  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 +31 -36
  193. package/lib/development-environment/togly/init.js +2 -2
  194. package/lib/development-environment/togly/macro.js +10 -14
  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 +29 -16
  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 +30 -33
  207. package/lib/hooks/useUserTimeZone.test.js +22 -19
  208. package/lib/hooks/useWindowSize.js +14 -7
  209. package/lib/i18n/en.json +5 -0
  210. package/lib/i18n/he.json +5 -0
  211. package/lib/index.js +12 -11
  212. package/lib/macros/getVersion.js +3 -3
  213. package/lib/pages/AreaPage/AreaPage.js +67 -34
  214. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +17 -16
  215. package/lib/pages/AreaPage/Dashboard/Dashboard.js +34 -29
  216. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +25 -17
  217. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +4 -4
  218. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  219. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +11 -11
  220. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -3
  221. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -2
  222. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +4 -4
  223. package/lib/pages/AssessmentPage/AssessmentPage.js +46 -40
  224. package/lib/pages/CannyWidget/Feedback.js +13 -13
  225. package/lib/pages/CovidPage/CovidPage.js +13 -8
  226. package/lib/pages/CovidPage/components/Body.js +27 -25
  227. package/lib/pages/CovidPage/components/Map.js +39 -29
  228. package/lib/pages/CovidPage/components/Sidebar.js +15 -16
  229. package/lib/pages/CovidPage/components/Summary.js +27 -20
  230. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +33 -27
  231. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +73 -51
  232. package/lib/pages/CovidPage/components/areas/Area.js +40 -29
  233. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +46 -55
  234. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +35 -32
  235. package/lib/pages/CovidPage/components/areas/AreasList.js +46 -34
  236. package/lib/pages/CovidPage/components/areas/Sort.js +14 -11
  237. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  238. package/lib/pages/DashboardMap/AreaCard.js +28 -28
  239. package/lib/pages/DashboardMap/AssessmentIcon.js +7 -8
  240. package/lib/pages/DashboardMap/Capacity.js +80 -31
  241. package/lib/pages/DashboardMap/FactoryCard.js +29 -33
  242. package/lib/pages/DashboardMap/HighchartsOptions.js +4 -5
  243. package/lib/pages/DashboardMap/List.js +112 -74
  244. package/lib/pages/DashboardMap/ListContext.js +19 -15
  245. package/lib/pages/DashboardMap/Loader.js +2 -2
  246. package/lib/pages/DashboardMap/SeverityBadge.js +18 -10
  247. package/lib/pages/DashboardMap/WWTPMap.js +103 -80
  248. package/lib/pages/DashboardMap/WaterDischarge.js +10 -10
  249. package/lib/pages/DashboardMap/Widget.js +71 -54
  250. package/lib/pages/DashboardMap/utils.js +65 -48
  251. package/lib/pages/EventsPage/Body/Body.js +15 -20
  252. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +19 -17
  253. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +35 -27
  254. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +6 -8
  255. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +7 -11
  256. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +30 -21
  257. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +64 -53
  258. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +31 -19
  259. package/lib/pages/EventsPage/EventsPage.js +10 -7
  260. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +38 -26
  261. package/lib/pages/EventsPage/events/MoreInfo.js +16 -17
  262. package/lib/pages/EventsPage/events/Sidebar.js +16 -21
  263. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +7 -7
  264. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +20 -17
  265. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +35 -30
  266. package/lib/pages/EventsPage/events/event_info/EventDetails.js +37 -40
  267. package/lib/pages/EventsPage/events/event_info/EventInfo.js +42 -43
  268. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +4 -4
  269. package/lib/pages/EventsPage/events/event_info/EventSection.js +19 -17
  270. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +38 -43
  271. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +47 -39
  272. package/lib/pages/EventsPage/events/event_info/Header/Header.js +4 -6
  273. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +33 -30
  274. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -6
  275. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +36 -29
  276. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +6 -4
  277. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +10 -10
  278. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +9 -7
  279. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +21 -22
  280. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +19 -12
  281. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +3 -5
  282. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +9 -11
  283. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +26 -22
  284. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +8 -12
  285. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +7 -7
  286. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +4 -6
  287. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +2 -2
  288. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +10 -12
  289. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +8 -10
  290. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +12 -10
  291. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +3 -5
  292. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +5 -7
  293. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +5 -7
  294. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +4 -6
  295. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +9 -11
  296. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +15 -15
  297. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +6 -6
  298. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +5 -7
  299. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +15 -17
  300. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +4 -4
  301. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +8 -10
  302. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +11 -16
  303. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +8 -9
  304. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +2 -2
  305. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +3 -3
  306. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +38 -25
  307. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +36 -29
  308. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +9 -11
  309. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +17 -15
  310. package/lib/pages/EventsPage/events/event_info/sources/Source.js +30 -27
  311. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +26 -23
  312. package/lib/pages/EventsPage/events/event_info/styles.js +12 -20
  313. package/lib/pages/EventsPage/events/events_list/EventItem.js +19 -18
  314. package/lib/pages/EventsPage/events/events_list/EventUtils.js +10 -10
  315. package/lib/pages/EventsPage/events/events_list/EventsList.js +145 -124
  316. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +55 -40
  317. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +115 -79
  318. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +77 -60
  319. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +41 -38
  320. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +36 -29
  321. package/lib/pages/EventsPage/events/events_list/Sort.js +16 -13
  322. package/lib/pages/ImportFileWizard/FileUploadRespones.js +20 -13
  323. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +4 -6
  324. package/lib/pages/ImportFileWizard/ImportFile.js +22 -20
  325. package/lib/pages/ImportFileWizard/ResponseBody.js +33 -24
  326. package/lib/pages/ImportFileWizard/ValidationForm.js +22 -23
  327. package/lib/pages/ImportFileWizard/ValidationResponse.js +21 -21
  328. package/lib/pages/ImportFileWizard/importFileUtils.js +1 -1
  329. package/lib/pages/ImportGisPage/ImportGisContainer.js +24 -21
  330. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +23 -21
  331. package/lib/pages/ImportGisPage/importGisUtils.js +21 -13
  332. package/lib/pages/ImportGisProcess/index.js +15 -12
  333. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +12 -7
  334. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +19 -17
  335. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -3
  336. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +65 -56
  337. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +8 -6
  338. package/lib/pages/NotificationsPage/Notification/Notification.js +12 -16
  339. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -2
  340. package/lib/pages/NotificationsPage/Notifications.stories.js +6 -4
  341. package/lib/pages/NotificationsPage/NotificationsPage.js +36 -18
  342. package/lib/pages/NotificationsPage/assets/index.js +9 -9
  343. package/lib/pages/NotificationsPageV2/NotificationsPage.js +97 -71
  344. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +63 -94
  345. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +16 -14
  346. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +16 -18
  347. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +21 -17
  348. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +21 -17
  349. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +22 -18
  350. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +69 -83
  351. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +22 -18
  352. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +74 -74
  353. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +95 -97
  354. package/lib/pages/NotificationsPageV2/notificationUtils.js +48 -54
  355. package/lib/pages/OldSitePage/OldSitePage.js +132 -57
  356. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +5 -5
  357. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  358. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +6 -8
  359. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +20 -18
  360. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +7 -9
  361. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +18 -12
  362. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +12 -16
  363. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  364. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -18
  365. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +63 -51
  366. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +7 -9
  367. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +53 -29
  368. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -4
  369. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  370. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +10 -11
  371. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +11 -10
  372. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +28 -32
  373. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +29 -27
  374. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  375. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +12 -18
  376. package/lib/pages/ProfilePage/Container.js +2 -2
  377. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +44 -28
  378. package/lib/pages/ProfilePage/ProfilePage.js +237 -120
  379. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +33 -25
  380. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +16 -19
  381. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +30 -28
  382. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +117 -57
  383. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +20 -17
  384. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +10 -12
  385. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +41 -39
  386. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +26 -25
  387. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +16 -16
  388. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +15 -13
  389. package/lib/pages/SamplingsPage/NavigationDropdown.js +32 -45
  390. package/lib/pages/SamplingsPage/NewSamplingAction.js +100 -76
  391. package/lib/pages/SamplingsPage/SamplingMobileModal.js +101 -129
  392. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +22 -21
  393. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +22 -34
  394. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +59 -36
  395. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +18 -15
  396. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +7 -9
  397. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +194 -110
  398. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +55 -49
  399. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +43 -47
  400. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +45 -49
  401. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +20 -19
  402. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -3
  403. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +6 -10
  404. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +54 -58
  405. package/lib/pages/SamplingsPage/SamplingsMobileList.js +28 -21
  406. package/lib/pages/SamplingsPage/SamplingsPage.js +33 -27
  407. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +58 -50
  408. package/lib/pages/SamplingsPage/samplingsPageUtils.js +76 -68
  409. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +4 -6
  410. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +13 -14
  411. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +13 -10
  412. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  413. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -3
  414. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +10 -14
  415. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +8 -9
  416. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +23 -26
  417. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +17 -14
  418. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +32 -36
  419. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +7 -9
  420. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +24 -15
  421. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +12 -16
  422. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -3
  423. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -18
  424. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +70 -58
  425. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +7 -9
  426. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +26 -15
  427. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -5
  428. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  429. package/lib/pages/SitePage/SamplingParameters/body/Body.js +9 -9
  430. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +37 -29
  431. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  432. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +11 -10
  433. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +59 -60
  434. package/lib/pages/SitePage/SamplingParameters/dataParser.js +39 -30
  435. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +9 -11
  436. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  437. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +12 -18
  438. package/lib/pages/SitePage/SiteInformation/EmptyState.js +7 -11
  439. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +48 -41
  440. package/lib/pages/SitePage/SitePage.js +84 -41
  441. package/lib/pages/UploadLabResult/index.js +13 -13
  442. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +35 -26
  443. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +8 -6
  444. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +8 -9
  445. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +5 -3
  446. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +48 -47
  447. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +6 -10
  448. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -4
  449. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +6 -4
  450. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +12 -13
  451. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +12 -15
  452. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +7 -7
  453. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -2
  454. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +38 -23
  455. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +30 -26
  456. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +18 -17
  457. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +13 -7
  458. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +31 -27
  459. package/lib/pages/WbeDashboard/ExpandableComponent.js +8 -9
  460. package/lib/pages/WbeDashboard/GraphWrapper.js +36 -30
  461. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -17
  462. package/lib/pages/WbeDashboard/SearchInput.js +20 -15
  463. package/lib/pages/WbeDashboard/SummaryGraph.js +76 -50
  464. package/lib/pages/WbeDashboard/SummaryGraphModal.js +17 -19
  465. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  466. package/lib/pages/WbeDashboard/WbeDashboardPage.js +213 -151
  467. package/lib/pages/WbeDashboard/WbeSummaryBar.js +48 -40
  468. package/lib/pages/WwtpPage/DashboardCard.js +23 -26
  469. package/lib/pages/WwtpPage/DischargePatternCard.js +23 -14
  470. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +22 -26
  471. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +18 -19
  472. package/lib/pages/WwtpPage/Map.js +3 -5
  473. package/lib/pages/WwtpPage/OrganicCard.js +2 -2
  474. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +2 -2
  475. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +6 -8
  476. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +8 -9
  477. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +14 -18
  478. package/lib/pages/WwtpPage/PredictionCard.js +2 -2
  479. package/lib/pages/WwtpPage/TrendCard.js +19 -18
  480. package/lib/pages/WwtpPage/UpgradeBox.js +3 -3
  481. package/lib/pages/WwtpPage/WwtpPage.js +8 -8
  482. package/lib/pages/WwtpPage/WwtpPageContainer.js +16 -21
  483. package/lib/providers/Slideshow/SlideshowContext.js +9 -11
  484. package/lib/providers/Slideshow/SlideshowProvider.js +38 -22
  485. package/lib/providers/Slideshow/SlideshowRunner.js +19 -17
  486. package/lib/providers/UrlHistory/UrlHistoryContext.js +4 -6
  487. package/lib/providers/UrlHistory/UrlHistoryProvider.js +11 -12
  488. package/lib/providers/UrlHistory/index.js +2 -2
  489. package/lib/providers/UrlHistory/useLastVisited.js +5 -5
  490. package/lib/store/ImportGis/actionTypes.js +1 -1
  491. package/lib/store/ImportGis/actionsCreator.js +5 -7
  492. package/lib/store/ImportGis/reducer.js +29 -40
  493. package/lib/store/WBE/actionTypes.js +2 -2
  494. package/lib/store/WBE/reducer.js +9 -13
  495. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +14 -24
  496. package/lib/store/areas/actionTypes.js +4 -4
  497. package/lib/store/areas/actions.js +13 -7
  498. package/lib/store/areas/reducer.js +6 -8
  499. package/lib/store/context/actionTypes.js +3 -3
  500. package/lib/store/context/actions.js +3 -3
  501. package/lib/store/context/contextMiddlewares.js +16 -14
  502. package/lib/store/context/reducer.js +9 -13
  503. package/lib/store/dashboard/dashboardSlice.js +10 -18
  504. package/lib/store/edges/actionTypes.js +5 -5
  505. package/lib/store/edges/actions.js +8 -4
  506. package/lib/store/edges/reducer.js +17 -13
  507. package/lib/store/events/actionTypes.js +17 -17
  508. package/lib/store/events/actions.js +7 -3
  509. package/lib/store/events/reducer.js +49 -42
  510. package/lib/store/global/actionTypes.js +11 -11
  511. package/lib/store/global/actions.js +6 -8
  512. package/lib/store/global/reducer.js +10 -11
  513. package/lib/store/permissions/permissionsSlice.js +8 -12
  514. package/lib/store/points/actionTypes.js +3 -3
  515. package/lib/store/points/actions.js +8 -4
  516. package/lib/store/points/reducer.js +5 -7
  517. package/lib/store/rootActionTypes.js +2 -2
  518. package/lib/store/rootReducer.js +12 -17
  519. package/lib/store/rootStore.js +5 -5
  520. package/lib/store/samplings/actionTypes.js +1 -1
  521. package/lib/store/samplings/reducer.js +14 -16
  522. package/lib/styles/StylesLayout.js +3 -5
  523. package/lib/styles/theme/theme.js +27 -26
  524. package/lib/test/mocks/browser.js +4 -2
  525. package/lib/test/test-utils.js +15 -17
  526. package/lib/ui-kit/Button/Button.js +80 -128
  527. package/lib/ui-kit/Button/Button.test.js +29 -24
  528. package/lib/ui-kit/Checkbox/Checkbox.js +20 -30
  529. package/lib/ui-kit/ContentCard/ContentCard.js +18 -15
  530. package/lib/ui-kit/Dashboard/Dashboard.js +22 -25
  531. package/lib/ui-kit/DropDown/DropDown.js +24 -23
  532. package/lib/ui-kit/DropDown/DropDown.test.js +12 -12
  533. package/lib/ui-kit/DropDown/DropDownItem.js +21 -24
  534. package/lib/ui-kit/DropDown/DropdownToggle.js +8 -12
  535. package/lib/ui-kit/EmptyState/EmptyState.js +4 -6
  536. package/lib/ui-kit/IconAction/IconAction.js +5 -7
  537. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +64 -48
  538. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +52 -69
  539. package/lib/ui-kit/InletsPie/InletsPie.js +13 -15
  540. package/lib/ui-kit/InletsPie/options.js +6 -6
  541. package/lib/ui-kit/KandoList/KandoList.js +12 -14
  542. package/lib/ui-kit/KandoTable/KandoTable.js +40 -48
  543. package/lib/ui-kit/KandoTable/KandoTable.test.js +22 -16
  544. package/lib/ui-kit/Layout/Layout.js +4 -6
  545. package/lib/ui-kit/MobileInput/MobileInput.js +50 -60
  546. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +16 -13
  547. package/lib/ui-kit/OrganicEvents/GaugeChart.js +6 -8
  548. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +6 -6
  549. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +20 -27
  550. package/lib/ui-kit/OrganicEvents/TextInfo.js +10 -15
  551. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +8 -10
  552. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +17 -14
  553. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -3
  554. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +20 -20
  555. package/lib/ui-kit/ScoreGauge/constant.js +3 -3
  556. package/lib/ui-kit/TimeLineChart/TrendChart.js +42 -54
  557. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +7 -8
  558. package/lib/ui-kit/Tooltip/Tooltip.js +8 -14
  559. package/lib/ui-kit/index.js +8 -8
  560. package/lib/ui-kit/kandoStepper/KandoStepper.js +12 -12
  561. package/lib/ui-kit/siteName/SiteName.js +8 -11
  562. package/lib/utilities/ActionUtility.js +7 -7
  563. package/lib/utilities/Alert.js +17 -21
  564. package/lib/utilities/Analytics.js +11 -11
  565. package/lib/utilities/Array.js +5 -4
  566. package/lib/utilities/Enum.js +51 -15
  567. package/lib/utilities/ErrorBoundary.js +41 -27
  568. package/lib/utilities/File.js +69 -40
  569. package/lib/utilities/GetDir.js +7 -8
  570. package/lib/utilities/KandoDate.js +15 -7
  571. package/lib/utilities/KandoModal.js +26 -16
  572. package/lib/utilities/LocalStorage.js +10 -8
  573. package/lib/utilities/ThousandsToK.js +3 -3
  574. package/lib/utilities/TimeFormat.js +20 -21
  575. package/lib/utilities/Truncate.js +25 -17
  576. package/lib/utilities/edgesMath.js +15 -14
  577. package/lib/utilities/i18n.js +3 -3
  578. package/lib/utilities/kql.js +14 -12
  579. package/lib/utilities/map/icons.js +3 -3
  580. package/lib/utilities/polylinedecorator.js +112 -87
  581. package/lib/utilities/scoreToData.js +17 -17
  582. package/lib/utilities/scoreToData.test.js +5 -5
  583. package/lib/utilities/time.js +8 -8
  584. package/lib/utilities/uploadToS3.js +11 -11
  585. package/lib/utilities/urls.js +59 -61
  586. package/package.json +1 -1
@@ -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.updatePoint = exports.Widget = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
8
11
  var _react = _interopRequireWildcard(require("react"));
9
12
  var _reactBootstrap = require("react-bootstrap");
10
13
  var _WWTPDashboardSlice = require("../../store/WWTPDashboard/WWTPDashboardSlice");
@@ -12,73 +15,85 @@ var _i18n = _interopRequireDefault(require("../../utilities/i18n"));
12
15
  var _InletsPie = _interopRequireDefault(require("../../ui-kit/InletsPie"));
13
16
  var _utils = require("./utils");
14
17
  var _Capacity = require("./Capacity");
15
- 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); }
16
- 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; }
17
- const updatePoint = _ref => {
18
- let {
19
- point,
20
- listItems,
21
- areas,
22
- points
23
- } = _ref;
24
- const areaIds = listItems.map(item => item.id);
25
- const subAreas = getAreas(areaIds, areas);
26
- return {
27
- ...point,
18
+ 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); }
19
+ 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; }
20
+ var updatePoint = function updatePoint(_ref) {
21
+ var point = _ref.point,
22
+ listItems = _ref.listItems,
23
+ areas = _ref.areas,
24
+ points = _ref.points;
25
+ var areaIds = listItems.map(function (item) {
26
+ return item.id;
27
+ });
28
+ var subAreas = getAreas(areaIds, areas);
29
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, point), {}, {
28
30
  factories: subAreas.length > 0 ? [] : getPoints(listItems, points),
29
31
  sub_areas: subAreas,
30
32
  shape_data: [[point.latitude, point.longitude]]
31
- };
33
+ });
32
34
  };
33
35
  exports.updatePoint = updatePoint;
34
- const getAreas = (areaIds, areas) => {
36
+ var getAreas = function getAreas(areaIds, areas) {
35
37
  if (areaIds.length === 0 || areas === undefined || areas === null || areas.length === 0) return [];
36
- const returnedAreas = areaIds.map(id => {
37
- const correspondingArea = areas.find(area => area.area_id === id);
38
+ var returnedAreas = areaIds.map(function (id) {
39
+ var correspondingArea = areas.find(function (area) {
40
+ return area.area_id === id;
41
+ });
38
42
  return correspondingArea;
39
43
  });
40
44
  return returnedAreas;
41
45
  };
42
- const getPoints = (listItems, points) => {
46
+ var getPoints = function getPoints(listItems, points) {
43
47
  if (listItems === null || points === undefined || points.length === 0) return [];
44
- const returnedPoints = listItems.map(item => {
45
- const correspondingPoint = points.find(point => point.id === item.id);
48
+ var returnedPoints = listItems.map(function (item) {
49
+ var correspondingPoint = points.find(function (point) {
50
+ return point.id === item.id;
51
+ });
46
52
  return correspondingPoint;
47
53
  });
48
54
  return returnedPoints;
49
55
  };
50
- const Widget = props => {
51
- const {
52
- object,
53
- dispatch,
54
- points,
55
- areas,
56
- map,
57
- global_data,
58
- listData,
59
- history
60
- } = props;
61
- const [area, setArea] = (0, _react.useState)(null);
62
- const [point, setPoint] = (0, _react.useState)(null);
63
- const [buttonName, setButtonName] = (0, _react.useState)('');
64
- const [listItems, setListItems] = (0, _react.useState)([]);
65
- const handleClick = () => {
56
+ var Widget = function Widget(props) {
57
+ var object = props.object,
58
+ dispatch = props.dispatch,
59
+ points = props.points,
60
+ areas = props.areas,
61
+ map = props.map,
62
+ global_data = props.global_data,
63
+ listData = props.listData,
64
+ history = props.history;
65
+ var _useState = (0, _react.useState)(null),
66
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
67
+ area = _useState2[0],
68
+ setArea = _useState2[1];
69
+ var _useState3 = (0, _react.useState)(null),
70
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
71
+ point = _useState4[0],
72
+ setPoint = _useState4[1];
73
+ var _useState5 = (0, _react.useState)(''),
74
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
75
+ buttonName = _useState6[0],
76
+ setButtonName = _useState6[1];
77
+ var _useState7 = (0, _react.useState)([]),
78
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
79
+ listItems = _useState8[0],
80
+ setListItems = _useState8[1];
81
+ var handleClick = function handleClick() {
66
82
  map.closePopup();
67
- const clickedObject = {
68
- ...object,
83
+ var clickedObject = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, object), {}, {
69
84
  clicked: true
70
- };
85
+ });
71
86
  (0, _utils.updateHistory)(clickedObject, history);
72
87
  (0, _Capacity.setFocusedItem)(clickedObject, listItems, points, areas, dispatch, _WWTPDashboardSlice.setFocusedArea, true);
73
88
  sendButtonClickedAnalytics();
74
89
  };
75
- const sendButtonClickedAnalytics = () => {
90
+ var sendButtonClickedAnalytics = function sendButtonClickedAnalytics() {
76
91
  (0, _utils.sendAnalyticsEvent)('Map view - Popup drilldown clicked', buttonName, {
77
92
  utility_name: global_data.waterAuthorityName
78
93
  });
79
94
  };
80
- const getButtonType = type => {
81
- let rc;
95
+ var getButtonType = function getButtonType(type) {
96
+ var rc;
82
97
  switch (type.toLowerCase()) {
83
98
  case 'area':
84
99
  case 'varea':
@@ -92,8 +107,8 @@ const Widget = props => {
92
107
  }
93
108
  return rc;
94
109
  };
95
- const title = () => {
96
- let payload = '';
110
+ var title = function title() {
111
+ var payload = '';
97
112
  if (point) {
98
113
  payload = point.name;
99
114
  } else {
@@ -103,30 +118,32 @@ const Widget = props => {
103
118
  }
104
119
  return payload;
105
120
  };
106
- const buttonTitle = () => {
121
+ var buttonTitle = function buttonTitle() {
107
122
  if (buttonName === '') return '';
108
- return _i18n.default.t(`wwtpPage.${buttonName}`);
123
+ return _i18n.default.t("wwtpPage.".concat(buttonName));
109
124
  };
110
- (0, _react.useEffect)(() => {
111
- let isAPoint = object.forWWTPMap !== undefined;
125
+ (0, _react.useEffect)(function () {
126
+ var isAPoint = object.forWWTPMap !== undefined;
112
127
  if (isAPoint) {
113
128
  setPoint(object);
114
129
  } else {
115
130
  setArea(object);
116
131
  }
117
132
  }, [object]);
118
- (0, _react.useEffect)(() => {
133
+ (0, _react.useEffect)(function () {
119
134
  if (listData === undefined) return;
120
135
  setListItems(listData === null || listData === void 0 ? void 0 : listData.data);
121
136
  if (listData.data.length > 0) {
122
137
  setButtonName(getButtonType(listData.data[0].type));
123
138
  }
124
139
  }, [listData]);
125
- const widgetContent = () => {
126
- const data = listData === null || listData === void 0 ? void 0 : listData.data;
127
- const showButton = (data === null || data === void 0 ? void 0 : data.length) > 0;
140
+ var widgetContent = function widgetContent() {
141
+ var data = listData === null || listData === void 0 ? void 0 : listData.data;
142
+ var showButton = (data === null || data === void 0 ? void 0 : data.length) > 0;
128
143
  return /*#__PURE__*/_react.default.createElement("div", null, showButton && /*#__PURE__*/_react.default.createElement(_reactBootstrap.Button, {
129
- onClick: () => handleClick(),
144
+ onClick: function onClick() {
145
+ return handleClick();
146
+ },
130
147
  className: 'childrenButton rounded-pill btn-light'
131
148
  }, buttonTitle()), /*#__PURE__*/_react.default.createElement(_InletsPie.default, {
132
149
  inlets: listItems
@@ -137,4 +154,4 @@ const Widget = props => {
137
154
  }, widgetContent()));
138
155
  };
139
156
  exports.Widget = Widget;
140
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RCb290c3RyYXAiLCJfV1dUUERhc2hib2FyZFNsaWNlIiwiX2kxOG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0lubGV0c1BpZSIsIl91dGlscyIsIl9DYXBhY2l0eSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJ1cGRhdGVQb2ludCIsIl9yZWYiLCJwb2ludCIsImxpc3RJdGVtcyIsImFyZWFzIiwicG9pbnRzIiwiYXJlYUlkcyIsIm1hcCIsIml0ZW0iLCJpZCIsInN1YkFyZWFzIiwiZ2V0QXJlYXMiLCJmYWN0b3JpZXMiLCJsZW5ndGgiLCJnZXRQb2ludHMiLCJzdWJfYXJlYXMiLCJzaGFwZV9kYXRhIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJleHBvcnRzIiwidW5kZWZpbmVkIiwicmV0dXJuZWRBcmVhcyIsImNvcnJlc3BvbmRpbmdBcmVhIiwiZmluZCIsImFyZWEiLCJhcmVhX2lkIiwicmV0dXJuZWRQb2ludHMiLCJjb3JyZXNwb25kaW5nUG9pbnQiLCJXaWRnZXQiLCJwcm9wcyIsIm9iamVjdCIsImRpc3BhdGNoIiwiZ2xvYmFsX2RhdGEiLCJsaXN0RGF0YSIsImhpc3RvcnkiLCJzZXRBcmVhIiwidXNlU3RhdGUiLCJzZXRQb2ludCIsImJ1dHRvbk5hbWUiLCJzZXRCdXR0b25OYW1lIiwic2V0TGlzdEl0ZW1zIiwiaGFuZGxlQ2xpY2siLCJjbG9zZVBvcHVwIiwiY2xpY2tlZE9iamVjdCIsImNsaWNrZWQiLCJ1cGRhdGVIaXN0b3J5Iiwic2V0Rm9jdXNlZEl0ZW0iLCJzZXRGb2N1c2VkQXJlYSIsInNlbmRCdXR0b25DbGlja2VkQW5hbHl0aWNzIiwic2VuZEFuYWx5dGljc0V2ZW50IiwidXRpbGl0eV9uYW1lIiwid2F0ZXJBdXRob3JpdHlOYW1lIiwiZ2V0QnV0dG9uVHlwZSIsInR5cGUiLCJyYyIsInRvTG93ZXJDYXNlIiwidGl0bGUiLCJwYXlsb2FkIiwibmFtZSIsImFyZWFfbmFtZSIsImJ1dHRvblRpdGxlIiwiaTE4biIsInQiLCJ1c2VFZmZlY3QiLCJpc0FQb2ludCIsImZvcldXVFBNYXAiLCJkYXRhIiwid2lkZ2V0Q29udGVudCIsInNob3dCdXR0b24iLCJjcmVhdGVFbGVtZW50IiwiQnV0dG9uIiwib25DbGljayIsImNsYXNzTmFtZSIsImlubGV0cyIsIkZyYWdtZW50IiwiQ2FyZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9EYXNoYm9hcmRNYXAvV2lkZ2V0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEJ1dHRvbiwgQ2FyZCB9IGZyb20gJ3JlYWN0LWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBzZXRGb2N1c2VkQXJlYSB9IGZyb20gJy4uLy4uL3N0b3JlL1dXVFBEYXNoYm9hcmQvV1dUUERhc2hib2FyZFNsaWNlJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJy4uLy4uL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcbmltcG9ydCBpMThuIGZyb20gJy4uLy4uL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IElBcmVhIH0gZnJvbSAnLi4vLi4vc3RvcmUvYXJlYXMvbW9kZWxzL0lBcmVhJztcbmltcG9ydCBJbmxldHNQaWUgZnJvbSAnLi4vLi4vdWkta2l0L0lubGV0c1BpZSc7XG5pbXBvcnQgeyBzZW5kQW5hbHl0aWNzRXZlbnQsIHVwZGF0ZUhpc3RvcnkgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IHNldEZvY3VzZWRJdGVtIH0gZnJvbSAnLi9DYXBhY2l0eSc7XG5cbnR5cGUgSVByb3BzID0ge1xuICBvYmplY3Q6IGFueTtcbiAgZGlzcGF0Y2g6IGFueTtcbiAgcG9pbnRzPzogSVBvaW50W107XG4gIGFyZWFzPzogSUFyZWFbXTtcbiAgbWFwO1xuICBnbG9iYWxfZGF0YTtcbiAgbGlzdERhdGE6IGFueTtcbiAgaGlzdG9yeTogYW55O1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVBvaW50ID0gKHsgcG9pbnQsIGxpc3RJdGVtcywgYXJlYXMsIHBvaW50cyB9KSA9PiB7XG4gIGNvbnN0IGFyZWFJZHMgPSBsaXN0SXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmlkKTtcbiAgY29uc3Qgc3ViQXJlYXMgPSBnZXRBcmVhcyhhcmVhSWRzLCBhcmVhcyk7XG4gIHJldHVybiB7XG4gICAgLi4ucG9pbnQsXG4gICAgZmFjdG9yaWVzOiBzdWJBcmVhcy5sZW5ndGggPiAwID8gW10gOiBnZXRQb2ludHMobGlzdEl0ZW1zLCBwb2ludHMpLFxuICAgIHN1Yl9hcmVhczogc3ViQXJlYXMsXG4gICAgc2hhcGVfZGF0YTogW1twb2ludC5sYXRpdHVkZSwgcG9pbnQubG9uZ2l0dWRlXV0sXG4gIH07XG59O1xuXG5jb25zdCBnZXRBcmVhcyA9IChhcmVhSWRzOiBhbnlbXSwgYXJlYXMpID0+IHtcbiAgaWYgKFxuICAgIGFyZWFJZHMubGVuZ3RoID09PSAwIHx8XG4gICAgYXJlYXMgPT09IHVuZGVmaW5lZCB8fFxuICAgIGFyZWFzID09PSBudWxsIHx8XG4gICAgYXJlYXMubGVuZ3RoID09PSAwXG4gIClcbiAgICByZXR1cm4gW107XG5cbiAgY29uc3QgcmV0dXJuZWRBcmVhcyA9IGFyZWFJZHMubWFwKChpZCkgPT4ge1xuICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdBcmVhID0gYXJlYXMuZmluZCgoYXJlYSkgPT4gYXJlYS5hcmVhX2lkID09PSBpZCk7XG4gICAgcmV0dXJuIGNvcnJlc3BvbmRpbmdBcmVhO1xuICB9KTtcblxuICByZXR1cm4gcmV0dXJuZWRBcmVhcztcbn07XG5cbmNvbnN0IGdldFBvaW50cyA9IChsaXN0SXRlbXMsIHBvaW50cykgPT4ge1xuICBpZiAobGlzdEl0ZW1zID09PSBudWxsIHx8IHBvaW50cyA9PT0gdW5kZWZpbmVkIHx8IHBvaW50cy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IHJldHVybmVkUG9pbnRzID0gbGlzdEl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdQb2ludCA9IHBvaW50cy5maW5kKChwb2ludCkgPT4gcG9pbnQuaWQgPT09IGl0ZW0uaWQpO1xuICAgIHJldHVybiBjb3JyZXNwb25kaW5nUG9pbnQ7XG4gIH0pO1xuXG4gIHJldHVybiByZXR1cm5lZFBvaW50cztcbn07XG5leHBvcnQgY29uc3QgV2lkZ2V0OiBSZWFjdC5GQzxJUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBvYmplY3QsXG4gICAgZGlzcGF0Y2gsXG4gICAgcG9pbnRzLFxuICAgIGFyZWFzLFxuICAgIG1hcCxcbiAgICBnbG9iYWxfZGF0YSxcbiAgICBsaXN0RGF0YSxcbiAgICBoaXN0b3J5LFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFthcmVhLCBzZXRBcmVhXSA9IHVzZVN0YXRlPElBcmVhIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtwb2ludCwgc2V0UG9pbnRdID0gdXNlU3RhdGU8SVBvaW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtidXR0b25OYW1lLCBzZXRCdXR0b25OYW1lXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpO1xuICBjb25zdCBbbGlzdEl0ZW1zLCBzZXRMaXN0SXRlbXNdID0gdXNlU3RhdGU8YW55W10+KFtdKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBtYXAuY2xvc2VQb3B1cCgpO1xuICAgIGNvbnN0IGNsaWNrZWRPYmplY3QgPSB7IC4uLm9iamVjdCwgY2xpY2tlZDogdHJ1ZSB9O1xuICAgIHVwZGF0ZUhpc3RvcnkoY2xpY2tlZE9iamVjdCwgaGlzdG9yeSk7XG4gICAgc2V0Rm9jdXNlZEl0ZW0oXG4gICAgICBjbGlja2VkT2JqZWN0LFxuICAgICAgbGlzdEl0ZW1zLFxuICAgICAgcG9pbnRzLFxuICAgICAgYXJlYXMsXG4gICAgICBkaXNwYXRjaCxcbiAgICAgIHNldEZvY3VzZWRBcmVhLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICAgIHNlbmRCdXR0b25DbGlja2VkQW5hbHl0aWNzKCk7XG4gIH07XG5cbiAgY29uc3Qgc2VuZEJ1dHRvbkNsaWNrZWRBbmFseXRpY3MgPSAoKSA9PiB7XG4gICAgc2VuZEFuYWx5dGljc0V2ZW50KCdNYXAgdmlldyAtIFBvcHVwIGRyaWxsZG93biBjbGlja2VkJywgYnV0dG9uTmFtZSwge1xuICAgICAgdXRpbGl0eV9uYW1lOiBnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eU5hbWUsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgZ2V0QnV0dG9uVHlwZSA9ICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgcmM7XG5cbiAgICBzd2l0Y2ggKHR5cGUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnYXJlYSc6XG4gICAgICBjYXNlICd2YXJlYSc6XG4gICAgICAgIHJjID0gJ3ZpZXdfc3ViX2FyZWFzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmYWN0b3J5JzpcbiAgICAgICAgcmMgPSAndmlld19mYWN0b3JpZXMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJjID0gJ3ZpZXdfaW5sZXRzJztcbiAgICB9XG4gICAgcmV0dXJuIHJjO1xuICB9O1xuXG4gIGNvbnN0IHRpdGxlID0gKCkgPT4ge1xuICAgIGxldCBwYXlsb2FkID0gJyc7XG4gICAgaWYgKHBvaW50KSB7XG4gICAgICBwYXlsb2FkID0gcG9pbnQubmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGFyZWEpIHtcbiAgICAgICAgcGF5bG9hZCA9IGFyZWEuYXJlYV9uYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfTtcblxuICBjb25zdCBidXR0b25UaXRsZSA9ICgpID0+IHtcbiAgICBpZiAoYnV0dG9uTmFtZSA9PT0gJycpIHJldHVybiAnJztcbiAgICByZXR1cm4gaTE4bi50KGB3d3RwUGFnZS4ke2J1dHRvbk5hbWV9YCk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgaXNBUG9pbnQgPSBvYmplY3QuZm9yV1dUUE1hcCAhPT0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKGlzQVBvaW50KSB7XG4gICAgICBzZXRQb2ludChvYmplY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRBcmVhKG9iamVjdCk7XG4gICAgfVxuICB9LCBbb2JqZWN0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGlzdERhdGEgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG4gICAgc2V0TGlzdEl0ZW1zKGxpc3REYXRhPy5kYXRhKTtcbiAgICBpZiAobGlzdERhdGEuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBzZXRCdXR0b25OYW1lKGdldEJ1dHRvblR5cGUobGlzdERhdGEuZGF0YVswXS50eXBlKSk7XG4gICAgfVxuICB9LCBbbGlzdERhdGFdKTtcblxuICBjb25zdCB3aWRnZXRDb250ZW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBsaXN0RGF0YT8uZGF0YTtcbiAgICBjb25zdCBzaG93QnV0dG9uID0gZGF0YT8ubGVuZ3RoID4gMDtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICB7c2hvd0J1dHRvbiAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQ2xpY2soKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17J2NoaWxkcmVuQnV0dG9uIHJvdW5kZWQtcGlsbCBidG4tbGlnaHQnfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtidXR0b25UaXRsZSgpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgICA8SW5sZXRzUGllIGlubGV0cz17bGlzdEl0ZW1zfSAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8aDM+e3RpdGxlKCl9PC9oMz5cbiAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImJnLXdoaXRlIHdpZGdldC1jb250YWluZXJcIj57d2lkZ2V0Q29udGVudCgpfTwvQ2FyZD5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxlQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxtQkFBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsS0FBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBRUEsSUFBQUssVUFBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sU0FBQSxHQUFBUCxPQUFBO0FBQTRDLFNBQUFRLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFWLHdCQUFBYyxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JB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
157
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RCb290c3RyYXAiLCJfV1dUUERhc2hib2FyZFNsaWNlIiwiX2kxOG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0lubGV0c1BpZSIsIl91dGlscyIsIl9DYXBhY2l0eSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwidXBkYXRlUG9pbnQiLCJfcmVmIiwicG9pbnQiLCJsaXN0SXRlbXMiLCJhcmVhcyIsInBvaW50cyIsImFyZWFJZHMiLCJtYXAiLCJpdGVtIiwiaWQiLCJzdWJBcmVhcyIsImdldEFyZWFzIiwiX29iamVjdFNwcmVhZDIiLCJmYWN0b3JpZXMiLCJsZW5ndGgiLCJnZXRQb2ludHMiLCJzdWJfYXJlYXMiLCJzaGFwZV9kYXRhIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJleHBvcnRzIiwidW5kZWZpbmVkIiwicmV0dXJuZWRBcmVhcyIsImNvcnJlc3BvbmRpbmdBcmVhIiwiZmluZCIsImFyZWEiLCJhcmVhX2lkIiwicmV0dXJuZWRQb2ludHMiLCJjb3JyZXNwb25kaW5nUG9pbnQiLCJXaWRnZXQiLCJwcm9wcyIsIm9iamVjdCIsImRpc3BhdGNoIiwiZ2xvYmFsX2RhdGEiLCJsaXN0RGF0YSIsImhpc3RvcnkiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZXRBcmVhIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzZXRQb2ludCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiYnV0dG9uTmFtZSIsInNldEJ1dHRvbk5hbWUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNldExpc3RJdGVtcyIsImhhbmRsZUNsaWNrIiwiY2xvc2VQb3B1cCIsImNsaWNrZWRPYmplY3QiLCJjbGlja2VkIiwidXBkYXRlSGlzdG9yeSIsInNldEZvY3VzZWRJdGVtIiwic2V0Rm9jdXNlZEFyZWEiLCJzZW5kQnV0dG9uQ2xpY2tlZEFuYWx5dGljcyIsInNlbmRBbmFseXRpY3NFdmVudCIsInV0aWxpdHlfbmFtZSIsIndhdGVyQXV0aG9yaXR5TmFtZSIsImdldEJ1dHRvblR5cGUiLCJ0eXBlIiwicmMiLCJ0b0xvd2VyQ2FzZSIsInRpdGxlIiwicGF5bG9hZCIsIm5hbWUiLCJhcmVhX25hbWUiLCJidXR0b25UaXRsZSIsImkxOG4iLCJ0IiwiY29uY2F0IiwidXNlRWZmZWN0IiwiaXNBUG9pbnQiLCJmb3JXV1RQTWFwIiwiZGF0YSIsIndpZGdldENvbnRlbnQiLCJzaG93QnV0dG9uIiwiY3JlYXRlRWxlbWVudCIsIkJ1dHRvbiIsIm9uQ2xpY2siLCJjbGFzc05hbWUiLCJpbmxldHMiLCJGcmFnbWVudCIsIkNhcmQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvRGFzaGJvYXJkTWFwL1dpZGdldC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBCdXR0b24sIENhcmQgfSBmcm9tICdyZWFjdC1ib290c3RyYXAnO1xuaW1wb3J0IHsgc2V0Rm9jdXNlZEFyZWEgfSBmcm9tICcuLi8uLi9zdG9yZS9XV1RQRGFzaGJvYXJkL1dXVFBEYXNoYm9hcmRTbGljZSc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICcuLi8uLi9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgaTE4biBmcm9tICcuLi8uLi91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyBJQXJlYSB9IGZyb20gJy4uLy4uL3N0b3JlL2FyZWFzL21vZGVscy9JQXJlYSc7XG5pbXBvcnQgSW5sZXRzUGllIGZyb20gJy4uLy4uL3VpLWtpdC9JbmxldHNQaWUnO1xuaW1wb3J0IHsgc2VuZEFuYWx5dGljc0V2ZW50LCB1cGRhdGVIaXN0b3J5IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBzZXRGb2N1c2VkSXRlbSB9IGZyb20gJy4vQ2FwYWNpdHknO1xuXG50eXBlIElQcm9wcyA9IHtcbiAgb2JqZWN0OiBhbnk7XG4gIGRpc3BhdGNoOiBhbnk7XG4gIHBvaW50cz86IElQb2ludFtdO1xuICBhcmVhcz86IElBcmVhW107XG4gIG1hcDtcbiAgZ2xvYmFsX2RhdGE7XG4gIGxpc3REYXRhOiBhbnk7XG4gIGhpc3Rvcnk6IGFueTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVQb2ludCA9ICh7IHBvaW50LCBsaXN0SXRlbXMsIGFyZWFzLCBwb2ludHMgfSkgPT4ge1xuICBjb25zdCBhcmVhSWRzID0gbGlzdEl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5pZCk7XG4gIGNvbnN0IHN1YkFyZWFzID0gZ2V0QXJlYXMoYXJlYUlkcywgYXJlYXMpO1xuICByZXR1cm4ge1xuICAgIC4uLnBvaW50LFxuICAgIGZhY3Rvcmllczogc3ViQXJlYXMubGVuZ3RoID4gMCA/IFtdIDogZ2V0UG9pbnRzKGxpc3RJdGVtcywgcG9pbnRzKSxcbiAgICBzdWJfYXJlYXM6IHN1YkFyZWFzLFxuICAgIHNoYXBlX2RhdGE6IFtbcG9pbnQubGF0aXR1ZGUsIHBvaW50LmxvbmdpdHVkZV1dLFxuICB9O1xufTtcblxuY29uc3QgZ2V0QXJlYXMgPSAoYXJlYUlkczogYW55W10sIGFyZWFzKSA9PiB7XG4gIGlmIChcbiAgICBhcmVhSWRzLmxlbmd0aCA9PT0gMCB8fFxuICAgIGFyZWFzID09PSB1bmRlZmluZWQgfHxcbiAgICBhcmVhcyA9PT0gbnVsbCB8fFxuICAgIGFyZWFzLmxlbmd0aCA9PT0gMFxuICApXG4gICAgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IHJldHVybmVkQXJlYXMgPSBhcmVhSWRzLm1hcCgoaWQpID0+IHtcbiAgICBjb25zdCBjb3JyZXNwb25kaW5nQXJlYSA9IGFyZWFzLmZpbmQoKGFyZWEpID0+IGFyZWEuYXJlYV9pZCA9PT0gaWQpO1xuICAgIHJldHVybiBjb3JyZXNwb25kaW5nQXJlYTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJldHVybmVkQXJlYXM7XG59O1xuXG5jb25zdCBnZXRQb2ludHMgPSAobGlzdEl0ZW1zLCBwb2ludHMpID0+IHtcbiAgaWYgKGxpc3RJdGVtcyA9PT0gbnVsbCB8fCBwb2ludHMgPT09IHVuZGVmaW5lZCB8fCBwb2ludHMubGVuZ3RoID09PSAwKVxuICAgIHJldHVybiBbXTtcblxuICBjb25zdCByZXR1cm5lZFBvaW50cyA9IGxpc3RJdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICBjb25zdCBjb3JyZXNwb25kaW5nUG9pbnQgPSBwb2ludHMuZmluZCgocG9pbnQpID0+IHBvaW50LmlkID09PSBpdGVtLmlkKTtcbiAgICByZXR1cm4gY29ycmVzcG9uZGluZ1BvaW50O1xuICB9KTtcblxuICByZXR1cm4gcmV0dXJuZWRQb2ludHM7XG59O1xuZXhwb3J0IGNvbnN0IFdpZGdldDogUmVhY3QuRkM8SVByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgb2JqZWN0LFxuICAgIGRpc3BhdGNoLFxuICAgIHBvaW50cyxcbiAgICBhcmVhcyxcbiAgICBtYXAsXG4gICAgZ2xvYmFsX2RhdGEsXG4gICAgbGlzdERhdGEsXG4gICAgaGlzdG9yeSxcbiAgfSA9IHByb3BzO1xuICBjb25zdCBbYXJlYSwgc2V0QXJlYV0gPSB1c2VTdGF0ZTxJQXJlYSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbcG9pbnQsIHNldFBvaW50XSA9IHVzZVN0YXRlPElQb2ludCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbYnV0dG9uTmFtZSwgc2V0QnV0dG9uTmFtZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKTtcbiAgY29uc3QgW2xpc3RJdGVtcywgc2V0TGlzdEl0ZW1zXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgbWFwLmNsb3NlUG9wdXAoKTtcbiAgICBjb25zdCBjbGlja2VkT2JqZWN0ID0geyAuLi5vYmplY3QsIGNsaWNrZWQ6IHRydWUgfTtcbiAgICB1cGRhdGVIaXN0b3J5KGNsaWNrZWRPYmplY3QsIGhpc3RvcnkpO1xuICAgIHNldEZvY3VzZWRJdGVtKFxuICAgICAgY2xpY2tlZE9iamVjdCxcbiAgICAgIGxpc3RJdGVtcyxcbiAgICAgIHBvaW50cyxcbiAgICAgIGFyZWFzLFxuICAgICAgZGlzcGF0Y2gsXG4gICAgICBzZXRGb2N1c2VkQXJlYSxcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgICBzZW5kQnV0dG9uQ2xpY2tlZEFuYWx5dGljcygpO1xuICB9O1xuXG4gIGNvbnN0IHNlbmRCdXR0b25DbGlja2VkQW5hbHl0aWNzID0gKCkgPT4ge1xuICAgIHNlbmRBbmFseXRpY3NFdmVudCgnTWFwIHZpZXcgLSBQb3B1cCBkcmlsbGRvd24gY2xpY2tlZCcsIGJ1dHRvbk5hbWUsIHtcbiAgICAgIHV0aWxpdHlfbmFtZTogZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGdldEJ1dHRvblR5cGUgPSAodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgbGV0IHJjO1xuXG4gICAgc3dpdGNoICh0eXBlLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ2FyZWEnOlxuICAgICAgY2FzZSAndmFyZWEnOlxuICAgICAgICByYyA9ICd2aWV3X3N1Yl9hcmVhcyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmFjdG9yeSc6XG4gICAgICAgIHJjID0gJ3ZpZXdfZmFjdG9yaWVzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByYyA9ICd2aWV3X2lubGV0cyc7XG4gICAgfVxuICAgIHJldHVybiByYztcbiAgfTtcblxuICBjb25zdCB0aXRsZSA9ICgpID0+IHtcbiAgICBsZXQgcGF5bG9hZCA9ICcnO1xuICAgIGlmIChwb2ludCkge1xuICAgICAgcGF5bG9hZCA9IHBvaW50Lm5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChhcmVhKSB7XG4gICAgICAgIHBheWxvYWQgPSBhcmVhLmFyZWFfbmFtZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3QgYnV0dG9uVGl0bGUgPSAoKSA9PiB7XG4gICAgaWYgKGJ1dHRvbk5hbWUgPT09ICcnKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGkxOG4udChgd3d0cFBhZ2UuJHtidXR0b25OYW1lfWApO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGlzQVBvaW50ID0gb2JqZWN0LmZvcldXVFBNYXAgIT09IHVuZGVmaW5lZDtcblxuICAgIGlmIChpc0FQb2ludCkge1xuICAgICAgc2V0UG9pbnQob2JqZWN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0QXJlYShvYmplY3QpO1xuICAgIH1cbiAgfSwgW29iamVjdF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxpc3REYXRhID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgIHNldExpc3RJdGVtcyhsaXN0RGF0YT8uZGF0YSk7XG4gICAgaWYgKGxpc3REYXRhLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgc2V0QnV0dG9uTmFtZShnZXRCdXR0b25UeXBlKGxpc3REYXRhLmRhdGFbMF0udHlwZSkpO1xuICAgIH1cbiAgfSwgW2xpc3REYXRhXSk7XG5cbiAgY29uc3Qgd2lkZ2V0Q29udGVudCA9ICgpID0+IHtcbiAgICBjb25zdCBkYXRhID0gbGlzdERhdGE/LmRhdGE7XG4gICAgY29uc3Qgc2hvd0J1dHRvbiA9IGRhdGE/Lmxlbmd0aCA+IDA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAge3Nob3dCdXR0b24gJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUNsaWNrKCl9XG4gICAgICAgICAgICBjbGFzc05hbWU9eydjaGlsZHJlbkJ1dHRvbiByb3VuZGVkLXBpbGwgYnRuLWxpZ2h0J31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YnV0dG9uVGl0bGUoKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgICAgPElubGV0c1BpZSBpbmxldHM9e2xpc3RJdGVtc30gLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGgzPnt0aXRsZSgpfTwvaDM+XG4gICAgICA8Q2FyZCBjbGFzc05hbWU9XCJiZy13aGl0ZSB3aWRnZXQtY29udGFpbmVyXCI+e3dpZGdldENvbnRlbnQoKX08L0NhcmQ+XG4gICAgPC8+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsbUJBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUVBLElBQUFLLFVBQUEsR0FBQUQsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQVAsT0FBQTtBQUE0QyxTQUFBUSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEs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
@@ -5,63 +5,77 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.updateHistory = exports.sortPoints = exports.sortAreas = exports.simpleTruncate = exports.sendAnalyticsEvent = exports.initializeWWTPData = exports.getPoints = exports.focusMap = exports.createPopupForObject = exports.calculateWWTPInfo = exports.CardContainer = void 0;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/typeof"));
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
8
11
  var _styledComponents = _interopRequireDefault(require("styled-components"));
9
12
  var _jquery = _interopRequireDefault(require("jquery"));
10
13
  var _Analytics = require("utilities/Analytics");
11
- const initializeWWTPData = payload => {
14
+ var initializeWWTPData = function initializeWWTPData(payload) {
12
15
  if (payload.dataExists()) {
13
- const wwtpInfp = calculateWWTPInfo(payload);
16
+ var wwtpInfp = calculateWWTPInfo(payload);
14
17
  payload.setWWTPInfo(wwtpInfp);
15
18
  payload.setPoints(payload.points_data.items);
16
19
  payload.setAreas(payload.areas_data.newAreas);
17
20
  }
18
21
  };
19
22
  exports.initializeWWTPData = initializeWWTPData;
20
- const sortAreas = areas => {
23
+ var sortAreas = function sortAreas(areas) {
21
24
  if (!areas) return areas;
22
- const temp = [...areas];
23
- const sortedAreas = temp.sort((a, b) => a.is_assessment === b.is_assessment ? 0 : a.is_assessment ? -1 : 1).sort((a, b) => b.area_score - a.area_score);
25
+ var temp = (0, _toConsumableArray2.default)(areas);
26
+ var sortedAreas = temp.sort(function (a, b) {
27
+ return a.is_assessment === b.is_assessment ? 0 : a.is_assessment ? -1 : 1;
28
+ }).sort(function (a, b) {
29
+ return b.area_score - a.area_score;
30
+ });
24
31
  return sortedAreas;
25
32
  };
26
33
  exports.sortAreas = sortAreas;
27
- const sortPoints = points => {
34
+ var sortPoints = function sortPoints(points) {
28
35
  if (!points) return points;
29
- const temp = [...points];
30
- const sortedPoints = temp.sort((a, b) => a.has_device === b.has_device ? 0 : a.has_device ? -1 : 1).sort((a, b) => b.area_score - a.area_score);
36
+ var temp = (0, _toConsumableArray2.default)(points);
37
+ var sortedPoints = temp.sort(function (a, b) {
38
+ return a.has_device === b.has_device ? 0 : a.has_device ? -1 : 1;
39
+ }).sort(function (a, b) {
40
+ return b.area_score - a.area_score;
41
+ });
31
42
  return sortedPoints;
32
43
  };
33
44
  exports.sortPoints = sortPoints;
34
- const updateHistory = (object, history) => {
35
- const area = object.area_id ? object : null;
36
- const point = object.id ? object : null;
45
+ var updateHistory = function updateHistory(object, history) {
46
+ var area = object.area_id ? object : null;
47
+ var point = object.id ? object : null;
37
48
  if (point) {
38
- const type = point.group.type === 'Groups::WastewaterTreatmentPlant' ? 'wwtp' : 'site';
39
- history.push(`/dashboard_v2/${type}/${point.id}${history.location.search}`);
49
+ var type = point.group.type === 'Groups::WastewaterTreatmentPlant' ? 'wwtp' : 'site';
50
+ history.push("/dashboard_v2/".concat(type, "/").concat(point.id).concat(history.location.search));
40
51
  } else {
41
52
  if (area) {
42
- const type = area.is_virtual ? 'varea' : 'area';
43
- history.push(`/dashboard_v2/${type}/${area.area_id}${history.location.search}`);
53
+ var _type = area.is_virtual ? 'varea' : 'area';
54
+ history.push("/dashboard_v2/".concat(_type, "/").concat(area.area_id).concat(history.location.search));
44
55
  }
45
56
  }
46
57
  };
47
58
  exports.updateHistory = updateHistory;
48
- const calculateWWTPInfo = _ref => {
49
- let {
50
- id,
51
- points_data,
52
- areas_data
53
- } = _ref;
54
- let WWTP = points_data.items.find(point => point.id === parseInt(id));
59
+ var calculateWWTPInfo = function calculateWWTPInfo(_ref) {
60
+ var id = _ref.id,
61
+ points_data = _ref.points_data,
62
+ areas_data = _ref.areas_data;
63
+ var WWTP = points_data.items.find(function (point) {
64
+ return point.id === parseInt(id);
65
+ });
55
66
  if (WWTP === undefined) {
56
67
  var _points_data$items;
57
- WWTP = (_points_data$items = points_data.items) === null || _points_data$items === void 0 ? void 0 : _points_data$items.find(point => point.group.area_id === parseInt(id));
68
+ WWTP = (_points_data$items = points_data.items) === null || _points_data$items === void 0 ? void 0 : _points_data$items.find(function (point) {
69
+ return point.group.area_id === parseInt(id);
70
+ });
58
71
  }
59
- let WWTPArea = areas_data.newAreas.find(area => parseInt(id) === area.area_id);
72
+ var WWTPArea = areas_data.newAreas.find(function (area) {
73
+ return parseInt(id) === area.area_id;
74
+ });
60
75
  if (WWTP !== undefined) {
61
- WWTP = {
62
- ...WWTP,
76
+ WWTP = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, WWTP), {}, {
63
77
  forWWTPMap: true
64
- };
78
+ });
65
79
  }
66
80
  return {
67
81
  point: WWTP,
@@ -69,15 +83,15 @@ const calculateWWTPInfo = _ref => {
69
83
  };
70
84
  };
71
85
  exports.calculateWWTPInfo = calculateWWTPInfo;
72
- const createPopupForObject = args => {
73
- args.marker.bindPopup(`<div class="widget-container"></div>`, {
86
+ var createPopupForObject = function createPopupForObject(args) {
87
+ args.marker.bindPopup("<div class=\"widget-container\"></div>", {
74
88
  maxWidth: 400,
75
89
  minWidth: 400,
76
90
  maxHeight: 400,
77
91
  minHeight: 400
78
92
  });
79
93
  args.marker.on('popupopen', function () {
80
- setTimeout(() => {
94
+ setTimeout(function () {
81
95
  if ((0, _jquery.default)('.widget-container').contents().length <= 0) {
82
96
  (0, _jquery.default)('.widget-container').append(args.renderedElement);
83
97
  }
@@ -88,32 +102,32 @@ const createPopupForObject = args => {
88
102
  });
89
103
  };
90
104
  exports.createPopupForObject = createPopupForObject;
91
- const focusMap = (object, map) => {
105
+ var focusMap = function focusMap(object, map) {
92
106
  if (object === null || map === null) return;
93
- let latlngs = [];
107
+ var latlngs = [];
94
108
  if (object === undefined) {
95
- for (const property in map._layers) {
109
+ for (var property in map._layers) {
96
110
  if (map._layers[property].kando_object === 'Area' || map._layers[property].kando_object === 'Point') {
97
111
  latlngs.push(map._layers[property]._bounds);
98
112
  }
99
113
  }
100
114
  } else {
101
115
  if (object.sub_areas && object.sub_areas.length > 0) {
102
- object.sub_areas.forEach(sub_area => {
116
+ object.sub_areas.forEach(function (sub_area) {
103
117
  if ((sub_area === null || sub_area === void 0 ? void 0 : sub_area.shape_data) !== undefined) {
104
- sub_area.shape_data.forEach(latlng => {
118
+ sub_area.shape_data.forEach(function (latlng) {
105
119
  latlngs.push(latlng);
106
120
  });
107
121
  }
108
122
  });
109
123
  } else {
110
124
  if (object.inlets && object.inlets.length > 0) {
111
- object.inlets.forEach(inlet => {
125
+ object.inlets.forEach(function (inlet) {
112
126
  latlngs.push([inlet.latitude, inlet.longitude]);
113
127
  });
114
128
  } else {
115
129
  if ((object === null || object === void 0 ? void 0 : object.shape_data) !== undefined) {
116
- object.shape_data.forEach(latlng => {
130
+ object.shape_data.forEach(function (latlng) {
117
131
  latlngs.push(latlng);
118
132
  });
119
133
  } else {
@@ -122,10 +136,10 @@ const focusMap = (object, map) => {
122
136
  }
123
137
  }
124
138
  }
125
- latlngs.length > 0 && map !== null && typeof map._layers === 'object' && map._layers.length === undefined && map.fitBounds(latlngs);
139
+ latlngs.length > 0 && map !== null && (0, _typeof2.default)(map._layers) === 'object' && map._layers.length === undefined && map.fitBounds(latlngs);
126
140
  };
127
141
  exports.focusMap = focusMap;
128
- const simpleTruncate = (str, length) => {
142
+ var simpleTruncate = function simpleTruncate(str, length) {
129
143
  if (typeof str !== 'string' || typeof length !== 'number') {
130
144
  throw new Error('Invalid arguments. Please provide a string and a number.');
131
145
  }
@@ -136,12 +150,16 @@ const simpleTruncate = (str, length) => {
136
150
  }
137
151
  };
138
152
  exports.simpleTruncate = simpleTruncate;
139
- const getPoints = (list, points_data) => {
153
+ var getPoints = function getPoints(list, points_data) {
140
154
  if (points_data.length === 0) return list;
141
- return list.map(item => points_data.find(point => point.id === item.id)).filter(Boolean);
155
+ return list.map(function (item) {
156
+ return points_data.find(function (point) {
157
+ return point.id === item.id;
158
+ });
159
+ }).filter(Boolean);
142
160
  };
143
161
  exports.getPoints = getPoints;
144
- const CardContainer = _styledComponents.default.div.withConfig({
162
+ var CardContainer = _styledComponents.default.div.withConfig({
145
163
  displayName: "utils__CardContainer",
146
164
  componentId: "sc-zfjea1-0"
147
165
  })([".card{transition:0.1s ease-in-out;box-shadow:0px 1px 3px rgba(0,0,0,0.2);&:hover{transition:0.2s ease-in-out;box-shadow:0px 3px 10px rgba(0,0,0,0.2);cursor:pointer;}}"]);
@@ -151,13 +169,12 @@ const CardContainer = _styledComponents.default.div.withConfig({
151
169
  // selection is the object that was selected
152
170
  // specificFields is an object with event fields to send which are combined with the rest of the fields
153
171
  exports.CardContainer = CardContainer;
154
- const sendAnalyticsEvent = (subject, selection, eventFields) => {
155
- const data = {
172
+ var sendAnalyticsEvent = function sendAnalyticsEvent(subject, selection, eventFields) {
173
+ var data = (0, _objectSpread2.default)({
156
174
  selection: selection,
157
- page_name: window.location.pathname,
158
- ...eventFields
159
- };
175
+ page_name: window.location.pathname
176
+ }, eventFields);
160
177
  (0, _Analytics.analyticsTrack)(subject, data);
161
178
  };
162
179
  exports.sendAnalyticsEvent = sendAnalyticsEvent;
163
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfanF1ZXJ5IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfQW5hbHl0aWNzIiwiaW5pdGlhbGl6ZVdXVFBEYXRhIiwicGF5bG9hZCIsImRhdGFFeGlzdHMiLCJ3d3RwSW5mcCIsImNhbGN1bGF0ZVdXVFBJbmZvIiwic2V0V1dUUEluZm8iLCJzZXRQb2ludHMiLCJwb2ludHNfZGF0YSIsIml0ZW1zIiwic2V0QXJlYXMiLCJhcmVhc19kYXRhIiwibmV3QXJlYXMiLCJleHBvcnRzIiwic29ydEFyZWFzIiwiYXJlYXMiLCJ0ZW1wIiwic29ydGVkQXJlYXMiLCJzb3J0IiwiYSIsImIiLCJpc19hc3Nlc3NtZW50IiwiYXJlYV9zY29yZSIsInNvcnRQb2ludHMiLCJwb2ludHMiLCJzb3J0ZWRQb2ludHMiLCJoYXNfZGV2aWNlIiwidXBkYXRlSGlzdG9yeSIsIm9iamVjdCIsImhpc3RvcnkiLCJhcmVhIiwiYXJlYV9pZCIsInBvaW50IiwiaWQiLCJ0eXBlIiwiZ3JvdXAiLCJwdXNoIiwibG9jYXRpb24iLCJzZWFyY2giLCJpc192aXJ0dWFsIiwiX3JlZiIsIldXVFAiLCJmaW5kIiwicGFyc2VJbnQiLCJ1bmRlZmluZWQiLCJfcG9pbnRzX2RhdGEkaXRlbXMiLCJXV1RQQXJlYSIsImZvcldXVFBNYXAiLCJjcmVhdGVQb3B1cEZvck9iamVjdCIsImFyZ3MiLCJtYXJrZXIiLCJiaW5kUG9wdXAiLCJtYXhXaWR0aCIsIm1pbldpZHRoIiwibWF4SGVpZ2h0IiwibWluSGVpZ2h0Iiwib24iLCJzZXRUaW1lb3V0IiwiJCIsImNvbnRlbnRzIiwibGVuZ3RoIiwiYXBwZW5kIiwicmVuZGVyZWRFbGVtZW50IiwidW5iaW5kUG9wdXAiLCJmb2N1c01hcCIsIm1hcCIsImxhdGxuZ3MiLCJwcm9wZXJ0eSIsIl9sYXllcnMiLCJrYW5kb19vYmplY3QiLCJfYm91bmRzIiwic3ViX2FyZWFzIiwiZm9yRWFjaCIsInN1Yl9hcmVhIiwic2hhcGVfZGF0YSIsImxhdGxuZyIsImlubGV0cyIsImlubGV0IiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJmaXRCb3VuZHMiLCJzaW1wbGVUcnVuY2F0ZSIsInN0ciIsIkVycm9yIiwic3Vic3RyaW5nIiwiZ2V0UG9pbnRzIiwibGlzdCIsIml0ZW0iLCJmaWx0ZXIiLCJCb29sZWFuIiwiQ2FyZENvbnRhaW5lciIsInN0eWxlZCIsImRpdiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwic2VuZEFuYWx5dGljc0V2ZW50Iiwic3ViamVjdCIsInNlbGVjdGlvbiIsImV2ZW50RmllbGRzIiwiZGF0YSIsInBhZ2VfbmFtZSIsIndpbmRvdyIsInBhdGhuYW1lIiwiYW5hbHl0aWNzVHJhY2siXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvRGFzaGJvYXJkTWFwL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2ludCB9IGZyb20gJy4uLy4uL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcbmltcG9ydCB7IElBcmVhIH0gZnJvbSAnLi4vLi4vc3RvcmUvYXJlYXMvbW9kZWxzL0lBcmVhJztcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzL21hY3JvJztcbmltcG9ydCB7IGFuYWx5dGljc1RyYWNrIH0gZnJvbSAnc3JjL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbGl6ZVdXVFBEYXRhID0gKHBheWxvYWQpID0+IHtcbiAgaWYgKHBheWxvYWQuZGF0YUV4aXN0cygpKSB7XG4gICAgY29uc3Qgd3d0cEluZnAgPSBjYWxjdWxhdGVXV1RQSW5mbyhwYXlsb2FkKTtcbiAgICBwYXlsb2FkLnNldFdXVFBJbmZvKHd3dHBJbmZwKTtcbiAgICBwYXlsb2FkLnNldFBvaW50cyhwYXlsb2FkLnBvaW50c19kYXRhLml0ZW1zKTtcbiAgICBwYXlsb2FkLnNldEFyZWFzKHBheWxvYWQuYXJlYXNfZGF0YS5uZXdBcmVhcyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzb3J0QXJlYXMgPSAoYXJlYXMpID0+IHtcbiAgaWYgKCFhcmVhcykgcmV0dXJuIGFyZWFzO1xuXG4gIGNvbnN0IHRlbXAgPSBbLi4uYXJlYXNdO1xuICBjb25zdCBzb3J0ZWRBcmVhcyA9IHRlbXBcbiAgICAuc29ydCgoYSwgYikgPT5cbiAgICAgIGEuaXNfYXNzZXNzbWVudCA9PT0gYi5pc19hc3Nlc3NtZW50ID8gMCA6IGEuaXNfYXNzZXNzbWVudCA/IC0xIDogMSxcbiAgICApXG4gICAgLnNvcnQoKGEsIGIpID0+IGIuYXJlYV9zY29yZSAtIGEuYXJlYV9zY29yZSk7XG5cbiAgcmV0dXJuIHNvcnRlZEFyZWFzO1xufTtcblxuZXhwb3J0IGNvbnN0IHNvcnRQb2ludHMgPSAocG9pbnRzKSA9PiB7XG4gIGlmICghcG9pbnRzKSByZXR1cm4gcG9pbnRzO1xuXG4gIGNvbnN0IHRlbXAgPSBbLi4ucG9pbnRzXTtcbiAgY29uc3Qgc29ydGVkUG9pbnRzID0gdGVtcFxuICAgIC5zb3J0KChhLCBiKSA9PiAoYS5oYXNfZGV2aWNlID09PSBiLmhhc19kZXZpY2UgPyAwIDogYS5oYXNfZGV2aWNlID8gLTEgOiAxKSlcbiAgICAuc29ydCgoYSwgYikgPT4gYi5hcmVhX3Njb3JlIC0gYS5hcmVhX3Njb3JlKTtcblxuICByZXR1cm4gc29ydGVkUG9pbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUhpc3RvcnkgPSAob2JqZWN0LCBoaXN0b3J5KSA9PiB7XG4gIGNvbnN0IGFyZWEgPSBvYmplY3QuYXJlYV9pZCA/IG9iamVjdCA6IG51bGw7XG4gIGNvbnN0IHBvaW50ID0gb2JqZWN0LmlkID8gb2JqZWN0IDogbnVsbDtcblxuICBpZiAocG9pbnQpIHtcbiAgICBjb25zdCB0eXBlID1cbiAgICAgIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCcgPyAnd3d0cCcgOiAnc2l0ZSc7XG4gICAgaGlzdG9yeS5wdXNoKGAvZGFzaGJvYXJkX3YyLyR7dHlwZX0vJHtwb2ludC5pZH0ke2hpc3RvcnkubG9jYXRpb24uc2VhcmNofWApO1xuICB9IGVsc2Uge1xuICAgIGlmIChhcmVhKSB7XG4gICAgICBjb25zdCB0eXBlID0gYXJlYS5pc192aXJ0dWFsID8gJ3ZhcmVhJyA6ICdhcmVhJztcbiAgICAgIGhpc3RvcnkucHVzaChcbiAgICAgICAgYC9kYXNoYm9hcmRfdjIvJHt0eXBlfS8ke2FyZWEuYXJlYV9pZH0ke2hpc3RvcnkubG9jYXRpb24uc2VhcmNofWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZVdXVFBJbmZvID0gKHsgaWQsIHBvaW50c19kYXRhLCBhcmVhc19kYXRhIH0pID0+IHtcbiAgbGV0IFdXVFA6IElQb2ludCA9IHBvaW50c19kYXRhLml0ZW1zLmZpbmQoXG4gICAgKHBvaW50OiBJUG9pbnQpID0+IHBvaW50LmlkID09PSBwYXJzZUludChpZCksXG4gICk7XG5cbiAgaWYgKFdXVFAgPT09IHVuZGVmaW5lZCkge1xuICAgIFdXVFAgPSBwb2ludHNfZGF0YS5pdGVtcz8uZmluZChcbiAgICAgIChwb2ludDogSVBvaW50KSA9PiBwb2ludC5ncm91cC5hcmVhX2lkID09PSBwYXJzZUludChpZCksXG4gICAgKTtcbiAgfVxuXG4gIGxldCBXV1RQQXJlYTogSUFyZWEgPSBhcmVhc19kYXRhLm5ld0FyZWFzLmZpbmQoXG4gICAgKGFyZWE6IElBcmVhKSA9PiBwYXJzZUludChpZCkgPT09IGFyZWEuYXJlYV9pZCxcbiAgKTtcblxuICBpZiAoV1dUUCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgV1dUUCA9IHtcbiAgICAgIC4uLldXVFAsXG4gICAgICBmb3JXV1RQTWFwOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4geyBwb2ludDogV1dUUCwgYXJlYTogV1dUUEFyZWEgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQb3B1cEZvck9iamVjdCA9IChhcmdzKSA9PiB7XG4gIGFyZ3MubWFya2VyLmJpbmRQb3B1cChgPGRpdiBjbGFzcz1cIndpZGdldC1jb250YWluZXJcIj48L2Rpdj5gLCB7XG4gICAgbWF4V2lkdGg6IDQwMCxcbiAgICBtaW5XaWR0aDogNDAwLFxuICAgIG1heEhlaWdodDogNDAwLFxuICAgIG1pbkhlaWdodDogNDAwLFxuICB9KTtcblxuICBhcmdzLm1hcmtlci5vbigncG9wdXBvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCQoJy53aWRnZXQtY29udGFpbmVyJykuY29udGVudHMoKS5sZW5ndGggPD0gMCkge1xuICAgICAgICAkKCcud2lkZ2V0LWNvbnRhaW5lcicpLmFwcGVuZChhcmdzLnJlbmRlcmVkRWxlbWVudCk7XG4gICAgICB9XG4gICAgfSwgMjAwKTtcbiAgfSk7XG5cbiAgYXJncy5tYXJrZXIub24oJ3BvcHVwY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgYXJncy5tYXJrZXIudW5iaW5kUG9wdXAoKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9jdXNNYXAgPSAob2JqZWN0LCBtYXApID0+IHtcbiAgaWYgKG9iamVjdCA9PT0gbnVsbCB8fCBtYXAgPT09IG51bGwpIHJldHVybjtcblxuICBsZXQgbGF0bG5nczogYW55ID0gW107XG4gIGlmIChvYmplY3QgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbWFwLl9sYXllcnMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgbWFwLl9sYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCA9PT0gJ0FyZWEnIHx8XG4gICAgICAgIG1hcC5fbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgPT09ICdQb2ludCdcbiAgICAgICkge1xuICAgICAgICBsYXRsbmdzLnB1c2gobWFwLl9sYXllcnNbcHJvcGVydHldLl9ib3VuZHMpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAob2JqZWN0LnN1Yl9hcmVhcyAmJiBvYmplY3Quc3ViX2FyZWFzLmxlbmd0aCA+IDApIHtcbiAgICAgIG9iamVjdC5zdWJfYXJlYXMuZm9yRWFjaCgoc3ViX2FyZWEpID0+IHtcbiAgICAgICAgaWYgKHN1Yl9hcmVhPy5zaGFwZV9kYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdWJfYXJlYS5zaGFwZV9kYXRhLmZvckVhY2goKGxhdGxuZykgPT4ge1xuICAgICAgICAgICAgbGF0bG5ncy5wdXNoKGxhdGxuZyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob2JqZWN0LmlubGV0cyAmJiBvYmplY3QuaW5sZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb2JqZWN0LmlubGV0cy5mb3JFYWNoKChpbmxldCkgPT4ge1xuICAgICAgICAgIGxhdGxuZ3MucHVzaChbaW5sZXQubGF0aXR1ZGUsIGlubGV0LmxvbmdpdHVkZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChvYmplY3Q/LnNoYXBlX2RhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9iamVjdC5zaGFwZV9kYXRhLmZvckVhY2goKGxhdGxuZykgPT4ge1xuICAgICAgICAgICAgbGF0bG5ncy5wdXNoKGxhdGxuZyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGF0bG5ncy5wdXNoKFtvYmplY3QubGF0aXR1ZGUsIG9iamVjdC5sb25naXR1ZGVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBsYXRsbmdzLmxlbmd0aCA+IDAgJiZcbiAgICBtYXAgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgbWFwLl9sYXllcnMgPT09ICdvYmplY3QnICYmXG4gICAgbWFwLl9sYXllcnMubGVuZ3RoID09PSB1bmRlZmluZWQgJiZcbiAgICBtYXAuZml0Qm91bmRzKGxhdGxuZ3MpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNpbXBsZVRydW5jYXRlID0gKHN0ciwgbGVuZ3RoKSA9PiB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgbGVuZ3RoICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudHMuIFBsZWFzZSBwcm92aWRlIGEgc3RyaW5nIGFuZCBhIG51bWJlci4nKTtcbiAgfVxuXG4gIGlmIChzdHIubGVuZ3RoIDw9IGxlbmd0aCkge1xuICAgIHJldHVybiBzdHI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgbGVuZ3RoKSArICcuLi4nO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UG9pbnRzID0gKGxpc3Q6IGFueVtdLCBwb2ludHNfZGF0YTogSVBvaW50W10pID0+IHtcbiAgaWYgKHBvaW50c19kYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGxpc3Q7XG5cbiAgcmV0dXJuIGxpc3RcbiAgICAubWFwKChpdGVtKSA9PiBwb2ludHNfZGF0YS5maW5kKChwb2ludCkgPT4gcG9pbnQuaWQgPT09IGl0ZW0uaWQpKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG59O1xuXG5leHBvcnQgY29uc3QgQ2FyZENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIC5jYXJkIHtcbiAgICB0cmFuc2l0aW9uOiAwLjFzIGVhc2UtaW4tb3V0O1xuICAgIGJveC1zaGFkb3c6IDBweCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4yKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgdHJhbnNpdGlvbjogMC4ycyBlYXNlLWluLW91dDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCAzcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG5gO1xuXG4vLyBTZW5kIGFuYWx5dGljcyBldmVudHMgZnJvbSBzZXZlcmFsIHBsYWNlcyBpbiB3d3RwbWFwLlxuLy8gc3ViamVjdCBpcyB0aGUgbmFtZSBvZiB0aGUgZXZlbnRcbi8vIHNlbGVjdGlvbiBpcyB0aGUgb2JqZWN0IHRoYXQgd2FzIHNlbGVjdGVkXG4vLyBzcGVjaWZpY0ZpZWxkcyBpcyBhbiBvYmplY3Qgd2l0aCBldmVudCBmaWVsZHMgdG8gc2VuZCB3aGljaCBhcmUgY29tYmluZWQgd2l0aCB0aGUgcmVzdCBvZiB0aGUgZmllbGRzXG5leHBvcnQgY29uc3Qgc2VuZEFuYWx5dGljc0V2ZW50ID0gKFxuICBzdWJqZWN0OiBzdHJpbmcsXG4gIHNlbGVjdGlvbjogc3RyaW5nLFxuICBldmVudEZpZWxkczogT2JqZWN0LFxuKSA9PiB7XG4gIGNvbnN0IGRhdGEgPSB7XG4gICAgc2VsZWN0aW9uOiBzZWxlY3Rpb24sXG4gICAgcGFnZV9uYW1lOiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsXG4gICAgLi4uZXZlbnRGaWVsZHMsXG4gIH07XG4gIGFuYWx5dGljc1RyYWNrKHN1YmplY3QsIGRhdGEpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFFTyxNQUFNRSxrQkFBa0IsR0FBSUMsT0FBTyxJQUFLO0VBQzdDLElBQUlBLE9BQU8sQ0FBQ0MsVUFBVSxDQUFDLENBQUMsRUFBRTtJQUN4QixNQUFNQyxRQUFRLEdBQUdDLGlCQUFpQixDQUFDSCxPQUFPLENBQUM7SUFDM0NBLE9BQU8sQ0FBQ0ksV0FBVyxDQUFDRixRQUFRLENBQUM7SUFDN0JGLE9BQU8sQ0FBQ0ssU0FBUyxDQUFDTCxPQUFPLENBQUNNLFdBQVcsQ0FBQ0MsS0FBSyxDQUFDO0lBQzVDUCxPQUFPLENBQUNRLFFBQVEsQ0FBQ1IsT0FBTyxDQUFDUyxVQUFVLENBQUNDLFFBQVEsQ0FBQztFQUMvQztBQUNGLENBQUM7QUFBQ0MsT0FBQSxDQUFBWixrQkFBQSxHQUFBQSxrQkFBQTtBQUVLLE1B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
180
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfanF1ZXJ5IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfQW5hbHl0aWNzIiwiaW5pdGlhbGl6ZVdXVFBEYXRhIiwicGF5bG9hZCIsImRhdGFFeGlzdHMiLCJ3d3RwSW5mcCIsImNhbGN1bGF0ZVdXVFBJbmZvIiwic2V0V1dUUEluZm8iLCJzZXRQb2ludHMiLCJwb2ludHNfZGF0YSIsIml0ZW1zIiwic2V0QXJlYXMiLCJhcmVhc19kYXRhIiwibmV3QXJlYXMiLCJleHBvcnRzIiwic29ydEFyZWFzIiwiYXJlYXMiLCJ0ZW1wIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImRlZmF1bHQiLCJzb3J0ZWRBcmVhcyIsInNvcnQiLCJhIiwiYiIsImlzX2Fzc2Vzc21lbnQiLCJhcmVhX3Njb3JlIiwic29ydFBvaW50cyIsInBvaW50cyIsInNvcnRlZFBvaW50cyIsImhhc19kZXZpY2UiLCJ1cGRhdGVIaXN0b3J5Iiwib2JqZWN0IiwiaGlzdG9yeSIsImFyZWEiLCJhcmVhX2lkIiwicG9pbnQiLCJpZCIsInR5cGUiLCJncm91cCIsInB1c2giLCJjb25jYXQiLCJsb2NhdGlvbiIsInNlYXJjaCIsImlzX3ZpcnR1YWwiLCJfcmVmIiwiV1dUUCIsImZpbmQiLCJwYXJzZUludCIsInVuZGVmaW5lZCIsIl9wb2ludHNfZGF0YSRpdGVtcyIsIldXVFBBcmVhIiwiX29iamVjdFNwcmVhZDIiLCJmb3JXV1RQTWFwIiwiY3JlYXRlUG9wdXBGb3JPYmplY3QiLCJhcmdzIiwibWFya2VyIiwiYmluZFBvcHVwIiwibWF4V2lkdGgiLCJtaW5XaWR0aCIsIm1heEhlaWdodCIsIm1pbkhlaWdodCIsIm9uIiwic2V0VGltZW91dCIsIiQiLCJjb250ZW50cyIsImxlbmd0aCIsImFwcGVuZCIsInJlbmRlcmVkRWxlbWVudCIsInVuYmluZFBvcHVwIiwiZm9jdXNNYXAiLCJtYXAiLCJsYXRsbmdzIiwicHJvcGVydHkiLCJfbGF5ZXJzIiwia2FuZG9fb2JqZWN0IiwiX2JvdW5kcyIsInN1Yl9hcmVhcyIsImZvckVhY2giLCJzdWJfYXJlYSIsInNoYXBlX2RhdGEiLCJsYXRsbmciLCJpbmxldHMiLCJpbmxldCIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiX3R5cGVvZjIiLCJmaXRCb3VuZHMiLCJzaW1wbGVUcnVuY2F0ZSIsInN0ciIsIkVycm9yIiwic3Vic3RyaW5nIiwiZ2V0UG9pbnRzIiwibGlzdCIsIml0ZW0iLCJmaWx0ZXIiLCJCb29sZWFuIiwiQ2FyZENvbnRhaW5lciIsInN0eWxlZCIsImRpdiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwic2VuZEFuYWx5dGljc0V2ZW50Iiwic3ViamVjdCIsInNlbGVjdGlvbiIsImV2ZW50RmllbGRzIiwiZGF0YSIsInBhZ2VfbmFtZSIsIndpbmRvdyIsInBhdGhuYW1lIiwiYW5hbHl0aWNzVHJhY2siXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvRGFzaGJvYXJkTWFwL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2ludCB9IGZyb20gJy4uLy4uL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcbmltcG9ydCB7IElBcmVhIH0gZnJvbSAnLi4vLi4vc3RvcmUvYXJlYXMvbW9kZWxzL0lBcmVhJztcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzL21hY3JvJztcbmltcG9ydCB7IGFuYWx5dGljc1RyYWNrIH0gZnJvbSAnc3JjL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbGl6ZVdXVFBEYXRhID0gKHBheWxvYWQpID0+IHtcbiAgaWYgKHBheWxvYWQuZGF0YUV4aXN0cygpKSB7XG4gICAgY29uc3Qgd3d0cEluZnAgPSBjYWxjdWxhdGVXV1RQSW5mbyhwYXlsb2FkKTtcbiAgICBwYXlsb2FkLnNldFdXVFBJbmZvKHd3dHBJbmZwKTtcbiAgICBwYXlsb2FkLnNldFBvaW50cyhwYXlsb2FkLnBvaW50c19kYXRhLml0ZW1zKTtcbiAgICBwYXlsb2FkLnNldEFyZWFzKHBheWxvYWQuYXJlYXNfZGF0YS5uZXdBcmVhcyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzb3J0QXJlYXMgPSAoYXJlYXMpID0+IHtcbiAgaWYgKCFhcmVhcykgcmV0dXJuIGFyZWFzO1xuXG4gIGNvbnN0IHRlbXAgPSBbLi4uYXJlYXNdO1xuICBjb25zdCBzb3J0ZWRBcmVhcyA9IHRlbXBcbiAgICAuc29ydCgoYSwgYikgPT5cbiAgICAgIGEuaXNfYXNzZXNzbWVudCA9PT0gYi5pc19hc3Nlc3NtZW50ID8gMCA6IGEuaXNfYXNzZXNzbWVudCA/IC0xIDogMSxcbiAgICApXG4gICAgLnNvcnQoKGEsIGIpID0+IGIuYXJlYV9zY29yZSAtIGEuYXJlYV9zY29yZSk7XG5cbiAgcmV0dXJuIHNvcnRlZEFyZWFzO1xufTtcblxuZXhwb3J0IGNvbnN0IHNvcnRQb2ludHMgPSAocG9pbnRzKSA9PiB7XG4gIGlmICghcG9pbnRzKSByZXR1cm4gcG9pbnRzO1xuXG4gIGNvbnN0IHRlbXAgPSBbLi4ucG9pbnRzXTtcbiAgY29uc3Qgc29ydGVkUG9pbnRzID0gdGVtcFxuICAgIC5zb3J0KChhLCBiKSA9PiAoYS5oYXNfZGV2aWNlID09PSBiLmhhc19kZXZpY2UgPyAwIDogYS5oYXNfZGV2aWNlID8gLTEgOiAxKSlcbiAgICAuc29ydCgoYSwgYikgPT4gYi5hcmVhX3Njb3JlIC0gYS5hcmVhX3Njb3JlKTtcblxuICByZXR1cm4gc29ydGVkUG9pbnRzO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUhpc3RvcnkgPSAob2JqZWN0LCBoaXN0b3J5KSA9PiB7XG4gIGNvbnN0IGFyZWEgPSBvYmplY3QuYXJlYV9pZCA/IG9iamVjdCA6IG51bGw7XG4gIGNvbnN0IHBvaW50ID0gb2JqZWN0LmlkID8gb2JqZWN0IDogbnVsbDtcblxuICBpZiAocG9pbnQpIHtcbiAgICBjb25zdCB0eXBlID1cbiAgICAgIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCcgPyAnd3d0cCcgOiAnc2l0ZSc7XG4gICAgaGlzdG9yeS5wdXNoKGAvZGFzaGJvYXJkX3YyLyR7dHlwZX0vJHtwb2ludC5pZH0ke2hpc3RvcnkubG9jYXRpb24uc2VhcmNofWApO1xuICB9IGVsc2Uge1xuICAgIGlmIChhcmVhKSB7XG4gICAgICBjb25zdCB0eXBlID0gYXJlYS5pc192aXJ0dWFsID8gJ3ZhcmVhJyA6ICdhcmVhJztcbiAgICAgIGhpc3RvcnkucHVzaChcbiAgICAgICAgYC9kYXNoYm9hcmRfdjIvJHt0eXBlfS8ke2FyZWEuYXJlYV9pZH0ke2hpc3RvcnkubG9jYXRpb24uc2VhcmNofWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZVdXVFBJbmZvID0gKHsgaWQsIHBvaW50c19kYXRhLCBhcmVhc19kYXRhIH0pID0+IHtcbiAgbGV0IFdXVFA6IElQb2ludCA9IHBvaW50c19kYXRhLml0ZW1zLmZpbmQoXG4gICAgKHBvaW50OiBJUG9pbnQpID0+IHBvaW50LmlkID09PSBwYXJzZUludChpZCksXG4gICk7XG5cbiAgaWYgKFdXVFAgPT09IHVuZGVmaW5lZCkge1xuICAgIFdXVFAgPSBwb2ludHNfZGF0YS5pdGVtcz8uZmluZChcbiAgICAgIChwb2ludDogSVBvaW50KSA9PiBwb2ludC5ncm91cC5hcmVhX2lkID09PSBwYXJzZUludChpZCksXG4gICAgKTtcbiAgfVxuXG4gIGxldCBXV1RQQXJlYTogSUFyZWEgPSBhcmVhc19kYXRhLm5ld0FyZWFzLmZpbmQoXG4gICAgKGFyZWE6IElBcmVhKSA9PiBwYXJzZUludChpZCkgPT09IGFyZWEuYXJlYV9pZCxcbiAgKTtcblxuICBpZiAoV1dUUCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgV1dUUCA9IHtcbiAgICAgIC4uLldXVFAsXG4gICAgICBmb3JXV1RQTWFwOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4geyBwb2ludDogV1dUUCwgYXJlYTogV1dUUEFyZWEgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQb3B1cEZvck9iamVjdCA9IChhcmdzKSA9PiB7XG4gIGFyZ3MubWFya2VyLmJpbmRQb3B1cChgPGRpdiBjbGFzcz1cIndpZGdldC1jb250YWluZXJcIj48L2Rpdj5gLCB7XG4gICAgbWF4V2lkdGg6IDQwMCxcbiAgICBtaW5XaWR0aDogNDAwLFxuICAgIG1heEhlaWdodDogNDAwLFxuICAgIG1pbkhlaWdodDogNDAwLFxuICB9KTtcblxuICBhcmdzLm1hcmtlci5vbigncG9wdXBvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCQoJy53aWRnZXQtY29udGFpbmVyJykuY29udGVudHMoKS5sZW5ndGggPD0gMCkge1xuICAgICAgICAkKCcud2lkZ2V0LWNvbnRhaW5lcicpLmFwcGVuZChhcmdzLnJlbmRlcmVkRWxlbWVudCk7XG4gICAgICB9XG4gICAgfSwgMjAwKTtcbiAgfSk7XG5cbiAgYXJncy5tYXJrZXIub24oJ3BvcHVwY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgYXJncy5tYXJrZXIudW5iaW5kUG9wdXAoKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9jdXNNYXAgPSAob2JqZWN0LCBtYXApID0+IHtcbiAgaWYgKG9iamVjdCA9PT0gbnVsbCB8fCBtYXAgPT09IG51bGwpIHJldHVybjtcblxuICBsZXQgbGF0bG5nczogYW55ID0gW107XG4gIGlmIChvYmplY3QgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbWFwLl9sYXllcnMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgbWFwLl9sYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCA9PT0gJ0FyZWEnIHx8XG4gICAgICAgIG1hcC5fbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgPT09ICdQb2ludCdcbiAgICAgICkge1xuICAgICAgICBsYXRsbmdzLnB1c2gobWFwLl9sYXllcnNbcHJvcGVydHldLl9ib3VuZHMpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAob2JqZWN0LnN1Yl9hcmVhcyAmJiBvYmplY3Quc3ViX2FyZWFzLmxlbmd0aCA+IDApIHtcbiAgICAgIG9iamVjdC5zdWJfYXJlYXMuZm9yRWFjaCgoc3ViX2FyZWEpID0+IHtcbiAgICAgICAgaWYgKHN1Yl9hcmVhPy5zaGFwZV9kYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdWJfYXJlYS5zaGFwZV9kYXRhLmZvckVhY2goKGxhdGxuZykgPT4ge1xuICAgICAgICAgICAgbGF0bG5ncy5wdXNoKGxhdGxuZyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob2JqZWN0LmlubGV0cyAmJiBvYmplY3QuaW5sZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb2JqZWN0LmlubGV0cy5mb3JFYWNoKChpbmxldCkgPT4ge1xuICAgICAgICAgIGxhdGxuZ3MucHVzaChbaW5sZXQubGF0aXR1ZGUsIGlubGV0LmxvbmdpdHVkZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChvYmplY3Q/LnNoYXBlX2RhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9iamVjdC5zaGFwZV9kYXRhLmZvckVhY2goKGxhdGxuZykgPT4ge1xuICAgICAgICAgICAgbGF0bG5ncy5wdXNoKGxhdGxuZyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGF0bG5ncy5wdXNoKFtvYmplY3QubGF0aXR1ZGUsIG9iamVjdC5sb25naXR1ZGVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBsYXRsbmdzLmxlbmd0aCA+IDAgJiZcbiAgICBtYXAgIT09IG51bGwgJiZcbiAgICB0eXBlb2YgbWFwLl9sYXllcnMgPT09ICdvYmplY3QnICYmXG4gICAgbWFwLl9sYXllcnMubGVuZ3RoID09PSB1bmRlZmluZWQgJiZcbiAgICBtYXAuZml0Qm91bmRzKGxhdGxuZ3MpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNpbXBsZVRydW5jYXRlID0gKHN0ciwgbGVuZ3RoKSA9PiB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgbGVuZ3RoICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudHMuIFBsZWFzZSBwcm92aWRlIGEgc3RyaW5nIGFuZCBhIG51bWJlci4nKTtcbiAgfVxuXG4gIGlmIChzdHIubGVuZ3RoIDw9IGxlbmd0aCkge1xuICAgIHJldHVybiBzdHI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgbGVuZ3RoKSArICcuLi4nO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UG9pbnRzID0gKGxpc3Q6IGFueVtdLCBwb2ludHNfZGF0YTogSVBvaW50W10pID0+IHtcbiAgaWYgKHBvaW50c19kYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGxpc3Q7XG5cbiAgcmV0dXJuIGxpc3RcbiAgICAubWFwKChpdGVtKSA9PiBwb2ludHNfZGF0YS5maW5kKChwb2ludCkgPT4gcG9pbnQuaWQgPT09IGl0ZW0uaWQpKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG59O1xuXG5leHBvcnQgY29uc3QgQ2FyZENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIC5jYXJkIHtcbiAgICB0cmFuc2l0aW9uOiAwLjFzIGVhc2UtaW4tb3V0O1xuICAgIGJveC1zaGFkb3c6IDBweCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4yKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgdHJhbnNpdGlvbjogMC4ycyBlYXNlLWluLW91dDtcbiAgICAgIGJveC1zaGFkb3c6IDBweCAzcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG5gO1xuXG4vLyBTZW5kIGFuYWx5dGljcyBldmVudHMgZnJvbSBzZXZlcmFsIHBsYWNlcyBpbiB3d3RwbWFwLlxuLy8gc3ViamVjdCBpcyB0aGUgbmFtZSBvZiB0aGUgZXZlbnRcbi8vIHNlbGVjdGlvbiBpcyB0aGUgb2JqZWN0IHRoYXQgd2FzIHNlbGVjdGVkXG4vLyBzcGVjaWZpY0ZpZWxkcyBpcyBhbiBvYmplY3Qgd2l0aCBldmVudCBmaWVsZHMgdG8gc2VuZCB3aGljaCBhcmUgY29tYmluZWQgd2l0aCB0aGUgcmVzdCBvZiB0aGUgZmllbGRzXG5leHBvcnQgY29uc3Qgc2VuZEFuYWx5dGljc0V2ZW50ID0gKFxuICBzdWJqZWN0OiBzdHJpbmcsXG4gIHNlbGVjdGlvbjogc3RyaW5nLFxuICBldmVudEZpZWxkczogT2JqZWN0LFxuKSA9PiB7XG4gIGNvbnN0IGRhdGEgPSB7XG4gICAgc2VsZWN0aW9uOiBzZWxlY3Rpb24sXG4gICAgcGFnZV9uYW1lOiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsXG4gICAgLi4uZXZlbnRGaWVsZHMsXG4gIH07XG4gIGFuYWx5dGljc1RyYWNrKHN1YmplY3QsIGRhdGEpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFFTyxJQUFNRSxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJQyxPQUFPLEVBQUs7RUFDN0MsSUFBSUEsT0FBTyxDQUFDQyxVQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ3hCLElBQU1DLFFBQVEsR0FBR0MsaUJBQWlCLENBQUNILE9BQU8sQ0FBQztJQUMzQ0EsT0FBTyxDQUFDSSxXQUFXLENBQUNGLFFBQVEsQ0FBQztJQUM3QkYsT0FBTyxDQUFDSyxTQUFTLENBQUNMLE9BQU8sQ0FBQ00sV0FBVyxDQUFDQyxLQUFLLENBQUM7SUFDNUNQLE9BQU8sQ0FBQ1EsUUFBUSxDQUFD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