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

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 (571) hide show
  1. package/lib/Router.js +35 -72
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +23 -33
  3. package/lib/Widgets/EventsRow/EventsRow.js +25 -37
  4. package/lib/Widgets/Map/GraphUtils.js +3 -3
  5. package/lib/Widgets/Map/Map.js +67 -84
  6. package/lib/Widgets/Map/MapUtils.js +40 -39
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +50 -86
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +28 -33
  9. package/lib/Widgets/Map/areas/AreaUtils.js +49 -49
  10. package/lib/Widgets/Map/areas/Patterns.js +4 -4
  11. package/lib/Widgets/Map/edges/Edge.js +24 -31
  12. package/lib/Widgets/Map/edges/Edges.js +19 -23
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +23 -44
  14. package/lib/Widgets/Map/events/Event.js +17 -17
  15. package/lib/Widgets/Map/events/EventIndicator.js +57 -52
  16. package/lib/Widgets/Map/events/EventPath.js +24 -22
  17. package/lib/Widgets/Map/events/EventUtils.js +56 -79
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +17 -18
  19. package/lib/Widgets/Map/events/PointOfEvent.js +29 -34
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +29 -36
  21. package/lib/Widgets/Map/events/Snail.js +19 -20
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +93 -86
  23. package/lib/Widgets/Map/map/FloatingGraph.js +22 -18
  24. package/lib/Widgets/Map/map/GraphDateButton.js +25 -17
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +13 -12
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +16 -15
  27. package/lib/Widgets/Map/points/PointIcon.js +15 -13
  28. package/lib/Widgets/Map/points/PointMarker.js +67 -95
  29. package/lib/Widgets/Map/points/PointMarkers.js +45 -66
  30. package/lib/Widgets/Map/points/PointUtils.js +58 -64
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +27 -44
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +14 -17
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +10 -11
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +3 -3
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +28 -57
  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 +11 -8
  39. package/lib/Widgets/MostPolluting/Factories/Factories.js +33 -64
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +14 -17
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +7 -7
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +12 -10
  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 +19 -24
  47. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +18 -22
  48. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +6 -4
  49. package/lib/Widgets/MostPolluting/ShowMore/styles.js +6 -4
  50. package/lib/Widgets/MostPolluting/assets/index.js +10 -10
  51. package/lib/Widgets/MostPolluting/components/ChangePercent.js +19 -13
  52. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +35 -30
  53. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +34 -31
  54. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +39 -35
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +27 -26
  56. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +51 -47
  57. package/lib/Widgets/MostPolluting/styles.js +3 -3
  58. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +7 -5
  59. package/lib/Widgets/PotentialImpactSummary/Icon.js +7 -5
  60. package/lib/Widgets/PotentialImpactSummary/index.js +19 -27
  61. package/lib/Widgets/PotentialImpactSummary/index.test.js +47 -52
  62. package/lib/Widgets/PotentialImpactSummary/styles.js +7 -7
  63. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +9 -7
  64. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +22 -17
  65. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +35 -32
  66. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +26 -24
  67. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +35 -37
  68. package/lib/Widgets/QualitySummary/QualitySummary.js +9 -13
  69. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -4
  70. package/lib/Widgets/QualitySummary/styles.js +19 -13
  71. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +12 -13
  72. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +25 -24
  73. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +29 -24
  74. package/lib/Widgets/UtilityInformation/UtilityInformation.js +23 -40
  75. package/lib/Widgets/UtilityInformation/styles.js +31 -22
  76. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -3
  77. package/lib/assets/icons/TopNavbar/index.js +6 -6
  78. package/lib/assets/icons/TrendSvg.js +6 -6
  79. package/lib/assets/icons/index.js +14 -14
  80. package/lib/assets/icons/kandoStepper/index.js +5 -5
  81. package/lib/assets/icons/siteTypes/index.js +1 -1
  82. package/lib/components/ApplyButton/ApplyButton.js +8 -8
  83. package/lib/components/Backdrop/Backdrop.js +6 -4
  84. package/lib/components/ContentLoader/ContentLoader.js +11 -9
  85. package/lib/components/ContentLoader/index.js +1 -1
  86. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +10 -9
  87. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +3 -5
  88. package/lib/components/CustomInputs/DoubleTabs/styles.js +20 -12
  89. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +12 -19
  90. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +6 -4
  91. package/lib/components/CustomInputs/Search/Search.js +39 -60
  92. package/lib/components/CustomInputs/Select/Select.js +42 -55
  93. package/lib/components/CustomInputs/Select/Select.stories.js +4 -6
  94. package/lib/components/DamageType/DamageType.js +34 -56
  95. package/lib/components/DataLoaderError/DataLoaderError.js +8 -6
  96. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +9 -10
  97. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +70 -71
  98. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +27 -37
  99. package/lib/components/DischargeHeatmap/HighchartsOptions.js +10 -12
  100. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -3
  101. package/lib/components/DischargeHeatmap/popupText.js +9 -9
  102. package/lib/components/DischargeHeatmap/titles.js +3 -3
  103. package/lib/components/ErrorBoundary.js +27 -41
  104. package/lib/components/Events/Events.js +28 -45
  105. package/lib/components/Graph/Graph.js +67 -86
  106. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +17 -21
  107. package/lib/components/Header/DoubleTabs/DoubleTabs.js +18 -26
  108. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +3 -5
  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 +3 -5
  112. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +23 -23
  113. package/lib/components/Header/InfoBar/InfoBar.js +41 -34
  114. package/lib/components/Header/InfoBar/Search/Control.js +9 -9
  115. package/lib/components/Header/InfoBar/Search/GroupLabel.js +6 -4
  116. package/lib/components/Header/InfoBar/Search/Search.js +14 -19
  117. package/lib/components/Header/InfoBar/Search/SearchContainer.js +15 -27
  118. package/lib/components/Header/InfoBar/Search/searchStyle.js +41 -49
  119. package/lib/components/Header/InfoBar/TimeFilter.js +11 -14
  120. package/lib/components/Header/KandoNavbar/KandoNavbar.js +62 -87
  121. package/lib/components/Header/Slideshow/Slideshow.js +67 -89
  122. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +6 -4
  123. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +21 -23
  124. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +13 -13
  125. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +26 -32
  126. package/lib/components/Header/Toolbar/Toolbar.js +55 -74
  127. package/lib/components/InfoBar/InfoBar.js +10 -23
  128. package/lib/components/InfoBar/InfoBar.stories.js +3 -5
  129. package/lib/components/KandoModal/KandoModal.js +23 -37
  130. package/lib/components/Link.js +8 -7
  131. package/lib/components/Links/CustomRedirect/CustomRedirect.js +9 -8
  132. package/lib/components/Links/StyledLink/StyledLink.js +12 -12
  133. package/lib/components/Links/StyledNavLink/StyledNavLink.js +11 -10
  134. package/lib/components/LiveEvents/CarouselSlide.js +9 -7
  135. package/lib/components/LiveEvents/LiveEvents.js +5 -3
  136. package/lib/components/LoaderByPercent/LoaderByPercent.js +36 -28
  137. package/lib/components/Map/Map.js +19 -22
  138. package/lib/components/Modal/Modal.js +9 -9
  139. package/lib/components/NarrowHeader.js +17 -31
  140. package/lib/components/PointInfo/PointInfo.js +18 -16
  141. package/lib/components/PopupModal/PopupModal.js +12 -16
  142. package/lib/components/PopupModal/PopupModal.stories.js +15 -19
  143. package/lib/components/Sector/Sector.js +8 -6
  144. package/lib/components/Sector/Sector.test.js +19 -20
  145. package/lib/components/Sector/sectorIcons.js +2 -2
  146. package/lib/components/SevereEvent/Eta/Eta.js +48 -51
  147. package/lib/components/SevereEvent/Eta/styles.js +10 -6
  148. package/lib/components/SevereEvent/SevereEvent.js +27 -34
  149. package/lib/components/Spinner/Spinner.js +7 -7
  150. package/lib/components/Spinner/Spinner.stories.js +4 -6
  151. package/lib/components/Spinner/styles.js +20 -12
  152. package/lib/components/Tabs/Tabs.js +18 -27
  153. package/lib/components/Tabs/Tabs.stories.js +4 -6
  154. package/lib/components/Tabs/assets/index.js +5 -5
  155. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +12 -15
  156. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +34 -45
  157. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +19 -31
  158. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +16 -21
  159. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +11 -11
  160. package/lib/components/TimeRangeSelector/TimeRangeList.js +23 -24
  161. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +16 -24
  162. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +28 -29
  163. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +4 -6
  164. package/lib/components/TimeRangeSelector/constants.js +3 -3
  165. package/lib/components/Toggle/Toggle.js +10 -15
  166. package/lib/components/TrendGraph/TrendGraph.js +22 -38
  167. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +24 -30
  168. package/lib/development-environment/index.js +8 -12
  169. package/lib/development-environment/mock/browser.js +2 -4
  170. package/lib/development-environment/mock/get.js +8 -10
  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 +13 -22
  192. package/lib/development-environment/togly/ToglyItem.js +25 -28
  193. package/lib/development-environment/togly/init.js +2 -2
  194. package/lib/development-environment/togly/macro.js +13 -9
  195. package/lib/development-environment/togly/useDoubleKeyDown.js +7 -9
  196. package/lib/development-environment/togly/useLocalStorage.js +13 -18
  197. package/lib/hooks/useApi.js +19 -55
  198. package/lib/hooks/useApiWithDashboardQuery.js +30 -49
  199. package/lib/hooks/useClickOutside.js +3 -3
  200. package/lib/hooks/useInitializeHeaders.js +5 -5
  201. package/lib/hooks/useKandoFetch.js +15 -28
  202. package/lib/hooks/useMap.js +22 -34
  203. package/lib/hooks/useNavContext.js +22 -26
  204. package/lib/hooks/useRemoveExistingLayers.js +6 -6
  205. package/lib/hooks/useUpdateEventBodyTail.js +13 -17
  206. package/lib/hooks/useUserTimeZone.js +31 -28
  207. package/lib/hooks/useUserTimeZone.test.js +19 -22
  208. package/lib/hooks/useWindowSize.js +7 -14
  209. package/lib/index.js +11 -12
  210. package/lib/macros/getVersion.js +2 -2
  211. package/lib/pages/AreaPage/AreaPage.js +28 -63
  212. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +15 -16
  213. package/lib/pages/AreaPage/Dashboard/Dashboard.js +16 -18
  214. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +14 -22
  215. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +4 -4
  216. package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +34 -67
  217. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +7 -7
  218. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +9 -9
  219. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -3
  220. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -2
  221. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +4 -4
  222. package/lib/pages/AssessmentPage/AssessmentPage.js +37 -43
  223. package/lib/pages/CannyWidget/Feedback.js +13 -13
  224. package/lib/pages/CovidPage/CovidPage.js +8 -13
  225. package/lib/pages/CovidPage/components/Body.js +25 -27
  226. package/lib/pages/CovidPage/components/Map.js +27 -37
  227. package/lib/pages/CovidPage/components/Sidebar.js +14 -13
  228. package/lib/pages/CovidPage/components/Summary.js +19 -26
  229. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +24 -30
  230. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +51 -73
  231. package/lib/pages/CovidPage/components/areas/Area.js +24 -35
  232. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +44 -43
  233. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +32 -35
  234. package/lib/pages/CovidPage/components/areas/AreasList.js +29 -41
  235. package/lib/pages/CovidPage/components/areas/Sort.js +11 -14
  236. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  237. package/lib/pages/DashboardMap/AreaCard.js +21 -17
  238. package/lib/pages/DashboardMap/AssessmentIcon.js +7 -6
  239. package/lib/pages/DashboardMap/FactoryCard.js +23 -19
  240. package/lib/pages/DashboardMap/HighchartsOptions.js +5 -4
  241. package/lib/pages/DashboardMap/List.js +41 -52
  242. package/lib/pages/DashboardMap/ListContext.js +15 -19
  243. package/lib/pages/DashboardMap/Loader.js +2 -2
  244. package/lib/pages/DashboardMap/SeverityBadge.js +10 -18
  245. package/lib/pages/DashboardMap/WWTPMap.js +38 -50
  246. package/lib/pages/DashboardMap/WaterDischarge.js +8 -8
  247. package/lib/pages/DashboardMap/Widget.js +42 -60
  248. package/lib/pages/DashboardMap/utils.js +18 -22
  249. package/lib/pages/EventsPage/Body/Body.js +20 -15
  250. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +17 -19
  251. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +27 -35
  252. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +8 -6
  253. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +11 -7
  254. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +21 -30
  255. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +52 -63
  256. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +17 -23
  257. package/lib/pages/EventsPage/EventsPage.js +7 -10
  258. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +25 -37
  259. package/lib/pages/EventsPage/events/MoreInfo.js +17 -16
  260. package/lib/pages/EventsPage/events/Sidebar.js +21 -16
  261. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +30 -35
  262. package/lib/pages/EventsPage/events/event_info/EventDetails.js +32 -29
  263. package/lib/pages/EventsPage/events/event_info/EventInfo.js +41 -40
  264. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +4 -4
  265. package/lib/pages/EventsPage/events/event_info/EventSection.js +13 -15
  266. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +43 -38
  267. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +38 -46
  268. package/lib/pages/EventsPage/events/event_info/Header/Header.js +6 -4
  269. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +28 -31
  270. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +4 -4
  271. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +29 -36
  272. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +4 -6
  273. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +22 -21
  274. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +10 -8
  275. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +9 -7
  276. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +11 -7
  277. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +6 -6
  278. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +5 -3
  279. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +2 -2
  280. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +12 -10
  281. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +6 -4
  282. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +10 -12
  283. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +5 -3
  284. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +7 -5
  285. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +7 -5
  286. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +6 -4
  287. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +11 -9
  288. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +15 -15
  289. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +6 -6
  290. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +7 -5
  291. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +17 -15
  292. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +4 -4
  293. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +10 -8
  294. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +13 -10
  295. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +2 -2
  296. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +3 -3
  297. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +24 -37
  298. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +29 -36
  299. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +11 -9
  300. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +15 -17
  301. package/lib/pages/EventsPage/events/event_info/sources/Source.js +25 -28
  302. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +21 -24
  303. package/lib/pages/EventsPage/events/event_info/styles.js +20 -12
  304. package/lib/pages/EventsPage/events/events_list/EventItem.js +17 -18
  305. package/lib/pages/EventsPage/events/events_list/EventUtils.js +10 -10
  306. package/lib/pages/EventsPage/events/events_list/EventsList.js +113 -134
  307. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +38 -53
  308. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +72 -108
  309. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +52 -69
  310. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +38 -41
  311. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +29 -36
  312. package/lib/pages/EventsPage/events/events_list/Sort.js +13 -16
  313. package/lib/pages/ImportFileWizard/FileUploadRespones.js +12 -19
  314. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +6 -4
  315. package/lib/pages/ImportFileWizard/ImportFile.js +20 -22
  316. package/lib/pages/ImportFileWizard/ResponseBody.js +24 -33
  317. package/lib/pages/ImportFileWizard/ValidationForm.js +20 -19
  318. package/lib/pages/ImportFileWizard/ValidationResponse.js +21 -21
  319. package/lib/pages/ImportFileWizard/importFileUtils.js +1 -1
  320. package/lib/pages/ImportGisPage/ImportGisContainer.js +21 -24
  321. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +21 -23
  322. package/lib/pages/ImportGisPage/importGisUtils.js +12 -20
  323. package/lib/pages/ImportGisProcess/index.js +12 -15
  324. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -12
  325. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +17 -19
  326. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -3
  327. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +28 -57
  328. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +6 -8
  329. package/lib/pages/NotificationsPage/Notification/Notification.js +16 -12
  330. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -2
  331. package/lib/pages/NotificationsPage/Notifications.stories.js +4 -6
  332. package/lib/pages/NotificationsPage/NotificationsPage.js +18 -36
  333. package/lib/pages/NotificationsPage/assets/index.js +9 -9
  334. package/lib/pages/NotificationsPageV2/NotificationsPage.js +70 -93
  335. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +93 -62
  336. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +126 -137
  337. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +71 -71
  338. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +90 -87
  339. package/lib/pages/NotificationsPageV2/notificationUtils.js +39 -33
  340. package/lib/pages/OldSitePage/OldSitePage.js +56 -131
  341. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +5 -5
  342. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
  343. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +8 -6
  344. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +18 -20
  345. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -7
  346. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +12 -18
  347. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +16 -12
  348. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
  349. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +17 -11
  350. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +51 -63
  351. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +9 -7
  352. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +29 -53
  353. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -4
  354. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  355. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -10
  356. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +10 -11
  357. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +26 -22
  358. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +26 -28
  359. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  360. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +15 -9
  361. package/lib/pages/ProfilePage/Container.js +2 -2
  362. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +23 -39
  363. package/lib/pages/ProfilePage/ProfilePage.js +111 -199
  364. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +25 -33
  365. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +18 -15
  366. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +23 -25
  367. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +56 -116
  368. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +17 -20
  369. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +12 -10
  370. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +37 -38
  371. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +25 -26
  372. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +16 -16
  373. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +13 -15
  374. package/lib/pages/SamplingsPage/NavigationDropdown.js +42 -29
  375. package/lib/pages/SamplingsPage/NewSamplingAction.js +73 -97
  376. package/lib/pages/SamplingsPage/SamplingMobileModal.js +123 -97
  377. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +21 -22
  378. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +34 -22
  379. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +33 -56
  380. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +15 -18
  381. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +8 -6
  382. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +107 -191
  383. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +47 -53
  384. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +42 -38
  385. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +42 -38
  386. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +21 -22
  387. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -3
  388. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +10 -6
  389. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +50 -51
  390. package/lib/pages/SamplingsPage/SamplingsMobileList.js +21 -28
  391. package/lib/pages/SamplingsPage/SamplingsPage.js +25 -31
  392. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +49 -57
  393. package/lib/pages/SamplingsPage/samplingsPageUtils.js +67 -75
  394. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +6 -4
  395. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -5
  396. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +14 -10
  397. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -8
  398. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +26 -23
  399. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +14 -17
  400. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +36 -32
  401. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +9 -7
  402. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +15 -24
  403. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +16 -12
  404. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +3 -5
  405. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +17 -11
  406. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +58 -70
  407. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +9 -7
  408. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +15 -26
  409. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -5
  410. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  411. package/lib/pages/SitePage/SamplingParameters/body/Body.js +8 -8
  412. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +29 -37
  413. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  414. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +10 -11
  415. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +53 -53
  416. package/lib/pages/SitePage/SamplingParameters/dataParser.js +29 -38
  417. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +11 -9
  418. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +4 -4
  419. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +15 -9
  420. package/lib/pages/SitePage/SiteInformation/ContributorItem.js +9 -7
  421. package/lib/pages/SitePage/SiteInformation/EmptyState.js +11 -7
  422. package/lib/pages/SitePage/SiteInformation/PollutionContributor.js +11 -10
  423. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +34 -45
  424. package/lib/pages/SitePage/SiteInformation/style.js +15 -9
  425. package/lib/pages/SitePage/SitePage.js +29 -69
  426. package/lib/pages/UploadLabResult/index.js +13 -13
  427. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +26 -35
  428. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +6 -8
  429. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +9 -8
  430. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +3 -5
  431. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +46 -47
  432. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +10 -6
  433. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +2 -2
  434. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +4 -6
  435. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +10 -9
  436. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +15 -12
  437. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +7 -7
  438. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -2
  439. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +15 -21
  440. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +26 -30
  441. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +15 -16
  442. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +7 -14
  443. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +23 -31
  444. package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -8
  445. package/lib/pages/WbeDashboard/GraphWrapper.js +28 -34
  446. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +17 -19
  447. package/lib/pages/WbeDashboard/SearchInput.js +15 -20
  448. package/lib/pages/WbeDashboard/SummaryGraph.js +50 -76
  449. package/lib/pages/WbeDashboard/SummaryGraphModal.js +19 -17
  450. package/lib/pages/WbeDashboard/Tabs.js +10 -10
  451. package/lib/pages/WbeDashboard/WbeDashboardPage.js +144 -206
  452. package/lib/pages/WbeDashboard/WbeSummaryBar.js +39 -47
  453. package/lib/pages/WwtpPage/DashboardCard.js +23 -20
  454. package/lib/pages/WwtpPage/DischargePatternCard.js +16 -25
  455. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +7 -5
  456. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +19 -18
  457. package/lib/pages/WwtpPage/Map.js +5 -3
  458. package/lib/pages/WwtpPage/OrganicCard.js +2 -2
  459. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +2 -2
  460. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +6 -4
  461. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +9 -8
  462. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +18 -14
  463. package/lib/pages/WwtpPage/PredictionCard.js +2 -2
  464. package/lib/pages/WwtpPage/TrendCard.js +18 -19
  465. package/lib/pages/WwtpPage/UpgradeBox.js +2 -2
  466. package/lib/pages/WwtpPage/WwtpPage.js +7 -7
  467. package/lib/pages/WwtpPage/WwtpPageContainer.js +21 -16
  468. package/lib/providers/Slideshow/SlideshowContext.js +11 -9
  469. package/lib/providers/Slideshow/SlideshowProvider.js +22 -38
  470. package/lib/providers/Slideshow/SlideshowRunner.js +17 -19
  471. package/lib/providers/UrlHistory/UrlHistoryContext.js +6 -4
  472. package/lib/providers/UrlHistory/UrlHistoryProvider.js +12 -11
  473. package/lib/providers/UrlHistory/index.js +2 -2
  474. package/lib/providers/UrlHistory/useLastVisited.js +4 -4
  475. package/lib/store/ImportGis/actionTypes.js +1 -1
  476. package/lib/store/ImportGis/actionsCreator.js +7 -5
  477. package/lib/store/ImportGis/reducer.js +40 -29
  478. package/lib/store/WBE/actionTypes.js +2 -2
  479. package/lib/store/WBE/reducer.js +13 -9
  480. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +24 -14
  481. package/lib/store/areas/actionTypes.js +4 -4
  482. package/lib/store/areas/actions.js +7 -13
  483. package/lib/store/areas/reducer.js +8 -6
  484. package/lib/store/context/actionTypes.js +3 -3
  485. package/lib/store/context/actions.js +3 -3
  486. package/lib/store/context/contextMiddlewares.js +14 -16
  487. package/lib/store/context/reducer.js +13 -9
  488. package/lib/store/dashboard/dashboardSlice.js +18 -10
  489. package/lib/store/edges/actionTypes.js +5 -5
  490. package/lib/store/edges/actions.js +4 -8
  491. package/lib/store/edges/reducer.js +13 -17
  492. package/lib/store/events/actionTypes.js +17 -17
  493. package/lib/store/events/actions.js +3 -7
  494. package/lib/store/events/reducer.js +42 -49
  495. package/lib/store/global/actionTypes.js +11 -11
  496. package/lib/store/global/actions.js +6 -4
  497. package/lib/store/global/reducer.js +11 -10
  498. package/lib/store/permissions/permissionsSlice.js +12 -8
  499. package/lib/store/points/actionTypes.js +3 -3
  500. package/lib/store/points/actions.js +3 -7
  501. package/lib/store/points/reducer.js +7 -5
  502. package/lib/store/rootActionTypes.js +2 -2
  503. package/lib/store/rootReducer.js +17 -12
  504. package/lib/store/rootStore.js +5 -5
  505. package/lib/store/samplings/actionTypes.js +1 -1
  506. package/lib/store/samplings/reducer.js +16 -14
  507. package/lib/styles/StylesLayout.js +5 -3
  508. package/lib/styles/theme/theme.js +26 -27
  509. package/lib/test/mocks/browser.js +2 -4
  510. package/lib/test/test-utils.js +17 -15
  511. package/lib/ui-kit/Button/Button.js +127 -79
  512. package/lib/ui-kit/Button/Button.test.js +24 -29
  513. package/lib/ui-kit/Checkbox/Checkbox.js +30 -20
  514. package/lib/ui-kit/ContentCard/ContentCard.js +14 -17
  515. package/lib/ui-kit/Dashboard/Dashboard.js +22 -19
  516. package/lib/ui-kit/DropDown/DropDown.js +17 -19
  517. package/lib/ui-kit/DropDown/DropDown.test.js +12 -12
  518. package/lib/ui-kit/DropDown/DropDownItem.js +24 -21
  519. package/lib/ui-kit/DropDown/DropdownToggle.js +12 -8
  520. package/lib/ui-kit/EmptyState/EmptyState.js +5 -3
  521. package/lib/ui-kit/IconAction/IconAction.js +7 -5
  522. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +46 -62
  523. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +57 -48
  524. package/lib/ui-kit/InletsPie/InletsPie.js +15 -13
  525. package/lib/ui-kit/InletsPie/options.js +6 -6
  526. package/lib/ui-kit/KandoList/KandoList.js +14 -12
  527. package/lib/ui-kit/KandoTable/KandoTable.js +48 -40
  528. package/lib/ui-kit/KandoTable/KandoTable.test.js +16 -22
  529. package/lib/ui-kit/Layout/Layout.js +6 -4
  530. package/lib/ui-kit/MobileInput/MobileInput.js +55 -49
  531. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +13 -16
  532. package/lib/ui-kit/OrganicEvents/GaugeChart.js +7 -5
  533. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +6 -6
  534. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +27 -20
  535. package/lib/ui-kit/OrganicEvents/TextInfo.js +15 -10
  536. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +10 -8
  537. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +12 -15
  538. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -3
  539. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +19 -19
  540. package/lib/ui-kit/ScoreGauge/constant.js +3 -3
  541. package/lib/ui-kit/TimeLineChart/TrendChart.js +50 -38
  542. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +8 -7
  543. package/lib/ui-kit/Tooltip/Tooltip.js +14 -8
  544. package/lib/ui-kit/index.js +8 -8
  545. package/lib/ui-kit/kandoStepper/KandoStepper.js +11 -11
  546. package/lib/ui-kit/siteName/SiteName.js +11 -8
  547. package/lib/utilities/ActionUtility.js +7 -7
  548. package/lib/utilities/Alert.js +21 -17
  549. package/lib/utilities/Analytics.js +11 -11
  550. package/lib/utilities/Array.js +4 -5
  551. package/lib/utilities/Enum.js +15 -51
  552. package/lib/utilities/ErrorBoundary.js +27 -41
  553. package/lib/utilities/File.js +40 -69
  554. package/lib/utilities/GetDir.js +8 -7
  555. package/lib/utilities/KandoDate.js +7 -15
  556. package/lib/utilities/KandoModal.js +16 -26
  557. package/lib/utilities/LocalStorage.js +5 -7
  558. package/lib/utilities/ThousandsToK.js +2 -2
  559. package/lib/utilities/TimeFormat.js +21 -20
  560. package/lib/utilities/Truncate.js +16 -24
  561. package/lib/utilities/edgesMath.js +14 -15
  562. package/lib/utilities/i18n.js +3 -3
  563. package/lib/utilities/kql.js +10 -12
  564. package/lib/utilities/map/icons.js +3 -3
  565. package/lib/utilities/polylinedecorator.js +87 -112
  566. package/lib/utilities/scoreToData.js +10 -10
  567. package/lib/utilities/scoreToData.test.js +5 -5
  568. package/lib/utilities/time.js +8 -8
  569. package/lib/utilities/uploadToS3.js +11 -11
  570. package/lib/utilities/urls.js +16 -14
  571. package/package.json +3 -6
@@ -5,20 +5,19 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.zoomLevels = exports.topIconOptions = exports.shouldLoadMapObjects = exports.shoudLoadDependentMapObjects = exports.multipleLayeredIcons = exports.middleIconOptions = exports.isValidArea = exports.initializeMap = exports.iconZoomControl = exports.findSpecificLayersFromMap = exports.eventsCounterIcons = exports.eventsCountIcon = exports.bubbleIconOptions = exports.areaFocusLogic = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
9
8
  var _leaflet = _interopRequireDefault(require("leaflet"));
10
9
  var _actions = require("../../store/global/actions");
11
10
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
12
11
  var _WWTPDashboardSlice = require("../../store/WWTPDashboard/WWTPDashboardSlice");
13
- var areaFocusLogic = function areaFocusLogic(mapRef, isValidArea, areaToCenterBy) {
14
- var mapInstance = mapRef.current;
12
+ const areaFocusLogic = (mapRef, isValidArea, areaToCenterBy) => {
13
+ let mapInstance = mapRef.current;
15
14
  if (isValidArea(areaToCenterBy)) {
16
15
  mapInstance.fitBounds(areaToCenterBy, {
17
16
  padding: [0, 0]
18
17
  });
19
18
  } else {
20
- var group = [];
21
- for (var property in mapInstance._layers) {
19
+ const group = [];
20
+ for (const property in mapInstance._layers) {
22
21
  if (mapInstance._layers[property].kando_object === 'Area') {
23
22
  group.push(mapInstance._layers[property]);
24
23
  }
@@ -32,34 +31,34 @@ var areaFocusLogic = function areaFocusLogic(mapRef, isValidArea, areaToCenterBy
32
31
  mapInstance.invalidateSize(true);
33
32
  };
34
33
  exports.areaFocusLogic = areaFocusLogic;
35
- var isValidArea = function isValidArea(area) {
34
+ const isValidArea = area => {
36
35
  return area && area.length > 0 && Object.keys(area[0]).length > 0;
37
36
  };
38
37
  exports.isValidArea = isValidArea;
39
- var shouldLoadMapObjects = function shouldLoadMapObjects(global_data, mapRef, points, edges) {
38
+ const shouldLoadMapObjects = (global_data, mapRef, points, edges) => {
40
39
  return global_data.map !== undefined && mapRef.current !== null && edges !== undefined && points !== undefined;
41
40
  };
42
41
  exports.shouldLoadMapObjects = shouldLoadMapObjects;
43
- var shoudLoadDependentMapObjects = function shoudLoadDependentMapObjects(edges, areas, global, mapRef, points) {
42
+ const shoudLoadDependentMapObjects = (edges, areas, global, mapRef, points) => {
44
43
  return global.map !== undefined && mapRef.current !== null && edges.length !== 0 && areas.length !== 0 && points.length !== 0;
45
44
  };
46
45
  exports.shoudLoadDependentMapObjects = shoudLoadDependentMapObjects;
47
- var findSpecificLayersFromMap = function findSpecificLayersFromMap(layersToFind, currentLayer) {
46
+ const findSpecificLayersFromMap = (layersToFind, currentLayer) => {
48
47
  return layersToFind.includes(currentLayer.kando_object) && currentLayer.kando_point_type !== 'Manhole';
49
48
  };
50
49
  exports.findSpecificLayersFromMap = findSpecificLayersFromMap;
51
- var eventsCounterIcons = function eventsCounterIcons(layer, zoomLevel) {
52
- var icon = layer.options.icon;
50
+ const eventsCounterIcons = (layer, zoomLevel) => {
51
+ let icon = layer.options.icon;
53
52
  icon.options.iconSize = eventsCountIcon(zoomLevel).iconSize;
54
53
  icon.options.iconAnchor = eventsCountIcon(zoomLevel).iconAnchor;
55
54
  layer.setIcon(icon);
56
55
  layer.setOpacity(1);
57
56
  };
58
57
  exports.eventsCounterIcons = eventsCounterIcons;
59
- var multipleLayeredIcons = function multipleLayeredIcons(layer, zoomLevel) {
60
- var icon = layer.options.icon;
61
- var isAFewLayerIcon = layer.kando_few_layer_icon;
62
- var miniIcon = {
58
+ const multipleLayeredIcons = (layer, zoomLevel) => {
59
+ let icon = layer.options.icon;
60
+ let isAFewLayerIcon = layer.kando_few_layer_icon;
61
+ let miniIcon = {
63
62
  present: layer.kando_secondary || layer.kando_third,
64
63
  secondary: layer.kando_secondary,
65
64
  third: layer.kando_third
@@ -84,20 +83,20 @@ var multipleLayeredIcons = function multipleLayeredIcons(layer, zoomLevel) {
84
83
  layer.setIcon(icon);
85
84
  };
86
85
  exports.multipleLayeredIcons = multipleLayeredIcons;
87
- var oneLayerIconOptions = function oneLayerIconOptions(zoomLevel) {
86
+ const oneLayerIconOptions = zoomLevel => {
88
87
  return {
89
88
  iconSize: [zoomLevel * 3.3, zoomLevel * 3.3],
90
89
  iconAnchor: [zoomLevel * 1.7, zoomLevel * 3.7]
91
90
  };
92
91
  };
93
- var eventsCountIcon = function eventsCountIcon(zoomLevel) {
92
+ const eventsCountIcon = zoomLevel => {
94
93
  return {
95
94
  iconSize: [zoomLevel * 2.5, zoomLevel * 2.5],
96
95
  iconAnchor: [zoomLevel * 0, zoomLevel * 4]
97
96
  };
98
97
  };
99
98
  exports.eventsCountIcon = eventsCountIcon;
100
- var bubbleIconOptions = function bubbleIconOptions(zoomLevel, miniIcon) {
99
+ const bubbleIconOptions = (zoomLevel, miniIcon) => {
101
100
  if (miniIcon.present) {
102
101
  if (miniIcon.secondary) {
103
102
  return {
@@ -118,7 +117,7 @@ var bubbleIconOptions = function bubbleIconOptions(zoomLevel, miniIcon) {
118
117
  }
119
118
  };
120
119
  exports.bubbleIconOptions = bubbleIconOptions;
121
- var middleIconOptions = function middleIconOptions(zoomLevel, miniIcon) {
120
+ const middleIconOptions = (zoomLevel, miniIcon) => {
122
121
  if (miniIcon.present) {
123
122
  if (miniIcon.secondary) {
124
123
  return {
@@ -139,7 +138,7 @@ var middleIconOptions = function middleIconOptions(zoomLevel, miniIcon) {
139
138
  }
140
139
  };
141
140
  exports.middleIconOptions = middleIconOptions;
142
- var topIconOptions = function topIconOptions(zoomLevel, miniIcon) {
141
+ const topIconOptions = (zoomLevel, miniIcon) => {
143
142
  if (miniIcon.present) {
144
143
  if (miniIcon.secondary) {
145
144
  return {
@@ -160,10 +159,10 @@ var topIconOptions = function topIconOptions(zoomLevel, miniIcon) {
160
159
  }
161
160
  };
162
161
  exports.topIconOptions = topIconOptions;
163
- var iconZoomControl = function iconZoomControl(map) {
164
- var layers = map._layers;
165
- var zoomLevel = map._zoom;
166
- for (var property in layers) {
162
+ const iconZoomControl = map => {
163
+ let layers = map._layers;
164
+ let zoomLevel = map._zoom;
165
+ for (const property in layers) {
167
166
  if (findSpecificLayersFromMap(['IconNumber'], layers[property])) {
168
167
  eventsCounterIcons(layers[property], zoomLevel);
169
168
  }
@@ -176,7 +175,7 @@ var iconZoomControl = function iconZoomControl(map) {
176
175
  }
177
176
  };
178
177
  exports.iconZoomControl = iconZoomControl;
179
- var mapStyle = function mapStyle(mapBoxStyle) {
178
+ const mapStyle = mapBoxStyle => {
180
179
  return _leaflet.default.tileLayer("https://api.mapbox.com/styles/v1/nadav-kando/".concat(mapBoxStyle, "/tiles/256/{z}/{x}/{y}@2x?access_token=pk.eyJ1IjoibmFkYXYta2FuZG8iLCJhIjoiY2pveHprdGRxMHlmdDN4bDg0dzJxOXc4dSJ9.J-2ohq7j4yKNbm4N_-P6qw"), {
181
180
  attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
182
181
  maxZoom: 18,
@@ -188,13 +187,15 @@ var mapStyle = function mapStyle(mapBoxStyle) {
188
187
  updateWhenIdle: false
189
188
  });
190
189
  };
191
- var baseMaps = function baseMaps(mapBoxStyle, mapBoxSatelliteStyle) {
192
- var _ref;
193
- var defaultMap = _i18n.default.t('map.layers.default');
194
- var satellite = _i18n.default.t('map.layers.satellite');
195
- return _ref = {}, (0, _defineProperty2.default)(_ref, defaultMap, mapStyle(mapBoxStyle)), (0, _defineProperty2.default)(_ref, satellite, mapStyle(mapBoxSatelliteStyle)), _ref;
190
+ const baseMaps = (mapBoxStyle, mapBoxSatelliteStyle) => {
191
+ let defaultMap = _i18n.default.t('map.layers.default');
192
+ let satellite = _i18n.default.t('map.layers.satellite');
193
+ return {
194
+ [defaultMap]: mapStyle(mapBoxStyle),
195
+ [satellite]: mapStyle(mapBoxSatelliteStyle)
196
+ };
196
197
  };
197
- var initializeMap = function initializeMap(mapZoomLevel, mapBoxStyle, mapBoxSatelliteStyle, mapRef, dispatch, isValidArea, areaToCenterBy, setMapZoomLevel, forWWTPDashboard) {
198
+ const initializeMap = (mapZoomLevel, mapBoxStyle, mapBoxSatelliteStyle, mapRef, dispatch, isValidArea, areaToCenterBy, setMapZoomLevel, forWWTPDashboard) => {
198
199
  // @ts-ignore
199
200
  mapRef.current = new _leaflet.default.Map('map', {
200
201
  center: [0, 0],
@@ -203,9 +204,9 @@ var initializeMap = function initializeMap(mapZoomLevel, mapBoxStyle, mapBoxSate
203
204
  attributionControl: false,
204
205
  preferCanvas: false
205
206
  });
206
- mapRef.current.whenReady(function () {
207
- var map = mapRef.current;
208
- var mapTypes = baseMaps(mapBoxStyle, mapBoxSatelliteStyle);
207
+ mapRef.current.whenReady(() => {
208
+ let map = mapRef.current;
209
+ const mapTypes = baseMaps(mapBoxStyle, mapBoxSatelliteStyle);
209
210
  _leaflet.default.control.layers(mapTypes, {}, {
210
211
  position: 'bottomright'
211
212
  }).addTo(map);
@@ -216,7 +217,7 @@ var initializeMap = function initializeMap(mapZoomLevel, mapBoxStyle, mapBoxSate
216
217
  // map.on('zoomend', function () {
217
218
  // // iconZoomControl(map);
218
219
  // });
219
- setTimeout(function () {
220
+ setTimeout(() => {
220
221
  if (!mapRef.current) {
221
222
  return;
222
223
  }
@@ -228,7 +229,7 @@ var initializeMap = function initializeMap(mapZoomLevel, mapBoxStyle, mapBoxSate
228
229
  dispatch((0, _actions.storeMap)(mapRef.current));
229
230
  if (forWWTPDashboard) dispatch((0, _WWTPDashboardSlice.setMap)(mapRef.current));
230
231
  dispatch((0, _actions.sideNavExpanded)(true));
231
- map.on('keydown', function (event) {
232
+ map.on('keydown', event => {
232
233
  if (event.originalEvent.key === 'Escape') {
233
234
  map.closePopup();
234
235
  document.body.focus();
@@ -243,12 +244,12 @@ var initializeMap = function initializeMap(mapZoomLevel, mapBoxStyle, mapBoxSate
243
244
  if (!mapRef.current) {
244
245
  return;
245
246
  }
246
- var zoom = mapRef.current.getZoom();
247
+ let zoom = mapRef.current.getZoom();
247
248
  setMapZoomLevel(zoom);
248
249
  });
249
250
  };
250
251
  exports.initializeMap = initializeMap;
251
- var zoomLevels = {
252
+ const zoomLevels = {
252
253
  1: 'XLarge',
253
254
  2: 'XLarge',
254
255
  3: 'XLarge',
@@ -269,4 +270,4 @@ var zoomLevels = {
269
270
  18: 'Small'
270
271
  };
271
272
  exports.zoomLevels = zoomLevels;
272
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FjdGlvbnMiLCJfaTE4biIsIl9XV1RQRGFzaGJvYXJkU2xpY2UiLCJhcmVhRm9jdXNMb2dpYyIsIm1hcFJlZiIsImlzVmFsaWRBcmVhIiwiYXJlYVRvQ2VudGVyQnkiLCJtYXBJbnN0YW5jZSIsImN1cnJlbnQiLCJmaXRCb3VuZHMiLCJwYWRkaW5nIiwiZ3JvdXAiLCJwcm9wZXJ0eSIsIl9sYXllcnMiLCJrYW5kb19vYmplY3QiLCJwdXNoIiwiT2JqZWN0Iiwia2V5cyIsIkwiLCJmZWF0dXJlR3JvdXAiLCJnZXRCb3VuZHMiLCJsZW5ndGgiLCJpbnZhbGlkYXRlU2l6ZSIsImV4cG9ydHMiLCJhcmVhIiwic2hvdWxkTG9hZE1hcE9iamVjdHMiLCJnbG9iYWxfZGF0YSIsInBvaW50cyIsImVkZ2VzIiwibWFwIiwidW5kZWZpbmVkIiwic2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyIsImFyZWFzIiwiZ2xvYmFsIiwiZmluZFNwZWNpZmljTGF5ZXJzRnJvbU1hcCIsImxheWVyc1RvRmluZCIsImN1cnJlbnRMYXllciIsImluY2x1ZGVzIiwia2FuZG9fcG9pbnRfdHlwZSIsImV2ZW50c0NvdW50ZXJJY29ucyIsImxheWVyIiwiem9vbUxldmVsIiwiaWNvbiIsIm9wdGlvbnMiLCJpY29uU2l6ZSIsImV2ZW50c0NvdW50SWNvbiIsImljb25BbmNob3IiLCJzZXRJY29uIiwic2V0T3BhY2l0eSIsIm11bHRpcGxlTGF5ZXJlZEljb25zIiwiaXNBRmV3TGF5ZXJJY29uIiwia2FuZG9fZmV3X2xheWVyX2ljb24iLCJtaW5pSWNvbiIsInByZXNlbnQiLCJrYW5kb19zZWNvbmRhcnkiLCJrYW5kb190aGlyZCIsInNlY29uZGFyeSIsInRoaXJkIiwia2FuZG9faW5kZXhfb2JqZWN0IiwiYnViYmxlSWNvbk9wdGlvbnMiLCJvbmVMYXllckljb25PcHRpb25zIiwibWlkZGxlSWNvbk9wdGlvbnMiLCJ0b3BJY29uT3B0aW9ucyIsImljb25ab29tQ29udHJvbCIsImxheWVycyIsIl96b29tIiwibWFwU3R5bGUiLCJtYXBCb3hTdHlsZSIsInRpbGVMYXllciIsImNvbmNhdCIsImF0dHJpYnV0aW9uIiwibWF4Wm9vbSIsIm1pblpvb20iLCJpZCIsInRpbGVTaXplIiwiem9vbU9mZnNldCIsInVwZGF0ZVdoZW5ab29taW5nIiwidXBkYXRlV2hlbklkbGUiLCJiYXNlTWFwcyIsIm1hcEJveFNhdGVsbGl0ZVN0eWxlIiwiX3JlZiIsImRlZmF1bHRNYXAiLCJpMThuIiwidCIsInNhdGVsbGl0ZSIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0IiwiaW5pdGlhbGl6ZU1hcCIsIm1hcFpvb21MZXZlbCIsImRpc3BhdGNoIiwic2V0TWFwWm9vbUxldmVsIiwiZm9yV1dUUERhc2hib2FyZCIsIk1hcCIsImNlbnRlciIsInpvb21TbmFwIiwiem9vbSIsImF0dHJpYnV0aW9uQ29udHJvbCIsInByZWZlckNhbnZhcyIsIndoZW5SZWFkeSIsIm1hcFR5cGVzIiwiY29udHJvbCIsInBvc2l0aW9uIiwiYWRkVG8iLCJ2YWx1ZXMiLCJzZXRUaW1lb3V0IiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwic3RvcmVNYXAiLCJzZXRNYXAiLCJzaWRlTmF2RXhwYW5kZWQiLCJvbiIsImV2ZW50Iiwib3JpZ2luYWxFdmVudCIsImtleSIsImNsb3NlUG9wdXAiLCJkb2N1bWVudCIsImJvZHkiLCJmb2N1cyIsImUiLCJnZXRab29tIiwiem9vbUxldmVscyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9NYXBVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTCwgeyBQb2ludFR1cGxlIH0gZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgeyBzaWRlTmF2RXhwYW5kZWQsIHN0b3JlTWFwIH0gZnJvbSAnLi4vLi4vc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IHNldE1hcCB9IGZyb20gJy4uLy4uL3N0b3JlL1dXVFBEYXNoYm9hcmQvV1dUUERhc2hib2FyZFNsaWNlJztcblxuZXhwb3J0IGNvbnN0IGFyZWFGb2N1c0xvZ2ljID0gKG1hcFJlZiwgaXNWYWxpZEFyZWEsIGFyZWFUb0NlbnRlckJ5KSA9PiB7XG4gIGxldCBtYXBJbnN0YW5jZTogYW55ID0gbWFwUmVmLmN1cnJlbnQ7XG4gIGlmIChpc1ZhbGlkQXJlYShhcmVhVG9DZW50ZXJCeSkpIHtcbiAgICBtYXBJbnN0YW5jZS5maXRCb3VuZHMoYXJlYVRvQ2VudGVyQnksIHsgcGFkZGluZzogWzAsIDBdIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGdyb3VwOiBhbnlbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBtYXBJbnN0YW5jZS5fbGF5ZXJzKSB7XG4gICAgICBpZiAobWFwSW5zdGFuY2UuX2xheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0ID09PSAnQXJlYScpIHtcbiAgICAgICAgZ3JvdXAucHVzaChtYXBJbnN0YW5jZS5fbGF5ZXJzW3Byb3BlcnR5XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKEwuZmVhdHVyZUdyb3VwKGdyb3VwKS5nZXRCb3VuZHMoKSkubGVuZ3RoICE9PSAwKSB7XG4gICAgICBtYXBJbnN0YW5jZS5maXRCb3VuZHMoTC5mZWF0dXJlR3JvdXAoZ3JvdXApLmdldEJvdW5kcygpLCB7XG4gICAgICAgIHBhZGRpbmc6IFsxMDAsIDEwMF0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbWFwSW5zdGFuY2UuaW52YWxpZGF0ZVNpemUodHJ1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZEFyZWEgPSAoYXJlYSkgPT4ge1xuICByZXR1cm4gYXJlYSAmJiBhcmVhLmxlbmd0aCA+IDAgJiYgT2JqZWN0LmtleXMoYXJlYVswXSkubGVuZ3RoID4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG91bGRMb2FkTWFwT2JqZWN0cyA9IChnbG9iYWxfZGF0YSwgbWFwUmVmLCBwb2ludHMsIGVkZ2VzKSA9PiB7XG4gIHJldHVybiAoXG4gICAgZ2xvYmFsX2RhdGEubWFwICE9PSB1bmRlZmluZWQgJiZcbiAgICBtYXBSZWYuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgIGVkZ2VzICE9PSB1bmRlZmluZWQgJiZcbiAgICBwb2ludHMgIT09IHVuZGVmaW5lZFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMgPSAoXG4gIGVkZ2VzLFxuICBhcmVhcyxcbiAgZ2xvYmFsLFxuICBtYXBSZWYsXG4gIHBvaW50cyxcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIGdsb2JhbC5tYXAgIT09IHVuZGVmaW5lZCAmJlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgZWRnZXMubGVuZ3RoICE9PSAwICYmXG4gICAgYXJlYXMubGVuZ3RoICE9PSAwICYmXG4gICAgcG9pbnRzLmxlbmd0aCAhPT0gMFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAgPSAoXG4gIGxheWVyc1RvRmluZDogc3RyaW5nW10sXG4gIGN1cnJlbnRMYXllcixcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIGxheWVyc1RvRmluZC5pbmNsdWRlcyhjdXJyZW50TGF5ZXIua2FuZG9fb2JqZWN0KSAmJlxuICAgIGN1cnJlbnRMYXllci5rYW5kb19wb2ludF90eXBlICE9PSAnTWFuaG9sZSdcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBldmVudHNDb3VudGVySWNvbnMgPSAobGF5ZXIsIHpvb21MZXZlbCkgPT4ge1xuICBsZXQgaWNvbiA9IGxheWVyLm9wdGlvbnMuaWNvbjtcbiAgaWNvbi5vcHRpb25zLmljb25TaXplID0gZXZlbnRzQ291bnRJY29uKHpvb21MZXZlbCkuaWNvblNpemU7XG4gIGljb24ub3B0aW9ucy5pY29uQW5jaG9yID0gZXZlbnRzQ291bnRJY29uKHpvb21MZXZlbCkuaWNvbkFuY2hvcjtcbiAgbGF5ZXIuc2V0SWNvbihpY29uKTtcbiAgbGF5ZXIuc2V0T3BhY2l0eSgxKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtdWx0aXBsZUxheWVyZWRJY29ucyA9IChsYXllciwgem9vbUxldmVsKSA9PiB7XG4gIGxldCBpY29uID0gbGF5ZXIub3B0aW9ucy5pY29uO1xuICBsZXQgaXNBRmV3TGF5ZXJJY29uID0gbGF5ZXIua2FuZG9fZmV3X2xheWVyX2ljb247XG4gIGxldCBtaW5pSWNvbiA9IHtcbiAgICBwcmVzZW50OiBsYXllci5rYW5kb19zZWNvbmRhcnkgfHwgbGF5ZXIua2FuZG9fdGhpcmQsXG4gICAgc2Vjb25kYXJ5OiBsYXllci5rYW5kb19zZWNvbmRhcnksXG4gICAgdGhpcmQ6IGxheWVyLmthbmRvX3RoaXJkLFxuICB9O1xuXG4gIGlmIChsYXllci5rYW5kb19pbmRleF9vYmplY3QgPT09IDApIHtcbiAgICBpZiAoaXNBRmV3TGF5ZXJJY29uKSB7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvblNpemUgPSBidWJibGVJY29uT3B0aW9ucyh6b29tTGV2ZWwsIG1pbmlJY29uKS5pY29uU2l6ZTtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uQW5jaG9yID0gYnViYmxlSWNvbk9wdGlvbnMoXG4gICAgICAgIHpvb21MZXZlbCxcbiAgICAgICAgbWluaUljb24sXG4gICAgICApLmljb25BbmNob3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uU2l6ZSA9IG9uZUxheWVySWNvbk9wdGlvbnMoem9vbUxldmVsKS5pY29uU2l6ZTtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uQW5jaG9yID0gb25lTGF5ZXJJY29uT3B0aW9ucyh6b29tTGV2ZWwpLmljb25BbmNob3I7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChsYXllci5rYW5kb19pbmRleF9vYmplY3QgPT09IDEpIHtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uU2l6ZSA9IG1pZGRsZUljb25PcHRpb25zKHpvb21MZXZlbCwgbWluaUljb24pLmljb25TaXplO1xuICAgICAgaWNvbi5vcHRpb25zLmljb25BbmNob3IgPSBtaWRkbGVJY29uT3B0aW9ucyhcbiAgICAgICAgem9vbUxldmVsLFxuICAgICAgICBtaW5pSWNvbixcbiAgICAgICkuaWNvbkFuY2hvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWNvbi5vcHRpb25zLmljb25TaXplID0gdG9wSWNvbk9wdGlvbnMoem9vbUxldmVsLCBtaW5pSWNvbikuaWNvblNpemU7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IHRvcEljb25PcHRpb25zKHpvb21MZXZlbCwgbWluaUljb24pLmljb25BbmNob3I7XG4gICAgfVxuICB9XG5cbiAgbGF5ZXIuc2V0SWNvbihpY29uKTtcbn07XG5cbmNvbnN0IG9uZUxheWVySWNvbk9wdGlvbnMgPSAoem9vbUxldmVsKSA9PiB7XG4gIHJldHVybiB7XG4gICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAzLjMsIHpvb21MZXZlbCAqIDMuM10gYXMgUG9pbnRUdXBsZSxcbiAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMS43LCB6b29tTGV2ZWwgKiAzLjddIGFzIFBvaW50VHVwbGUsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZXZlbnRzQ291bnRJY29uID0gKHpvb21MZXZlbCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGljb25TaXplOiBbem9vbUxldmVsICogMi41LCB6b29tTGV2ZWwgKiAyLjVdIGFzIFBvaW50VHVwbGUsXG4gICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDAsIHpvb21MZXZlbCAqIDRdIGFzIFBvaW50VHVwbGUsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgYnViYmxlSWNvbk9wdGlvbnMgPSAoem9vbUxldmVsLCBtaW5pSWNvbikgPT4ge1xuICBpZiAobWluaUljb24ucHJlc2VudCkge1xuICAgIGlmIChtaW5pSWNvbi5zZWNvbmRhcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS45OCwgem9vbUxldmVsICogMi4zXSBhcyBQb2ludFR1cGxlLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMCwgem9vbUxldmVsICogNF0gYXMgUG9pbnRUdXBsZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS45OCwgem9vbUxldmVsICogMi4zXSBhcyBQb2ludFR1cGxlLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMCwgem9vbUxldmVsICogMl0gYXMgUG9pbnRUdXBsZSxcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDMuOTgsIHpvb21MZXZlbCAqIDQuM10gYXMgUG9pbnRUdXBsZSxcbiAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAyLCB6b29tTGV2ZWwgKiA0XSBhcyBQb2ludFR1cGxlLFxuICAgIH07XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBtaWRkbGVJY29uT3B0aW9ucyA9ICh6b29tTGV2ZWwsIG1pbmlJY29uKSA9PiB7XG4gIGlmIChtaW5pSWNvbi5wcmVzZW50KSB7XG4gICAgaWYgKG1pbmlJY29uLnNlY29uZGFyeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAxLjEsIHpvb21MZXZlbCAqIDEuMV0sXG4gICAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAtMC40NSwgem9vbUxldmVsICogMy41XSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS4xLCB6b29tTGV2ZWwgKiAxLjFdLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogLTAuNDUsIHpvb21MZXZlbCAqIDEuNV0sXG4gICAgICB9O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAyLjUsIHpvb21MZXZlbCAqIDIuNV0sXG4gICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMS4yOTUsIHpvb21MZXZlbCAqIDMuMzVdLFxuICAgIH07XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0b3BJY29uT3B0aW9ucyA9ICh6b29tTGV2ZWwsIG1pbmlJY29uKSA9PiB7XG4gIGlmIChtaW5pSWNvbi5wcmVzZW50KSB7XG4gICAgaWYgKG1pbmlJY29uLnNlY29uZGFyeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAwLjksIHpvb21MZXZlbCAqIDEuOF0sXG4gICAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAtMC41LCB6b29tTGV2ZWwgKiAzLjhdLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAxLjYsIHpvb21MZXZlbCAqIDIuNV0sXG4gICAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAtMC4yLCB6b29tTGV2ZWwgKiAyLjFdLFxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMy45LCB6b29tTGV2ZWwgKiAzLjhdLFxuICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDIsIHpvb21MZXZlbCAqIDMuOF0sXG4gICAgfTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGljb25ab29tQ29udHJvbCA9IChtYXApID0+IHtcbiAgbGV0IGxheWVycyA9IG1hcC5fbGF5ZXJzO1xuICBsZXQgem9vbUxldmVsID0gbWFwLl96b29tO1xuXG4gIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbGF5ZXJzKSB7XG4gICAgaWYgKGZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAoWydJY29uTnVtYmVyJ10sIGxheWVyc1twcm9wZXJ0eV0pKSB7XG4gICAgICBldmVudHNDb3VudGVySWNvbnMobGF5ZXJzW3Byb3BlcnR5XSwgem9vbUxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAoZmluZFNwZWNpZmljTGF5ZXJzRnJvbU1hcChbJ1BvaW50JywgJ0ljb24nXSwgbGF5ZXJzW3Byb3BlcnR5XSkpIHtcbiAgICAgIG11bHRpcGxlTGF5ZXJlZEljb25zKGxheWVyc1twcm9wZXJ0eV0sIHpvb21MZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZmluZFNwZWNpZmljTGF5ZXJzRnJvbU1hcChbJ1NhbXBsaW5nJywgJ09ic2VydmF0aW9uJ10sIGxheWVyc1twcm9wZXJ0eV0pXG4gICAgKSB7XG4gICAgICBtdWx0aXBsZUxheWVyZWRJY29ucyhsYXllcnNbcHJvcGVydHldLCB6b29tTGV2ZWwpO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgbWFwU3R5bGUgPSAobWFwQm94U3R5bGUpID0+IHtcbiAgcmV0dXJuIEwudGlsZUxheWVyKFxuICAgIGBodHRwczovL2FwaS5tYXBib3guY29tL3N0eWxlcy92MS9uYWRhdi1rYW5kby8ke21hcEJveFN0eWxlfS90aWxlcy8yNTYve3p9L3t4fS97eX1AMng/YWNjZXNzX3Rva2VuPXBrLmV5SjFJam9pYm1Ga1lYWXRhMkZ1Wkc4aUxDSmhJam9pWTJwdmVIcHJkR1J4TUhsbWRETjRiRGcwZHpKeE9YYzRkU0o5LkotMm9ocTdqNHlLTmJtNE5fLVA2cXdgLFxuICAgIHtcbiAgICAgIGF0dHJpYnV0aW9uOlxuICAgICAgICAnTWFwIGRhdGEgJmNvcHk7IDxhIGhyZWY9XCJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9cIj5PcGVuU3RyZWV0TWFwPC9hPiBjb250cmlidXRvcnMsIDxhIGhyZWY9XCJodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMi4wL1wiPkNDLUJZLVNBPC9hPiwgSW1hZ2VyeSDCqSA8YSBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9cIj5NYXBib3g8L2E+JyxcbiAgICAgIG1heFpvb206IDE4LFxuICAgICAgbWluWm9vbTogMixcbiAgICAgIGlkOiAnbWFwYm94L3N0cmVldHMtdjExJyxcbiAgICAgIHRpbGVTaXplOiA1MTIsXG4gICAgICB6b29tT2Zmc2V0OiAtMSxcbiAgICAgIHVwZGF0ZVdoZW5ab29taW5nOiBmYWxzZSxcbiAgICAgIHVwZGF0ZVdoZW5JZGxlOiBmYWxzZSxcbiAgICB9LFxuICApO1xufTtcbmNvbnN0IGJhc2VNYXBzID0gKG1hcEJveFN0eWxlLCBtYXBCb3hTYXRlbGxpdGVTdHlsZSkgPT4ge1xuICBsZXQgZGVmYXVsdE1hcCA9IGkxOG4udCgnbWFwLmxheWVycy5kZWZhdWx0Jyk7XG4gIGxldCBzYXRlbGxpdGUgPSBpMThuLnQoJ21hcC5sYXllcnMuc2F0ZWxsaXRlJyk7XG4gIHJldHVybiB7XG4gICAgW2RlZmF1bHRNYXBdOiBtYXBTdHlsZShtYXBCb3hTdHlsZSksXG4gICAgW3NhdGVsbGl0ZV06IG1hcFN0eWxlKG1hcEJveFNhdGVsbGl0ZVN0eWxlKSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsaXplTWFwID0gKFxuICBtYXBab29tTGV2ZWwsXG4gIG1hcEJveFN0eWxlLFxuICBtYXBCb3hTYXRlbGxpdGVTdHlsZSxcbiAgbWFwUmVmLFxuICBkaXNwYXRjaCxcbiAgaXNWYWxpZEFyZWEsXG4gIGFyZWFUb0NlbnRlckJ5LFxuICBzZXRNYXBab29tTGV2ZWwsXG4gIGZvcldXVFBEYXNoYm9hcmQsXG4pID0+IHtcbiAgLy8gQHRzLWlnbm9yZVxuICBtYXBSZWYuY3VycmVudCA9IG5ldyBMLk1hcCgnbWFwJywge1xuICAgIGNlbnRlcjogWzAsIDBdLFxuICAgIHpvb21TbmFwOiAxLFxuICAgIHpvb206IG1hcFpvb21MZXZlbCxcbiAgICBhdHRyaWJ1dGlvbkNvbnRyb2w6IGZhbHNlLFxuICAgIHByZWZlckNhbnZhczogZmFsc2UsXG4gIH0pO1xuXG4gIG1hcFJlZi5jdXJyZW50LndoZW5SZWFkeSgoKSA9PiB7XG4gICAgbGV0IG1hcCA9IG1hcFJlZi5jdXJyZW50O1xuICAgIGNvbnN0IG1hcFR5cGVzID0gYmFzZU1hcHMobWFwQm94U3R5bGUsIG1hcEJveFNhdGVsbGl0ZVN0eWxlKTtcblxuICAgIEwuY29udHJvbC5sYXllcnMobWFwVHlwZXMsIHt9LCB7IHBvc2l0aW9uOiAnYm90dG9tcmlnaHQnIH0pLmFkZFRvKG1hcCk7XG5cbiAgICAvLyBUaGUgbmFtZSBvZiB0aGUgbGF5ZXIgY2hhbmdlcyBiZXR3ZWVuIGxhbmd1YWdlcyBzbyB0aGVyZSB3YXMgYSBuZWVkIHRvIGdldCB0byB0aGUgZmlyc3QgbGF5ZXJcbiAgICBPYmplY3QudmFsdWVzKG1hcFR5cGVzKVswXS5hZGRUbyhtYXApO1xuXG4gICAgLy8gbWFwLm9uKCd6b29tZW5kJywgZnVuY3Rpb24gKCkge1xuICAgIC8vICAgLy8gaWNvblpvb21Db250cm9sKG1hcCk7XG4gICAgLy8gfSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuaW52YWxpZGF0ZVNpemUodHJ1ZSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignZXJyJywgZXJyKTtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goc3RvcmVNYXAobWFwUmVmLmN1cnJlbnQpKTtcbiAgICAgIGlmIChmb3JXV1RQRGFzaGJvYXJkKSBkaXNwYXRjaChzZXRNYXAobWFwUmVmLmN1cnJlbnQpKTtcbiAgICAgIGRpc3BhdGNoKHNpZGVOYXZFeHBhbmRlZCh0cnVlKSk7XG5cbiAgICAgIG1hcC5vbigna2V5ZG93bicsIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQub3JpZ2luYWxFdmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgbWFwLmNsb3NlUG9wdXAoKTtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sIDApO1xuICAgIGlmIChtYXBSZWYuY3VycmVudCAmJiBpc1ZhbGlkQXJlYShhcmVhVG9DZW50ZXJCeSkpIHtcbiAgICAgIG1hcFJlZi5jdXJyZW50LmZpdEJvdW5kcyhhcmVhVG9DZW50ZXJCeSk7XG4gICAgfVxuICB9KTtcblxuICBtYXBSZWYuY3VycmVudC5vbignem9vbWVuZCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKCFtYXBSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgem9vbSA9IG1hcFJlZi5jdXJyZW50LmdldFpvb20oKTtcbiAgICBzZXRNYXBab29tTGV2ZWwoem9vbSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHpvb21MZXZlbHMgPSB7XG4gIDE6ICdYTGFyZ2UnLFxuICAyOiAnWExhcmdlJyxcbiAgMzogJ1hMYXJnZScsXG4gIDQ6ICdYTGFyZ2UnLFxuICA1OiAnWExhcmdlJyxcbiAgNjogJ1hMYXJnZScsXG4gIDc6ICdMYXJnZScsXG4gIDg6ICdMYXJnZScsXG4gIDk6ICdMYXJnZScsXG4gIDEwOiAnTGFyZ2UnLFxuICAxMTogJ01MYXJnZScsXG4gIDEyOiAnTUxhcmdlJyxcbiAgMTM6ICdNTGFyZ2UnLFxuICAxNDogJ01MYXJnZScsXG4gIDE1OiAnTWVkaXVtJyxcbiAgMTY6ICdNZWRpdW0nLFxuICAxNzogJ1NtYWxsJyxcbiAgMTg6ICdTbWFsbCcsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFILE9BQUE7QUFFTyxJQUFNSSxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUlDLE1BQU0sRUFBRUMsV0FBVyxFQUFFQyxjQUFjLEVBQUs7RUFDckUsSUFBSUMsV0FBZ0IsR0FBR0gsTUFBTSxDQUFDSSxPQUFPO0VBQ3JDLElBQUlILFdBQVcsQ0FBQ0MsY0FBYyxDQUFDLEVBQUU7SUFDL0JDLFdBQVcsQ0FBQ0UsU0FBUyxDQUFDSCxjQUFjLEVBQUU7TUFBRUksT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBRSxDQUFDLENBQUM7RUFDNUQsQ0FBQyxNQUFNO0lBQ0wsSUFBTUMsS0FBWSxHQUFHLEVBQUU7SUFFdkIsS0FBSyxJQUFNQyxRQUFRLElBQUlMLFdBQVcsQ0FBQ00sT0FBTyxFQUFFO01BQzFDLElBQUlOLFdBQVcsQ0FBQ00sT0FBTyxDQUFDRCxRQUFRLENBQUMsQ0FBQ0UsWUFBWSxLQUFLLE1BQU0sRUFBRTtRQUN6REgsS0FBSyxDQUFDSSxJQUFJLENBQUNSLFdBQVcsQ0FBQ00sT0FBTyxDQUFDRCxRQUFRLENBQUMsQ0FBQztNQUMzQztJQUNGO0lBRUEsSUFBSUksTUFBTSxDQUFDQyxJQUFJLENBQUNDLGdCQUFDLENBQUNDLFlBQVksQ0FBQ1IsS0FBSyxDQUFDLENBQUNTLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUMvRGQsV0FBVyxDQUFDRSxTQUFTLENBQUNTLGdCQUFDLENBQUNDLFlBQVksQ0FBQ1IsS0FBSyxDQUFDLENBQUNTLFNBQVMsQ0FBQyxDQUFDLEVBQUU7UUFDdkRWLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHO01BQ3BCLENBQUMsQ0FBQztJQUNKO0VBQ0Y7RUFDQUgsV0FBVyxDQUFDZSxjQUFjLENBQUMsSUFBSSxDQUFDO0FBQ2xDLENBQUM7QUFBQ0MsT0FBQSxDQUFBcEIsY0FBQSxHQUFBQSxjQUFBO0FBRUssSUFBTUUsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUltQixJQUFJLEVBQUs7RUFDbkMsT0FBT0EsSUFBSSxJQUFJQSxJQUFJLENBQUNILE1BQU0sR0FBRyxDQUFDLElBQUlMLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0gsTUFBTSxHQUFHLENBQUM7QUFDbkUsQ0FBQztBQUFDRSxPQUFBLENBQUFsQixXQUFBLEdBQUFBLFdBQUE7QUFFSyxJQUFNb0Isb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBSUMsV0FBVyxFQUFFdEIsTUFBTSxFQUFFdUIsTUFBTSxFQUFFQyxLQUFLLEVBQUs7RUFDMUUsT0FDRUYsV0FBVyxDQUFDRyxHQUFHLEtBQUtDLFNBQVMsSUFDN0IxQixNQUFNLENBQUNJLE9BQU8sS0FBSyxJQUFJLElBQ3ZCb0IsS0FBSyxLQUFLRSxTQUFTLElBQ25CSCxNQUFNLEtBQUtHLFNBQVM7QUFFeEIsQ0FBQztBQUFDUCxPQUFBLENBQUFFLG9CQUFBLEdBQUFBLG9CQUFBO0FBRUssSUFBTU0sNEJBQTRCLEdBQUcsU0FBL0JBLDRCQUE0QkEsQ0FDdkNILEtBQUssRUFDTEksS0FBSyxFQUNMQyxNQUFNLEVBQ043QixNQUFNLEVBQ051QixNQUFNLEVBQ0g7RUFDSCxPQUNFTSxNQUFNLENBQUNKLEdBQUcsS0FBS0MsU0FBUyxJQUN4QjFCLE1BQU0sQ0FBQ0ksT0FBTyxLQUFLLElBQUksSUFDdkJvQixLQUFLLENBQUNQLE1BQU0sS0FBSyxDQUFDLElBQ2xCVyxLQUFLLENBQUNYLE1BQU0sS0FBSyxDQUFDLElBQ2xCTSxNQUFNLENBQUNOLE1BQU0sS0FBSyxDQUFDO0FBRXZCLENBQUM7QUFBQ0UsT0FBQSxDQUFBUSw0QkFBQSxHQUFBQSw0QkFBQTtBQUVLLElBQU1HLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBeUJBLENBQ3BDQyxZQUFzQixFQUN0QkMsWUFBWSxFQUNUO0VBQ0gsT0FDRUQsWUFBWSxDQUFDRSxRQUFRLENBQUNELFlBQVksQ0FBQ3RCLFlBQVksQ0FBQyxJQUNoRHNCLFlBQVksQ0FBQ0UsZ0JBQWdCLEtBQUssU0FBUztBQUUvQyxDQUFDO0FBQUNmLE9BQUEsQ0FBQVcseUJBQUEsR0FBQUEseUJBQUE7QUFFSyxJQUFNSyxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJQyxLQUFLLEVBQUVDLFNBQVMsRUFBSztFQUN0RCxJQUFJQyxJQUFJLEdBQUdGLEtBQUssQ0FBQ0csT0FBTyxDQUFDRCxJQUFJO0VBQzdCQSxJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsUUFBUSxHQUFHQyxlQUFlLENBQUNKLFNBQVMsQ0FBQyxDQUFDRyxRQUFRO0VBQzNERixJQUFJLENBQUNDLE9BQU8sQ0FBQ0csVUFBVSxHQUFHRCxlQUFlLENBQUNKLFNBQVMsQ0FBQyxDQUFDSyxVQUFVO0VBQy9ETixLQUFLLENBQUNPLE9BQU8sQ0FBQ0wsSUFBSSxDQUFDO0VBQ25CRixLQUFLLENBQUNRLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUFDekIsT0FBQSxDQUFBZ0Isa0JBQUEsR0FBQUEsa0JBQUE7QUFFSyxJQUFNVSxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFJVCxLQUFLLEVBQUVDLFNBQVMsRUFBSztFQUN4RCxJQUFJQyxJQUFJLEdBQUdGLEtBQUssQ0FBQ0csT0FBTyxDQUFDRCxJQUFJO0VBQzdCLElBQUlRLGVBQWUsR0FBR1YsS0FBSyxDQUFDVyxvQkFBb0I7RUFDaEQsSUFBSUMsUUFBUSxHQUFHO0lBQ2JDLE9BQU8sRUFBRWIsS0FBSyxDQUFDYyxlQUFlLElBQUlkLEtBQUssQ0FBQ2UsV0FBVztJQUNuREMsU0FBUyxFQUFFaEIsS0FBSyxDQUFDYyxlQUFlO0lBQ2hDRyxLQUFLLEVBQUVqQixLQUFLLENBQUNlO0VBQ2YsQ0FBQztFQUVELElBQUlmLEtBQUssQ0FBQ2tCLGtCQUFrQixLQUFLLENBQUMsRUFBRTtJQUNsQyxJQUFJUixlQUFlLEVBQUU7TUFDbkJSLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxRQUFRLEdBQUdlLGlCQUFpQixDQUFDbEIsU0FBUyxFQUFFVyxRQUFRLENBQUMsQ0FBQ1IsUUFBUTtNQUN2RUYsSUFBSSxDQUFDQyxPQUFPLENBQUNHLFVBQVUsR0FBR2EsaUJBQWlCLENBQ3pDbEIsU0FBUyxFQUNUVyxRQUNGLENBQUMsQ0FBQ04sVUFBVTtJQUNkLENBQUMsTUFBTTtNQUNMSixJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsUUFBUSxHQUFHZ0IsbUJBQW1CLENBQUNuQixTQUFTLENBQUMsQ0FBQ0csUUFBUTtNQUMvREYsSUFBSSxDQUFDQyxPQUFPLENBQUNHLFVBQVUsR0FBR2MsbUJBQW1CLENBQUNuQixTQUFTLENBQUMsQ0FBQ0ssVUFBVTtJQUNyRTtFQUNGLENBQUMsTUFBTTtJQUNMLElBQUlOLEtBQUssQ0FBQ2tCLGtCQUFrQixLQUFLLENBQUMsRUFBRTtNQUNsQ2hCLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxRQUFRLEdBQUdpQixpQkFBaUIsQ0FBQ3BCLFNBQVMsRUFBRVcsUUFBUSxDQUFDLENBQUNSLFFBQVE7TUFDdkVGLElBQUksQ0FBQ0MsT0FBTyxDQUFDRyxVQUFVLEdBQUdlLGlCQUFpQixDQUN6Q3BCLFNBQVMsRUFDVFcsUUFDRixDQUFDLENBQUNOLFVBQVU7SUFDZCxDQUFDLE1BQU07TUFDTEosSUFBSSxDQUFDQyxPQUFPLENBQUNDLFFBQVEsR0FBR2tCLGNBQWMsQ0FBQ3JCLFNBQVMsRUFBRVcsUUFBUSxDQUFDLENBQUNSLFFBQVE7TUFDcEVGLElBQUksQ0FBQ0MsT0FBTyxDQUFDRyxVQUFVLEdBQUdnQixjQUFjLENBQUNyQixTQUFTLEVBQUVXLFFBQVEsQ0FBQyxDQUFDTixVQUFVO0lBQzFFO0VBQ0Y7RUFFQU4sS0FBSyxDQUFDTyxPQUFPLENBQUNMLElBQUksQ0FBQztBQUNyQixDQUFDO0FBQUNuQixPQUFBLENBQUEwQixvQkFBQSxHQUFBQSxvQkFBQTtBQUVGLElBQU1XLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUluQixTQUFTLEVBQUs7RUFDekMsT0FBTztJQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBZTtJQUMxREssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxHQUFHLEVBQUVBLFNBQVMsR0FBRyxHQUFHO0VBQy9DLENBQUM7QUFDSCxDQUFDO0FBRU0sSUFBTUksZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJSixTQUFTLEVBQUs7RUFDNUMsT0FBTztJQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBZTtJQUMxREssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEVBQUVBLFNBQVMsR0FBRyxDQUFDO0VBQzNDLENBQUM7QUFDSCxDQUFDO0FBQUNsQixPQUFBLENBQUFzQixlQUFBLEdBQUFBLGVBQUE7QUFFSyxJQUFNYyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFJbEIsU0FBUyxFQUFFVyxRQUFRLEVBQUs7RUFDeEQsSUFBSUEsUUFBUSxDQUFDQyxPQUFPLEVBQUU7SUFDcEIsSUFBSUQsUUFBUSxDQUFDSSxTQUFTLEVBQUU7TUFDdEIsT0FBTztRQUNMWixRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLElBQUksRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBZTtRQUMzREssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEVBQUVBLFNBQVMsR0FBRyxDQUFDO01BQzNDLENBQUM7SUFDSCxDQUFDLE1BQU07TUFDTCxPQUFPO1FBQ0xHLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsSUFBSSxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFlO1FBQzNESyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsRUFBRUEsU0FBUyxHQUFHLENBQUM7TUFDM0MsQ0FBQztJQUNIO0VBQ0YsQ0FBQyxNQUFNO0lBQ0wsT0FBTztNQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLElBQUksRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBZTtNQUMzREssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEVBQUVBLFNBQVMsR0FBRyxDQUFDO0lBQzNDLENBQUM7RUFDSDtBQUNGLENBQUM7QUFBQ2xCLE9BQUEsQ0FBQW9DLGlCQUFBLEdBQUFBLGlCQUFBO0FBRUssSUFBTUUsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSXBCLFNBQVMsRUFBRVcsUUFBUSxFQUFLO0VBQ3hELElBQUlBLFFBQVEsQ0FBQ0MsT0FBTyxFQUFFO0lBQ3BCLElBQUlELFFBQVEsQ0FBQ0ksU0FBUyxFQUFFO01BQ3RCLE9BQU87UUFDTFosUUFBUSxFQUFFLENBQUNILFNBQVMsR0FBRyxHQUFHLEVBQUVBLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDNUNLLFVBQVUsRUFBRSxDQUFDTCxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUVBLFNBQVMsR0FBRyxHQUFHO01BQ2pELENBQUM7SUFDSCxDQUFDLE1BQU07TUFDTCxPQUFPO1FBQ0xHLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzVDSyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFQSxTQUFTLEdBQUcsR0FBRztNQUNqRCxDQUFDO0lBQ0g7RUFDRixDQUFDLE1BQU07SUFDTCxPQUFPO01BQ0xHLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFDO01BQzVDSyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLEtBQUssRUFBRUEsU0FBUyxHQUFHLElBQUk7SUFDbEQsQ0FBQztFQUNIO0FBQ0YsQ0FBQztBQUFDbEIsT0FBQSxDQUFBc0MsaUJBQUEsR0FBQUEsaUJBQUE7QUFFSyxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUlyQixTQUFTLEVBQUVXLFFBQVEsRUFBSztFQUNyRCxJQUFJQSxRQUFRLENBQUNDLE9BQU8sRUFBRTtJQUNwQixJQUFJRCxRQUFRLENBQUNJLFNBQVMsRUFBRTtNQUN0QixPQUFPO1FBQ0xaLFFBQVEsRUFBRSxDQUFDSCxTQUFTLEdBQUcsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzVDSyxVQUFVLEVBQUUsQ0FBQ0wsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFQSxTQUFTLEdBQUcsR0FBRztNQUNoRCxDQUFDO0lBQ0gsQ0FBQyxNQUFNO01BQ0wsT0FBTztRQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUM1Q0ssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUc7TUFDaEQsQ0FBQztJQUNIO0VBQ0YsQ0FBQyxNQUFNO0lBQ0wsT0FBTztNQUNMRyxRQUFRLEVBQUUsQ0FBQ0gsU0FBUyxHQUFHLEdBQUcsRUFBRUEsU0FBUyxHQUFHLEdBQUcsQ0FBQztNQUM1Q0ssVUFBVSxFQUFFLENBQUNMLFNBQVMsR0FBRyxDQUFDLEVBQUVBLFNBQVMsR0FBRyxHQUFHO0lBQzdDLENBQUM7RUFDSDtBQUNGLENBQUM7QUFBQ2xCLE9BQUEsQ0FBQXVDLGNBQUEsR0FBQUEsY0FBQTtBQUVLLElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSWxDLEdBQUcsRUFBSztFQUN0QyxJQUFJbUMsTUFBTSxHQUFHbkMsR0FBRyxDQUFDaEIsT0FBTztFQUN4QixJQUFJNEIsU0FBUyxHQUFHWixHQUFHLENBQUNvQyxLQUFLO0VBRXpCLEtBQUssSUFBTXJELFFBQVEsSUFBSW9ELE1BQU0sRUFBRTtJQUM3QixJQUFJOUIseUJBQXlCLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRThCLE1BQU0sQ0FBQ3BELFFBQVEsQ0FBQyxDQUFDLEVBQUU7TUFDL0QyQixrQkFBa0IsQ0FBQ3lCLE1BQU0sQ0FBQ3BELFFBQVEsQ0FBQyxFQUFFNkIsU0FBUyxDQUFDO0lBQ2pEO0lBRUEsSUFBSVAseUJBQXlCLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUU4QixNQUFNLENBQUNwRCxRQUFRLENBQUMsQ0FBQyxFQUFFO01BQ2xFcUMsb0JBQW9CLENBQUNlLE1BQU0sQ0FBQ3BELFFBQVEsQ0FBQyxFQUFFNkIsU0FBUyxDQUFDO0lBQ25EO0lBRUEsSUFDRVAseUJBQXlCLENBQUMsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEVBQUU4QixNQUFNLENBQUNwRCxRQUFRLENBQUMsQ0FBQyxFQUN4RTtNQUNBcUMsb0JBQW9CLENBQUNlLE1BQU0sQ0FBQ3BELFFBQVEsQ0FBQyxFQUFFNkIsU0FBUyxDQUFDO0lBQ25EO0VBQ0Y7QUFDRixDQUFDO0FBQUNsQixPQUFBLENBQUF3QyxlQUFBLEdBQUFBLGVBQUE7QUFFRixJQUFNRyxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBSUMsV0FBVyxFQUFLO0VBQ2hDLE9BQU9qRCxnQkFBQyxDQUFDa0QsU0FBUyxpREFBQUMsTUFBQSxDQUNnQ0YsV0FBVyw0SUFDM0Q7SUFDRUcsV0FBVyxFQUNULHlOQUF5TjtJQUMzTkMsT0FBTyxFQUFFLEVBQUU7SUFDWEMsT0FBTyxFQUFFLENBQUM7SUFDVkMsRUFBRSxFQUFFLG9CQUFvQjtJQUN4QkMsUUFBUSxFQUFFLEdBQUc7SUFDYkMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNkQyxpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCQyxjQUFjLEVBQUU7RUFDbEIsQ0FDRixDQUFDO0FBQ0gsQ0FBQztBQUNELElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFJWCxXQUFXLEVBQUVZLG9CQUFvQixFQUFLO0VBQUEsSUFBQUMsSUFBQTtFQUN0RCxJQUFJQyxVQUFVLEdBQUdDLGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO0VBQzdDLElBQUlDLFNBQVMsR0FBR0YsYUFBSSxDQUFDQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7RUFDOUMsT0FBQUgsSUFBQSxXQUFBSyxnQkFBQSxDQUFBQyxPQUFBLEVBQUFOLElBQUEsRUFDR0MsVUFBVSxFQUFHZixRQUFRLENBQUNDLFdBQVcsQ0FBQyxPQUFBa0IsZ0JBQUEsQ0FBQUMsT0FBQSxFQUFBTixJQUFBLEVBQ2xDSSxTQUFTLEVBQUdsQixRQUFRLENBQUNhLG9CQUFvQixDQUFDLEdBQUFDLElBQUE7QUFFL0MsQ0FBQztBQUVNLElBQU1PLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FDeEJDLFlBQVksRUFDWnJCLFdBQVcsRUFDWFksb0JBQW9CLEVBQ3BCM0UsTUFBTSxFQUNOcUYsUUFBUSxFQUNScEYsV0FBVyxFQUNYQyxjQUFjLEVBQ2RvRixlQUFlLEVBQ2ZDLGdCQUFnQixFQUNiO0VBQ0g7RUFDQXZGLE1BQU0sQ0FBQ0ksT0FBTyxHQUFHLElBQUlVLGdCQUFDLENBQUMwRSxHQUFHLENBQUMsS0FBSyxFQUFFO0lBQ2hDQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2RDLFFBQVEsRUFBRSxDQUFDO0lBQ1hDLElBQUksRUFBRVAsWUFBWTtJQUNsQlEsa0JBQWtCLEVBQUUsS0FBSztJQUN6QkMsWUFBWSxFQUFFO0VBQ2hCLENBQUMsQ0FBQztFQUVGN0YsTUFBTSxDQUFDSSxPQUFPLENBQUMwRixTQUFTLENBQUMsWUFBTTtJQUM3QixJQUFJckUsR0FBRyxHQUFHekIsTUFBTSxDQUFDSSxPQUFPO0lBQ3hCLElBQU0yRixRQUFRLEdBQUdyQixRQUFRLENBQUNYLFdBQVcsRUFBRVksb0JBQW9CLENBQUM7SUFFNUQ3RCxnQkFBQyxDQUFDa0YsT0FBTyxDQUFDcEMsTUFBTSxDQUFDbUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFO01BQUVFLFFBQVEsRUFBRTtJQUFjLENBQUMsQ0FBQyxDQUFDQyxLQUFLLENBQUN6RSxHQUFHLENBQUM7O0lBRXRFO0lBQ0FiLE1BQU0sQ0FBQ3VGLE1BQU0sQ0FBQ0osUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNHLEtBQUssQ0FBQ3pFLEdBQUcsQ0FBQzs7SUFFckM7SUFDQTtJQUNBO0lBQ0EyRSxVQUFVLENBQUMsWUFBTTtNQUNmLElBQUksQ0FBQ3BHLE1BQU0sQ0FBQ0ksT0FBTyxFQUFFO1FBQ25CO01BQ0Y7TUFFQSxJQUFJO1FBQ0ZKLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDYyxjQUFjLENBQUMsSUFBSSxDQUFDO01BQ3JDLENBQUMsQ0FBQyxPQUFPbUYsR0FBRyxFQUFFO1FBQ1pDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLEtBQUssRUFBRUYsR0FBRyxDQUFDO01BQzNCO01BRUFoQixRQUFRLENBQUMsSUFBQW1CLGlCQUFRLEVBQUN4RyxNQUFNLENBQUNJLE9BQU8sQ0FBQyxDQUFDO01BQ2xDLElBQUltRixnQkFBZ0IsRUFBRUYsUUFBUSxDQUFDLElBQUFvQiwwQkFBTSxFQUFDekcsTUFBTSxDQUFDSSxPQUFPLENBQUMsQ0FBQztNQUN0RGlGLFFBQVEsQ0FBQyxJQUFBcUIsd0JBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQztNQUUvQmpGLEdBQUcsQ0FBQ2tGLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBQ0MsS0FBSyxFQUFLO1FBQzNCLElBQUlBLEtBQUssQ0FBQ0MsYUFBYSxDQUFDQyxHQUFHLEtBQUssUUFBUSxFQUFFO1VBQ3hDckYsR0FBRyxDQUFDc0YsVUFBVSxDQUFDLENBQUM7VUFDaEJDLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQztRQUN2QjtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDTCxJQUFJbEgsTUFBTSxDQUFDSSxPQUFPLElBQUlILFdBQVcsQ0FBQ0MsY0FBYyxDQUFDLEVBQUU7TUFDakRGLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDQyxTQUFTLENBQUNILGNBQWMsQ0FBQztJQUMxQztFQUNGLENBQUMsQ0FBQztFQUVGRixNQUFNLENBQUNJLE9BQU8sQ0FBQ3VHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVVEsQ0FBQyxFQUFFO0lBQ3hDLElBQUksQ0FBQ25ILE1BQU0sQ0FBQ0ksT0FBTyxFQUFFO01BQ25CO0lBQ0Y7SUFDQSxJQUFJdUYsSUFBSSxHQUFHM0YsTUFBTSxDQUFDSSxPQUFPLENBQUNnSCxPQUFPLENBQUMsQ0FBQztJQUNuQzlCLGVBQWUsQ0FBQ0ssSUFBSSxDQUFDO0VBQ3ZCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFBQ3hFLE9BQUEsQ0FBQWdFLGFBQUEsR0FBQUEsYUFBQTtBQUVLLElBQU1rQyxVQUFVLEdBQUc7RUFDeEIsQ0FBQyxFQUFFLFFBQVE7RUFDWCxDQUFDLEVBQUUsUUFBUTtFQUNYLENBQUMsRUFBRSxRQUFRO0VBQ1gsQ0FBQyxFQUFFLFFBQVE7RUFDWCxDQUFDLEVBQUUsUUFBUTtFQUNYLENBQUMsRUFBRSxRQUFRO0VBQ1gsQ0FBQyxFQUFFLE9BQU87RUFDVixDQUFDLEVBQUUsT0FBTztFQUNWLENBQUMsRUFBRSxPQUFPO0VBQ1YsRUFBRSxFQUFFLE9BQU87RUFDWCxFQUFFLEVBQUUsUUFBUTtFQUNaLEVBQUUsRUFBRSxRQUFRO0VBQ1osRUFBRSxFQUFFLFFBQVE7RUFDWixFQUFFLEVBQUUsUUFBUTtFQUNaLEVBQUUsRUFBRSxRQUFRO0VBQ1osRUFBRSxFQUFFLFFBQVE7RUFDWixFQUFFLEVBQUUsT0FBTztFQUNYLEVBQUUsRUFBRTtBQUNOLENBQUM7QUFBQ2xHLE9BQUEsQ0FBQWtHLFVBQUEsR0FBQUEsVUFBQSJ9
273
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FjdGlvbnMiLCJfaTE4biIsIl9XV1RQRGFzaGJvYXJkU2xpY2UiLCJhcmVhRm9jdXNMb2dpYyIsIm1hcFJlZiIsImlzVmFsaWRBcmVhIiwiYXJlYVRvQ2VudGVyQnkiLCJtYXBJbnN0YW5jZSIsImN1cnJlbnQiLCJmaXRCb3VuZHMiLCJwYWRkaW5nIiwiZ3JvdXAiLCJwcm9wZXJ0eSIsIl9sYXllcnMiLCJrYW5kb19vYmplY3QiLCJwdXNoIiwiT2JqZWN0Iiwia2V5cyIsIkwiLCJmZWF0dXJlR3JvdXAiLCJnZXRCb3VuZHMiLCJsZW5ndGgiLCJpbnZhbGlkYXRlU2l6ZSIsImV4cG9ydHMiLCJhcmVhIiwic2hvdWxkTG9hZE1hcE9iamVjdHMiLCJnbG9iYWxfZGF0YSIsInBvaW50cyIsImVkZ2VzIiwibWFwIiwidW5kZWZpbmVkIiwic2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyIsImFyZWFzIiwiZ2xvYmFsIiwiZmluZFNwZWNpZmljTGF5ZXJzRnJvbU1hcCIsImxheWVyc1RvRmluZCIsImN1cnJlbnRMYXllciIsImluY2x1ZGVzIiwia2FuZG9fcG9pbnRfdHlwZSIsImV2ZW50c0NvdW50ZXJJY29ucyIsImxheWVyIiwiem9vbUxldmVsIiwiaWNvbiIsIm9wdGlvbnMiLCJpY29uU2l6ZSIsImV2ZW50c0NvdW50SWNvbiIsImljb25BbmNob3IiLCJzZXRJY29uIiwic2V0T3BhY2l0eSIsIm11bHRpcGxlTGF5ZXJlZEljb25zIiwiaXNBRmV3TGF5ZXJJY29uIiwia2FuZG9fZmV3X2xheWVyX2ljb24iLCJtaW5pSWNvbiIsInByZXNlbnQiLCJrYW5kb19zZWNvbmRhcnkiLCJrYW5kb190aGlyZCIsInNlY29uZGFyeSIsInRoaXJkIiwia2FuZG9faW5kZXhfb2JqZWN0IiwiYnViYmxlSWNvbk9wdGlvbnMiLCJvbmVMYXllckljb25PcHRpb25zIiwibWlkZGxlSWNvbk9wdGlvbnMiLCJ0b3BJY29uT3B0aW9ucyIsImljb25ab29tQ29udHJvbCIsImxheWVycyIsIl96b29tIiwibWFwU3R5bGUiLCJtYXBCb3hTdHlsZSIsInRpbGVMYXllciIsImNvbmNhdCIsImF0dHJpYnV0aW9uIiwibWF4Wm9vbSIsIm1pblpvb20iLCJpZCIsInRpbGVTaXplIiwiem9vbU9mZnNldCIsInVwZGF0ZVdoZW5ab29taW5nIiwidXBkYXRlV2hlbklkbGUiLCJiYXNlTWFwcyIsIm1hcEJveFNhdGVsbGl0ZVN0eWxlIiwiZGVmYXVsdE1hcCIsImkxOG4iLCJ0Iiwic2F0ZWxsaXRlIiwiaW5pdGlhbGl6ZU1hcCIsIm1hcFpvb21MZXZlbCIsImRpc3BhdGNoIiwic2V0TWFwWm9vbUxldmVsIiwiZm9yV1dUUERhc2hib2FyZCIsIk1hcCIsImNlbnRlciIsInpvb21TbmFwIiwiem9vbSIsImF0dHJpYnV0aW9uQ29udHJvbCIsInByZWZlckNhbnZhcyIsIndoZW5SZWFkeSIsIm1hcFR5cGVzIiwiY29udHJvbCIsInBvc2l0aW9uIiwiYWRkVG8iLCJ2YWx1ZXMiLCJzZXRUaW1lb3V0IiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwic3RvcmVNYXAiLCJzZXRNYXAiLCJzaWRlTmF2RXhwYW5kZWQiLCJvbiIsImV2ZW50Iiwib3JpZ2luYWxFdmVudCIsImtleSIsImNsb3NlUG9wdXAiLCJkb2N1bWVudCIsImJvZHkiLCJmb2N1cyIsImUiLCJnZXRab29tIiwiem9vbUxldmVscyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9NYXBVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTCwgeyBQb2ludFR1cGxlIH0gZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgeyBzaWRlTmF2RXhwYW5kZWQsIHN0b3JlTWFwIH0gZnJvbSAnLi4vLi4vc3RvcmUvZ2xvYmFsL2FjdGlvbnMnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IHNldE1hcCB9IGZyb20gJy4uLy4uL3N0b3JlL1dXVFBEYXNoYm9hcmQvV1dUUERhc2hib2FyZFNsaWNlJztcblxuZXhwb3J0IGNvbnN0IGFyZWFGb2N1c0xvZ2ljID0gKG1hcFJlZiwgaXNWYWxpZEFyZWEsIGFyZWFUb0NlbnRlckJ5KSA9PiB7XG4gIGxldCBtYXBJbnN0YW5jZTogYW55ID0gbWFwUmVmLmN1cnJlbnQ7XG4gIGlmIChpc1ZhbGlkQXJlYShhcmVhVG9DZW50ZXJCeSkpIHtcbiAgICBtYXBJbnN0YW5jZS5maXRCb3VuZHMoYXJlYVRvQ2VudGVyQnksIHsgcGFkZGluZzogWzAsIDBdIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGdyb3VwOiBhbnlbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBtYXBJbnN0YW5jZS5fbGF5ZXJzKSB7XG4gICAgICBpZiAobWFwSW5zdGFuY2UuX2xheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0ID09PSAnQXJlYScpIHtcbiAgICAgICAgZ3JvdXAucHVzaChtYXBJbnN0YW5jZS5fbGF5ZXJzW3Byb3BlcnR5XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKEwuZmVhdHVyZUdyb3VwKGdyb3VwKS5nZXRCb3VuZHMoKSkubGVuZ3RoICE9PSAwKSB7XG4gICAgICBtYXBJbnN0YW5jZS5maXRCb3VuZHMoTC5mZWF0dXJlR3JvdXAoZ3JvdXApLmdldEJvdW5kcygpLCB7XG4gICAgICAgIHBhZGRpbmc6IFsxMDAsIDEwMF0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbWFwSW5zdGFuY2UuaW52YWxpZGF0ZVNpemUodHJ1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZEFyZWEgPSAoYXJlYSkgPT4ge1xuICByZXR1cm4gYXJlYSAmJiBhcmVhLmxlbmd0aCA+IDAgJiYgT2JqZWN0LmtleXMoYXJlYVswXSkubGVuZ3RoID4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG91bGRMb2FkTWFwT2JqZWN0cyA9IChnbG9iYWxfZGF0YSwgbWFwUmVmLCBwb2ludHMsIGVkZ2VzKSA9PiB7XG4gIHJldHVybiAoXG4gICAgZ2xvYmFsX2RhdGEubWFwICE9PSB1bmRlZmluZWQgJiZcbiAgICBtYXBSZWYuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgIGVkZ2VzICE9PSB1bmRlZmluZWQgJiZcbiAgICBwb2ludHMgIT09IHVuZGVmaW5lZFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMgPSAoXG4gIGVkZ2VzLFxuICBhcmVhcyxcbiAgZ2xvYmFsLFxuICBtYXBSZWYsXG4gIHBvaW50cyxcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIGdsb2JhbC5tYXAgIT09IHVuZGVmaW5lZCAmJlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgZWRnZXMubGVuZ3RoICE9PSAwICYmXG4gICAgYXJlYXMubGVuZ3RoICE9PSAwICYmXG4gICAgcG9pbnRzLmxlbmd0aCAhPT0gMFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAgPSAoXG4gIGxheWVyc1RvRmluZDogc3RyaW5nW10sXG4gIGN1cnJlbnRMYXllcixcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIGxheWVyc1RvRmluZC5pbmNsdWRlcyhjdXJyZW50TGF5ZXIua2FuZG9fb2JqZWN0KSAmJlxuICAgIGN1cnJlbnRMYXllci5rYW5kb19wb2ludF90eXBlICE9PSAnTWFuaG9sZSdcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBldmVudHNDb3VudGVySWNvbnMgPSAobGF5ZXIsIHpvb21MZXZlbCkgPT4ge1xuICBsZXQgaWNvbiA9IGxheWVyLm9wdGlvbnMuaWNvbjtcbiAgaWNvbi5vcHRpb25zLmljb25TaXplID0gZXZlbnRzQ291bnRJY29uKHpvb21MZXZlbCkuaWNvblNpemU7XG4gIGljb24ub3B0aW9ucy5pY29uQW5jaG9yID0gZXZlbnRzQ291bnRJY29uKHpvb21MZXZlbCkuaWNvbkFuY2hvcjtcbiAgbGF5ZXIuc2V0SWNvbihpY29uKTtcbiAgbGF5ZXIuc2V0T3BhY2l0eSgxKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtdWx0aXBsZUxheWVyZWRJY29ucyA9IChsYXllciwgem9vbUxldmVsKSA9PiB7XG4gIGxldCBpY29uID0gbGF5ZXIub3B0aW9ucy5pY29uO1xuICBsZXQgaXNBRmV3TGF5ZXJJY29uID0gbGF5ZXIua2FuZG9fZmV3X2xheWVyX2ljb247XG4gIGxldCBtaW5pSWNvbiA9IHtcbiAgICBwcmVzZW50OiBsYXllci5rYW5kb19zZWNvbmRhcnkgfHwgbGF5ZXIua2FuZG9fdGhpcmQsXG4gICAgc2Vjb25kYXJ5OiBsYXllci5rYW5kb19zZWNvbmRhcnksXG4gICAgdGhpcmQ6IGxheWVyLmthbmRvX3RoaXJkLFxuICB9O1xuXG4gIGlmIChsYXllci5rYW5kb19pbmRleF9vYmplY3QgPT09IDApIHtcbiAgICBpZiAoaXNBRmV3TGF5ZXJJY29uKSB7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvblNpemUgPSBidWJibGVJY29uT3B0aW9ucyh6b29tTGV2ZWwsIG1pbmlJY29uKS5pY29uU2l6ZTtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uQW5jaG9yID0gYnViYmxlSWNvbk9wdGlvbnMoXG4gICAgICAgIHpvb21MZXZlbCxcbiAgICAgICAgbWluaUljb24sXG4gICAgICApLmljb25BbmNob3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uU2l6ZSA9IG9uZUxheWVySWNvbk9wdGlvbnMoem9vbUxldmVsKS5pY29uU2l6ZTtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uQW5jaG9yID0gb25lTGF5ZXJJY29uT3B0aW9ucyh6b29tTGV2ZWwpLmljb25BbmNob3I7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChsYXllci5rYW5kb19pbmRleF9vYmplY3QgPT09IDEpIHtcbiAgICAgIGljb24ub3B0aW9ucy5pY29uU2l6ZSA9IG1pZGRsZUljb25PcHRpb25zKHpvb21MZXZlbCwgbWluaUljb24pLmljb25TaXplO1xuICAgICAgaWNvbi5vcHRpb25zLmljb25BbmNob3IgPSBtaWRkbGVJY29uT3B0aW9ucyhcbiAgICAgICAgem9vbUxldmVsLFxuICAgICAgICBtaW5pSWNvbixcbiAgICAgICkuaWNvbkFuY2hvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWNvbi5vcHRpb25zLmljb25TaXplID0gdG9wSWNvbk9wdGlvbnMoem9vbUxldmVsLCBtaW5pSWNvbikuaWNvblNpemU7XG4gICAgICBpY29uLm9wdGlvbnMuaWNvbkFuY2hvciA9IHRvcEljb25PcHRpb25zKHpvb21MZXZlbCwgbWluaUljb24pLmljb25BbmNob3I7XG4gICAgfVxuICB9XG5cbiAgbGF5ZXIuc2V0SWNvbihpY29uKTtcbn07XG5cbmNvbnN0IG9uZUxheWVySWNvbk9wdGlvbnMgPSAoem9vbUxldmVsKSA9PiB7XG4gIHJldHVybiB7XG4gICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAzLjMsIHpvb21MZXZlbCAqIDMuM10gYXMgUG9pbnRUdXBsZSxcbiAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMS43LCB6b29tTGV2ZWwgKiAzLjddIGFzIFBvaW50VHVwbGUsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZXZlbnRzQ291bnRJY29uID0gKHpvb21MZXZlbCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGljb25TaXplOiBbem9vbUxldmVsICogMi41LCB6b29tTGV2ZWwgKiAyLjVdIGFzIFBvaW50VHVwbGUsXG4gICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDAsIHpvb21MZXZlbCAqIDRdIGFzIFBvaW50VHVwbGUsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgYnViYmxlSWNvbk9wdGlvbnMgPSAoem9vbUxldmVsLCBtaW5pSWNvbikgPT4ge1xuICBpZiAobWluaUljb24ucHJlc2VudCkge1xuICAgIGlmIChtaW5pSWNvbi5zZWNvbmRhcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS45OCwgem9vbUxldmVsICogMi4zXSBhcyBQb2ludFR1cGxlLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMCwgem9vbUxldmVsICogNF0gYXMgUG9pbnRUdXBsZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS45OCwgem9vbUxldmVsICogMi4zXSBhcyBQb2ludFR1cGxlLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMCwgem9vbUxldmVsICogMl0gYXMgUG9pbnRUdXBsZSxcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uU2l6ZTogW3pvb21MZXZlbCAqIDMuOTgsIHpvb21MZXZlbCAqIDQuM10gYXMgUG9pbnRUdXBsZSxcbiAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAyLCB6b29tTGV2ZWwgKiA0XSBhcyBQb2ludFR1cGxlLFxuICAgIH07XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBtaWRkbGVJY29uT3B0aW9ucyA9ICh6b29tTGV2ZWwsIG1pbmlJY29uKSA9PiB7XG4gIGlmIChtaW5pSWNvbi5wcmVzZW50KSB7XG4gICAgaWYgKG1pbmlJY29uLnNlY29uZGFyeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAxLjEsIHpvb21MZXZlbCAqIDEuMV0sXG4gICAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAtMC40NSwgem9vbUxldmVsICogMy41XSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMS4xLCB6b29tTGV2ZWwgKiAxLjFdLFxuICAgICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogLTAuNDUsIHpvb21MZXZlbCAqIDEuNV0sXG4gICAgICB9O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAyLjUsIHpvb21MZXZlbCAqIDIuNV0sXG4gICAgICBpY29uQW5jaG9yOiBbem9vbUxldmVsICogMS4yOTUsIHpvb21MZXZlbCAqIDMuMzVdLFxuICAgIH07XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0b3BJY29uT3B0aW9ucyA9ICh6b29tTGV2ZWwsIG1pbmlJY29uKSA9PiB7XG4gIGlmIChtaW5pSWNvbi5wcmVzZW50KSB7XG4gICAgaWYgKG1pbmlJY29uLnNlY29uZGFyeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAwLjksIHpvb21MZXZlbCAqIDEuOF0sXG4gICAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAtMC41LCB6b29tTGV2ZWwgKiAzLjhdLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvblNpemU6IFt6b29tTGV2ZWwgKiAxLjYsIHpvb21MZXZlbCAqIDIuNV0sXG4gICAgICAgIGljb25BbmNob3I6IFt6b29tTGV2ZWwgKiAtMC4yLCB6b29tTGV2ZWwgKiAyLjFdLFxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb25TaXplOiBbem9vbUxldmVsICogMy45LCB6b29tTGV2ZWwgKiAzLjhdLFxuICAgICAgaWNvbkFuY2hvcjogW3pvb21MZXZlbCAqIDIsIHpvb21MZXZlbCAqIDMuOF0sXG4gICAgfTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGljb25ab29tQ29udHJvbCA9IChtYXApID0+IHtcbiAgbGV0IGxheWVycyA9IG1hcC5fbGF5ZXJzO1xuICBsZXQgem9vbUxldmVsID0gbWFwLl96b29tO1xuXG4gIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbGF5ZXJzKSB7XG4gICAgaWYgKGZpbmRTcGVjaWZpY0xheWVyc0Zyb21NYXAoWydJY29uTnVtYmVyJ10sIGxheWVyc1twcm9wZXJ0eV0pKSB7XG4gICAgICBldmVudHNDb3VudGVySWNvbnMobGF5ZXJzW3Byb3BlcnR5XSwgem9vbUxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAoZmluZFNwZWNpZmljTGF5ZXJzRnJvbU1hcChbJ1BvaW50JywgJ0ljb24nXSwgbGF5ZXJzW3Byb3BlcnR5XSkpIHtcbiAgICAgIG11bHRpcGxlTGF5ZXJlZEljb25zKGxheWVyc1twcm9wZXJ0eV0sIHpvb21MZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZmluZFNwZWNpZmljTGF5ZXJzRnJvbU1hcChbJ1NhbXBsaW5nJywgJ09ic2VydmF0aW9uJ10sIGxheWVyc1twcm9wZXJ0eV0pXG4gICAgKSB7XG4gICAgICBtdWx0aXBsZUxheWVyZWRJY29ucyhsYXllcnNbcHJvcGVydHldLCB6b29tTGV2ZWwpO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgbWFwU3R5bGUgPSAobWFwQm94U3R5bGUpID0+IHtcbiAgcmV0dXJuIEwudGlsZUxheWVyKFxuICAgIGBodHRwczovL2FwaS5tYXBib3guY29tL3N0eWxlcy92MS9uYWRhdi1rYW5kby8ke21hcEJveFN0eWxlfS90aWxlcy8yNTYve3p9L3t4fS97eX1AMng/YWNjZXNzX3Rva2VuPXBrLmV5SjFJam9pYm1Ga1lYWXRhMkZ1Wkc4aUxDSmhJam9pWTJwdmVIcHJkR1J4TUhsbWRETjRiRGcwZHpKeE9YYzRkU0o5LkotMm9ocTdqNHlLTmJtNE5fLVA2cXdgLFxuICAgIHtcbiAgICAgIGF0dHJpYnV0aW9uOlxuICAgICAgICAnTWFwIGRhdGEgJmNvcHk7IDxhIGhyZWY9XCJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9cIj5PcGVuU3RyZWV0TWFwPC9hPiBjb250cmlidXRvcnMsIDxhIGhyZWY9XCJodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMi4wL1wiPkNDLUJZLVNBPC9hPiwgSW1hZ2VyeSDCqSA8YSBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9cIj5NYXBib3g8L2E+JyxcbiAgICAgIG1heFpvb206IDE4LFxuICAgICAgbWluWm9vbTogMixcbiAgICAgIGlkOiAnbWFwYm94L3N0cmVldHMtdjExJyxcbiAgICAgIHRpbGVTaXplOiA1MTIsXG4gICAgICB6b29tT2Zmc2V0OiAtMSxcbiAgICAgIHVwZGF0ZVdoZW5ab29taW5nOiBmYWxzZSxcbiAgICAgIHVwZGF0ZVdoZW5JZGxlOiBmYWxzZSxcbiAgICB9LFxuICApO1xufTtcbmNvbnN0IGJhc2VNYXBzID0gKG1hcEJveFN0eWxlLCBtYXBCb3hTYXRlbGxpdGVTdHlsZSkgPT4ge1xuICBsZXQgZGVmYXVsdE1hcCA9IGkxOG4udCgnbWFwLmxheWVycy5kZWZhdWx0Jyk7XG4gIGxldCBzYXRlbGxpdGUgPSBpMThuLnQoJ21hcC5sYXllcnMuc2F0ZWxsaXRlJyk7XG4gIHJldHVybiB7XG4gICAgW2RlZmF1bHRNYXBdOiBtYXBTdHlsZShtYXBCb3hTdHlsZSksXG4gICAgW3NhdGVsbGl0ZV06IG1hcFN0eWxlKG1hcEJveFNhdGVsbGl0ZVN0eWxlKSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsaXplTWFwID0gKFxuICBtYXBab29tTGV2ZWwsXG4gIG1hcEJveFN0eWxlLFxuICBtYXBCb3hTYXRlbGxpdGVTdHlsZSxcbiAgbWFwUmVmLFxuICBkaXNwYXRjaCxcbiAgaXNWYWxpZEFyZWEsXG4gIGFyZWFUb0NlbnRlckJ5LFxuICBzZXRNYXBab29tTGV2ZWwsXG4gIGZvcldXVFBEYXNoYm9hcmQsXG4pID0+IHtcbiAgLy8gQHRzLWlnbm9yZVxuICBtYXBSZWYuY3VycmVudCA9IG5ldyBMLk1hcCgnbWFwJywge1xuICAgIGNlbnRlcjogWzAsIDBdLFxuICAgIHpvb21TbmFwOiAxLFxuICAgIHpvb206IG1hcFpvb21MZXZlbCxcbiAgICBhdHRyaWJ1dGlvbkNvbnRyb2w6IGZhbHNlLFxuICAgIHByZWZlckNhbnZhczogZmFsc2UsXG4gIH0pO1xuXG4gIG1hcFJlZi5jdXJyZW50LndoZW5SZWFkeSgoKSA9PiB7XG4gICAgbGV0IG1hcCA9IG1hcFJlZi5jdXJyZW50O1xuICAgIGNvbnN0IG1hcFR5cGVzID0gYmFzZU1hcHMobWFwQm94U3R5bGUsIG1hcEJveFNhdGVsbGl0ZVN0eWxlKTtcblxuICAgIEwuY29udHJvbC5sYXllcnMobWFwVHlwZXMsIHt9LCB7IHBvc2l0aW9uOiAnYm90dG9tcmlnaHQnIH0pLmFkZFRvKG1hcCk7XG5cbiAgICAvLyBUaGUgbmFtZSBvZiB0aGUgbGF5ZXIgY2hhbmdlcyBiZXR3ZWVuIGxhbmd1YWdlcyBzbyB0aGVyZSB3YXMgYSBuZWVkIHRvIGdldCB0byB0aGUgZmlyc3QgbGF5ZXJcbiAgICBPYmplY3QudmFsdWVzKG1hcFR5cGVzKVswXS5hZGRUbyhtYXApO1xuXG4gICAgLy8gbWFwLm9uKCd6b29tZW5kJywgZnVuY3Rpb24gKCkge1xuICAgIC8vICAgLy8gaWNvblpvb21Db250cm9sKG1hcCk7XG4gICAgLy8gfSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuaW52YWxpZGF0ZVNpemUodHJ1ZSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignZXJyJywgZXJyKTtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goc3RvcmVNYXAobWFwUmVmLmN1cnJlbnQpKTtcbiAgICAgIGlmIChmb3JXV1RQRGFzaGJvYXJkKSBkaXNwYXRjaChzZXRNYXAobWFwUmVmLmN1cnJlbnQpKTtcbiAgICAgIGRpc3BhdGNoKHNpZGVOYXZFeHBhbmRlZCh0cnVlKSk7XG5cbiAgICAgIG1hcC5vbigna2V5ZG93bicsIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQub3JpZ2luYWxFdmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgbWFwLmNsb3NlUG9wdXAoKTtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sIDApO1xuICAgIGlmIChtYXBSZWYuY3VycmVudCAmJiBpc1ZhbGlkQXJlYShhcmVhVG9DZW50ZXJCeSkpIHtcbiAgICAgIG1hcFJlZi5jdXJyZW50LmZpdEJvdW5kcyhhcmVhVG9DZW50ZXJCeSk7XG4gICAgfVxuICB9KTtcblxuICBtYXBSZWYuY3VycmVudC5vbignem9vbWVuZCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKCFtYXBSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgem9vbSA9IG1hcFJlZi5jdXJyZW50LmdldFpvb20oKTtcbiAgICBzZXRNYXBab29tTGV2ZWwoem9vbSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHpvb21MZXZlbHMgPSB7XG4gIDE6ICdYTGFyZ2UnLFxuICAyOiAnWExhcmdlJyxcbiAgMzogJ1hMYXJnZScsXG4gIDQ6ICdYTGFyZ2UnLFxuICA1OiAnWExhcmdlJyxcbiAgNjogJ1hMYXJnZScsXG4gIDc6ICdMYXJnZScsXG4gIDg6ICdMYXJnZScsXG4gIDk6ICdMYXJnZScsXG4gIDEwOiAnTGFyZ2UnLFxuICAxMTogJ01MYXJnZScsXG4gIDEyOiAnTUxhcmdlJyxcbiAgMTM6ICdNTGFyZ2UnLFxuICAxNDogJ01MYXJnZScsXG4gIDE1OiAnTWVkaXVtJyxcbiAgMTY6ICdNZWRpdW0nLFxuICAxNzogJ1NtYWxsJyxcbiAgMTg6ICdTbWFsbCcsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsbUJBQUEsR0FB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
@@ -1,13 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
11
8
  var _react = _interopRequireWildcard(require("react"));
12
9
  var _reactRedux = require("react-redux");
13
10
  var _AreaUtils = require("./AreaUtils");
@@ -15,95 +12,62 @@ var _reactDom = _interopRequireDefault(require("react-dom"));
15
12
  var _Widget = require("pages/DashboardMap/Widget");
16
13
  var _utils = require("pages/DashboardMap/utils");
17
14
  var _ListContext = require("pages/DashboardMap/ListContext");
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 AreaPolygon = function AreaPolygon(props) {
21
- var map = props.map,
22
- area = props.area,
23
- mapZoom = props.mapZoom,
24
- global_data = props.global_data,
25
- featureGroup = props.featureGroup;
26
- var points = (0, _reactRedux.useSelector)(function (state) {
27
- return state.points_data.items;
28
- });
29
- var areas = (0, _reactRedux.useSelector)(function (state) {
30
- return state.areas_data.items;
31
- });
32
- var WWTPMode = (0, _reactRedux.useSelector)(function (state) {
33
- return state.wwtp_dashboard.map !== null;
34
- });
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 AreaPolygon = props => {
18
+ const {
19
+ map,
20
+ area,
21
+ mapZoom,
22
+ global_data,
23
+ featureGroup
24
+ } = props;
25
+ const points = (0, _reactRedux.useSelector)(state => state.points_data.items);
26
+ const areas = (0, _reactRedux.useSelector)(state => state.areas_data.items);
27
+ const WWTPMode = (0, _reactRedux.useSelector)(state => state.wwtp_dashboard.map !== null);
35
28
  // useRemoveExistingLayers(map, area, 'Area', mapZoom);
36
29
  //const [LayerGroup] = useState<any>(L.layerGroup([]));
37
- var dispatch = (0, _reactRedux.useDispatch)();
38
- var _useSelectedItem = (0, _ListContext.useSelectedItem)(),
39
- handleSelectItem = _useSelectedItem.handleSelectItem;
40
- var locale = (0, _reactRedux.useSelector)(function (state) {
41
- return state.nav_context_data.navContext.locale;
42
- });
43
- var WWTPMapLogic = function WWTPMapLogic(polygon, area) {
30
+ const dispatch = (0, _reactRedux.useDispatch)();
31
+ const {
32
+ handleSelectItem
33
+ } = (0, _ListContext.useSelectedItem)();
34
+ const locale = (0, _reactRedux.useSelector)(state => state.nav_context_data.navContext.locale);
35
+ const WWTPMapLogic = (polygon, area) => {
44
36
  if (!WWTPMode) return;
45
- var fetchDataAndShowPopup = /*#__PURE__*/function () {
46
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
47
- var widgetContainer, data, areaType, response;
48
- return _regenerator.default.wrap(function _callee$(_context) {
49
- while (1) {
50
- switch (_context.prev = _context.next) {
51
- case 0:
52
- widgetContainer = document.createElement('span');
53
- (0, _utils.createPopupForObject)({
54
- renderedElement: widgetContainer,
55
- marker: polygon
56
- });
57
- areaType = (area === null || area === void 0 ? void 0 : area.is_virtual) === true ? 'varea' : 'area';
58
- _context.next = 5;
59
- return fetch("/api_ui/wwtp_page/".concat(areaType, "/").concat(area.area_id, "/capacity?locale=").concat(locale, "&water_authority_id=").concat(global_data.waterAuthorityId));
60
- case 5:
61
- response = _context.sent;
62
- if (!response.ok) {
63
- _context.next = 12;
64
- break;
65
- }
66
- _context.next = 9;
67
- return response.json();
68
- case 9:
69
- data = _context.sent;
70
- _context.next = 12;
71
- break;
72
- case 12:
73
- _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_Widget.Widget, {
74
- object: area,
75
- dispatch: dispatch,
76
- areas: areas,
77
- points: points,
78
- map: map,
79
- global_data: global_data,
80
- listData: data
81
- }), widgetContainer);
82
- if (!polygon.isPopupOpen()) {
83
- polygon.openPopup();
84
- }
85
- case 14:
86
- case "end":
87
- return _context.stop();
88
- }
89
- }
90
- }, _callee);
91
- }));
92
- return function fetchDataAndShowPopup() {
93
- return _ref.apply(this, arguments);
94
- };
95
- }();
96
- polygon.on('click-event', function () {
37
+ const fetchDataAndShowPopup = async () => {
38
+ const widgetContainer = document.createElement('span');
39
+ let data;
40
+ (0, _utils.createPopupForObject)({
41
+ renderedElement: widgetContainer,
42
+ marker: polygon
43
+ });
44
+ const areaType = (area === null || area === void 0 ? void 0 : area.is_virtual) === true ? 'varea' : 'area';
45
+ const response = await fetch("/api_ui/wwtp_page/".concat(areaType, "/").concat(area.area_id, "/capacity?locale=").concat(locale, "&water_authority_id=").concat(global_data.waterAuthorityId));
46
+ if (response.ok) {
47
+ data = await response.json();
48
+ } else {}
49
+ _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_Widget.Widget, {
50
+ object: area,
51
+ dispatch: dispatch,
52
+ areas: areas,
53
+ points: points,
54
+ map: map,
55
+ global_data: global_data,
56
+ listData: data
57
+ }), widgetContainer);
58
+ if (!polygon.isPopupOpen()) {
59
+ polygon.openPopup();
60
+ }
61
+ };
62
+ polygon.on('click-event', () => {
97
63
  polygon.isPopupOpen() ? polygon.closePopup() : fetchDataAndShowPopup();
98
64
  polygon.openTooltip();
99
65
  });
100
66
  };
101
- (0, _react.useEffect)(function () {
102
- var polygon = (0, _AreaUtils.createPolygon)(area, mapZoom, featureGroup, map, WWTPMapLogic, WWTPMode ? handleSelectItem : null);
67
+ (0, _react.useEffect)(() => {
68
+ const polygon = (0, _AreaUtils.createPolygon)(area, mapZoom, featureGroup, map, WWTPMapLogic, WWTPMode ? handleSelectItem : null);
103
69
  if (polygon) {
104
- var subAreas = area.sub_areas.map(function (subArea) {
105
- return subArea.area_id;
106
- });
70
+ let subAreas = area.sub_areas.map(subArea => subArea.area_id);
107
71
  if (subAreas.length > 0) {
108
72
  polygon['sub_areas'] = subAreas;
109
73
  }
@@ -111,7 +75,7 @@ var AreaPolygon = function AreaPolygon(props) {
111
75
  }, []);
112
76
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
113
77
  };
114
- var connector = (0, _reactRedux.connect)(null);
78
+ const connector = (0, _reactRedux.connect)(null);
115
79
  var _default = connector(AreaPolygon);
116
80
  exports.default = _default;
117
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9BcmVhVXRpbHMiLCJfcmVhY3REb20iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1dpZGdldCIsIl91dGlscyIsIl9MaXN0Q29udGV4dCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiQXJlYVBvbHlnb24iLCJwcm9wcyIsIm1hcCIsImFyZWEiLCJtYXBab29tIiwiZ2xvYmFsX2RhdGEiLCJmZWF0dXJlR3JvdXAiLCJwb2ludHMiLCJ1c2VTZWxlY3RvciIsInN0YXRlIiwicG9pbnRzX2RhdGEiLCJpdGVtcyIsImFyZWFzIiwiYXJlYXNfZGF0YSIsIldXVFBNb2RlIiwid3d0cF9kYXNoYm9hcmQiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwiX3VzZVNlbGVjdGVkSXRlbSIsInVzZVNlbGVjdGVkSXRlbSIsImhhbmRsZVNlbGVjdEl0ZW0iLCJsb2NhbGUiLCJuYXZfY29udGV4dF9kYXRhIiwibmF2Q29udGV4dCIsIldXVFBNYXBMb2dpYyIsInBvbHlnb24iLCJmZXRjaERhdGFBbmRTaG93UG9wdXAiLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJ3aWRnZXRDb250YWluZXIiLCJkYXRhIiwiYXJlYVR5cGUiLCJyZXNwb25zZSIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjcmVhdGVQb3B1cEZvck9iamVjdCIsInJlbmRlcmVkRWxlbWVudCIsIm1hcmtlciIsImlzX3ZpcnR1YWwiLCJmZXRjaCIsImNvbmNhdCIsImFyZWFfaWQiLCJ3YXRlckF1dGhvcml0eUlkIiwic2VudCIsIm9rIiwianNvbiIsIlJlYWN0RE9NIiwicmVuZGVyIiwiV2lkZ2V0Iiwib2JqZWN0IiwibGlzdERhdGEiLCJpc1BvcHVwT3BlbiIsIm9wZW5Qb3B1cCIsInN0b3AiLCJhcHBseSIsImFyZ3VtZW50cyIsIm9uIiwiY2xvc2VQb3B1cCIsIm9wZW5Ub29sdGlwIiwidXNlRWZmZWN0IiwiY3JlYXRlUG9seWdvbiIsInN1YkFyZWFzIiwic3ViX2FyZWFzIiwic3ViQXJlYSIsImxlbmd0aCIsIkZyYWdtZW50IiwiY29ubmVjdG9yIiwiY29ubmVjdCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9hcmVhcy9BcmVhUG9seWdvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNvbm5lY3QsIHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IElBcmVhIH0gZnJvbSAnc3JjL3N0b3JlL2FyZWFzL21vZGVscy9JQXJlYSc7XG5pbXBvcnQgeyBjcmVhdGVQb2x5Z29uIH0gZnJvbSAnLi9BcmVhVXRpbHMnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgeyBXaWRnZXQgfSBmcm9tICdzcmMvcGFnZXMvRGFzaGJvYXJkTWFwL1dpZGdldCc7XG5pbXBvcnQgeyBjcmVhdGVQb3B1cEZvck9iamVjdCB9IGZyb20gJ3NyYy9wYWdlcy9EYXNoYm9hcmRNYXAvdXRpbHMnO1xuaW1wb3J0IHsgdXNlU2VsZWN0ZWRJdGVtIH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC9MaXN0Q29udGV4dCc7XG5pbXBvcnQgeyBGZWF0dXJlR3JvdXAgfSBmcm9tICdsZWFmbGV0JztcblxudHlwZSBQcm9wcyA9IHtcbiAgbWFwOiBhbnk7XG4gIEw6IGFueTtcbiAgYXJlYTogSUFyZWEgJiB7IGNvbG9yPzogc3RyaW5nOyBzaG93Q29sb3JPbmx5SW5Cb3JkZXJzPzogYm9vbGVhbiB9O1xuICBtYXBab29tOiBudW1iZXI7XG4gIGdsb2JhbF9kYXRhOiBhbnk7XG4gIGJpbmRQb3B1cD86IGJvb2xlYW47XG4gIGZlYXR1cmVHcm91cDogRmVhdHVyZUdyb3VwO1xufTtcblxuY29uc3QgQXJlYVBvbHlnb246IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IG1hcCwgYXJlYSwgbWFwWm9vbSwgZ2xvYmFsX2RhdGEsIGZlYXR1cmVHcm91cCB9ID0gcHJvcHM7XG4gIGNvbnN0IHBvaW50cyA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUucG9pbnRzX2RhdGEuaXRlbXMpO1xuICBjb25zdCBhcmVhcyA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUuYXJlYXNfZGF0YS5pdGVtcyk7XG4gIGNvbnN0IFdXVFBNb2RlID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53d3RwX2Rhc2hib2FyZC5tYXAgIT09IG51bGwpO1xuICAvLyB1c2VSZW1vdmVFeGlzdGluZ0xheWVycyhtYXAsIGFyZWEsICdBcmVhJywgbWFwWm9vbSk7XG4gIC8vY29uc3QgW0xheWVyR3JvdXBdID0gdXNlU3RhdGU8YW55PihMLmxheWVyR3JvdXAoW10pKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IGhhbmRsZVNlbGVjdEl0ZW0gfSA9IHVzZVNlbGVjdGVkSXRlbSgpO1xuXG4gIGNvbnN0IGxvY2FsZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUubmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LmxvY2FsZSxcbiAgKTtcblxuICBjb25zdCBXV1RQTWFwTG9naWMgPSAocG9seWdvbiwgYXJlYSkgPT4ge1xuICAgIGlmICghV1dUUE1vZGUpIHJldHVybjtcblxuICAgIGNvbnN0IGZldGNoRGF0YUFuZFNob3dQb3B1cCA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHdpZGdldENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIGxldCBkYXRhO1xuXG4gICAgICBjcmVhdGVQb3B1cEZvck9iamVjdCh7XG4gICAgICAgIHJlbmRlcmVkRWxlbWVudDogd2lkZ2V0Q29udGFpbmVyLFxuICAgICAgICBtYXJrZXI6IHBvbHlnb24sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYXJlYVR5cGUgPSBhcmVhPy5pc192aXJ0dWFsID09PSB0cnVlID8gJ3ZhcmVhJyA6ICdhcmVhJztcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICAgIGAvYXBpX3VpL3d3dHBfcGFnZS8ke2FyZWFUeXBlfS8ke2FyZWEuYXJlYV9pZH0vY2FwYWNpdHk/bG9jYWxlPSR7bG9jYWxlfSZ3YXRlcl9hdXRob3JpdHlfaWQ9JHtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkfWAsXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICB9XG5cbiAgICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgICAgPFdpZGdldFxuICAgICAgICAgIG9iamVjdD17YXJlYX1cbiAgICAgICAgICBkaXNwYXRjaD17ZGlzcGF0Y2h9XG4gICAgICAgICAgYXJlYXM9e2FyZWFzfVxuICAgICAgICAgIHBvaW50cz17cG9pbnRzfVxuICAgICAgICAgIG1hcD17bWFwfVxuICAgICAgICAgIGdsb2JhbF9kYXRhPXtnbG9iYWxfZGF0YX1cbiAgICAgICAgICBsaXN0RGF0YT17ZGF0YX1cbiAgICAgICAgLz4sXG4gICAgICAgIHdpZGdldENvbnRhaW5lcixcbiAgICAgICk7XG4gICAgICBpZiAoIXBvbHlnb24uaXNQb3B1cE9wZW4oKSkge1xuICAgICAgICBwb2x5Z29uLm9wZW5Qb3B1cCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBwb2x5Z29uLm9uKCdjbGljay1ldmVudCcsICgpID0+IHtcbiAgICAgIHBvbHlnb24uaXNQb3B1cE9wZW4oKSA/IHBvbHlnb24uY2xvc2VQb3B1cCgpIDogZmV0Y2hEYXRhQW5kU2hvd1BvcHVwKCk7XG4gICAgICBwb2x5Z29uLm9wZW5Ub29sdGlwKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwb2x5Z29uID0gY3JlYXRlUG9seWdvbihcbiAgICAgIGFyZWEsXG4gICAgICBtYXBab29tLFxuICAgICAgZmVhdHVyZUdyb3VwLFxuICAgICAgbWFwLFxuICAgICAgV1dUUE1hcExvZ2ljLFxuICAgICAgV1dUUE1vZGUgPyBoYW5kbGVTZWxlY3RJdGVtIDogbnVsbCxcbiAgICApO1xuICAgIGlmIChwb2x5Z29uKSB7XG4gICAgICBsZXQgc3ViQXJlYXMgPSBhcmVhLnN1Yl9hcmVhcy5tYXAoKHN1YkFyZWEpID0+IHN1YkFyZWEuYXJlYV9pZCk7XG4gICAgICBpZiAoc3ViQXJlYXMubGVuZ3RoID4gMCkge1xuICAgICAgICBwb2x5Z29uWydzdWJfYXJlYXMnXSA9IHN1YkFyZWFzO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiA8PjwvPjtcbn07XG5cbmNvbnN0IGNvbm5lY3RvciA9IGNvbm5lY3QobnVsbCk7XG5leHBvcnQgZGVmYXVsdCBjb25uZWN0b3IoQXJlYVBvbHlnb24pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEs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
81
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9BcmVhVXRpbHMiLCJfcmVhY3REb20iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1dpZGdldCIsIl91dGlscyIsIl9MaXN0Q29udGV4dCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJBcmVhUG9seWdvbiIsInByb3BzIiwibWFwIiwiYXJlYSIsIm1hcFpvb20iLCJnbG9iYWxfZGF0YSIsImZlYXR1cmVHcm91cCIsInBvaW50cyIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJwb2ludHNfZGF0YSIsIml0ZW1zIiwiYXJlYXMiLCJhcmVhc19kYXRhIiwiV1dUUE1vZGUiLCJ3d3RwX2Rhc2hib2FyZCIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJoYW5kbGVTZWxlY3RJdGVtIiwidXNlU2VsZWN0ZWRJdGVtIiwibG9jYWxlIiwibmF2X2NvbnRleHRfZGF0YSIsIm5hdkNvbnRleHQiLCJXV1RQTWFwTG9naWMiLCJwb2x5Z29uIiwiZmV0Y2hEYXRhQW5kU2hvd1BvcHVwIiwid2lkZ2V0Q29udGFpbmVyIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiZGF0YSIsImNyZWF0ZVBvcHVwRm9yT2JqZWN0IiwicmVuZGVyZWRFbGVtZW50IiwibWFya2VyIiwiYXJlYVR5cGUiLCJpc192aXJ0dWFsIiwicmVzcG9uc2UiLCJmZXRjaCIsImNvbmNhdCIsImFyZWFfaWQiLCJ3YXRlckF1dGhvcml0eUlkIiwib2siLCJqc29uIiwiUmVhY3RET00iLCJyZW5kZXIiLCJXaWRnZXQiLCJvYmplY3QiLCJsaXN0RGF0YSIsImlzUG9wdXBPcGVuIiwib3BlblBvcHVwIiwib24iLCJjbG9zZVBvcHVwIiwib3BlblRvb2x0aXAiLCJ1c2VFZmZlY3QiLCJjcmVhdGVQb2x5Z29uIiwic3ViQXJlYXMiLCJzdWJfYXJlYXMiLCJzdWJBcmVhIiwibGVuZ3RoIiwiRnJhZ21lbnQiLCJjb25uZWN0b3IiLCJjb25uZWN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL2FyZWFzL0FyZWFQb2x5Z29uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY29ubmVjdCwgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgSUFyZWEgfSBmcm9tICdzcmMvc3RvcmUvYXJlYXMvbW9kZWxzL0lBcmVhJztcbmltcG9ydCB7IGNyZWF0ZVBvbHlnb24gfSBmcm9tICcuL0FyZWFVdGlscyc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IFdpZGdldCB9IGZyb20gJ3NyYy9wYWdlcy9EYXNoYm9hcmRNYXAvV2lkZ2V0JztcbmltcG9ydCB7IGNyZWF0ZVBvcHVwRm9yT2JqZWN0IH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC91dGlscyc7XG5pbXBvcnQgeyB1c2VTZWxlY3RlZEl0ZW0gfSBmcm9tICdzcmMvcGFnZXMvRGFzaGJvYXJkTWFwL0xpc3RDb250ZXh0JztcbmltcG9ydCB7IEZlYXR1cmVHcm91cCB9IGZyb20gJ2xlYWZsZXQnO1xuXG50eXBlIFByb3BzID0ge1xuICBtYXA6IGFueTtcbiAgTDogYW55O1xuICBhcmVhOiBJQXJlYSAmIHsgY29sb3I/OiBzdHJpbmc7IHNob3dDb2xvck9ubHlJbkJvcmRlcnM/OiBib29sZWFuIH07XG4gIG1hcFpvb206IG51bWJlcjtcbiAgZ2xvYmFsX2RhdGE6IGFueTtcbiAgYmluZFBvcHVwPzogYm9vbGVhbjtcbiAgZmVhdHVyZUdyb3VwOiBGZWF0dXJlR3JvdXA7XG59O1xuXG5jb25zdCBBcmVhUG9seWdvbjogUmVhY3QuRkM8UHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgbWFwLCBhcmVhLCBtYXBab29tLCBnbG9iYWxfZGF0YSwgZmVhdHVyZUdyb3VwIH0gPSBwcm9wcztcbiAgY29uc3QgcG9pbnRzID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5wb2ludHNfZGF0YS5pdGVtcyk7XG4gIGNvbnN0IGFyZWFzID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5hcmVhc19kYXRhLml0ZW1zKTtcbiAgY29uc3QgV1dUUE1vZGUgPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLnd3dHBfZGFzaGJvYXJkLm1hcCAhPT0gbnVsbCk7XG4gIC8vIHVzZVJlbW92ZUV4aXN0aW5nTGF5ZXJzKG1hcCwgYXJlYSwgJ0FyZWEnLCBtYXBab29tKTtcbiAgLy9jb25zdCBbTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZTxhbnk+KEwubGF5ZXJHcm91cChbXSkpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgaGFuZGxlU2VsZWN0SXRlbSB9ID0gdXNlU2VsZWN0ZWRJdGVtKCk7XG5cbiAgY29uc3QgbG9jYWxlID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS5uYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubG9jYWxlLFxuICApO1xuXG4gIGNvbnN0IFdXVFBNYXBMb2dpYyA9IChwb2x5Z29uLCBhcmVhKSA9PiB7XG4gICAgaWYgKCFXV1RQTW9kZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgZmV0Y2hEYXRhQW5kU2hvd1BvcHVwID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgd2lkZ2V0Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgbGV0IGRhdGE7XG5cbiAgICAgIGNyZWF0ZVBvcHVwRm9yT2JqZWN0KHtcbiAgICAgICAgcmVuZGVyZWRFbGVtZW50OiB3aWRnZXRDb250YWluZXIsXG4gICAgICAgIG1hcmtlcjogcG9seWdvbixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhcmVhVHlwZSA9IGFyZWE/LmlzX3ZpcnR1YWwgPT09IHRydWUgPyAndmFyZWEnIDogJ2FyZWEnO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChcbiAgICAgICAgYC9hcGlfdWkvd3d0cF9wYWdlLyR7YXJlYVR5cGV9LyR7YXJlYS5hcmVhX2lkfS9jYXBhY2l0eT9sb2NhbGU9JHtsb2NhbGV9JndhdGVyX2F1dGhvcml0eV9pZD0ke2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWR9YCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgIH1cblxuICAgICAgUmVhY3RET00ucmVuZGVyKFxuICAgICAgICA8V2lkZ2V0XG4gICAgICAgICAgb2JqZWN0PXthcmVhfVxuICAgICAgICAgIGRpc3BhdGNoPXtkaXNwYXRjaH1cbiAgICAgICAgICBhcmVhcz17YXJlYXN9XG4gICAgICAgICAgcG9pbnRzPXtwb2ludHN9XG4gICAgICAgICAgbWFwPXttYXB9XG4gICAgICAgICAgZ2xvYmFsX2RhdGE9e2dsb2JhbF9kYXRhfVxuICAgICAgICAgIGxpc3REYXRhPXtkYXRhfVxuICAgICAgICAvPixcbiAgICAgICAgd2lkZ2V0Q29udGFpbmVyLFxuICAgICAgKTtcbiAgICAgIGlmICghcG9seWdvbi5pc1BvcHVwT3BlbigpKSB7XG4gICAgICAgIHBvbHlnb24ub3BlblBvcHVwKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHBvbHlnb24ub24oJ2NsaWNrLWV2ZW50JywgKCkgPT4ge1xuICAgICAgcG9seWdvbi5pc1BvcHVwT3BlbigpID8gcG9seWdvbi5jbG9zZVBvcHVwKCkgOiBmZXRjaERhdGFBbmRTaG93UG9wdXAoKTtcbiAgICAgIHBvbHlnb24ub3BlblRvb2x0aXAoKTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHBvbHlnb24gPSBjcmVhdGVQb2x5Z29uKFxuICAgICAgYXJlYSxcbiAgICAgIG1hcFpvb20sXG4gICAgICBmZWF0dXJlR3JvdXAsXG4gICAgICBtYXAsXG4gICAgICBXV1RQTWFwTG9naWMsXG4gICAgICBXV1RQTW9kZSA/IGhhbmRsZVNlbGVjdEl0ZW0gOiBudWxsLFxuICAgICk7XG4gICAgaWYgKHBvbHlnb24pIHtcbiAgICAgIGxldCBzdWJBcmVhcyA9IGFyZWEuc3ViX2FyZWFzLm1hcCgoc3ViQXJlYSkgPT4gc3ViQXJlYS5hcmVhX2lkKTtcbiAgICAgIGlmIChzdWJBcmVhcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBvbHlnb25bJ3N1Yl9hcmVhcyddID0gc3ViQXJlYXM7XG4gICAgICB9XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgcmV0dXJuIDw+PC8+O1xufTtcblxuY29uc3QgY29ubmVjdG9yID0gY29ubmVjdChudWxsKTtcbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3RvcihBcmVhUG9seWdvbik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFO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