@kando-env/kando-ui 1.2.354-alpha.9 → 1.2.355-alpha.0

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 (672) hide show
  1. package/lib/Router.js +76 -37
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +37 -26
  3. package/lib/Widgets/EventsRow/EventsRow.js +41 -28
  4. package/lib/Widgets/Map/GraphUtils.js +6 -4
  5. package/lib/Widgets/Map/Map.js +89 -69
  6. package/lib/Widgets/Map/MapUtils.js +42 -42
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +79 -54
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +25 -23
  9. package/lib/Widgets/Map/areas/AreaUtils.js +47 -48
  10. package/lib/Widgets/Map/areas/Patterns.js +5 -5
  11. package/lib/Widgets/Map/edges/Edge.js +34 -28
  12. package/lib/Widgets/Map/edges/Edges.js +26 -20
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +45 -24
  14. package/lib/Widgets/Map/events/Event.js +18 -17
  15. package/lib/Widgets/Map/events/EventIndicator.js +55 -58
  16. package/lib/Widgets/Map/events/EventPath.js +25 -25
  17. package/lib/Widgets/Map/events/EventUtils.js +81 -60
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +19 -17
  19. package/lib/Widgets/Map/events/PointOfEvent.js +38 -32
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +37 -29
  21. package/lib/Widgets/Map/events/Snail.js +21 -19
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +90 -94
  23. package/lib/Widgets/Map/map/FloatingGraph.js +21 -24
  24. package/lib/Widgets/Map/map/GraphDateButton.js +20 -27
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +14 -14
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +16 -17
  27. package/lib/Widgets/Map/points/PointIcon.js +18 -24
  28. package/lib/Widgets/Map/points/PointMarker.js +89 -71
  29. package/lib/Widgets/Map/points/PointMarkers.js +67 -45
  30. package/lib/Widgets/Map/points/PointUtils.js +88 -146
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +48 -30
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +11 -11
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +13 -11
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +6 -4
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +61 -31
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +4 -3
  37. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  38. package/lib/Widgets/MostPolluting/Areas/styles.js +6 -4
  39. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +9 -12
  40. package/lib/Widgets/MostPolluting/Factories/Factories.js +71 -39
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +19 -16
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +9 -9
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +11 -13
  44. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +6 -4
  45. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +3 -2
  46. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  47. package/lib/Widgets/MostPolluting/Factories/styles.js +6 -4
  48. package/lib/Widgets/MostPolluting/MostPolluting.js +28 -21
  49. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +32 -20
  50. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +5 -7
  51. package/lib/Widgets/MostPolluting/ShowMore/styles.js +6 -7
  52. package/lib/Widgets/MostPolluting/assets/index.js +12 -12
  53. package/lib/Widgets/MostPolluting/components/ChangePercent.js +14 -20
  54. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +31 -36
  55. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +36 -36
  56. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +36 -40
  57. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +28 -29
  58. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +52 -56
  59. package/lib/Widgets/MostPolluting/models.js +1 -1
  60. package/lib/Widgets/MostPolluting/styles.js +6 -4
  61. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +6 -8
  62. package/lib/Widgets/PotentialImpactSummary/Icon.js +7 -10
  63. package/lib/Widgets/PotentialImpactSummary/index.js +28 -20
  64. package/lib/Widgets/PotentialImpactSummary/index.test.js +54 -48
  65. package/lib/Widgets/PotentialImpactSummary/styles.js +13 -8
  66. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  67. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +8 -10
  68. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +18 -23
  69. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +33 -36
  70. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +25 -27
  71. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +38 -35
  72. package/lib/Widgets/QualitySummary/QualitySummary.js +14 -10
  73. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +7 -4
  74. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  75. package/lib/Widgets/QualitySummary/styles.js +21 -24
  76. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +14 -12
  77. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +27 -27
  78. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +26 -30
  79. package/lib/Widgets/UtilityInformation/UtilityInformation.js +43 -25
  80. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  81. package/lib/Widgets/UtilityInformation/styles.js +31 -30
  82. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +5 -3
  83. package/lib/assets/icons/TopNavbar/index.js +7 -7
  84. package/lib/assets/icons/TrendSvg.js +7 -7
  85. package/lib/assets/icons/index.js +16 -16
  86. package/lib/assets/icons/kandoStepper/index.js +6 -6
  87. package/lib/assets/icons/siteTypes/index.js +2 -2
  88. package/lib/components/ApplyButton/ApplyButton.js +12 -11
  89. package/lib/components/ApplyButton/index.js +4 -3
  90. package/lib/components/Backdrop/Backdrop.js +5 -7
  91. package/lib/components/ContentLoader/ContentLoader.js +10 -12
  92. package/lib/components/ContentLoader/index.js +2 -2
  93. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +15 -15
  94. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +9 -5
  95. package/lib/components/CustomInputs/DoubleTabs/styles.js +16 -21
  96. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +21 -13
  97. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +6 -7
  98. package/lib/components/CustomInputs/Search/Search.js +66 -43
  99. package/lib/components/CustomInputs/Search/index.js +4 -3
  100. package/lib/components/CustomInputs/Select/Select.js +59 -45
  101. package/lib/components/CustomInputs/Select/Select.stories.js +10 -6
  102. package/lib/components/DamageType/DamageType.js +61 -36
  103. package/lib/components/DamageType/index.js +4 -3
  104. package/lib/components/DataLoaderError/DataLoaderError.js +7 -9
  105. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +13 -11
  106. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +73 -72
  107. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +40 -28
  108. package/lib/components/DischargeHeatmap/HighchartsOptions.js +16 -12
  109. package/lib/components/DischargeHeatmap/index.js +4 -3
  110. package/lib/components/DischargeHeatmap/mocks/handlers.js +4 -3
  111. package/lib/components/DischargeHeatmap/popupText.js +13 -12
  112. package/lib/components/DischargeHeatmap/titles.js +6 -4
  113. package/lib/components/DischargeHeatmap/types.js +1 -1
  114. package/lib/components/ErrorBoundary.js +42 -27
  115. package/lib/components/Events/Events.js +61 -42
  116. package/lib/components/Events/index.js +4 -3
  117. package/lib/components/Graph/Graph.js +94 -73
  118. package/lib/components/Graph/index.js +4 -3
  119. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +24 -19
  120. package/lib/components/Header/Breadcrumbs/index.js +4 -3
  121. package/lib/components/Header/DoubleTabs/DoubleTabs.js +35 -25
  122. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +9 -5
  123. package/lib/components/Header/DoubleTabs/styles.js +8 -5
  124. package/lib/components/Header/Header.js +3 -3
  125. package/lib/components/Header/Header.stories.js +9 -5
  126. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +198 -83
  127. package/lib/components/Header/InfoBar/InfoBar.js +105 -75
  128. package/lib/components/Header/InfoBar/Search/Control.js +12 -11
  129. package/lib/components/Header/InfoBar/Search/GroupLabel.js +8 -9
  130. package/lib/components/Header/InfoBar/Search/Search.js +22 -15
  131. package/lib/components/Header/InfoBar/Search/SearchContainer.js +32 -18
  132. package/lib/components/Header/InfoBar/Search/index.js +4 -3
  133. package/lib/components/Header/InfoBar/Search/searchStyle.js +51 -42
  134. package/lib/components/Header/InfoBar/TimeFilter.js +17 -13
  135. package/lib/components/Header/InfoBar/types.js +1 -1
  136. package/lib/components/Header/KandoNavbar/KandoNavbar.js +95 -68
  137. package/lib/components/Header/KandoNavbar/index.js +4 -3
  138. package/lib/components/Header/Slideshow/Slideshow.js +92 -68
  139. package/lib/components/Header/Slideshow/index.js +4 -3
  140. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +5 -7
  141. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +24 -22
  142. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +22 -22
  143. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +44 -38
  144. package/lib/components/Header/Toolbar/Toolbar.js +76 -56
  145. package/lib/components/InfoBar/InfoBar.js +24 -10
  146. package/lib/components/InfoBar/InfoBar.stories.js +9 -5
  147. package/lib/components/KandoModal/KandoModal.js +44 -28
  148. package/lib/components/KandoModal/index.js +4 -3
  149. package/lib/components/Link.js +8 -9
  150. package/lib/components/Links/CustomRedirect/CustomRedirect.js +9 -10
  151. package/lib/components/Links/StyledLink/StyledLink.js +14 -13
  152. package/lib/components/Links/StyledNavLink/StyledNavLink.js +12 -12
  153. package/lib/components/LiveEvents/CarouselSlide.js +10 -11
  154. package/lib/components/LiveEvents/LiveEvents.js +6 -7
  155. package/lib/components/LiveEvents/index.js +4 -3
  156. package/lib/components/LoaderByPercent/LoaderByPercent.js +31 -38
  157. package/lib/components/Map/Map.js +26 -21
  158. package/lib/components/Map/index.js +4 -3
  159. package/lib/components/Modal/Modal.js +10 -10
  160. package/lib/components/NarrowHeader.js +32 -18
  161. package/lib/components/PointInfo/PointInfo.js +20 -21
  162. package/lib/components/PointInfo/index.js +4 -3
  163. package/lib/components/PopupModal/PopupModal.js +17 -13
  164. package/lib/components/PopupModal/PopupModal.stories.js +24 -17
  165. package/lib/components/Sector/Sector.js +9 -10
  166. package/lib/components/Sector/Sector.test.js +25 -24
  167. package/lib/components/Sector/index.js +4 -3
  168. package/lib/components/Sector/sectorIcons.js +5 -4
  169. package/lib/components/SevereEvent/Eta/Eta.js +55 -50
  170. package/lib/components/SevereEvent/Eta/styles.js +8 -11
  171. package/lib/components/SevereEvent/SevereEvent.js +38 -30
  172. package/lib/components/Spinner/Spinner.js +9 -9
  173. package/lib/components/Spinner/Spinner.stories.js +11 -6
  174. package/lib/components/Spinner/index.js +4 -3
  175. package/lib/components/Spinner/styles.js +18 -23
  176. package/lib/components/Tabs/Tabs.js +31 -18
  177. package/lib/components/Tabs/Tabs.stories.js +10 -6
  178. package/lib/components/Tabs/assets/index.js +6 -6
  179. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +18 -13
  180. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +54 -41
  181. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +34 -20
  182. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +4 -3
  183. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +26 -21
  184. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +16 -15
  185. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +4 -3
  186. package/lib/components/TimeRangeSelector/TimeRangeList.js +27 -24
  187. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +28 -18
  188. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +35 -32
  189. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +10 -6
  190. package/lib/components/TimeRangeSelector/constants.js +5 -3
  191. package/lib/components/TimeRangeSelector/index.js +4 -3
  192. package/lib/components/Toggle/Toggle.js +20 -13
  193. package/lib/components/Toggle/index.js +4 -3
  194. package/lib/components/TrendGraph/TrendGraph.js +43 -25
  195. package/lib/components/TrendGraph/index.js +4 -3
  196. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +36 -29
  197. package/lib/components/TrendGraphNVL/index.js +4 -3
  198. package/lib/development-environment/index.js +13 -9
  199. package/lib/development-environment/mock/browser.js +5 -2
  200. package/lib/development-environment/mock/get.js +10 -8
  201. package/lib/development-environment/mock/handlers.js +3 -2
  202. package/lib/development-environment/mock/mockBus.js +5 -4
  203. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +3 -2
  204. package/lib/development-environment/mock/mockObjects/areaInformation.js +3 -2
  205. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +3 -2
  206. package/lib/development-environment/mock/mockObjects/areaSitesData.js +3 -2
  207. package/lib/development-environment/mock/mockObjects/areasJson.js +3 -2
  208. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +3 -2
  209. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +3 -2
  210. package/lib/development-environment/mock/mockObjects/data-menuData.js +3 -2
  211. package/lib/development-environment/mock/mockObjects/data-search.js +3 -2
  212. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +3 -2
  213. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +3 -2
  214. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +3 -2
  215. package/lib/development-environment/mock/mockObjects/eventsJson.js +3 -2
  216. package/lib/development-environment/mock/mockObjects/metascore.js +3 -2
  217. package/lib/development-environment/mock/mockObjects/permissionsJson.js +3 -2
  218. package/lib/development-environment/mock/mockObjects/pointsJson.js +3 -2
  219. package/lib/development-environment/mock/mockObjects/site-info.js +3 -2
  220. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +3 -2
  221. package/lib/development-environment/togly/ToglyDashboard.js +23 -13
  222. package/lib/development-environment/togly/ToglyItem.js +31 -24
  223. package/lib/development-environment/togly/flags.js +1 -1
  224. package/lib/development-environment/togly/init.js +4 -4
  225. package/lib/development-environment/togly/macro.js +10 -14
  226. package/lib/development-environment/togly/useDoubleKeyDown.js +9 -7
  227. package/lib/development-environment/togly/useLocalStorage.js +18 -13
  228. package/lib/hooks/useApi.js +56 -20
  229. package/lib/hooks/useApiWithDashboardQuery.js +49 -30
  230. package/lib/hooks/useClickOutside.js +5 -4
  231. package/lib/hooks/useInitializeHeaders.js +6 -6
  232. package/lib/hooks/useKandoFetch.js +32 -18
  233. package/lib/hooks/useMap.js +37 -25
  234. package/lib/hooks/useNavContext.js +26 -22
  235. package/lib/hooks/useQueryURL.js +3 -2
  236. package/lib/hooks/useRemoveExistingLayers.js +8 -7
  237. package/lib/hooks/useUpdateEventBodyTail.js +19 -14
  238. package/lib/hooks/useUserTimeZone.js +31 -34
  239. package/lib/hooks/useUserTimeZone.test.js +23 -19
  240. package/lib/hooks/useWindowSize.js +14 -7
  241. package/lib/index.js +13 -11
  242. package/lib/macros/getVersion.js +3 -3
  243. package/lib/models/IAction.js +1 -1
  244. package/lib/models/IAppState.js +1 -1
  245. package/lib/pages/AreaPage/AreaPage.js +68 -34
  246. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +16 -14
  247. package/lib/pages/AreaPage/Dashboard/Dashboard.js +30 -28
  248. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +26 -17
  249. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +5 -5
  250. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +9 -9
  251. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +12 -12
  252. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +6 -4
  253. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  254. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +3 -2
  255. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +8 -5
  256. package/lib/pages/AssessmentPage/AssessmentPage.js +49 -41
  257. package/lib/pages/CannyWidget/Feedback.js +16 -14
  258. package/lib/pages/CovidPage/CovidPage.js +16 -9
  259. package/lib/pages/CovidPage/components/Body.js +30 -26
  260. package/lib/pages/CovidPage/components/Map.js +42 -30
  261. package/lib/pages/CovidPage/components/Sidebar.js +18 -17
  262. package/lib/pages/CovidPage/components/Summary.js +30 -21
  263. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +36 -29
  264. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +4 -3
  265. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +76 -52
  266. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +4 -3
  267. package/lib/pages/CovidPage/components/areas/Area.js +41 -29
  268. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +49 -56
  269. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +36 -32
  270. package/lib/pages/CovidPage/components/areas/AreasList.js +47 -34
  271. package/lib/pages/CovidPage/components/areas/Sort.js +17 -12
  272. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  273. package/lib/pages/DashboardMap/AreaCard.js +29 -29
  274. package/lib/pages/DashboardMap/AssessmentIcon.js +8 -9
  275. package/lib/pages/DashboardMap/Capacity.js +85 -34
  276. package/lib/pages/DashboardMap/FactoryCard.js +28 -33
  277. package/lib/pages/DashboardMap/HighchartsOptions.js +5 -6
  278. package/lib/pages/DashboardMap/List.js +98 -69
  279. package/lib/pages/DashboardMap/ListContext.js +19 -14
  280. package/lib/pages/DashboardMap/Loader.js +3 -3
  281. package/lib/pages/DashboardMap/SeverityBadge.js +19 -11
  282. package/lib/pages/DashboardMap/WWTPMap.js +64 -50
  283. package/lib/pages/DashboardMap/WaterDischarge.js +9 -9
  284. package/lib/pages/DashboardMap/Widget.js +72 -54
  285. package/lib/pages/DashboardMap/index.js +4 -3
  286. package/lib/pages/DashboardMap/utils.js +54 -44
  287. package/lib/pages/EventsPage/Body/Body.js +18 -21
  288. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +20 -17
  289. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +36 -27
  290. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +9 -10
  291. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +10 -13
  292. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +31 -22
  293. package/lib/pages/EventsPage/DragAndDropArea/index.js +4 -3
  294. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +64 -52
  295. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +31 -19
  296. package/lib/pages/EventsPage/EventsPage.js +13 -8
  297. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +42 -28
  298. package/lib/pages/EventsPage/events/MoreInfo.js +19 -18
  299. package/lib/pages/EventsPage/events/Sidebar.js +19 -22
  300. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +10 -9
  301. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +24 -19
  302. package/lib/pages/EventsPage/events/event_info/Contaminants/index.js +4 -3
  303. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +38 -31
  304. package/lib/pages/EventsPage/events/event_info/EventDetails.js +40 -42
  305. package/lib/pages/EventsPage/events/event_info/EventInfo.js +45 -44
  306. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +5 -5
  307. package/lib/pages/EventsPage/events/event_info/EventSection.js +22 -19
  308. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +39 -44
  309. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +51 -40
  310. package/lib/pages/EventsPage/events/event_info/Header/Header.js +7 -8
  311. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +36 -31
  312. package/lib/pages/EventsPage/events/event_info/Header/index.js +4 -3
  313. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +9 -8
  314. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +39 -30
  315. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +9 -6
  316. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +24 -23
  317. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +22 -13
  318. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +6 -7
  319. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/index.js +4 -3
  320. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +12 -13
  321. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +29 -23
  322. package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +4 -3
  323. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +11 -14
  324. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +10 -9
  325. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +4 -3
  326. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +5 -7
  327. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +5 -4
  328. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +11 -13
  329. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +9 -11
  330. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +14 -11
  331. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +6 -7
  332. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +8 -9
  333. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +8 -9
  334. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +7 -8
  335. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +12 -13
  336. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +19 -18
  337. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +7 -7
  338. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +8 -9
  339. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +18 -19
  340. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +7 -6
  341. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +11 -12
  342. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +14 -18
  343. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +11 -12
  344. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +5 -4
  345. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +4 -3
  346. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +6 -4
  347. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +41 -26
  348. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +39 -30
  349. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +12 -13
  350. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +20 -17
  351. package/lib/pages/EventsPage/events/event_info/sources/Source.js +33 -29
  352. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +29 -24
  353. package/lib/pages/EventsPage/events/event_info/styles.js +15 -21
  354. package/lib/pages/EventsPage/events/events_list/EventItem.js +22 -19
  355. package/lib/pages/EventsPage/events/events_list/EventUtils.js +11 -11
  356. package/lib/pages/EventsPage/events/events_list/EventsList.js +150 -126
  357. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +58 -41
  358. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +118 -80
  359. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +81 -62
  360. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +44 -39
  361. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +39 -30
  362. package/lib/pages/EventsPage/events/events_list/Sort.js +19 -14
  363. package/lib/pages/ImportFileWizard/FileUploadRespones.js +23 -15
  364. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +8 -9
  365. package/lib/pages/ImportFileWizard/ImportFile.js +25 -21
  366. package/lib/pages/ImportFileWizard/ResponseBody.js +36 -26
  367. package/lib/pages/ImportFileWizard/ValidationForm.js +25 -25
  368. package/lib/pages/ImportFileWizard/ValidationResponse.js +25 -23
  369. package/lib/pages/ImportFileWizard/importFileUtils.js +5 -4
  370. package/lib/pages/ImportFileWizard/index.js +4 -3
  371. package/lib/pages/ImportGisPage/ImportGisContainer.js +27 -22
  372. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +26 -23
  373. package/lib/pages/ImportGisPage/importGisUtils.js +25 -16
  374. package/lib/pages/ImportGisProcess/index.js +18 -14
  375. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +13 -7
  376. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +20 -18
  377. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +4 -4
  378. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +66 -34
  379. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +12 -8
  380. package/lib/pages/NotificationsPage/Notification/Notification.js +13 -17
  381. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  382. package/lib/pages/NotificationsPage/Notifications.mock.js +3 -2
  383. package/lib/pages/NotificationsPage/Notifications.stories.js +10 -6
  384. package/lib/pages/NotificationsPage/NotificationsPage.js +38 -19
  385. package/lib/pages/NotificationsPage/assets/index.js +10 -10
  386. package/lib/pages/NotificationsPageV2/NotificationsPage.js +97 -71
  387. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +66 -96
  388. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +144 -131
  389. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +76 -74
  390. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +88 -91
  391. package/lib/pages/NotificationsPageV2/notificationUtils.js +54 -55
  392. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  393. package/lib/pages/OldSitePage/OldSitePage.js +133 -57
  394. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +10 -6
  395. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +9 -5
  396. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +7 -9
  397. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +21 -19
  398. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -10
  399. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +19 -12
  400. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +13 -17
  401. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +9 -5
  402. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +17 -19
  403. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +64 -51
  404. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +8 -10
  405. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +54 -29
  406. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +7 -4
  407. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +19 -12
  408. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  409. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +12 -10
  410. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +29 -33
  411. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +31 -29
  412. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  413. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +8 -5
  414. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +15 -19
  415. package/lib/pages/ProfilePage/Container.js +4 -3
  416. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +45 -28
  417. package/lib/pages/ProfilePage/ProfilePage.js +207 -118
  418. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +34 -25
  419. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +21 -21
  420. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +35 -32
  421. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +120 -58
  422. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +23 -18
  423. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +13 -14
  424. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +46 -41
  425. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +29 -27
  426. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +19 -18
  427. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +18 -15
  428. package/lib/pages/SamplingsPage/DesktopActions/index.js +4 -3
  429. package/lib/pages/SamplingsPage/NavigationDropdown.js +34 -46
  430. package/lib/pages/SamplingsPage/NewSamplingAction.js +105 -78
  431. package/lib/pages/SamplingsPage/SamplingMobileModal.js +102 -130
  432. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +25 -23
  433. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +25 -36
  434. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +64 -39
  435. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +21 -16
  436. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +10 -11
  437. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +195 -110
  438. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +56 -49
  439. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +44 -47
  440. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +46 -49
  441. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +26 -19
  442. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +6 -4
  443. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +7 -11
  444. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +55 -58
  445. package/lib/pages/SamplingsPage/SamplingsMobileList.js +31 -22
  446. package/lib/pages/SamplingsPage/SamplingsPage.js +35 -27
  447. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +59 -50
  448. package/lib/pages/SamplingsPage/index.js +3 -2
  449. package/lib/pages/SamplingsPage/samplingsPageUtils.js +93 -69
  450. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +6 -7
  451. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +16 -16
  452. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +16 -12
  453. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  454. package/lib/pages/SitePage/PollutionContributor/index.js +4 -3
  455. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +9 -5
  456. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +15 -15
  457. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -10
  458. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +24 -27
  459. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +18 -15
  460. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +33 -37
  461. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -10
  462. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +25 -15
  463. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +13 -17
  464. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +9 -5
  465. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +17 -19
  466. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +71 -58
  467. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +8 -10
  468. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +27 -15
  469. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +9 -5
  470. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +19 -12
  471. package/lib/pages/SitePage/SamplingParameters/body/Body.js +12 -11
  472. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +40 -30
  473. package/lib/pages/SitePage/SamplingParameters/body/index.js +4 -3
  474. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +12 -11
  475. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +12 -10
  476. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +60 -61
  477. package/lib/pages/SitePage/SamplingParameters/dataParser.js +41 -32
  478. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +9 -11
  479. package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
  480. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +8 -5
  481. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +15 -19
  482. package/lib/pages/SitePage/SiteInformation/EmptyState.js +10 -13
  483. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +32 -31
  484. package/lib/pages/SitePage/SitePage.js +80 -40
  485. package/lib/pages/UploadLabResult/index.js +16 -15
  486. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +37 -27
  487. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +13 -8
  488. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +15 -11
  489. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +9 -5
  490. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +51 -48
  491. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +8 -11
  492. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +7 -6
  493. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +9 -6
  494. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +13 -14
  495. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  496. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +13 -16
  497. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +9 -8
  498. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +4 -3
  499. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +27 -17
  500. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +40 -28
  501. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +16 -14
  502. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +14 -7
  503. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +32 -27
  504. package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -9
  505. package/lib/pages/WbeDashboard/GraphWrapper.js +37 -30
  506. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -16
  507. package/lib/pages/WbeDashboard/SearchInput.js +21 -15
  508. package/lib/pages/WbeDashboard/SummaryGraph.js +77 -50
  509. package/lib/pages/WbeDashboard/SummaryGraphModal.js +18 -20
  510. package/lib/pages/WbeDashboard/Tabs.js +12 -12
  511. package/lib/pages/WbeDashboard/WbeDashboardPage.js +216 -150
  512. package/lib/pages/WbeDashboard/WbeSummaryBar.js +49 -40
  513. package/lib/pages/WwtpPage/DashboardCard.js +26 -28
  514. package/lib/pages/WwtpPage/DischargePatternCard.js +25 -14
  515. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +25 -28
  516. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +22 -22
  517. package/lib/pages/WwtpPage/InletsCard/index.js +4 -3
  518. package/lib/pages/WwtpPage/Map.js +6 -7
  519. package/lib/pages/WwtpPage/OrganicCard.js +5 -4
  520. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +5 -4
  521. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +9 -10
  522. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +11 -11
  523. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +17 -20
  524. package/lib/pages/WwtpPage/PotentialSaving/index.js +4 -3
  525. package/lib/pages/WwtpPage/PotentialSaving/types.js +1 -1
  526. package/lib/pages/WwtpPage/PredictionCard.js +5 -4
  527. package/lib/pages/WwtpPage/TrendCard.js +22 -20
  528. package/lib/pages/WwtpPage/UpgradeBox.js +6 -5
  529. package/lib/pages/WwtpPage/WwtpPage.js +11 -10
  530. package/lib/pages/WwtpPage/WwtpPageContainer.js +19 -23
  531. package/lib/pages/WwtpPage/index.js +4 -3
  532. package/lib/providers/Slideshow/SlideshowContext.js +10 -11
  533. package/lib/providers/Slideshow/SlideshowProvider.js +40 -22
  534. package/lib/providers/Slideshow/SlideshowRunner.js +21 -18
  535. package/lib/providers/UrlHistory/UrlHistoryContext.js +6 -7
  536. package/lib/providers/UrlHistory/UrlHistoryProvider.js +13 -12
  537. package/lib/providers/UrlHistory/index.js +4 -4
  538. package/lib/providers/UrlHistory/useLastVisited.js +7 -6
  539. package/lib/react-app-env.d.js +1 -1
  540. package/lib/store/ImportGis/action.js +1 -1
  541. package/lib/store/ImportGis/actionTypes.js +5 -4
  542. package/lib/store/ImportGis/actionsCreator.js +5 -7
  543. package/lib/store/ImportGis/models/gisImports.js +1 -1
  544. package/lib/store/ImportGis/reducer.js +30 -41
  545. package/lib/store/WBE/actionTypes.js +3 -2
  546. package/lib/store/WBE/actions.js +1 -1
  547. package/lib/store/WBE/models/IAreaWBE.js +1 -1
  548. package/lib/store/WBE/models/IWBE.js +1 -1
  549. package/lib/store/WBE/models/IWBEState.js +1 -1
  550. package/lib/store/WBE/reducer.js +10 -14
  551. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +15 -24
  552. package/lib/store/WWTPDashboard/types.js +1 -1
  553. package/lib/store/areas/actionTypes.js +7 -4
  554. package/lib/store/areas/actions.js +13 -7
  555. package/lib/store/areas/models/IArea.js +1 -1
  556. package/lib/store/areas/models/IAreasState.js +1 -1
  557. package/lib/store/areas/reducer.js +6 -8
  558. package/lib/store/context/actionTypes.js +5 -3
  559. package/lib/store/context/actions.js +3 -3
  560. package/lib/store/context/contextMiddlewares.js +18 -15
  561. package/lib/store/context/models/INavContext.js +1 -1
  562. package/lib/store/context/models/INavContextState.js +1 -1
  563. package/lib/store/context/reducer.js +10 -14
  564. package/lib/store/dashboard/dashboardSlice.js +11 -18
  565. package/lib/store/dashboard/periodType.js +1 -1
  566. package/lib/store/edges/actionTypes.js +9 -5
  567. package/lib/store/edges/actions.js +8 -4
  568. package/lib/store/edges/models/IEdge.js +1 -1
  569. package/lib/store/edges/models/IEdgesState.js +1 -1
  570. package/lib/store/edges/reducer.js +17 -13
  571. package/lib/store/events/actionTypes.js +33 -17
  572. package/lib/store/events/actions.js +7 -3
  573. package/lib/store/events/models/IEvent.js +1 -1
  574. package/lib/store/events/models/IEventsState.js +1 -1
  575. package/lib/store/events/models/ISource.js +1 -1
  576. package/lib/store/events/reducer.js +49 -42
  577. package/lib/store/filters/IFilter.js +1 -1
  578. package/lib/store/filters/IFilterItem.js +1 -1
  579. package/lib/store/global/actionTypes.js +21 -11
  580. package/lib/store/global/actions.js +6 -8
  581. package/lib/store/global/models/IGlobalState.js +1 -1
  582. package/lib/store/global/reducer.js +10 -11
  583. package/lib/store/permissions/permissionsSlice.js +9 -12
  584. package/lib/store/points/actionTypes.js +5 -3
  585. package/lib/store/points/actions.js +7 -3
  586. package/lib/store/points/models/IGroup.js +1 -1
  587. package/lib/store/points/models/IPoint.js +1 -1
  588. package/lib/store/points/models/IPointsState.js +1 -1
  589. package/lib/store/points/reducer.js +5 -7
  590. package/lib/store/rootActionTypes.js +3 -2
  591. package/lib/store/rootActions.js +1 -1
  592. package/lib/store/rootReducer.js +13 -17
  593. package/lib/store/rootStore.js +6 -6
  594. package/lib/store/samplings/action.js +1 -1
  595. package/lib/store/samplings/actionTypes.js +5 -4
  596. package/lib/store/samplings/actionsCreator.js +1 -1
  597. package/lib/store/samplings/models/Samplings.js +1 -1
  598. package/lib/store/samplings/reducer.js +14 -16
  599. package/lib/styles/StylesLayout.js +6 -7
  600. package/lib/styles/theme/theme.js +30 -26
  601. package/lib/test/mocks/browser.js +5 -2
  602. package/lib/test/test-utils.js +16 -18
  603. package/lib/ui-kit/Button/Button.js +84 -130
  604. package/lib/ui-kit/Button/Button.test.js +33 -27
  605. package/lib/ui-kit/Button/ButtonUtils.js +1 -1
  606. package/lib/ui-kit/Checkbox/Checkbox.js +24 -32
  607. package/lib/ui-kit/ContentCard/ContentCard.js +21 -17
  608. package/lib/ui-kit/Dashboard/Dashboard.js +25 -26
  609. package/lib/ui-kit/Dashboard/index.js +4 -3
  610. package/lib/ui-kit/DropDown/DropDown.js +25 -24
  611. package/lib/ui-kit/DropDown/DropDown.test.js +13 -13
  612. package/lib/ui-kit/DropDown/DropDownItem.js +25 -26
  613. package/lib/ui-kit/DropDown/DropdownToggle.js +10 -13
  614. package/lib/ui-kit/EmptyState/EmptyState.js +7 -8
  615. package/lib/ui-kit/IconAction/IconAction.js +8 -9
  616. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +66 -49
  617. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +53 -70
  618. package/lib/ui-kit/InletsPie/InletsPie.js +16 -17
  619. package/lib/ui-kit/InletsPie/index.js +4 -3
  620. package/lib/ui-kit/InletsPie/options.js +9 -7
  621. package/lib/ui-kit/KandoList/KandoList.js +12 -13
  622. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  623. package/lib/ui-kit/KandoTable/KandoTable.js +41 -48
  624. package/lib/ui-kit/KandoTable/KandoTable.test.js +27 -21
  625. package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
  626. package/lib/ui-kit/Layout/Layout.js +7 -8
  627. package/lib/ui-kit/MobileInput/MobileInput.js +51 -61
  628. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +17 -14
  629. package/lib/ui-kit/ModalConfirmation/index.js +3 -2
  630. package/lib/ui-kit/OrganicEvents/GaugeChart.js +9 -10
  631. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +9 -8
  632. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +23 -29
  633. package/lib/ui-kit/OrganicEvents/TextInfo.js +13 -17
  634. package/lib/ui-kit/OrganicEvents/index.js +4 -3
  635. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +11 -12
  636. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +21 -17
  637. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +4 -3
  638. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +25 -22
  639. package/lib/ui-kit/ScoreGauge/constant.js +4 -3
  640. package/lib/ui-kit/ScoreGauge/index.js +4 -3
  641. package/lib/ui-kit/TimeLineChart/TrendChart.js +45 -56
  642. package/lib/ui-kit/TimeLineChart/index.js +4 -3
  643. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +11 -10
  644. package/lib/ui-kit/Tooltip/Tooltip.js +9 -15
  645. package/lib/ui-kit/index.js +8 -8
  646. package/lib/ui-kit/kandoStepper/KandoStepper.js +15 -14
  647. package/lib/ui-kit/siteName/SiteName.js +11 -13
  648. package/lib/utilities/ActionUtility.js +7 -7
  649. package/lib/utilities/Alert.js +20 -23
  650. package/lib/utilities/Analytics.js +12 -12
  651. package/lib/utilities/Array.js +5 -4
  652. package/lib/utilities/Enum.js +51 -15
  653. package/lib/utilities/ErrorBoundary.js +42 -27
  654. package/lib/utilities/File.js +70 -41
  655. package/lib/utilities/GetDir.js +10 -10
  656. package/lib/utilities/KandoDate.js +15 -7
  657. package/lib/utilities/KandoModal.js +28 -16
  658. package/lib/utilities/LocalStorage.js +10 -8
  659. package/lib/utilities/ThousandsToK.js +3 -3
  660. package/lib/utilities/TimeFormat.js +23 -22
  661. package/lib/utilities/Truncate.js +28 -18
  662. package/lib/utilities/edgesMath.js +16 -15
  663. package/lib/utilities/i18n.js +6 -5
  664. package/lib/utilities/kql.js +14 -12
  665. package/lib/utilities/map/icons.js +4 -4
  666. package/lib/utilities/polylinedecorator.js +113 -88
  667. package/lib/utilities/scoreToData.js +16 -16
  668. package/lib/utilities/scoreToData.test.js +5 -5
  669. package/lib/utilities/time.js +10 -9
  670. package/lib/utilities/uploadToS3.js +12 -12
  671. package/lib/utilities/urls.js +61 -62
  672. package/package.json +1 -1
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.SamplingProperties = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
9
13
  var _react = _interopRequireWildcard(require("react"));
10
14
  var _axios = _interopRequireDefault(require("axios"));
11
15
  var _reactDeviceDetect = require("react-device-detect");
@@ -24,34 +28,64 @@ var _SamplingPropertiesHead = require("./SamplingPropertiesHead");
24
28
  var _SamplingPropertiesHeadMobile = require("./SamplingPropertiesHeadMobile");
25
29
  var _samplingPropertiesUtils = require("./samplingPropertiesUtils");
26
30
  var _SamplerInProcess = _interopRequireDefault(require("./SamplerInProcess"));
31
+ 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); }
32
+ 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; }
27
33
  /*
28
34
  * Properties and Cancelling forms.
29
35
  **/
30
36
 
31
- const isPropertiesPage = pageType => pageType === 'edit';
32
- const SamplingProperties = () => {
33
- const [collectionTime, setCollectionTime] = (0, _react.useState)(new Date());
34
- const [photos, setPhotos] = (0, _react.useState)([]);
35
- const [photosToDelete, setPhotosToDelete] = (0, _react.useState)([]);
36
- const [savingMsg, setSavingMsg] = (0, _react.useState)(_i18n.default.t('buttons.save'));
37
- const [samplingUpdated, setSamplingUpdated] = (0, _react.useState)(false);
38
- const [samplingPlan, setSamplingPlan] = (0, _react.useState)(undefined);
39
- const history = (0, _reactRouterDom.useHistory)();
40
- const location = (0, _reactRouterDom.useLocation)();
41
- const query = (0, _useQueryURL.default)();
42
- const userInfo = (0, _reactRedux.useSelector)(state => state.permissions.user_info);
43
- const dateFormat = userInfo.date_time_format === 'us' ? 'MMM d, yyyy hh:mm aa' : 'd/MM/yyyy HH:mm';
44
- const pageType = (0, _react.useRef)('');
45
- const [samplingProperties, setSamplingProperties] = (0, _react.useState)();
46
- const {
47
- sampleId
48
- } = (0, _reactRouterDom.useParams)();
49
- const waterAuthorityId = (0, _reactRedux.useSelector)(state => state.global_data.waterAuthorityId);
50
- const locale = (0, _reactRedux.useSelector)(state => state.nav_context_data.navContext.locale);
51
- const initFormikValues = (samplingProperties, isCanceled, timeZone, userInfo) => {
52
- const pageCollectionTime = (0, _samplingPropertiesUtils.isCollectLayout)(pageType.current) ? collectionTime : (0, _samplingPropertiesUtils.collectionTimeFormat)(samplingProperties.sampling.collection_time, timeZone);
53
- const sam = samplingProperties.sampling;
54
- let formikValues = {
37
+ var isPropertiesPage = function isPropertiesPage(pageType) {
38
+ return pageType === 'edit';
39
+ };
40
+ var SamplingProperties = function SamplingProperties() {
41
+ var _useState = (0, _react.useState)(new Date()),
42
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
43
+ collectionTime = _useState2[0],
44
+ setCollectionTime = _useState2[1];
45
+ var _useState3 = (0, _react.useState)([]),
46
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
47
+ photos = _useState4[0],
48
+ setPhotos = _useState4[1];
49
+ var _useState5 = (0, _react.useState)([]),
50
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
51
+ photosToDelete = _useState6[0],
52
+ setPhotosToDelete = _useState6[1];
53
+ var _useState7 = (0, _react.useState)(_i18n.default.t('buttons.save')),
54
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
55
+ savingMsg = _useState8[0],
56
+ setSavingMsg = _useState8[1];
57
+ var _useState9 = (0, _react.useState)(false),
58
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
59
+ samplingUpdated = _useState10[0],
60
+ setSamplingUpdated = _useState10[1];
61
+ var _useState11 = (0, _react.useState)(undefined),
62
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
63
+ samplingPlan = _useState12[0],
64
+ setSamplingPlan = _useState12[1];
65
+ var history = (0, _reactRouterDom.useHistory)();
66
+ var location = (0, _reactRouterDom.useLocation)();
67
+ var query = (0, _useQueryURL.default)();
68
+ var userInfo = (0, _reactRedux.useSelector)(function (state) {
69
+ return state.permissions.user_info;
70
+ });
71
+ var dateFormat = userInfo.date_time_format === 'us' ? 'MMM d, yyyy hh:mm aa' : 'd/MM/yyyy HH:mm';
72
+ var pageType = (0, _react.useRef)('');
73
+ var _useState13 = (0, _react.useState)(),
74
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
75
+ samplingProperties = _useState14[0],
76
+ setSamplingProperties = _useState14[1];
77
+ var _useParams = (0, _reactRouterDom.useParams)(),
78
+ sampleId = _useParams.sampleId;
79
+ var waterAuthorityId = (0, _reactRedux.useSelector)(function (state) {
80
+ return state.global_data.waterAuthorityId;
81
+ });
82
+ var locale = (0, _reactRedux.useSelector)(function (state) {
83
+ return state.nav_context_data.navContext.locale;
84
+ });
85
+ var initFormikValues = function initFormikValues(samplingProperties, isCanceled, timeZone, userInfo) {
86
+ var pageCollectionTime = (0, _samplingPropertiesUtils.isCollectLayout)(pageType.current) ? collectionTime : (0, _samplingPropertiesUtils.collectionTimeFormat)(samplingProperties.sampling.collection_time, timeZone);
87
+ var sam = samplingProperties.sampling;
88
+ var formikValues = {
55
89
  lab_id: sam.lab_id,
56
90
  collection_time: pageCollectionTime,
57
91
  pump_sampling_volume: sam.pump_sampling_volume,
@@ -69,125 +103,176 @@ const SamplingProperties = () => {
69
103
  formikValues.kando_rep = samplingProperties.sampling.kando_rep;
70
104
  formik.setValues(formikValues);
71
105
  };
72
- const isCancelledLayout = samplingProperties => {
73
- const pageType2isCancelled = {
106
+ var isCancelledLayout = function isCancelledLayout(samplingProperties) {
107
+ var pageType2isCancelled = {
74
108
  cancel: true,
75
109
  collect: false,
76
110
  revert_cancel: false
77
111
  };
78
- let isCanceled = pageType2isCancelled[pageType.current];
112
+ var isCanceled = pageType2isCancelled[pageType.current];
79
113
  if (isCanceled === null) {
80
114
  isCanceled = samplingProperties.sampling.is_canceled || false;
81
115
  }
82
116
  return isCanceled;
83
117
  };
84
- const fetchSamplingProperties = (0, _react.useCallback)(async function () {
85
- let samplingId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : sampleId;
86
- let op = arguments.length > 1 ? arguments[1] : undefined;
87
- const response = await _axios.default.get((0, _urls.urls)({
88
- samplingId: samplingId
89
- }).samplingProperties.fetchSampling.url);
90
- const sampling = response.data;
91
- const samplingProperties = sampling.sampling_properties;
92
- pageType.current = detectPageType(samplingProperties.sampling.is_canceled, op);
93
- setCollectionTime(determineCollectionTime((0, _samplingPropertiesUtils.collectionTimeFormat)(samplingProperties.sampling.collection_time, sampling.sampling_plan.time_zone), op));
94
- let isCanceled = isCancelledLayout(samplingProperties.sampling.is_canceled);
95
- initFormikValues(samplingProperties, isCanceled, sampling.sampling_plan.time_zone, userInfo);
96
- setSamplingProperties(samplingProperties);
97
- setSamplingPlan(sampling.sampling_plan);
98
- }, []);
99
- (0, _react.useEffect)(() => {
118
+ var fetchSamplingProperties = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
119
+ var samplingId,
120
+ op,
121
+ response,
122
+ sampling,
123
+ samplingProperties,
124
+ isCanceled,
125
+ _args = arguments;
126
+ return _regenerator.default.wrap(function _callee$(_context) {
127
+ while (1) {
128
+ switch (_context.prev = _context.next) {
129
+ case 0:
130
+ samplingId = _args.length > 0 && _args[0] !== undefined ? _args[0] : sampleId;
131
+ op = _args.length > 1 ? _args[1] : undefined;
132
+ _context.next = 4;
133
+ return _axios.default.get((0, _urls.urls)({
134
+ samplingId: samplingId
135
+ }).samplingProperties.fetchSampling.url);
136
+ case 4:
137
+ response = _context.sent;
138
+ sampling = response.data;
139
+ samplingProperties = sampling.sampling_properties;
140
+ pageType.current = detectPageType(samplingProperties.sampling.is_canceled, op);
141
+ setCollectionTime(determineCollectionTime((0, _samplingPropertiesUtils.collectionTimeFormat)(samplingProperties.sampling.collection_time, sampling.sampling_plan.time_zone), op));
142
+ isCanceled = isCancelledLayout(samplingProperties.sampling.is_canceled);
143
+ initFormikValues(samplingProperties, isCanceled, sampling.sampling_plan.time_zone, userInfo);
144
+ setSamplingProperties(samplingProperties);
145
+ setSamplingPlan(sampling.sampling_plan);
146
+ case 13:
147
+ case "end":
148
+ return _context.stop();
149
+ }
150
+ }
151
+ }, _callee);
152
+ })), []);
153
+ (0, _react.useEffect)(function () {
100
154
  fetchSamplingProperties(sampleId, getUrlQueryOp());
101
155
  }, [samplingUpdated]);
102
- const validationSchema = (0, _samplingPropertiesUtils.isCollectLayout)(pageType.current) ? _samplingPropertiesUtils.propertiesValidationSchema : _samplingPropertiesUtils.cancellationValidationSchema;
103
- const formik = (0, _formik.useFormik)({
156
+ var validationSchema = (0, _samplingPropertiesUtils.isCollectLayout)(pageType.current) ? _samplingPropertiesUtils.propertiesValidationSchema : _samplingPropertiesUtils.cancellationValidationSchema;
157
+ var formik = (0, _formik.useFormik)({
104
158
  enableReinitialize: true,
105
159
  initialValues: _samplingPropertiesUtils.samplingProperty,
106
160
  validationSchema: validationSchema,
107
161
  validateOnChange: false,
108
162
  validateOnBlur: true,
109
- onSubmit: values => {
163
+ onSubmit: function onSubmit(values) {
110
164
  handleSubmit(values);
111
165
  }
112
166
  });
113
- const handleClose = () => {
167
+ var handleClose = function handleClose() {
114
168
  if (location.key) {
115
169
  history.goBack();
116
170
  } else {
117
171
  history.push((0, _urls.urls)({
118
- locale,
119
- waterAuthorityId
172
+ locale: locale,
173
+ waterAuthorityId: waterAuthorityId
120
174
  }).samplingsPage.samplingsListRoute.url);
121
175
  }
122
176
  };
123
- const handleSubmit = values => {
177
+ var handleSubmit = function handleSubmit(values) {
124
178
  var _samplingProperties$s;
125
179
  setSavingMsg(_i18n.default.t('buttons.saving'));
126
180
  values.pictures_attributes = photos;
127
181
  if (values.canceled_by_id && isCancelledLayout(samplingProperties)) values.canceled_by_id = (samplingProperties === null || samplingProperties === void 0 ? void 0 : (_samplingProperties$s = samplingProperties.sampling) === null || _samplingProperties$s === void 0 ? void 0 : _samplingProperties$s.canceled_by_id) || userInfo.user_id;
128
- const saveFormData = formDataBuilder(values);
182
+ var saveFormData = formDataBuilder(values);
129
183
  updateOrCreate(saveFormData);
130
184
  };
131
- const setOriginalSaveMessageWithTimeout = () => {
132
- setTimeout(() => {
185
+ var setOriginalSaveMessageWithTimeout = function setOriginalSaveMessageWithTimeout() {
186
+ setTimeout(function () {
133
187
  setSavingMsg(_i18n.default.t('buttons.save'));
134
188
  }, 3000);
135
189
  };
136
- const formDataBuilder = values => {
137
- const formData = new FormData();
138
- for (const key in values) {
190
+ var formDataBuilder = function formDataBuilder(values) {
191
+ var formData = new FormData();
192
+ for (var key in values) {
139
193
  if (key !== 'pictures_attributes') {
140
- const value = values[key] === null ? '' : values[key];
141
- formData.append(`sampling[${key}]`, value);
194
+ var value = values[key] === null ? '' : values[key];
195
+ formData.append("sampling[".concat(key, "]"), value);
142
196
  }
143
197
  }
144
- let uniquePhotosToDelete = [...new Set(photosToDelete)];
145
- uniquePhotosToDelete.length !== 0 && uniquePhotosToDelete.forEach((id, index) => {
146
- formData.append(`sampling[pictures_attributes][${index}][id]`, JSON.stringify(id));
147
- formData.append(`sampling[pictures_attributes][${index}][_destroy]`, 'true');
198
+ var uniquePhotosToDelete = (0, _toConsumableArray2.default)(new Set(photosToDelete));
199
+ uniquePhotosToDelete.length !== 0 && uniquePhotosToDelete.forEach(function (id, index) {
200
+ formData.append("sampling[pictures_attributes][".concat(index, "][id]"), JSON.stringify(id));
201
+ formData.append("sampling[pictures_attributes][".concat(index, "][_destroy]"), 'true');
148
202
  });
149
203
  return formData;
150
204
  };
151
- const updateOrCreate = async formData => {
152
- var _samplingProperties$s2;
153
- const updateOrCreateSuccess = msg => {
154
- setSavingMsg(_i18n.default.t(msg));
155
- setSamplingUpdated(true);
156
- setOriginalSaveMessageWithTimeout();
157
- handleClose();
205
+ var updateOrCreate = /*#__PURE__*/function () {
206
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(formData) {
207
+ var _samplingProperties$s2;
208
+ var updateOrCreateSuccess, samplingID;
209
+ return _regenerator.default.wrap(function _callee2$(_context2) {
210
+ while (1) {
211
+ switch (_context2.prev = _context2.next) {
212
+ case 0:
213
+ updateOrCreateSuccess = function updateOrCreateSuccess(msg) {
214
+ setSavingMsg(_i18n.default.t(msg));
215
+ setSamplingUpdated(true);
216
+ setOriginalSaveMessageWithTimeout();
217
+ handleClose();
218
+ };
219
+ samplingID = samplingProperties === null || samplingProperties === void 0 ? void 0 : (_samplingProperties$s2 = samplingProperties.sampling) === null || _samplingProperties$s2 === void 0 ? void 0 : _samplingProperties$s2.id;
220
+ if (!(samplingID === null)) {
221
+ _context2.next = 16;
222
+ break;
223
+ }
224
+ // create
225
+ formData.append("sampling[date]", collectionTime);
226
+ _context2.prev = 4;
227
+ _context2.next = 7;
228
+ return _axios.default.post((0, _urls.urls)({
229
+ waterAuthorityId: waterAuthorityId
230
+ }).samplingProperties.createSampling.url, formData);
231
+ case 7:
232
+ updateOrCreateSuccess('buttons.created');
233
+ _context2.next = 14;
234
+ break;
235
+ case 10:
236
+ _context2.prev = 10;
237
+ _context2.t0 = _context2["catch"](4);
238
+ setSavingMsg(_i18n.default.t('buttons.error'));
239
+ setOriginalSaveMessageWithTimeout();
240
+ case 14:
241
+ _context2.next = 27;
242
+ break;
243
+ case 16:
244
+ if (pageType.current === 'revert_cancel') {
245
+ formData.append("sampling[collection_time]", collectionTime);
246
+ }
247
+ // update
248
+ _context2.prev = 17;
249
+ _context2.next = 20;
250
+ return _axios.default.put((0, _urls.urls)({
251
+ samplingId: samplingID,
252
+ waterAuthorityId: waterAuthorityId
253
+ }).samplingProperties.updateSampling.url, formData);
254
+ case 20:
255
+ updateOrCreateSuccess('buttons.updated');
256
+ _context2.next = 27;
257
+ break;
258
+ case 23:
259
+ _context2.prev = 23;
260
+ _context2.t1 = _context2["catch"](17);
261
+ setSavingMsg(_i18n.default.t('buttons.error'));
262
+ setOriginalSaveMessageWithTimeout();
263
+ case 27:
264
+ case "end":
265
+ return _context2.stop();
266
+ }
267
+ }
268
+ }, _callee2, null, [[4, 10], [17, 23]]);
269
+ }));
270
+ return function updateOrCreate(_x) {
271
+ return _ref2.apply(this, arguments);
158
272
  };
159
- const samplingID = samplingProperties === null || samplingProperties === void 0 ? void 0 : (_samplingProperties$s2 = samplingProperties.sampling) === null || _samplingProperties$s2 === void 0 ? void 0 : _samplingProperties$s2.id;
160
- if (samplingID === null) {
161
- // create
162
- formData.append(`sampling[date]`, collectionTime);
163
- try {
164
- await _axios.default.post((0, _urls.urls)({
165
- waterAuthorityId: waterAuthorityId
166
- }).samplingProperties.createSampling.url, formData);
167
- updateOrCreateSuccess('buttons.created');
168
- } catch (e) {
169
- setSavingMsg(_i18n.default.t('buttons.error'));
170
- setOriginalSaveMessageWithTimeout();
171
- }
172
- } else {
173
- if (pageType.current === 'revert_cancel') {
174
- formData.append(`sampling[collection_time]`, collectionTime);
175
- }
176
- // update
177
- try {
178
- await _axios.default.put((0, _urls.urls)({
179
- samplingId: samplingID,
180
- waterAuthorityId: waterAuthorityId
181
- }).samplingProperties.updateSampling.url, formData);
182
- updateOrCreateSuccess('buttons.updated');
183
- } catch (e) {
184
- setSavingMsg(_i18n.default.t('buttons.error'));
185
- setOriginalSaveMessageWithTimeout();
186
- }
187
- }
188
- };
189
- const detectPageType = (isSamplingCancelled, op) => {
190
- const editPageValue = isSamplingCancelled ? 'cancel' : 'collect';
273
+ }();
274
+ var detectPageType = function detectPageType(isSamplingCancelled, op) {
275
+ var editPageValue = isSamplingCancelled ? 'cancel' : 'collect';
191
276
  if (op === 'edit') {
192
277
  return editPageValue;
193
278
  } else if (op === _samplingsPageUtils.COLLECT_SAMPLING_OP) {
@@ -200,10 +285,10 @@ const SamplingProperties = () => {
200
285
  return editPageValue;
201
286
  }
202
287
  };
203
- const determineCollectionTime = (serverCollectionTime, op) => {
204
- const currentTime = new Date();
205
- const serverTime = serverCollectionTime ? new Date(serverCollectionTime) : currentTime;
206
- const editPageValue = serverCollectionTime ? serverTime : currentTime;
288
+ var determineCollectionTime = function determineCollectionTime(serverCollectionTime, op) {
289
+ var currentTime = new Date();
290
+ var serverTime = serverCollectionTime ? new Date(serverCollectionTime) : currentTime;
291
+ var editPageValue = serverCollectionTime ? serverTime : currentTime;
207
292
  if (op === 'edit') {
208
293
  return editPageValue;
209
294
  } else if (op === _samplingsPageUtils.COLLECT_SAMPLING_OP) {
@@ -214,8 +299,8 @@ const SamplingProperties = () => {
214
299
  return editPageValue;
215
300
  }
216
301
  };
217
- const getUrlQueryOp = () => {
218
- let op = query.get('op');
302
+ var getUrlQueryOp = function getUrlQueryOp() {
303
+ var op = query.get('op');
219
304
  // if not present then default op is 'collecting'
220
305
  if ([undefined, null, ''].includes(op)) {
221
306
  return _samplingsPageUtils.COLLECT_SAMPLING_OP;
@@ -266,4 +351,4 @@ const SamplingProperties = () => {
266
351
  }))));
267
352
  };
268
353
  exports.SamplingProperties = SamplingProperties;
269
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0RGV2aWNlRGV0ZWN0IiwiX2Zvcm1payIsIl9yZWFjdFJvdXRlckRvbSIsIl9yZWFjdFJlZHV4IiwiX0xheW91dCIsIl9pMThuIiwiX3VzZVF1ZXJ5VVJMIiwiX1NwaW5uZXIiLCJfdXJscyIsIl9zdHlsZXMiLCJfc2FtcGxpbmdzUGFnZVV0aWxzIiwiX1NhbXBsaW5nUHJvcGVydGllc0Zvcm0iLCJfU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZCIsIl9TYW1wbGluZ1Byb3BlcnRpZXNIZWFkTW9iaWxlIiwiX3NhbXBsaW5nUHJvcGVydGllc1V0aWxzIiwiX1NhbXBsZXJJblByb2Nlc3MiLCJpc1Byb3BlcnRpZXNQYWdlIiwicGFnZVR5cGUiLCJTYW1wbGluZ1Byb3BlcnRpZXMiLCJjb2xsZWN0aW9uVGltZSIsInNldENvbGxlY3Rpb25UaW1lIiwidXNlU3RhdGUiLCJEYXRlIiwicGhvdG9zIiwic2V0UGhvdG9zIiwicGhvdG9zVG9EZWxldGUiLCJzZXRQaG90b3NUb0RlbGV0ZSIsInNhdmluZ01zZyIsInNldFNhdmluZ01zZyIsImkxOG4iLCJ0Iiwic2FtcGxpbmdVcGRhdGVkIiwic2V0U2FtcGxpbmdVcGRhdGVkIiwic2FtcGxpbmdQbGFuIiwic2V0U2FtcGxpbmdQbGFuIiwidW5kZWZpbmVkIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJsb2NhdGlvbiIsInVzZUxvY2F0aW9uIiwicXVlcnkiLCJ1c2VRdWVyeVVSTCIsInVzZXJJbmZvIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsInBlcm1pc3Npb25zIiwidXNlcl9pbmZvIiwiZGF0ZUZvcm1hdCIsImRhdGVfdGltZV9mb3JtYXQiLCJ1c2VSZWYiLCJzYW1wbGluZ1Byb3BlcnRpZXMiLCJzZXRTYW1wbGluZ1Byb3BlcnRpZXMiLCJzYW1wbGVJZCIsInVzZVBhcmFtcyIsIndhdGVyQXV0aG9yaXR5SWQiLCJnbG9iYWxfZGF0YSIsImxvY2FsZSIsIm5hdl9jb250ZXh0X2RhdGEiLCJuYXZDb250ZXh0IiwiaW5pdEZvcm1pa1ZhbHVlcyIsImlzQ2FuY2VsZWQiLCJ0aW1lWm9uZSIsInBhZ2VDb2xsZWN0aW9uVGltZSIsImlzQ29sbGVjdExheW91dCIsImN1cnJlbnQiLCJjb2xsZWN0aW9uVGltZUZvcm1hdCIsInNhbXBsaW5nIiwiY29sbGVjdGlvbl90aW1lIiwic2FtIiwiZm9ybWlrVmFsdWVzIiwibGFiX2lkIiwicHVtcF9zYW1wbGluZ192b2x1bWUiLCJwdW1wX2JhdHRlcnlfbGV2ZWwiLCJkZXNjcmlwdGlvbiIsImthbmRvX3JlcCIsInNhbXBsaW5nX3BsYW5faWQiLCJjYW5jZWxsYXRpb25fcmVhc29uIiwiaXNfY2FuY2VsZWQiLCJpc0NhbmNlbGxlZExheW91dCIsImNhbmNlbGVkX2J5X2lkIiwibmFtZSIsImNhbmNlbGVkX2J5X25hbWUiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwiaWQiLCJ1c2VyX2lkIiwiZm9ybWlrIiwic2V0VmFsdWVzIiwicGFnZVR5cGUyaXNDYW5jZWxsZWQiLCJjYW5jZWwiLCJjb2xsZWN0IiwicmV2ZXJ0X2NhbmNlbCIsImZldGNoU2FtcGxpbmdQcm9wZXJ0aWVzIiwidXNlQ2FsbGJhY2siLCJzYW1wbGluZ0lkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwib3AiLCJyZXNwb25zZSIsImF4aW9zIiwiZ2V0IiwidXJscyIsImZldGNoU2FtcGxpbmciLCJ1cmwiLCJkYXRhIiwic2FtcGxpbmdfcHJvcGVydGllcyIsImRldGVjdFBhZ2VUeXBlIiwiZGV0ZXJtaW5lQ29sbGVjdGlvblRpbWUiLCJzYW1wbGluZ19wbGFuIiwidGltZV96b25lIiwidXNlRWZmZWN0IiwiZ2V0VXJsUXVlcnlPcCIsInZhbGlkYXRpb25TY2hlbWEiLCJwcm9wZXJ0aWVzVmFsaWRhdGlvblNjaGVtYSIsImNhbmNlbGxhdGlvblZhbGlkYXRpb25TY2hlbWEiLCJ1c2VGb3JtaWsiLCJlbmFibGVSZWluaXRpYWxpemUiLCJpbml0aWFsVmFsdWVzIiwic2FtcGxpbmdQcm9wZXJ0eSIsInZhbGlkYXRlT25DaGFuZ2UiLCJ2YWxpZGF0ZU9uQmx1ciIsIm9uU3VibWl0IiwidmFsdWVzIiwiaGFuZGxlU3VibWl0IiwiaGFuZGxlQ2xvc2UiLCJrZXkiLCJnb0JhY2siLCJwdXNoIiwic2FtcGxpbmdzUGFnZSIsInNhbXBsaW5nc0xpc3RSb3V0ZSIsIl9zYW1wbGluZ1Byb3BlcnRpZXMkcyIsInBpY3R1cmVzX2F0dHJpYnV0ZXMiLCJzYXZlRm9ybURhdGEiLCJmb3JtRGF0YUJ1aWxkZXIiLCJ1cGRhdGVPckNyZWF0ZSIsInNldE9yaWdpbmFsU2F2ZU1lc3NhZ2VXaXRoVGltZW91dCIsInNldFRpbWVvdXQiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwidmFsdWUiLCJhcHBlbmQiLCJ1bmlxdWVQaG90b3NUb0RlbGV0ZSIsIlNldCIsImZvckVhY2giLCJpbmRleCIsIkpTT04iLCJzdHJpbmdpZnkiLCJfc2FtcGxpbmdQcm9wZXJ0aWVzJHMyIiwidXBkYXRlT3JDcmVhdGVTdWNjZXNzIiwibXNnIiwic2FtcGxpbmdJRCIsInBvc3QiLCJjcmVhdGVTYW1wbGluZyIsImUiLCJwdXQiLCJ1cGRhdGVTYW1wbGluZyIsImlzU2FtcGxpbmdDYW5jZWxsZWQiLCJlZGl0UGFnZVZhbHVlIiwiQ09MTEVDVF9TQU1QTElOR19PUCIsIkNBTkNFTF9TQU1QTElOR19PUCIsIlJFVkVSVF9DQU5DRUxMQVRJT04iLCJzZXJ2ZXJDb2xsZWN0aW9uVGltZSIsImN1cnJlbnRUaW1lIiwic2VydmVyVGltZSIsImluY2x1ZGVzIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJTcGlubmVyIiwiaXNfcHVtcF9pbl9wcm9ncmVzcyIsIlNhbXBsaW5nUHJvcGVydGllc1N0eWxlIiwiaXNNb2JpbGUiLCJTYW1wbGluZ1Byb3BlcnRpZXNIZWFkIiwiaXNEYXRlUGlja2VyRGlzYWJsZWQiLCJTYW1wbGluZ1Byb3BlcnRpZXNIZWFkTW9iaWxlIiwiU2FtcGxpbmdQcm9wZXJ0aWVzRm9ybSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnZXMvU2FtcGxpbmdzUGFnZS9TYW1wbGluZ1Byb3BlcnRpZXMvU2FtcGxpbmdQcm9wZXJ0aWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHJvcGVydGllcyBhbmQgQ2FuY2VsbGluZyBmb3Jtcy5cbiAqKi9cbmltcG9ydCBSZWFjdCwgeyBGQywgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBGb3JtaWtDb25maWcgfSBmcm9tICdmb3JtaWsvZGlzdC90eXBlcyc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJ3JlYWN0LWRldmljZS1kZXRlY3QnO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSAnZm9ybWlrJztcbmltcG9ydCB7IHVzZUhpc3RvcnksIHVzZVBhcmFtcywgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuXG5pbXBvcnQgTGF5b3V0IGZyb20gJ3NyYy91aS1raXQvTGF5b3V0L0xheW91dCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHVzZVF1ZXJ5VVJMIGZyb20gJ3NyYy9ob29rcy91c2VRdWVyeVVSTCc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnc3JjL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyJztcbmltcG9ydCB7IHVybHMgfSBmcm9tICdzcmMvdXRpbGl0aWVzL3VybHMnO1xuaW1wb3J0IHsgU2FtcGxpbmdQcm9wZXJ0aWVzU3R5bGUgfSBmcm9tICcuL3N0eWxlcyc7XG5pbXBvcnQge1xuICBDQU5DRUxfU0FNUExJTkdfT1AsXG4gIENPTExFQ1RfU0FNUExJTkdfT1AsXG4gIFJFVkVSVF9DQU5DRUxMQVRJT04sXG4gIFNhbXBsaW5nRmV0Y2hEYXRhLFxufSBmcm9tICcuLi9zYW1wbGluZ3NQYWdlVXRpbHMnO1xuaW1wb3J0IHsgU2FtcGxpbmdQcm9wZXJ0aWVzRm9ybSB9IGZyb20gJy4vU2FtcGxpbmdQcm9wZXJ0aWVzRm9ybSc7XG5pbXBvcnQgeyBTYW1wbGluZ1Byb3BlcnRpZXNIZWFkIH0gZnJvbSAnLi9TYW1wbGluZ1Byb3BlcnRpZXNIZWFkJztcbmltcG9ydCB7IFNhbXBsaW5nUHJvcGVydGllc0hlYWRNb2JpbGUgfSBmcm9tICcuL1NhbXBsaW5nUHJvcGVydGllc0hlYWRNb2JpbGUnO1xuaW1wb3J0IHtcbiAgRm9ybVR5cGUsXG4gIFRTYW1wbGluZ1Byb3BlcnRpZXMsXG4gIGNhbmNlbGxhdGlvblZhbGlkYXRpb25TY2hlbWEsXG4gIGlzQ29sbGVjdExheW91dCxcbiAgcHJvcGVydGllc1ZhbGlkYXRpb25TY2hlbWEsXG4gIHNhbXBsaW5nUHJvcGVydHksXG4gIGNvbGxlY3Rpb25UaW1lRm9ybWF0LFxufSBmcm9tICcuL3NhbXBsaW5nUHJvcGVydGllc1V0aWxzJztcbmltcG9ydCBTYW1wbGVySW5Qcm9jZXNzIGZyb20gJy4vU2FtcGxlckluUHJvY2Vzcyc7XG5cbmNvbnN0IGlzUHJvcGVydGllc1BhZ2UgPSAocGFnZVR5cGUpID0+IHBhZ2VUeXBlID09PSAnZWRpdCc7XG5cbmV4cG9ydCBjb25zdCBTYW1wbGluZ1Byb3BlcnRpZXM6IEZDID0gKCkgPT4ge1xuICBjb25zdCBbY29sbGVjdGlvblRpbWUsIHNldENvbGxlY3Rpb25UaW1lXSA9IHVzZVN0YXRlPHN0cmluZyB8IERhdGUgfCBudWxsPihcbiAgICBuZXcgRGF0ZSgpLFxuICApO1xuICBjb25zdCBbcGhvdG9zLCBzZXRQaG90b3NdID0gdXNlU3RhdGU8c3RyaW5nIHwgQmxvYiB8IGFueT4oW10pO1xuICBjb25zdCBbcGhvdG9zVG9EZWxldGUsIHNldFBob3Rvc1RvRGVsZXRlXSA9IHVzZVN0YXRlPG51bWJlcltdPihbXSk7XG4gIGNvbnN0IFtzYXZpbmdNc2csIHNldFNhdmluZ01zZ10gPSB1c2VTdGF0ZTxzdHJpbmc+KGkxOG4udCgnYnV0dG9ucy5zYXZlJykpO1xuICBjb25zdCBbc2FtcGxpbmdVcGRhdGVkLCBzZXRTYW1wbGluZ1VwZGF0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2FtcGxpbmdQbGFuLCBzZXRTYW1wbGluZ1BsYW5dID0gdXNlU3RhdGU8XG4gICAgU2FtcGxpbmdGZXRjaERhdGEgfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpO1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGNvbnN0IHF1ZXJ5ID0gdXNlUXVlcnlVUkwoKTtcbiAgY29uc3QgdXNlckluZm8gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLnBlcm1pc3Npb25zLnVzZXJfaW5mbyk7XG4gIGNvbnN0IGRhdGVGb3JtYXQgPVxuICAgIHVzZXJJbmZvLmRhdGVfdGltZV9mb3JtYXQgPT09ICd1cydcbiAgICAgID8gJ01NTSBkLCB5eXl5IGhoOm1tIGFhJ1xuICAgICAgOiAnZC9NTS95eXl5IEhIOm1tJztcbiAgY29uc3QgcGFnZVR5cGUgPSB1c2VSZWY8c3RyaW5nPignJyk7XG4gIGNvbnN0IFtzYW1wbGluZ1Byb3BlcnRpZXMsIHNldFNhbXBsaW5nUHJvcGVydGllc10gPVxuICAgIHVzZVN0YXRlPFRTYW1wbGluZ1Byb3BlcnRpZXM+KCk7XG4gIGNvbnN0IHsgc2FtcGxlSWQgfSA9IHVzZVBhcmFtcygpO1xuICBjb25zdCB3YXRlckF1dGhvcml0eUlkID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS5nbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLFxuICApO1xuICBjb25zdCBsb2NhbGUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLm5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5sb2NhbGUsXG4gICk7XG5cbiAgY29uc3QgaW5pdEZvcm1pa1ZhbHVlcyA9IChcbiAgICBzYW1wbGluZ1Byb3BlcnRpZXMsXG4gICAgaXNDYW5jZWxlZCxcbiAgICB0aW1lWm9uZSxcbiAgICB1c2VySW5mbyxcbiAgKSA9PiB7XG4gICAgY29uc3QgcGFnZUNvbGxlY3Rpb25UaW1lID0gaXNDb2xsZWN0TGF5b3V0KHBhZ2VUeXBlLmN1cnJlbnQpXG4gICAgICA/IGNvbGxlY3Rpb25UaW1lXG4gICAgICA6IGNvbGxlY3Rpb25UaW1lRm9ybWF0KFxuICAgICAgICAgIHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5jb2xsZWN0aW9uX3RpbWUsXG4gICAgICAgICAgdGltZVpvbmUsXG4gICAgICAgICk7XG4gICAgY29uc3Qgc2FtID0gc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nO1xuICAgIGxldCBmb3JtaWtWYWx1ZXM6IEZvcm1UeXBlID0ge1xuICAgICAgbGFiX2lkOiBzYW0ubGFiX2lkLFxuICAgICAgY29sbGVjdGlvbl90aW1lOiBwYWdlQ29sbGVjdGlvblRpbWUsXG4gICAgICBwdW1wX3NhbXBsaW5nX3ZvbHVtZTogc2FtLnB1bXBfc2FtcGxpbmdfdm9sdW1lLFxuICAgICAgcHVtcF9iYXR0ZXJ5X2xldmVsOiBzYW0ucHVtcF9iYXR0ZXJ5X2xldmVsLFxuICAgICAgZGVzY3JpcHRpb246IHNhbS5kZXNjcmlwdGlvbixcbiAgICAgIGthbmRvX3JlcDogc2FtLmthbmRvX3JlcCxcbiAgICAgIHNhbXBsaW5nX3BsYW5faWQ6IHNhbS5zYW1wbGluZ19wbGFuX2lkLFxuICAgICAgY2FuY2VsbGF0aW9uX3JlYXNvbjogc2FtLmNhbmNlbGxhdGlvbl9yZWFzb24gfHwgJycsXG4gICAgICBpc19jYW5jZWxlZDogaXNDYW5jZWxlZCxcbiAgICB9O1xuXG4gICAgaWYgKGlzQ2FuY2VsbGVkTGF5b3V0KHNhbXBsaW5nUHJvcGVydGllcykpXG4gICAgICBmb3JtaWtWYWx1ZXMuY2FuY2VsZWRfYnlfaWQgPSB7XG4gICAgICAgIG5hbWU6XG4gICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLmNhbmNlbGVkX2J5X25hbWUgfHxcbiAgICAgICAgICB1c2VySW5mby5maXJzdF9uYW1lICsgJyAnICsgdXNlckluZm8ubGFzdF9uYW1lLFxuICAgICAgICBpZDogc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmNhbmNlbGVkX2J5X2lkIHx8IHVzZXJJbmZvLnVzZXJfaWQsXG4gICAgICB9O1xuICAgIGZvcm1pa1ZhbHVlcy5rYW5kb19yZXAgPSBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcua2FuZG9fcmVwO1xuICAgIGZvcm1pay5zZXRWYWx1ZXMoZm9ybWlrVmFsdWVzKTtcbiAgfTtcblxuICBjb25zdCBpc0NhbmNlbGxlZExheW91dCA9IChzYW1wbGluZ1Byb3BlcnRpZXMpID0+IHtcbiAgICBjb25zdCBwYWdlVHlwZTJpc0NhbmNlbGxlZCA9IHtcbiAgICAgIGNhbmNlbDogdHJ1ZSxcbiAgICAgIGNvbGxlY3Q6IGZhbHNlLFxuICAgICAgcmV2ZXJ0X2NhbmNlbDogZmFsc2UsXG4gICAgfTtcbiAgICBsZXQgaXNDYW5jZWxlZCA9IHBhZ2VUeXBlMmlzQ2FuY2VsbGVkW3BhZ2VUeXBlLmN1cnJlbnRdO1xuICAgIGlmIChpc0NhbmNlbGVkID09PSBudWxsKSB7XG4gICAgICBpc0NhbmNlbGVkID0gc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmlzX2NhbmNlbGVkIHx8IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNDYW5jZWxlZDtcbiAgfTtcblxuICBjb25zdCBmZXRjaFNhbXBsaW5nUHJvcGVydGllcyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChzYW1wbGluZ0lkID0gc2FtcGxlSWQsIG9wKSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nSWQgfSkuc2FtcGxpbmdQcm9wZXJ0aWVzLmZldGNoU2FtcGxpbmcudXJsLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNhbXBsaW5nID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIGNvbnN0IHNhbXBsaW5nUHJvcGVydGllcyA9IHNhbXBsaW5nLnNhbXBsaW5nX3Byb3BlcnRpZXM7XG4gICAgICBwYWdlVHlwZS5jdXJyZW50ID0gZGV0ZWN0UGFnZVR5cGUoXG4gICAgICAgIHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5pc19jYW5jZWxlZCxcbiAgICAgICAgb3AsXG4gICAgICApO1xuICAgICAgc2V0Q29sbGVjdGlvblRpbWUoXG4gICAgICAgIGRldGVybWluZUNvbGxlY3Rpb25UaW1lKFxuICAgICAgICAgIGNvbGxlY3Rpb25UaW1lRm9ybWF0KFxuICAgICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmNvbGxlY3Rpb25fdGltZSxcbiAgICAgICAgICAgIHNhbXBsaW5nLnNhbXBsaW5nX3BsYW4udGltZV96b25lLFxuICAgICAgICAgICksXG4gICAgICAgICAgb3AsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgbGV0IGlzQ2FuY2VsZWQgPSBpc0NhbmNlbGxlZExheW91dChcbiAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmlzX2NhbmNlbGVkLFxuICAgICAgKTtcbiAgICAgIGluaXRGb3JtaWtWYWx1ZXMoXG4gICAgICAgIHNhbXBsaW5nUHJvcGVydGllcyxcbiAgICAgICAgaXNDYW5jZWxlZCxcbiAgICAgICAgc2FtcGxpbmcuc2FtcGxpbmdfcGxhbi50aW1lX3pvbmUsXG4gICAgICAgIHVzZXJJbmZvLFxuICAgICAgKTtcbiAgICAgIHNldFNhbXBsaW5nUHJvcGVydGllcyhzYW1wbGluZ1Byb3BlcnRpZXMpO1xuICAgICAgc2V0U2FtcGxpbmdQbGFuKHNhbXBsaW5nLnNhbXBsaW5nX3BsYW4pO1xuICAgIH0sXG4gICAgW10sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFNhbXBsaW5nUHJvcGVydGllcyhzYW1wbGVJZCwgZ2V0VXJsUXVlcnlPcCgpKTtcbiAgfSwgW3NhbXBsaW5nVXBkYXRlZF0pO1xuXG4gIGNvbnN0IHZhbGlkYXRpb25TY2hlbWEgPSBpc0NvbGxlY3RMYXlvdXQocGFnZVR5cGUuY3VycmVudClcbiAgICA/IHByb3BlcnRpZXNWYWxpZGF0aW9uU2NoZW1hXG4gICAgOiBjYW5jZWxsYXRpb25WYWxpZGF0aW9uU2NoZW1hO1xuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWs8Rm9ybWlrQ29uZmlnPEZvcm1UeXBlPj4oe1xuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZSxcbiAgICBpbml0aWFsVmFsdWVzOiBzYW1wbGluZ1Byb3BlcnR5LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHZhbGlkYXRpb25TY2hlbWEsXG4gICAgdmFsaWRhdGVPbkNoYW5nZTogZmFsc2UsXG4gICAgdmFsaWRhdGVPbkJsdXI6IHRydWUsXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGhhbmRsZVN1Ym1pdCh2YWx1ZXMpO1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgIGlmIChsb2NhdGlvbi5rZXkpIHtcbiAgICAgIGhpc3RvcnkuZ29CYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhpc3RvcnkucHVzaChcbiAgICAgICAgdXJscyh7IGxvY2FsZSwgd2F0ZXJBdXRob3JpdHlJZCB9KS5zYW1wbGluZ3NQYWdlLnNhbXBsaW5nc0xpc3RSb3V0ZS51cmwsXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSAodmFsdWVzKSA9PiB7XG4gICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5zYXZpbmcnKSk7XG4gICAgdmFsdWVzLnBpY3R1cmVzX2F0dHJpYnV0ZXMgPSBwaG90b3M7XG4gICAgaWYgKHZhbHVlcy5jYW5jZWxlZF9ieV9pZCAmJiBpc0NhbmNlbGxlZExheW91dChzYW1wbGluZ1Byb3BlcnRpZXMpKVxuICAgICAgdmFsdWVzLmNhbmNlbGVkX2J5X2lkID1cbiAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzPy5zYW1wbGluZz8uY2FuY2VsZWRfYnlfaWQgfHwgdXNlckluZm8udXNlcl9pZDtcbiAgICBjb25zdCBzYXZlRm9ybURhdGEgPSBmb3JtRGF0YUJ1aWxkZXIodmFsdWVzKTtcbiAgICB1cGRhdGVPckNyZWF0ZShzYXZlRm9ybURhdGEpO1xuICB9O1xuXG4gIGNvbnN0IHNldE9yaWdpbmFsU2F2ZU1lc3NhZ2VXaXRoVGltZW91dCA9ICgpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFNhdmluZ01zZyhpMThuLnQoJ2J1dHRvbnMuc2F2ZScpKTtcbiAgICB9LCAzMDAwKTtcbiAgfTtcblxuICBjb25zdCBmb3JtRGF0YUJ1aWxkZXIgPSAodmFsdWVzKSA9PiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZXMpIHtcbiAgICAgIGlmIChrZXkgIT09ICdwaWN0dXJlc19hdHRyaWJ1dGVzJykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1trZXldID09PSBudWxsID8gJycgOiB2YWx1ZXNba2V5XTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBzYW1wbGluZ1ske2tleX1dYCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgdW5pcXVlUGhvdG9zVG9EZWxldGUgPSBbLi4ubmV3IFNldChwaG90b3NUb0RlbGV0ZSldO1xuICAgIHVuaXF1ZVBob3Rvc1RvRGVsZXRlLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgdW5pcXVlUGhvdG9zVG9EZWxldGUuZm9yRWFjaCgoaWQsIGluZGV4KSA9PiB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICBgc2FtcGxpbmdbcGljdHVyZXNfYXR0cmlidXRlc11bJHtpbmRleH1dW2lkXWAsXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoaWQpLFxuICAgICAgICApO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgYHNhbXBsaW5nW3BpY3R1cmVzX2F0dHJpYnV0ZXNdWyR7aW5kZXh9XVtfZGVzdHJveV1gLFxuICAgICAgICAgICd0cnVlJyxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVPckNyZWF0ZSA9IGFzeW5jIChmb3JtRGF0YSkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZU9yQ3JlYXRlU3VjY2VzcyA9IChtc2cpID0+IHtcbiAgICAgIHNldFNhdmluZ01zZyhpMThuLnQobXNnKSk7XG4gICAgICBzZXRTYW1wbGluZ1VwZGF0ZWQodHJ1ZSk7XG4gICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNhbXBsaW5nSUQgPSBzYW1wbGluZ1Byb3BlcnRpZXM/LnNhbXBsaW5nPy5pZDtcbiAgICBpZiAoc2FtcGxpbmdJRCA9PT0gbnVsbCkge1xuICAgICAgLy8gY3JlYXRlXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoYHNhbXBsaW5nW2RhdGVdYCwgY29sbGVjdGlvblRpbWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXhpb3MucG9zdChcbiAgICAgICAgICB1cmxzKHtcbiAgICAgICAgICAgIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQsXG4gICAgICAgICAgfSkuc2FtcGxpbmdQcm9wZXJ0aWVzLmNyZWF0ZVNhbXBsaW5nLnVybCxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgKTtcbiAgICAgICAgdXBkYXRlT3JDcmVhdGVTdWNjZXNzKCdidXR0b25zLmNyZWF0ZWQnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5lcnJvcicpKTtcbiAgICAgICAgc2V0T3JpZ2luYWxTYXZlTWVzc2FnZVdpdGhUaW1lb3V0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYWdlVHlwZS5jdXJyZW50ID09PSAncmV2ZXJ0X2NhbmNlbCcpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBzYW1wbGluZ1tjb2xsZWN0aW9uX3RpbWVdYCwgY29sbGVjdGlvblRpbWUpO1xuICAgICAgfVxuICAgICAgLy8gdXBkYXRlXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBheGlvcy5wdXQoXG4gICAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nSUQsIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQgfSlcbiAgICAgICAgICAgIC5zYW1wbGluZ1Byb3BlcnRpZXMudXBkYXRlU2FtcGxpbmcudXJsLFxuICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICApO1xuICAgICAgICB1cGRhdGVPckNyZWF0ZVN1Y2Nlc3MoJ2J1dHRvbnMudXBkYXRlZCcpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzZXRTYXZpbmdNc2coaTE4bi50KCdidXR0b25zLmVycm9yJykpO1xuICAgICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGV0ZWN0UGFnZVR5cGUgPSAoaXNTYW1wbGluZ0NhbmNlbGxlZCwgb3ApID0+IHtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gaXNTYW1wbGluZ0NhbmNlbGxlZCA/ICdjYW5jZWwnIDogJ2NvbGxlY3QnO1xuICAgIGlmIChvcCA9PT0gJ2VkaXQnKSB7XG4gICAgICByZXR1cm4gZWRpdFBhZ2VWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKG9wID09PSBDT0xMRUNUX1NBTVBMSU5HX09QKSB7XG4gICAgICByZXR1cm4gJ2NvbGxlY3QnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENBTkNFTF9TQU1QTElOR19PUCkge1xuICAgICAgcmV0dXJuICdjYW5jZWwnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IFJFVkVSVF9DQU5DRUxMQVRJT04pIHtcbiAgICAgIHJldHVybiAncmV2ZXJ0X2NhbmNlbCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZXRlcm1pbmVDb2xsZWN0aW9uVGltZSA9IChzZXJ2ZXJDb2xsZWN0aW9uVGltZSwgb3ApID0+IHtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3Qgc2VydmVyVGltZSA9IHNlcnZlckNvbGxlY3Rpb25UaW1lXG4gICAgICA/IG5ldyBEYXRlKHNlcnZlckNvbGxlY3Rpb25UaW1lKVxuICAgICAgOiBjdXJyZW50VGltZTtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gc2VydmVyQ29sbGVjdGlvblRpbWUgPyBzZXJ2ZXJUaW1lIDogY3VycmVudFRpbWU7XG4gICAgaWYgKG9wID09PSAnZWRpdCcpIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENPTExFQ1RfU0FNUExJTkdfT1ApIHtcbiAgICAgIHJldHVybiBjdXJyZW50VGltZTtcbiAgICB9IGVsc2UgaWYgKFtDQU5DRUxfU0FNUExJTkdfT1AsIFJFVkVSVF9DQU5DRUxMQVRJT05dLmluY2x1ZGVzKG9wKSkge1xuICAgICAgcmV0dXJuIHNlcnZlclRpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRVcmxRdWVyeU9wID0gKCkgPT4ge1xuICAgIGxldCBvcCA9IHF1ZXJ5LmdldCgnb3AnKTtcbiAgICAvLyBpZiBub3QgcHJlc2VudCB0aGVuIGRlZmF1bHQgb3AgaXMgJ2NvbGxlY3RpbmcnXG4gICAgaWYgKFt1bmRlZmluZWQsIG51bGwsICcnXS5pbmNsdWRlcyhvcCkpIHtcbiAgICAgIHJldHVybiBDT0xMRUNUX1NBTVBMSU5HX09QO1xuICAgIH1cbiAgICByZXR1cm4gb3A7XG4gIH07XG5cbiAgaWYgKCFzYW1wbGluZ1BsYW4gfHwgIXNhbXBsaW5nUHJvcGVydGllcykge1xuICAgIHJldHVybiA8U3Bpbm5lciAvPjtcbiAgfVxuXG4gIGlmIChzYW1wbGluZ1Byb3BlcnRpZXMuaXNfcHVtcF9pbl9wcm9ncmVzcykge1xuICAgIHJldHVybiA8U2FtcGxlckluUHJvY2VzcyBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0+XG4gICAgICA8TGF5b3V0PlxuICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzU3R5bGU+XG4gICAgICAgICAgeyFpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZFxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZVxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtzYW1wbGluZ1Byb3BlcnRpZXMgJiYgcGFnZVR5cGUgJiYgKFxuICAgICAgICAgICAgPFNhbXBsaW5nUHJvcGVydGllc0Zvcm1cbiAgICAgICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzPXtzYW1wbGluZ1Byb3BlcnRpZXN9XG4gICAgICAgICAgICAgIHNhbXBsaW5nPXtzYW1wbGluZ1BsYW59XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBzZXRTYW1wbGluZ1VwZGF0ZWQ9e3NldFNhbXBsaW5nVXBkYXRlZH1cbiAgICAgICAgICAgICAgc2F2aW5nTXNnPXtzYXZpbmdNc2d9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAgICAgICAgICAgICAgc2V0UGhvdG9zVG9EZWxldGU9e3NldFBob3Rvc1RvRGVsZXRlfVxuICAgICAgICAgICAgICBzZXRQaG90b3M9e3NldFBob3Rvc31cbiAgICAgICAgICAgICAgcGhvdG9zPXtwaG90b3N9XG4gICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NhbXBsaW5nUHJvcGVydGllc1N0eWxlPlxuICAgICAgPC9MYXlvdXQ+XG4gICAgPC9mb3JtPlxuICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxrQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sT0FBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsS0FBQSxHQUFBTixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVMsWUFBQSxHQUFBUCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVUsUUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsS0FBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksT0FBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsbUJBQUEsR0FBQWIsT0FBQTtBQU1BLElBQUFjLHVCQUFBLEdBQUFkLE9BQUE7QUFDQSxJQUFBZSx1QkFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLDZCQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLHdCQUFBLEdBQUFqQixPQUFBO0FBU0EsSUFBQWtCLGlCQUFBLEdBQUFoQixzQkFBQSxDQUFBRixPQUFBO0FBbkNBO0FBQ0E7QUFDQTs7QUFtQ0EsTUFBTW1CLGdCQUFnQixHQUFJQyxRQUFRLElBQUtBLFFBQVEsS0FBSyxNQUFNO0FBRW5ELE1BQU1DLGtCQUFzQixHQUFHQSxDQUFBLEtBQU07RUFDMUMsTUFBTSxDQUFDQyxjQUFjLEVBQUVDLGlCQUFpQixDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUNsRCxJQUFJQyxJQUFJLENBQUMsQ0FDWCxDQUFDO0VBQ0QsTUFBTSxDQUFDQyxNQUFNLEVBQUVDLFNBQVMsQ0FBQyxHQUFHLElBQUFILGVBQVEsRUFBc0IsRUFBRSxDQUFDO0VBQzdELE1BQU0sQ0FBQ0ksY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUFMLGVBQVEsRUFBVyxFQUFFLENBQUM7RUFDbEUsTUFBTSxDQUFDTSxTQUFTLEVBQUVDLFlBQVksQ0FBQyxHQUFHLElBQUFQLGVBQVEsRUFBU1EsYUFBSSxDQUFDQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7RUFDMUUsTUFBTSxDQUFDQyxlQUFlLEVBQUVDLGtCQUFrQixDQUFDLEdBQUcsSUFBQVgsZUFBUSxFQUFDLEtBQUssQ0FBQztFQUM3RCxNQUFNLENBQUNZLFlBQVksRUFBRUMsZUFBZSxDQUFDLEdBQUcsSUFBQWIsZUFBUSxFQUU5Q2MsU0FBUyxDQUFDO0VBQ1osTUFBTUMsT0FBTyxHQUFHLElBQUFDLDBCQUFVLEVBQUMsQ0FBQztFQUM1QixNQUFNQyxRQUFRLEdBQUcsSUFBQUMsMkJBQVcsRUFBQyxDQUFDO0VBQzlCLE1BQU1DLEtBQUssR0FBRyxJQUFBQyxvQkFBVyxFQUFDLENBQUM7RUFDM0IsTUFBTUMsUUFBUSxHQUFHLElBQUFDLHVCQUFXLEVBQUVDLEtBQUssSUFBS0EsS0FBSyxDQUFDQyxXQUFXLENBQUNDLFNBQVMsQ0FBQztFQUNwRSxNQUFNQyxVQUFVLEdBQ2RMLFFBQVEsQ0FBQ00sZ0JBQWdCLEtBQUssSUFBSSxHQUM5QixzQkFBc0IsR0FDdEIsaUJBQWlCO0VBQ3ZCLE1BQU0vQixRQUFRLEdBQUcsSUFBQWdDLGFBQU0sRUFBUyxFQUFFLENBQUM7RUFDbkMsTUFBTSxDQUFDQyxrQkFBa0IsRUFBRUMscUJBQXFCLENBQUMsR0FDL0MsSUFBQTlCLGVBQVEsRUFBc0IsQ0FBQztFQUNqQyxNQUFNO0lBQUUrQjtFQUFTLENBQUMsR0FBRyxJQUFBQyx5QkFBUyxFQUFDLENBQUM7RUFDaEMsTUFBTUMsZ0JBQWdCLEdBQUcsSUFBQVgsdUJBQVcsRUFDakNDLEtBQUssSUFBS0EsS0FBSyxDQUFDVyxXQUFXLENBQUNELGdCQUMvQixDQUFDO0VBQ0QsTUFBTUUsTUFBTSxHQUFHLElBQUFiLHVCQUFXLEVBQ3ZCQyxLQUFLLElBQUtBLEtBQUssQ0FBQ2EsZ0JBQWdCLENBQUNDLFVBQVUsQ0FBQ0YsTUFDL0MsQ0FBQztFQUVELE1BQU1HLGdCQUFnQixHQUFHQSxDQUN2QlQsa0JBQWtCLEVBQ2xCVSxVQUFVLEVBQ1ZDLFFBQVEsRUFDUm5CLFFBQVEsS0FDTDtJQUNILE1BQU1vQixrQkFBa0IsR0FBRyxJQUFBQyx3Q0FBZSxFQUFDOUMsUUFBUSxDQUFDK0MsT0FBTyxDQUFDLEdBQ3hEN0MsY0FBYyxHQUNkLElBQUE4Qyw2Q0FBb0IsRUFDbEJmLGtCQUFrQixDQUFDZ0IsUUFBUSxDQUFDQyxlQUFlLEVBQzNDTixRQUNGLENBQUM7SUFDTCxNQUFNTyxHQUFHLEdBQUdsQixrQkFBa0IsQ0FBQ2dCLFFBQVE7SUFDdkMsSUFBSUcsWUFBc0IsR0FBRztNQUMzQkMsTUFBTSxFQUFFRixHQUFHLENBQUNFLE1BQU07TUFDbEJILGVBQWUsRUFBRUwsa0JBQWtCO01BQ25DUyxvQkFBb0IsRUFBRUgsR0FBRyxDQUFDRyxvQkFBb0I7TUFDOUNDLGtCQUFrQixFQUFFSixHQUFHLENBQUNJLGtCQUFrQjtNQUMxQ0MsV0FBVyxFQUFFTCxHQUFHLENBQUNLLFdBQVc7TUFDNUJDLFNBQVMsRUFBRU4sR0FBRyxDQUFDTSxTQUFTO01BQ3hCQyxnQkFBZ0IsRUFBRVAsR0FBRyxDQUFDTyxnQkFBZ0I7TUFDdENDLG1CQUFtQixFQUFFUixHQUFHLENBQUNRLG1CQUFtQixJQUFJLEVBQUU7TUFDbERDLFdBQVcsRUFBRWpCO0lBQ2YsQ0FBQztJQUVELElBQUlrQixpQkFBaUIsQ0FBQzVCLGtCQUFrQixDQUFDLEVBQ3ZDbUIsWUFBWSxDQUFDVSxjQUFjLEdBQUc7TUFDNUJDLElBQUksRUFDRjlCLGtCQUFrQixDQUFDK0IsZ0JBQWdCLElBQ25DdkMsUUFBUSxDQUFDd0MsVUFBVSxHQUFHLEdBQUcsR0FBR3hDLFFBQVEsQ0FBQ3lDLFNBQVM7TUFDaERDLEVBQUUsRUFBRWxDLGtCQUFrQixDQUFDZ0IsUUFBUSxDQUFDYSxjQUFjLElBQUlyQyxRQUFRLENBQUMyQztJQUM3RCxDQUFDO0lBQ0hoQixZQUFZLENBQUNLLFNBQVMsR0FBR3hCLGtCQUFrQixDQUFDZ0IsUUFBUSxDQUFDUSxTQUFTO0lBQzlEWSxNQUFNLENBQUNDLFNBQVMsQ0FBQ2xCLFlBQVksQ0FBQztFQUNoQyxDQUFDO0VBRUQsTUFBTVMsaUJBQWlCLEdBQUk1QixrQkFBa0IsSUFBSztJQUNoRCxNQUFNc0Msb0JBQW9CLEdBQUc7TUFDM0JDLE1BQU0sRUFBRSxJQUFJO01BQ1pDLE9BQU8sRUFBRSxLQUFLO01BQ2RDLGFBQWEsRUFBRTtJQUNqQixDQUFDO0lBQ0QsSUFBSS9CLFVBQVUsR0FBRzRCLG9CQUFvQixDQUFDdkUsUUFBUSxDQUFDK0MsT0FBTyxDQUFDO0lBQ3ZELElBQUlKLFVBQVUsS0FBSyxJQUFJLEVBQUU7TUFDdkJBLFVBQVUsR0FBR1Ysa0JBQWtCLENBQUNnQixRQUFRLENBQUNXLFdBQVcsSUFBSSxLQUFLO0lBQy9EO0lBQ0EsT0FBT2pCLFVBQVU7RUFDbkIsQ0FBQztFQUVELE1BQU1nQyx1QkFBdUIsR0FBRyxJQUFBQyxrQkFBVyxFQUN6QyxrQkFBcUM7SUFBQSxJQUE5QkMsVUFBVSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBNUQsU0FBQSxHQUFBNEQsU0FBQSxNQUFHM0MsUUFBUTtJQUFBLElBQUU2QyxFQUFFLEdBQUFGLFNBQUEsQ0FBQUMsTUFBQSxPQUFBRCxTQUFBLE1BQUE1RCxTQUFBO0lBQzlCLE1BQU0rRCxRQUFRLEdBQUcsTUFBTUMsY0FBSyxDQUFDQyxHQUFHLENBQzlCLElBQUFDLFVBQUksRUFBQztNQUFFUCxVQUFVLEVBQUVBO0lBQVcsQ0FBQyxDQUFDLENBQUM1QyxrQkFBa0IsQ0FBQ29ELGFBQWEsQ0FBQ0MsR0FDcEUsQ0FBQztJQUNELE1BQU1yQyxRQUFRLEdBQUdnQyxRQUFRLENBQUNNLElBQUk7SUFDOUIsTUFBTXRELGtCQUFrQixHQUFHZ0IsUUFBUSxDQUFDdUMsbUJBQW1CO0lBQ3ZEeEYsUUFBUSxDQUFDK0MsT0FBTyxHQUFHMEMsY0FBYyxDQUMvQnhELGtCQUFrQixDQUFDZ0IsUUFBUSxDQUFDVyxXQUFXLEVBQ3ZDb0IsRUFDRixDQUFDO0lBQ0Q3RSxpQkFBaUIsQ0FDZnVGLHVCQUF1QixDQUNyQixJQUFBMUMsNkNBQW9CLEVBQ2xCZixrQkFBa0IsQ0FBQ2dCLFFBQVEsQ0FBQ0MsZUFBZSxFQUMzQ0QsUUFBUSxDQUFDMEMsYUFBYSxDQUFDQyxTQUN6QixDQUFDLEVBQ0RaLEVBQ0YsQ0FDRixDQUFDO0lBQ0QsSUFBSXJDLFVBQVUsR0FBR2tCLGlCQUFpQixDQUNoQzVCLGtCQUFrQixDQUFDZ0IsUUFBUSxDQUFDVyxXQUM5QixDQUFDO0lBQ0RsQixnQkFBZ0IsQ0FDZFQsa0JBQWtCLEVBQ2xCVSxVQUFVLEVBQ1ZNLFFBQVEsQ0FBQzBDLGFBQWEsQ0FBQ0MsU0FBUyxFQUNoQ25FLFFBQ0YsQ0FBQztJQUNEUyxxQkFBcUIsQ0FBQ0Qsa0JBQWtCLENBQUM7SUFDekNoQixlQUFlLENBQUNnQyxRQUFRLENBQUMwQyxhQUFhLENBQUM7RUFDekMsQ0FBQyxFQUNELEVBQ0YsQ0FBQztFQUVELElBQUFFLGdCQUFTLEVBQUMsTUFBTTtJQUNkbEIsdUJBQXVCLENBQUN4QyxRQUFRLEVBQUUyRCxhQUFhLENBQUMsQ0FBQyxDQUFDO0VBQ3BELENBQUMsRUFBRSxDQUFDaEYsZUFBZSxDQUFDLENBQUM7RUFFckIsTUFBTWlGLGdCQUFnQixHQUFHLElBQUFqRCx3Q0FBZSxFQUFDOUMsUUFBUSxDQUFDK0MsT0FBTyxDQUFDLEdBQ3REaUQsbURBQTBCLEdBQzFCQyxxREFBNEI7RUFDaEMsTUFBTTVCLE1BQU0sR0FBRyxJQUFBNkIsaUJBQVMsRUFBeUI7SUFDL0NDLGtCQUFrQixFQUFFLElBQUk7SUFDeEJDLGFBQWEsRUFBRUMseUNBQWdCO0lBQy9CTixnQkFBZ0IsRUFBRUEsZ0JBQWdCO0lBQ2xDTyxnQkFBZ0IsRUFBRSxLQUFLO0lBQ3ZCQyxjQUFjLEVBQUUsSUFBSTtJQUNwQkMsUUFBUSxFQUFHQyxNQUFNLElBQUs7TUFDcEJDLFlBQVksQ0FBQ0QsTUFBTSxDQUFDO0lBQ3RCO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTUUsV0FBVyxHQUFHQSxDQUFBLEtBQU07SUFDeEIsSUFBSXRGLFFBQVEsQ0FBQ3VGLEdBQUcsRUFBRTtNQUNoQnpGLE9BQU8sQ0FBQzBGLE1BQU0sQ0FBQyxDQUFDO0lBQ2xCLENBQUMsTUFBTTtNQUNMMUYsT0FBTyxDQUFDMkYsSUFBSSxDQUNWLElBQUExQixVQUFJLEVBQUM7UUFBRTdDLE1BQU07UUFBRUY7TUFBaUIsQ0FBQyxDQUFDLENBQUMwRSxhQUFhLENBQUNDLGtCQUFrQixDQUFDMUIsR0FDdEUsQ0FBQztJQUNIO0VBQ0YsQ0FBQztFQUVELE1BQU1vQixZQUFZLEdBQUlELE1BQU0sSUFBSztJQUFBLElBQUFRLHFCQUFBO0lBQy9CdEcsWUFBWSxDQUFDQyxhQUFJLENBQUNDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RDNEYsTUFBTSxDQUFDUyxtQkFBbUIsR0FBRzVHLE1BQU07SUFDbkMsSUFBSW1HLE1BQU0sQ0FBQzNDLGNBQWMsSUFBSUQsaUJBQWlCLENBQUM1QixrQkFBa0IsQ0FBQyxFQUNoRXdFLE1BQU0sQ0FBQzNDLGNBQWMsR0FDbkIsQ0FBQTdCLGtCQUFrQixhQUFsQkEsa0JBQWtCLHdCQUFBZ0YscUJBQUEsR0FBbEJoRixrQkFBa0IsQ0FBRWdCLFFBQVEsY0FBQWdFLHFCQUFBLHVCQUE1QkEscUJBQUEsQ0FBOEJuRCxjQUFjLEtBQUlyQyxRQUFRLENBQUMyQyxPQUFPO0lBQ3BFLE1BQU0rQyxZQUFZLEdBQUdDLGVBQWUsQ0FBQ1gsTUFBTSxDQUFDO0lBQzVDWSxjQUFjLENBQUNGLFlBQVksQ0FBQztFQUM5QixDQUFDO0VBRUQsTUFBTUcsaUNBQWlDLEdBQUdBLENBQUEsS0FBTTtJQUM5Q0MsVUFBVSxDQUFDLE1BQU07TUFDZjVHLFlBQVksQ0FBQ0MsYUFBSSxDQUFDQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxFQUFFLElBQUksQ0FBQztFQUNWLENBQUM7RUFFRCxNQUFNdUcsZUFBZSxHQUFJWCxNQUFNLElBQUs7SUFDbEMsTUFBTWUsUUFBUSxHQUFHLElBQUlDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLEtBQUssTUFBTWIsR0FBRyxJQUFJSCxNQUFNLEVBQUU7TUFDeEIsSUFBSUcsR0FBRyxLQUFLLHFCQUFxQixFQUFFO1FBQ2pDLE1BQU1jLEtBQUssR0FBR2pCLE1BQU0sQ0FBQ0csR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLEVBQUUsR0FBR0gsTUFBTSxDQUFDRyxHQUFHLENBQUM7UUFDckRZLFFBQVEsQ0FBQ0csTUFBTSxDQUFDLFlBQVlmLEdBQUcsR0FBRyxFQUFFYyxLQUFLLENBQUM7TUFDNUM7SUFDRjtJQUNBLElBQUlFLG9CQUFvQixHQUFHLENBQUMsR0FBRyxJQUFJQyxHQUFHLENBQUNySCxjQUFjLENBQUMsQ0FBQztJQUN2RG9ILG9CQUFvQixDQUFDN0MsTUFBTSxLQUFLLENBQUMsSUFDL0I2QyxvQkFBb0IsQ0FBQ0UsT0FBTyxDQUFDLENBQUMzRCxFQUFFLEVBQUU0RCxLQUFLLEtBQUs7TUFDMUNQLFFBQVEsQ0FBQ0csTUFBTSxDQUNiLGlDQUFpQ0ksS0FBSyxPQUFPLEVBQzdDQyxJQUFJLENBQUNDLFNBQVMsQ0FBQzlELEVBQUUsQ0FDbkIsQ0FBQztNQUNEcUQsUUFBUSxDQUFDRyxNQUFNLENBQ2IsaUNBQWlDSSxLQUFLLGFBQWEsRUFDbkQsTUFDRixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBQ0osT0FBT1AsUUFBUTtFQUNqQixDQUFDO0VBRUQsTUFBTUgsY0FBYyxHQUFHLE1BQU9HLFFBQVEsSUFBSztJQUFBLElBQUFVLHNCQUFBO0lBQ3pDLE1BQU1DLHFCQUFxQixHQUFJQyxHQUFHLElBQUs7TUFDckN6SCxZQUFZLENBQUNDLGFBQUksQ0FBQ0MsQ0FBQyxDQUFDdUgsR0FBRyxDQUFDLENBQUM7TUFDekJySCxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7TUFDeEJ1RyxpQ0FBaUMsQ0FBQyxDQUFDO01BQ25DWCxXQUFXLENBQUMsQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNMEIsVUFBVSxHQUFHcEcsa0JBQWtCLGFBQWxCQSxrQkFBa0Isd0JBQUFpRyxzQkFBQSxHQUFsQmpHLGtCQUFrQixDQUFFZ0IsUUFBUSxjQUFBaUYsc0JBQUEsdUJBQTVCQSxzQkFBQSxDQUE4Qi9ELEVBQUU7SUFDbkQsSUFBSWtFLFVBQVUsS0FBSyxJQUFJLEVBQUU7TUFDdkI7TUFDQWIsUUFBUSxDQUFDRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUV6SCxjQUFjLENBQUM7TUFDakQsSUFBSTtRQUNGLE1BQU1nRixjQUFLLENBQUNvRCxJQUFJLENBQ2QsSUFBQWxELFVBQUksRUFBQztVQUNIL0MsZ0JBQWdCLEVBQUVBO1FBQ3BCLENBQUMsQ0FBQyxDQUFDSixrQkFBa0IsQ0FBQ3NHLGNBQWMsQ0FBQ2pELEdBQUcsRUFDeENrQyxRQUNGLENBQUM7UUFDRFcscUJBQXFCLENBQUMsaUJBQWlCLENBQUM7TUFDMUMsQ0FBQyxDQUFDLE9BQU9LLENBQUMsRUFBRTtRQUNWN0gsWUFBWSxDQUFDQyxhQUFJLENBQUNDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyQ3lHLGlDQUFpQyxDQUFDLENBQUM7TUFDckM7SUFDRixDQUFDLE1BQU07TUFDTCxJQUFJdEgsUUFBUSxDQUFDK0MsT0FBTyxLQUFLLGVBQWUsRUFBRTtRQUN4Q3lFLFFBQVEsQ0FBQ0csTUFBTSxDQUFDLDJCQUEyQixFQUFFekgsY0FBYyxDQUFDO01BQzlEO01BQ0E7TUFDQSxJQUFJO1FBQ0YsTUFBTWdGLGNBQUssQ0FBQ3VELEdBQUcsQ0FDYixJQUFBckQsVUFBSSxFQUFDO1VBQUVQLFVBQVUsRUFBRXdELFVBQVU7VUFBRWhHLGdCQUFnQixFQUFFQTtRQUFpQixDQUFDLENBQUMsQ0FDakVKLGtCQUFrQixDQUFDeUcsY0FBYyxDQUFDcEQsR0FBRyxFQUN4Q2tDLFFBQ0YsQ0FBQztRQUNEVyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQztNQUMxQyxDQUFDLENBQUMsT0FBT0ssQ0FBQyxFQUFFO1FBQ1Y3SCxZQUFZLENBQUNDLGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JDeUcsaUNBQWlDLENBQUMsQ0FBQztNQUNyQztJQUNGO0VBQ0YsQ0FBQztFQUVELE1BQU03QixjQUFjLEdBQUdBLENBQUNrRCxtQkFBbUIsRUFBRTNELEVBQUUsS0FBSztJQUNsRCxNQUFNNEQsYUFBYSxHQUFHRCxtQkFBbUIsR0FBRyxRQUFRLEdBQUcsU0FBUztJQUNoRSxJQUFJM0QsRUFBRSxLQUFLLE1BQU0sRUFBRTtNQUNqQixPQUFPNEQsYUFBYTtJQUN0QixDQUFDLE1BQU0sSUFBSTVELEVBQUUsS0FBSzZELHVDQUFtQixFQUFFO01BQ3JDLE9BQU8sU0FBUztJQUNsQixDQUFDLE1BQU0sSUFBSTdELEVBQUUsS0FBSzhELHNDQUFrQixFQUFFO01BQ3BDLE9BQU8sUUFBUTtJQUNqQixDQUFDLE1BQU0sSUFBSTlELEVBQUUsS0FBSytELHVDQUFtQixFQUFFO01BQ3JDLE9BQU8sZUFBZTtJQUN4QixDQUFDLE1BQU07TUFDTCxPQUFPSCxhQUFhO0lBQ3RCO0VBQ0YsQ0FBQztFQUVELE1BQU1sRCx1QkFBdUIsR0FBR0EsQ0FBQ3NELG9CQUFvQixFQUFFaEUsRUFBRSxLQUFLO0lBQzVELE1BQU1pRSxXQUFXLEdBQUcsSUFBSTVJLElBQUksQ0FBQyxDQUFDO0lBQzlCLE1BQU02SSxVQUFVLEdBQUdGLG9CQUFvQixHQUNuQyxJQUFJM0ksSUFBSSxDQUFDMkksb0JBQW9CLENBQUMsR0FDOUJDLFdBQVc7SUFDZixNQUFNTCxhQUFhLEdBQUdJLG9CQUFvQixHQUFHRSxVQUFVLEdBQUdELFdBQVc7SUFDckUsSUFBSWpFLEVBQUUsS0FBSyxNQUFNLEVBQUU7TUFDakIsT0FBTzRELGFBQWE7SUFDdEIsQ0FBQyxNQUFNLElBQUk1RCxFQUFFLEtBQUs2RCx1Q0FBbUIsRUFBRTtNQUNyQyxPQUFPSSxXQUFXO0lBQ3BCLENBQUMsTUFBTSxJQUFJLENBQUNILHNDQUFrQixFQUFFQyx1Q0FBbUIsQ0FBQyxDQUFDSSxRQUFRLENBQUNuRSxFQUFFLENBQUMsRUFBRTtNQUNqRSxPQUFPa0UsVUFBVTtJQUNuQixDQUFDLE1BQU07TUFDTCxPQUFPTixhQUFhO0lBQ3RCO0VBQ0YsQ0FBQztFQUVELE1BQU05QyxhQUFhLEdBQUdBLENBQUEsS0FBTTtJQUMxQixJQUFJZCxFQUFFLEdBQUd6RCxLQUFLLENBQUM0RCxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ3hCO0lBQ0EsSUFBSSxDQUFDakUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQ2lJLFFBQVEsQ0FBQ25FLEVBQUUsQ0FBQyxFQUFFO01BQ3RDLE9BQU82RCx1Q0FBbUI7SUFDNUI7SUFDQSxPQUFPN0QsRUFBRTtFQUNYLENBQUM7RUFFRCxJQUFJLENBQUNoRSxZQUFZLElBQUksQ0FBQ2lCLGtCQUFrQixFQUFFO0lBQ3hDLG9CQUFPdkQsTUFBQSxDQUFBMEssT0FBQSxDQUFBQyxhQUFBLENBQUMvSixRQUFBLENBQUFnSyxPQUFPLE1BQUUsQ0FBQztFQUNwQjtFQUVBLElBQUlySCxrQkFBa0IsQ0FBQ3NILG1CQUFtQixFQUFFO0lBQzFDLG9CQUFPN0ssTUFBQSxDQUFBMEssT0FBQSxDQUFBQyxhQUFBLENBQUN2SixpQkFBQSxDQUFBc0osT0FBZ0I7TUFBQ3pDLFdBQVcsRUFBRUE7SUFBWSxDQUFFLENBQUM7RUFDdkQ7RUFFQSxvQkFDRWpJLE1BQUEsQ0FBQTBLLE9BQUEsQ0FBQUMsYUFBQTtJQUFNN0MsUUFBUSxFQUFFbkMsTUFBTSxDQUFDcUM7RUFBYSxnQkFDbENoSSxNQUFBLENBQUEwSyxPQUFBLENBQUFDLGFBQUEsQ0FBQ2xLLE9BQUEsQ0FBQWlLLE9BQU0scUJBQ0wxSyxNQUFBLENBQUEwSyxPQUFBLENBQUFDLGFBQUEsQ0FBQzdKLE9BQUEsQ0FBQWdLLHVCQUF1QixRQUNyQixDQUFDQywyQkFBUSxpQkFDUi9LLE1BQUEsQ0FBQTBLLE9BQUEsQ0FBQUMsYUFBQSxDQUFDMUosdUJBQUEsQ0FBQStKLHNCQUFzQjtJQUNyQnpILGtCQUFrQixFQUFFQSxrQkFBbUI7SUFDdkNnQixRQUFRLEVBQUVqQyxZQUFhO0lBQ3ZCcUQsTUFBTSxFQUFFQSxNQUFPO0lBQ2ZyRSxRQUFRLEVBQUVBLFFBQVEsQ0FBQytDLE9BQVE7SUFDM0I3QyxjQUFjLEVBQUVBLGNBQWU7SUFDL0JDLGlCQUFpQixFQUFFQSxpQkFBa0I7SUFDckNZLGtCQUFrQixFQUFFQSxrQkFBbUI7SUFDdkM0SSxvQkFBb0IsRUFBRTVKLGdCQUFnQixDQUFDQyxRQUFRLENBQUU7SUFDakQ4QixVQUFVLEVBQUVBO0VBQVcsQ0FDeEIsQ0FDRixFQUVBMkgsMkJBQVEsaUJBQ1AvSyxNQUFBLENBQUEwSyxPQUFBLENBQUFDLGFBQUEsQ0FBQ3pKLDZCQUFBLENBQUFnSyw0QkFBNEI7SUFDM0IzSCxrQkFBa0IsRUFBRUEsa0JBQW1CO0lBQ3ZDZ0IsUUFBUSxFQUFFakMsWUFBYTtJQUN2QnFELE1BQU0sRUFBRUEsTUFBTztJQUNmckUsUUFBUSxFQUFFQSxRQUFRLENBQUMrQyxPQUFRO0lBQzNCN0MsY0FBYyxFQUFFQSxjQUFlO0lBQy9CQyxpQkFBaUIsRUFBRUEsaUJBQWtCO0lBQ3JDWSxrQkFBa0IsRUFBRUEsa0JBQW1CO0lBQ3ZDNEksb0JBQW9CLEVBQUU1SixnQkFBZ0IsQ0FBQ0MsUUFBUSxDQUFFO0lBQ2pEOEIsVUFBVSxFQUFFQTtFQUFXLENBQ3hCLENBQ0YsRUFFQUcsa0JBQWtCLElBQUlqQyxRQUFRLGlCQUM3QnRCLE1BQUEsQ0FBQTBLLE9BQUEsQ0FBQUMsYUFBQSxDQUFDM0osdUJBQUEsQ0FBQW1LLHNCQUFzQjtJQUNyQjVILGtCQUFrQixFQUFFQSxrQkFBbUI7SUFDdkNnQixRQUFRLEVBQUVqQyxZQUFhO0lBQ3ZCaEIsUUFBUSxFQUFFQSxRQUFRLENBQUMrQyxPQUFRO0lBQzNCaEMsa0JBQWtCLEVBQUVBLGtCQUFtQjtJQUN2Q0wsU0FBUyxFQUFFQSxTQUFVO0lBQ3JCaUcsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCbEcsaUJBQWlCLEVBQUVBLGlCQUFrQjtJQUNyQ0YsU0FBUyxFQUFFQSxTQUFVO0lBQ3JCRCxNQUFNLEVBQUVBLE1BQU87SUFDZitELE1BQU0sRUFBRUE7RUFBTyxDQUNoQixDQUVvQixDQUNuQixDQUNKLENBQUM7QUFFWCxDQUFDO0FBQUN5RixPQUFBLENBQUE3SixrQkFBQSxHQUFBQSxrQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==
354
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0RGV2aWNlRGV0ZWN0IiwiX2Zvcm1payIsIl9yZWFjdFJvdXRlckRvbSIsIl9yZWFjdFJlZHV4IiwiX0xheW91dCIsIl9pMThuIiwiX3VzZVF1ZXJ5VVJMIiwiX1NwaW5uZXIiLCJfdXJscyIsIl9zdHlsZXMiLCJfc2FtcGxpbmdzUGFnZVV0aWxzIiwiX1NhbXBsaW5nUHJvcGVydGllc0Zvcm0iLCJfU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZCIsIl9TYW1wbGluZ1Byb3BlcnRpZXNIZWFkTW9iaWxlIiwiX3NhbXBsaW5nUHJvcGVydGllc1V0aWxzIiwiX1NhbXBsZXJJblByb2Nlc3MiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsImlzUHJvcGVydGllc1BhZ2UiLCJwYWdlVHlwZSIsIlNhbXBsaW5nUHJvcGVydGllcyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiRGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJjb2xsZWN0aW9uVGltZSIsInNldENvbGxlY3Rpb25UaW1lIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJwaG90b3MiLCJzZXRQaG90b3MiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInBob3Rvc1RvRGVsZXRlIiwic2V0UGhvdG9zVG9EZWxldGUiLCJfdXNlU3RhdGU3IiwiaTE4biIsInQiLCJfdXNlU3RhdGU4Iiwic2F2aW5nTXNnIiwic2V0U2F2aW5nTXNnIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwic2FtcGxpbmdVcGRhdGVkIiwic2V0U2FtcGxpbmdVcGRhdGVkIiwiX3VzZVN0YXRlMTEiLCJ1bmRlZmluZWQiLCJfdXNlU3RhdGUxMiIsInNhbXBsaW5nUGxhbiIsInNldFNhbXBsaW5nUGxhbiIsImhpc3RvcnkiLCJ1c2VIaXN0b3J5IiwibG9jYXRpb24iLCJ1c2VMb2NhdGlvbiIsInF1ZXJ5IiwidXNlUXVlcnlVUkwiLCJ1c2VySW5mbyIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJwZXJtaXNzaW9ucyIsInVzZXJfaW5mbyIsImRhdGVGb3JtYXQiLCJkYXRlX3RpbWVfZm9ybWF0IiwidXNlUmVmIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInNhbXBsaW5nUHJvcGVydGllcyIsInNldFNhbXBsaW5nUHJvcGVydGllcyIsIl91c2VQYXJhbXMiLCJ1c2VQYXJhbXMiLCJzYW1wbGVJZCIsIndhdGVyQXV0aG9yaXR5SWQiLCJnbG9iYWxfZGF0YSIsImxvY2FsZSIsIm5hdl9jb250ZXh0X2RhdGEiLCJuYXZDb250ZXh0IiwiaW5pdEZvcm1pa1ZhbHVlcyIsImlzQ2FuY2VsZWQiLCJ0aW1lWm9uZSIsInBhZ2VDb2xsZWN0aW9uVGltZSIsImlzQ29sbGVjdExheW91dCIsImN1cnJlbnQiLCJjb2xsZWN0aW9uVGltZUZvcm1hdCIsInNhbXBsaW5nIiwiY29sbGVjdGlvbl90aW1lIiwic2FtIiwiZm9ybWlrVmFsdWVzIiwibGFiX2lkIiwicHVtcF9zYW1wbGluZ192b2x1bWUiLCJwdW1wX2JhdHRlcnlfbGV2ZWwiLCJkZXNjcmlwdGlvbiIsImthbmRvX3JlcCIsInNhbXBsaW5nX3BsYW5faWQiLCJjYW5jZWxsYXRpb25fcmVhc29uIiwiaXNfY2FuY2VsZWQiLCJpc0NhbmNlbGxlZExheW91dCIsImNhbmNlbGVkX2J5X2lkIiwibmFtZSIsImNhbmNlbGVkX2J5X25hbWUiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwiaWQiLCJ1c2VyX2lkIiwiZm9ybWlrIiwic2V0VmFsdWVzIiwicGFnZVR5cGUyaXNDYW5jZWxsZWQiLCJjYW5jZWwiLCJjb2xsZWN0IiwicmV2ZXJ0X2NhbmNlbCIsImZldGNoU2FtcGxpbmdQcm9wZXJ0aWVzIiwidXNlQ2FsbGJhY2siLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInNhbXBsaW5nSWQiLCJvcCIsInJlc3BvbnNlIiwiX2FyZ3MiLCJhcmd1bWVudHMiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwibGVuZ3RoIiwiYXhpb3MiLCJ1cmxzIiwiZmV0Y2hTYW1wbGluZyIsInVybCIsInNlbnQiLCJkYXRhIiwic2FtcGxpbmdfcHJvcGVydGllcyIsImRldGVjdFBhZ2VUeXBlIiwiZGV0ZXJtaW5lQ29sbGVjdGlvblRpbWUiLCJzYW1wbGluZ19wbGFuIiwidGltZV96b25lIiwic3RvcCIsInVzZUVmZmVjdCIsImdldFVybFF1ZXJ5T3AiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicHJvcGVydGllc1ZhbGlkYXRpb25TY2hlbWEiLCJjYW5jZWxsYXRpb25WYWxpZGF0aW9uU2NoZW1hIiwidXNlRm9ybWlrIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaW5pdGlhbFZhbHVlcyIsInNhbXBsaW5nUHJvcGVydHkiLCJ2YWxpZGF0ZU9uQ2hhbmdlIiwidmFsaWRhdGVPbkJsdXIiLCJvblN1Ym1pdCIsInZhbHVlcyIsImhhbmRsZVN1Ym1pdCIsImhhbmRsZUNsb3NlIiwiZ29CYWNrIiwicHVzaCIsInNhbXBsaW5nc1BhZ2UiLCJzYW1wbGluZ3NMaXN0Um91dGUiLCJfc2FtcGxpbmdQcm9wZXJ0aWVzJHMiLCJwaWN0dXJlc19hdHRyaWJ1dGVzIiwic2F2ZUZvcm1EYXRhIiwiZm9ybURhdGFCdWlsZGVyIiwidXBkYXRlT3JDcmVhdGUiLCJzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsInZhbHVlIiwiYXBwZW5kIiwiY29uY2F0IiwidW5pcXVlUGhvdG9zVG9EZWxldGUiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiU2V0IiwiZm9yRWFjaCIsImluZGV4IiwiSlNPTiIsInN0cmluZ2lmeSIsIl9yZWYyIiwiX2NhbGxlZTIiLCJfc2FtcGxpbmdQcm9wZXJ0aWVzJHMyIiwidXBkYXRlT3JDcmVhdGVTdWNjZXNzIiwic2FtcGxpbmdJRCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsIm1zZyIsInBvc3QiLCJjcmVhdGVTYW1wbGluZyIsInQwIiwicHV0IiwidXBkYXRlU2FtcGxpbmciLCJ0MSIsIl94IiwiYXBwbHkiLCJpc1NhbXBsaW5nQ2FuY2VsbGVkIiwiZWRpdFBhZ2VWYWx1ZSIsIkNPTExFQ1RfU0FNUExJTkdfT1AiLCJDQU5DRUxfU0FNUExJTkdfT1AiLCJSRVZFUlRfQ0FOQ0VMTEFUSU9OIiwic2VydmVyQ29sbGVjdGlvblRpbWUiLCJjdXJyZW50VGltZSIsInNlcnZlclRpbWUiLCJpbmNsdWRlcyIsImNyZWF0ZUVsZW1lbnQiLCJTcGlubmVyIiwiaXNfcHVtcF9pbl9wcm9ncmVzcyIsIlNhbXBsaW5nUHJvcGVydGllc1N0eWxlIiwiaXNNb2JpbGUiLCJTYW1wbGluZ1Byb3BlcnRpZXNIZWFkIiwiaXNEYXRlUGlja2VyRGlzYWJsZWQiLCJTYW1wbGluZ1Byb3BlcnRpZXNIZWFkTW9iaWxlIiwiU2FtcGxpbmdQcm9wZXJ0aWVzRm9ybSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFnZXMvU2FtcGxpbmdzUGFnZS9TYW1wbGluZ1Byb3BlcnRpZXMvU2FtcGxpbmdQcm9wZXJ0aWVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHJvcGVydGllcyBhbmQgQ2FuY2VsbGluZyBmb3Jtcy5cbiAqKi9cbmltcG9ydCBSZWFjdCwgeyBGQywgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBGb3JtaWtDb25maWcgfSBmcm9tICdmb3JtaWsvZGlzdC90eXBlcyc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJ3JlYWN0LWRldmljZS1kZXRlY3QnO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSAnZm9ybWlrJztcbmltcG9ydCB7IHVzZUhpc3RvcnksIHVzZVBhcmFtcywgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuXG5pbXBvcnQgTGF5b3V0IGZyb20gJ3NyYy91aS1raXQvTGF5b3V0L0xheW91dCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHVzZVF1ZXJ5VVJMIGZyb20gJ3NyYy9ob29rcy91c2VRdWVyeVVSTCc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnc3JjL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyJztcbmltcG9ydCB7IHVybHMgfSBmcm9tICdzcmMvdXRpbGl0aWVzL3VybHMnO1xuaW1wb3J0IHsgU2FtcGxpbmdQcm9wZXJ0aWVzU3R5bGUgfSBmcm9tICcuL3N0eWxlcyc7XG5pbXBvcnQge1xuICBDQU5DRUxfU0FNUExJTkdfT1AsXG4gIENPTExFQ1RfU0FNUExJTkdfT1AsXG4gIFJFVkVSVF9DQU5DRUxMQVRJT04sXG4gIFNhbXBsaW5nRmV0Y2hEYXRhLFxufSBmcm9tICcuLi9zYW1wbGluZ3NQYWdlVXRpbHMnO1xuaW1wb3J0IHsgU2FtcGxpbmdQcm9wZXJ0aWVzRm9ybSB9IGZyb20gJy4vU2FtcGxpbmdQcm9wZXJ0aWVzRm9ybSc7XG5pbXBvcnQgeyBTYW1wbGluZ1Byb3BlcnRpZXNIZWFkIH0gZnJvbSAnLi9TYW1wbGluZ1Byb3BlcnRpZXNIZWFkJztcbmltcG9ydCB7IFNhbXBsaW5nUHJvcGVydGllc0hlYWRNb2JpbGUgfSBmcm9tICcuL1NhbXBsaW5nUHJvcGVydGllc0hlYWRNb2JpbGUnO1xuaW1wb3J0IHtcbiAgRm9ybVR5cGUsXG4gIFRTYW1wbGluZ1Byb3BlcnRpZXMsXG4gIGNhbmNlbGxhdGlvblZhbGlkYXRpb25TY2hlbWEsXG4gIGlzQ29sbGVjdExheW91dCxcbiAgcHJvcGVydGllc1ZhbGlkYXRpb25TY2hlbWEsXG4gIHNhbXBsaW5nUHJvcGVydHksXG4gIGNvbGxlY3Rpb25UaW1lRm9ybWF0LFxufSBmcm9tICcuL3NhbXBsaW5nUHJvcGVydGllc1V0aWxzJztcbmltcG9ydCBTYW1wbGVySW5Qcm9jZXNzIGZyb20gJy4vU2FtcGxlckluUHJvY2Vzcyc7XG5cbmNvbnN0IGlzUHJvcGVydGllc1BhZ2UgPSAocGFnZVR5cGUpID0+IHBhZ2VUeXBlID09PSAnZWRpdCc7XG5cbmV4cG9ydCBjb25zdCBTYW1wbGluZ1Byb3BlcnRpZXM6IEZDID0gKCkgPT4ge1xuICBjb25zdCBbY29sbGVjdGlvblRpbWUsIHNldENvbGxlY3Rpb25UaW1lXSA9IHVzZVN0YXRlPHN0cmluZyB8IERhdGUgfCBudWxsPihcbiAgICBuZXcgRGF0ZSgpLFxuICApO1xuICBjb25zdCBbcGhvdG9zLCBzZXRQaG90b3NdID0gdXNlU3RhdGU8c3RyaW5nIHwgQmxvYiB8IGFueT4oW10pO1xuICBjb25zdCBbcGhvdG9zVG9EZWxldGUsIHNldFBob3Rvc1RvRGVsZXRlXSA9IHVzZVN0YXRlPG51bWJlcltdPihbXSk7XG4gIGNvbnN0IFtzYXZpbmdNc2csIHNldFNhdmluZ01zZ10gPSB1c2VTdGF0ZTxzdHJpbmc+KGkxOG4udCgnYnV0dG9ucy5zYXZlJykpO1xuICBjb25zdCBbc2FtcGxpbmdVcGRhdGVkLCBzZXRTYW1wbGluZ1VwZGF0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2FtcGxpbmdQbGFuLCBzZXRTYW1wbGluZ1BsYW5dID0gdXNlU3RhdGU8XG4gICAgU2FtcGxpbmdGZXRjaERhdGEgfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpO1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGNvbnN0IHF1ZXJ5ID0gdXNlUXVlcnlVUkwoKTtcbiAgY29uc3QgdXNlckluZm8gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLnBlcm1pc3Npb25zLnVzZXJfaW5mbyk7XG4gIGNvbnN0IGRhdGVGb3JtYXQgPVxuICAgIHVzZXJJbmZvLmRhdGVfdGltZV9mb3JtYXQgPT09ICd1cydcbiAgICAgID8gJ01NTSBkLCB5eXl5IGhoOm1tIGFhJ1xuICAgICAgOiAnZC9NTS95eXl5IEhIOm1tJztcbiAgY29uc3QgcGFnZVR5cGUgPSB1c2VSZWY8c3RyaW5nPignJyk7XG4gIGNvbnN0IFtzYW1wbGluZ1Byb3BlcnRpZXMsIHNldFNhbXBsaW5nUHJvcGVydGllc10gPVxuICAgIHVzZVN0YXRlPFRTYW1wbGluZ1Byb3BlcnRpZXM+KCk7XG4gIGNvbnN0IHsgc2FtcGxlSWQgfSA9IHVzZVBhcmFtcygpO1xuICBjb25zdCB3YXRlckF1dGhvcml0eUlkID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS5nbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkLFxuICApO1xuICBjb25zdCBsb2NhbGUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLm5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dC5sb2NhbGUsXG4gICk7XG5cbiAgY29uc3QgaW5pdEZvcm1pa1ZhbHVlcyA9IChcbiAgICBzYW1wbGluZ1Byb3BlcnRpZXMsXG4gICAgaXNDYW5jZWxlZCxcbiAgICB0aW1lWm9uZSxcbiAgICB1c2VySW5mbyxcbiAgKSA9PiB7XG4gICAgY29uc3QgcGFnZUNvbGxlY3Rpb25UaW1lID0gaXNDb2xsZWN0TGF5b3V0KHBhZ2VUeXBlLmN1cnJlbnQpXG4gICAgICA/IGNvbGxlY3Rpb25UaW1lXG4gICAgICA6IGNvbGxlY3Rpb25UaW1lRm9ybWF0KFxuICAgICAgICAgIHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5jb2xsZWN0aW9uX3RpbWUsXG4gICAgICAgICAgdGltZVpvbmUsXG4gICAgICAgICk7XG4gICAgY29uc3Qgc2FtID0gc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nO1xuICAgIGxldCBmb3JtaWtWYWx1ZXM6IEZvcm1UeXBlID0ge1xuICAgICAgbGFiX2lkOiBzYW0ubGFiX2lkLFxuICAgICAgY29sbGVjdGlvbl90aW1lOiBwYWdlQ29sbGVjdGlvblRpbWUsXG4gICAgICBwdW1wX3NhbXBsaW5nX3ZvbHVtZTogc2FtLnB1bXBfc2FtcGxpbmdfdm9sdW1lLFxuICAgICAgcHVtcF9iYXR0ZXJ5X2xldmVsOiBzYW0ucHVtcF9iYXR0ZXJ5X2xldmVsLFxuICAgICAgZGVzY3JpcHRpb246IHNhbS5kZXNjcmlwdGlvbixcbiAgICAgIGthbmRvX3JlcDogc2FtLmthbmRvX3JlcCxcbiAgICAgIHNhbXBsaW5nX3BsYW5faWQ6IHNhbS5zYW1wbGluZ19wbGFuX2lkLFxuICAgICAgY2FuY2VsbGF0aW9uX3JlYXNvbjogc2FtLmNhbmNlbGxhdGlvbl9yZWFzb24gfHwgJycsXG4gICAgICBpc19jYW5jZWxlZDogaXNDYW5jZWxlZCxcbiAgICB9O1xuXG4gICAgaWYgKGlzQ2FuY2VsbGVkTGF5b3V0KHNhbXBsaW5nUHJvcGVydGllcykpXG4gICAgICBmb3JtaWtWYWx1ZXMuY2FuY2VsZWRfYnlfaWQgPSB7XG4gICAgICAgIG5hbWU6XG4gICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLmNhbmNlbGVkX2J5X25hbWUgfHxcbiAgICAgICAgICB1c2VySW5mby5maXJzdF9uYW1lICsgJyAnICsgdXNlckluZm8ubGFzdF9uYW1lLFxuICAgICAgICBpZDogc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmNhbmNlbGVkX2J5X2lkIHx8IHVzZXJJbmZvLnVzZXJfaWQsXG4gICAgICB9O1xuICAgIGZvcm1pa1ZhbHVlcy5rYW5kb19yZXAgPSBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcua2FuZG9fcmVwO1xuICAgIGZvcm1pay5zZXRWYWx1ZXMoZm9ybWlrVmFsdWVzKTtcbiAgfTtcblxuICBjb25zdCBpc0NhbmNlbGxlZExheW91dCA9IChzYW1wbGluZ1Byb3BlcnRpZXMpID0+IHtcbiAgICBjb25zdCBwYWdlVHlwZTJpc0NhbmNlbGxlZCA9IHtcbiAgICAgIGNhbmNlbDogdHJ1ZSxcbiAgICAgIGNvbGxlY3Q6IGZhbHNlLFxuICAgICAgcmV2ZXJ0X2NhbmNlbDogZmFsc2UsXG4gICAgfTtcbiAgICBsZXQgaXNDYW5jZWxlZCA9IHBhZ2VUeXBlMmlzQ2FuY2VsbGVkW3BhZ2VUeXBlLmN1cnJlbnRdO1xuICAgIGlmIChpc0NhbmNlbGVkID09PSBudWxsKSB7XG4gICAgICBpc0NhbmNlbGVkID0gc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmlzX2NhbmNlbGVkIHx8IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNDYW5jZWxlZDtcbiAgfTtcblxuICBjb25zdCBmZXRjaFNhbXBsaW5nUHJvcGVydGllcyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChzYW1wbGluZ0lkID0gc2FtcGxlSWQsIG9wKSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nSWQgfSkuc2FtcGxpbmdQcm9wZXJ0aWVzLmZldGNoU2FtcGxpbmcudXJsLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNhbXBsaW5nID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIGNvbnN0IHNhbXBsaW5nUHJvcGVydGllcyA9IHNhbXBsaW5nLnNhbXBsaW5nX3Byb3BlcnRpZXM7XG4gICAgICBwYWdlVHlwZS5jdXJyZW50ID0gZGV0ZWN0UGFnZVR5cGUoXG4gICAgICAgIHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5pc19jYW5jZWxlZCxcbiAgICAgICAgb3AsXG4gICAgICApO1xuICAgICAgc2V0Q29sbGVjdGlvblRpbWUoXG4gICAgICAgIGRldGVybWluZUNvbGxlY3Rpb25UaW1lKFxuICAgICAgICAgIGNvbGxlY3Rpb25UaW1lRm9ybWF0KFxuICAgICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmNvbGxlY3Rpb25fdGltZSxcbiAgICAgICAgICAgIHNhbXBsaW5nLnNhbXBsaW5nX3BsYW4udGltZV96b25lLFxuICAgICAgICAgICksXG4gICAgICAgICAgb3AsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgbGV0IGlzQ2FuY2VsZWQgPSBpc0NhbmNlbGxlZExheW91dChcbiAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmlzX2NhbmNlbGVkLFxuICAgICAgKTtcbiAgICAgIGluaXRGb3JtaWtWYWx1ZXMoXG4gICAgICAgIHNhbXBsaW5nUHJvcGVydGllcyxcbiAgICAgICAgaXNDYW5jZWxlZCxcbiAgICAgICAgc2FtcGxpbmcuc2FtcGxpbmdfcGxhbi50aW1lX3pvbmUsXG4gICAgICAgIHVzZXJJbmZvLFxuICAgICAgKTtcbiAgICAgIHNldFNhbXBsaW5nUHJvcGVydGllcyhzYW1wbGluZ1Byb3BlcnRpZXMpO1xuICAgICAgc2V0U2FtcGxpbmdQbGFuKHNhbXBsaW5nLnNhbXBsaW5nX3BsYW4pO1xuICAgIH0sXG4gICAgW10sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFNhbXBsaW5nUHJvcGVydGllcyhzYW1wbGVJZCwgZ2V0VXJsUXVlcnlPcCgpKTtcbiAgfSwgW3NhbXBsaW5nVXBkYXRlZF0pO1xuXG4gIGNvbnN0IHZhbGlkYXRpb25TY2hlbWEgPSBpc0NvbGxlY3RMYXlvdXQocGFnZVR5cGUuY3VycmVudClcbiAgICA/IHByb3BlcnRpZXNWYWxpZGF0aW9uU2NoZW1hXG4gICAgOiBjYW5jZWxsYXRpb25WYWxpZGF0aW9uU2NoZW1hO1xuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWs8Rm9ybWlrQ29uZmlnPEZvcm1UeXBlPj4oe1xuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZSxcbiAgICBpbml0aWFsVmFsdWVzOiBzYW1wbGluZ1Byb3BlcnR5LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHZhbGlkYXRpb25TY2hlbWEsXG4gICAgdmFsaWRhdGVPbkNoYW5nZTogZmFsc2UsXG4gICAgdmFsaWRhdGVPbkJsdXI6IHRydWUsXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGhhbmRsZVN1Ym1pdCh2YWx1ZXMpO1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgIGlmIChsb2NhdGlvbi5rZXkpIHtcbiAgICAgIGhpc3RvcnkuZ29CYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhpc3RvcnkucHVzaChcbiAgICAgICAgdXJscyh7IGxvY2FsZSwgd2F0ZXJBdXRob3JpdHlJZCB9KS5zYW1wbGluZ3NQYWdlLnNhbXBsaW5nc0xpc3RSb3V0ZS51cmwsXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSAodmFsdWVzKSA9PiB7XG4gICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5zYXZpbmcnKSk7XG4gICAgdmFsdWVzLnBpY3R1cmVzX2F0dHJpYnV0ZXMgPSBwaG90b3M7XG4gICAgaWYgKHZhbHVlcy5jYW5jZWxlZF9ieV9pZCAmJiBpc0NhbmNlbGxlZExheW91dChzYW1wbGluZ1Byb3BlcnRpZXMpKVxuICAgICAgdmFsdWVzLmNhbmNlbGVkX2J5X2lkID1cbiAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzPy5zYW1wbGluZz8uY2FuY2VsZWRfYnlfaWQgfHwgdXNlckluZm8udXNlcl9pZDtcbiAgICBjb25zdCBzYXZlRm9ybURhdGEgPSBmb3JtRGF0YUJ1aWxkZXIodmFsdWVzKTtcbiAgICB1cGRhdGVPckNyZWF0ZShzYXZlRm9ybURhdGEpO1xuICB9O1xuXG4gIGNvbnN0IHNldE9yaWdpbmFsU2F2ZU1lc3NhZ2VXaXRoVGltZW91dCA9ICgpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFNhdmluZ01zZyhpMThuLnQoJ2J1dHRvbnMuc2F2ZScpKTtcbiAgICB9LCAzMDAwKTtcbiAgfTtcblxuICBjb25zdCBmb3JtRGF0YUJ1aWxkZXIgPSAodmFsdWVzKSA9PiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZXMpIHtcbiAgICAgIGlmIChrZXkgIT09ICdwaWN0dXJlc19hdHRyaWJ1dGVzJykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1trZXldID09PSBudWxsID8gJycgOiB2YWx1ZXNba2V5XTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBzYW1wbGluZ1ske2tleX1dYCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgdW5pcXVlUGhvdG9zVG9EZWxldGUgPSBbLi4ubmV3IFNldChwaG90b3NUb0RlbGV0ZSldO1xuICAgIHVuaXF1ZVBob3Rvc1RvRGVsZXRlLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgdW5pcXVlUGhvdG9zVG9EZWxldGUuZm9yRWFjaCgoaWQsIGluZGV4KSA9PiB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICBgc2FtcGxpbmdbcGljdHVyZXNfYXR0cmlidXRlc11bJHtpbmRleH1dW2lkXWAsXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoaWQpLFxuICAgICAgICApO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgYHNhbXBsaW5nW3BpY3R1cmVzX2F0dHJpYnV0ZXNdWyR7aW5kZXh9XVtfZGVzdHJveV1gLFxuICAgICAgICAgICd0cnVlJyxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVPckNyZWF0ZSA9IGFzeW5jIChmb3JtRGF0YSkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZU9yQ3JlYXRlU3VjY2VzcyA9IChtc2cpID0+IHtcbiAgICAgIHNldFNhdmluZ01zZyhpMThuLnQobXNnKSk7XG4gICAgICBzZXRTYW1wbGluZ1VwZGF0ZWQodHJ1ZSk7XG4gICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNhbXBsaW5nSUQgPSBzYW1wbGluZ1Byb3BlcnRpZXM/LnNhbXBsaW5nPy5pZDtcbiAgICBpZiAoc2FtcGxpbmdJRCA9PT0gbnVsbCkge1xuICAgICAgLy8gY3JlYXRlXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoYHNhbXBsaW5nW2RhdGVdYCwgY29sbGVjdGlvblRpbWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXhpb3MucG9zdChcbiAgICAgICAgICB1cmxzKHtcbiAgICAgICAgICAgIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQsXG4gICAgICAgICAgfSkuc2FtcGxpbmdQcm9wZXJ0aWVzLmNyZWF0ZVNhbXBsaW5nLnVybCxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgKTtcbiAgICAgICAgdXBkYXRlT3JDcmVhdGVTdWNjZXNzKCdidXR0b25zLmNyZWF0ZWQnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5lcnJvcicpKTtcbiAgICAgICAgc2V0T3JpZ2luYWxTYXZlTWVzc2FnZVdpdGhUaW1lb3V0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYWdlVHlwZS5jdXJyZW50ID09PSAncmV2ZXJ0X2NhbmNlbCcpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBzYW1wbGluZ1tjb2xsZWN0aW9uX3RpbWVdYCwgY29sbGVjdGlvblRpbWUpO1xuICAgICAgfVxuICAgICAgLy8gdXBkYXRlXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBheGlvcy5wdXQoXG4gICAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nSUQsIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQgfSlcbiAgICAgICAgICAgIC5zYW1wbGluZ1Byb3BlcnRpZXMudXBkYXRlU2FtcGxpbmcudXJsLFxuICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICApO1xuICAgICAgICB1cGRhdGVPckNyZWF0ZVN1Y2Nlc3MoJ2J1dHRvbnMudXBkYXRlZCcpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzZXRTYXZpbmdNc2coaTE4bi50KCdidXR0b25zLmVycm9yJykpO1xuICAgICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGV0ZWN0UGFnZVR5cGUgPSAoaXNTYW1wbGluZ0NhbmNlbGxlZCwgb3ApID0+IHtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gaXNTYW1wbGluZ0NhbmNlbGxlZCA/ICdjYW5jZWwnIDogJ2NvbGxlY3QnO1xuICAgIGlmIChvcCA9PT0gJ2VkaXQnKSB7XG4gICAgICByZXR1cm4gZWRpdFBhZ2VWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKG9wID09PSBDT0xMRUNUX1NBTVBMSU5HX09QKSB7XG4gICAgICByZXR1cm4gJ2NvbGxlY3QnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENBTkNFTF9TQU1QTElOR19PUCkge1xuICAgICAgcmV0dXJuICdjYW5jZWwnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IFJFVkVSVF9DQU5DRUxMQVRJT04pIHtcbiAgICAgIHJldHVybiAncmV2ZXJ0X2NhbmNlbCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZXRlcm1pbmVDb2xsZWN0aW9uVGltZSA9IChzZXJ2ZXJDb2xsZWN0aW9uVGltZSwgb3ApID0+IHtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3Qgc2VydmVyVGltZSA9IHNlcnZlckNvbGxlY3Rpb25UaW1lXG4gICAgICA/IG5ldyBEYXRlKHNlcnZlckNvbGxlY3Rpb25UaW1lKVxuICAgICAgOiBjdXJyZW50VGltZTtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gc2VydmVyQ29sbGVjdGlvblRpbWUgPyBzZXJ2ZXJUaW1lIDogY3VycmVudFRpbWU7XG4gICAgaWYgKG9wID09PSAnZWRpdCcpIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENPTExFQ1RfU0FNUExJTkdfT1ApIHtcbiAgICAgIHJldHVybiBjdXJyZW50VGltZTtcbiAgICB9IGVsc2UgaWYgKFtDQU5DRUxfU0FNUExJTkdfT1AsIFJFVkVSVF9DQU5DRUxMQVRJT05dLmluY2x1ZGVzKG9wKSkge1xuICAgICAgcmV0dXJuIHNlcnZlclRpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRVcmxRdWVyeU9wID0gKCkgPT4ge1xuICAgIGxldCBvcCA9IHF1ZXJ5LmdldCgnb3AnKTtcbiAgICAvLyBpZiBub3QgcHJlc2VudCB0aGVuIGRlZmF1bHQgb3AgaXMgJ2NvbGxlY3RpbmcnXG4gICAgaWYgKFt1bmRlZmluZWQsIG51bGwsICcnXS5pbmNsdWRlcyhvcCkpIHtcbiAgICAgIHJldHVybiBDT0xMRUNUX1NBTVBMSU5HX09QO1xuICAgIH1cbiAgICByZXR1cm4gb3A7XG4gIH07XG5cbiAgaWYgKCFzYW1wbGluZ1BsYW4gfHwgIXNhbXBsaW5nUHJvcGVydGllcykge1xuICAgIHJldHVybiA8U3Bpbm5lciAvPjtcbiAgfVxuXG4gIGlmIChzYW1wbGluZ1Byb3BlcnRpZXMuaXNfcHVtcF9pbl9wcm9ncmVzcykge1xuICAgIHJldHVybiA8U2FtcGxlckluUHJvY2VzcyBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0+XG4gICAgICA8TGF5b3V0PlxuICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzU3R5bGU+XG4gICAgICAgICAgeyFpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZFxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZVxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtzYW1wbGluZ1Byb3BlcnRpZXMgJiYgcGFnZVR5cGUgJiYgKFxuICAgICAgICAgICAgPFNhbXBsaW5nUHJvcGVydGllc0Zvcm1cbiAgICAgICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzPXtzYW1wbGluZ1Byb3BlcnRpZXN9XG4gICAgICAgICAgICAgIHNhbXBsaW5nPXtzYW1wbGluZ1BsYW59XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBzZXRTYW1wbGluZ1VwZGF0ZWQ9e3NldFNhbXBsaW5nVXBkYXRlZH1cbiAgICAgICAgICAgICAgc2F2aW5nTXNnPXtzYXZpbmdNc2d9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAgICAgICAgICAgICAgc2V0UGhvdG9zVG9EZWxldGU9e3NldFBob3Rvc1RvRGVsZXRlfVxuICAgICAgICAgICAgICBzZXRQaG90b3M9e3NldFBob3Rvc31cbiAgICAgICAgICAgICAgcGhvdG9zPXtwaG90b3N9XG4gICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NhbXBsaW5nUHJvcGVydGllc1N0eWxlPlxuICAgICAgPC9MYXlvdXQ+XG4gICAgPC9mb3JtPlxuICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsa0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFdBQUEsR0FBQU4sT0FBQTtBQUVBLElBQUFPLE9BQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFlBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLFFBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLEtBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLE9BQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLG1CQUFBLEdBQUFiLE9BQUE7QUFNQSxJQUFBYyx1QkFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsdUJBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQiw2QkFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQix3QkFBQSxHQUFBakIsT0FBQTtBQVNBLElBQUFrQixpQkFBQSxHQUFBaEIsc0JBQUEsQ0FBQUYsT0FBQTtBQUFrRCxTQUFBbUIseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFyQix3QkFBQXlCLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFB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