@kando-env/kando-ui 1.2.228-alpha.8 → 1.2.228-alpha.80

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 (577) hide show
  1. package/lib/Router.js +4 -66
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +11 -41
  3. package/lib/Widgets/EventsRow/EventsRow.js +15 -42
  4. package/lib/Widgets/Map/GraphUtils.js +1 -4
  5. package/lib/Widgets/Map/Map.js +93 -93
  6. package/lib/Widgets/Map/MapUtils.js +5 -56
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +7 -27
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +8 -21
  9. package/lib/Widgets/Map/edges/Edge.js +9 -30
  10. package/lib/Widgets/Map/edges/Edge.scss +2 -2
  11. package/lib/Widgets/Map/edges/Edges.js +11 -20
  12. package/lib/Widgets/Map/edges/arrows/Arrows.js +7 -22
  13. package/lib/Widgets/Map/events/Event.js +7 -23
  14. package/lib/Widgets/Map/events/EventIndicator.js +23 -42
  15. package/lib/Widgets/Map/events/EventPath.js +5 -20
  16. package/lib/Widgets/Map/events/EventUtils.js +4 -54
  17. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +5 -19
  18. package/lib/Widgets/Map/events/PointOfEvent.js +5 -34
  19. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +4 -14
  20. package/lib/Widgets/Map/events/Snail.js +7 -19
  21. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +15 -54
  22. package/lib/Widgets/Map/map/FloatingGraph.js +3 -19
  23. package/lib/Widgets/Map/map/GraphDateButton.js +3 -9
  24. package/lib/Widgets/Map/matchGraph/MatchGraph.js +5 -11
  25. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +4 -10
  26. package/lib/Widgets/Map/points/PointIcon.js +3 -16
  27. package/lib/Widgets/Map/points/PointIcon.scss +2 -0
  28. package/lib/Widgets/Map/points/PointMarker.js +11 -26
  29. package/lib/Widgets/Map/points/PointMarkers.js +60 -84
  30. package/lib/Widgets/Map/points/PointUtils.js +32 -114
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +15 -49
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +4 -19
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +1 -13
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +1 -5
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +19 -53
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +1 -1
  37. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  38. package/lib/Widgets/MostPolluting/Areas/styles.js +1 -7
  39. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +3 -11
  40. package/lib/Widgets/MostPolluting/Factories/Factories.js +30 -64
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +4 -21
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +1 -10
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +4 -17
  44. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +3 -7
  45. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +1 -1
  46. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  47. package/lib/Widgets/MostPolluting/Factories/styles.js +1 -7
  48. package/lib/Widgets/MostPolluting/MostPolluting.js +4 -17
  49. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +13 -17
  50. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +2 -9
  51. package/lib/Widgets/MostPolluting/ShowMore/styles.js +1 -5
  52. package/lib/Widgets/MostPolluting/assets/index.js +17 -28
  53. package/lib/Widgets/MostPolluting/components/ChangePercent.js +1 -16
  54. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +15 -26
  55. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +4 -26
  56. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +25 -33
  57. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +4 -20
  58. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +29 -43
  59. package/lib/Widgets/MostPolluting/models.js +1 -1
  60. package/lib/Widgets/MostPolluting/styles.js +1 -7
  61. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +2 -9
  62. package/lib/Widgets/PotentialImpactSummary/Icon.js +1 -11
  63. package/lib/Widgets/PotentialImpactSummary/index.js +7 -29
  64. package/lib/Widgets/PotentialImpactSummary/index.test.js +17 -36
  65. package/lib/Widgets/PotentialImpactSummary/styles.js +2 -15
  66. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  67. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +4 -10
  68. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +7 -21
  69. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +19 -29
  70. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +15 -24
  71. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +7 -21
  72. package/lib/Widgets/QualitySummary/QualitySummary.js +8 -24
  73. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +2 -2
  74. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  75. package/lib/Widgets/QualitySummary/styles.js +3 -16
  76. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +10 -21
  77. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +9 -34
  78. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +9 -18
  79. package/lib/Widgets/UtilityInformation/UtilityInformation.js +22 -45
  80. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  81. package/lib/Widgets/UtilityInformation/styles.js +2 -22
  82. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +2 -2
  83. package/lib/assets/icons/index.js +5 -8
  84. package/lib/assets/icons/kandoStepper/index.js +9 -14
  85. package/lib/components/ApplyButton/ApplyButton.js +5 -11
  86. package/lib/components/ApplyButton/index.js +1 -4
  87. package/lib/components/Backdrop/Backdrop.js +2 -8
  88. package/lib/components/ContentLoader/ContentLoader.js +7 -12
  89. package/lib/components/ContentLoader/index.js +1 -2
  90. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +7 -14
  91. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +2 -8
  92. package/lib/components/CustomInputs/DoubleTabs/styles.js +2 -10
  93. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +5 -18
  94. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +1 -5
  95. package/lib/components/CustomInputs/Search/Search.js +13 -38
  96. package/lib/components/CustomInputs/Search/index.js +1 -4
  97. package/lib/components/CustomInputs/Select/Select.js +15 -53
  98. package/lib/components/CustomInputs/Select/Select.stories.js +2 -8
  99. package/lib/components/DamageType/DamageType.js +37 -76
  100. package/lib/components/DamageType/index.js +1 -4
  101. package/lib/components/DataLoaderError/DataLoaderError.js +4 -10
  102. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +6 -16
  103. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +17 -37
  104. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +12 -37
  105. package/lib/components/DischargeHeatmap/HighchartsOptions.js +6 -10
  106. package/lib/components/DischargeHeatmap/index.js +1 -4
  107. package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -4
  108. package/lib/components/DischargeHeatmap/popupText.js +1 -16
  109. package/lib/components/DischargeHeatmap/titles.js +1 -8
  110. package/lib/components/DischargeHeatmap/types.js +1 -1
  111. package/lib/components/ErrorBoundary.js +3 -15
  112. package/lib/components/Events/Events.js +5 -30
  113. package/lib/components/Events/index.js +1 -4
  114. package/lib/components/Graph/Graph.js +31 -74
  115. package/lib/components/Graph/index.js +1 -4
  116. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +1 -7
  117. package/lib/components/Header/Breadcrumbs/index.js +1 -4
  118. package/lib/components/Header/DoubleTabs/DoubleTabs.js +14 -30
  119. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +2 -8
  120. package/lib/components/Header/DoubleTabs/styles.js +2 -10
  121. package/lib/components/Header/Header.js +1 -7
  122. package/lib/components/Header/Header.stories.js +2 -8
  123. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +1 -11
  124. package/lib/components/Header/InfoBar/InfoBar.js +4 -30
  125. package/lib/components/Header/InfoBar/Search/Control.js +2 -13
  126. package/lib/components/Header/InfoBar/Search/GroupLabel.js +1 -12
  127. package/lib/components/Header/InfoBar/Search/Search.js +5 -26
  128. package/lib/components/Header/InfoBar/Search/SearchContainer.js +4 -21
  129. package/lib/components/Header/InfoBar/Search/index.js +1 -4
  130. package/lib/components/Header/InfoBar/Search/searchStyle.js +1 -4
  131. package/lib/components/Header/KandoNavbar/KandoNavbar.js +46 -91
  132. package/lib/components/Header/KandoNavbar/index.js +1 -4
  133. package/lib/components/Header/Slideshow/Slideshow.js +35 -71
  134. package/lib/components/Header/Slideshow/index.js +1 -4
  135. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +1 -7
  136. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +2 -15
  137. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +1 -15
  138. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +7 -24
  139. package/lib/components/Header/Toolbar/Toolbar.js +46 -84
  140. package/lib/components/InfoBar/InfoBar.js +8 -23
  141. package/lib/components/InfoBar/InfoBar.stories.js +2 -8
  142. package/lib/components/KandoModal/KandoModal.js +19 -42
  143. package/lib/components/KandoModal/index.js +1 -4
  144. package/lib/components/Link.js +2 -11
  145. package/lib/components/Links/CustomRedirect/CustomRedirect.js +3 -12
  146. package/lib/components/Links/StyledLink/StyledLink.js +6 -16
  147. package/lib/components/Links/StyledNavLink/StyledNavLink.js +4 -14
  148. package/lib/components/LiveEvents/CarouselSlide.js +5 -11
  149. package/lib/components/LiveEvents/LiveEvents.js +1 -10
  150. package/lib/components/LiveEvents/index.js +1 -4
  151. package/lib/components/LoaderByPercent/LoaderByPercent.js +13 -23
  152. package/lib/components/Map/Map.js +12 -26
  153. package/lib/components/Map/index.js +1 -4
  154. package/lib/components/Modal/Modal.js +3 -10
  155. package/lib/components/NarrowHeader.js +1 -12
  156. package/lib/components/PointInfo/PointInfo.js +10 -22
  157. package/lib/components/PointInfo/index.js +1 -4
  158. package/lib/components/PopupModal/PopupModal.js +6 -17
  159. package/lib/components/PopupModal/PopupModal.stories.js +2 -11
  160. package/lib/components/Sector/Sector.js +4 -13
  161. package/lib/components/Sector/Sector.test.js +3 -8
  162. package/lib/components/Sector/index.js +1 -4
  163. package/lib/components/Sector/sectorIcons.js +1 -27
  164. package/lib/components/SevereEvent/Eta/Eta.js +14 -39
  165. package/lib/components/SevereEvent/Eta/styles.js +1 -5
  166. package/lib/components/SevereEvent/SevereEvent.js +15 -36
  167. package/lib/components/Spinner/Spinner.js +5 -10
  168. package/lib/components/Spinner/Spinner.stories.js +2 -8
  169. package/lib/components/Spinner/index.js +1 -4
  170. package/lib/components/Spinner/styles.js +1 -9
  171. package/lib/components/Tabs/Tabs.js +4 -24
  172. package/lib/components/Tabs/Tabs.stories.js +2 -8
  173. package/lib/components/Tabs/assets/index.js +1 -6
  174. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +2 -12
  175. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +12 -43
  176. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +12 -36
  177. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +1 -4
  178. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +9 -29
  179. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +4 -9
  180. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +1 -4
  181. package/lib/components/TimeRangeSelector/TimeRangeList.js +4 -13
  182. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +11 -24
  183. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +11 -36
  184. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +2 -10
  185. package/lib/components/TimeRangeSelector/constants.js +2 -2
  186. package/lib/components/TimeRangeSelector/index.js +1 -4
  187. package/lib/components/Toggle/Toggle.js +7 -21
  188. package/lib/components/Toggle/index.js +1 -4
  189. package/lib/components/TrendGraph/TrendGraph.js +16 -49
  190. package/lib/components/TrendGraph/index.js +1 -4
  191. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +12 -38
  192. package/lib/components/TrendGraphNVL/index.js +1 -4
  193. package/lib/development-environment/index.js +1 -13
  194. package/lib/development-environment/mock/browser.js +1 -8
  195. package/lib/development-environment/mock/get.js +1 -5
  196. package/lib/development-environment/mock/handlers.js +1 -26
  197. package/lib/development-environment/mock/mockBus.js +2 -7
  198. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +1 -1
  199. package/lib/development-environment/mock/mockObjects/areaInformation.js +1 -1
  200. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +1 -1
  201. package/lib/development-environment/mock/mockObjects/areaSitesData.js +1 -1
  202. package/lib/development-environment/mock/mockObjects/areasJson.js +1 -1
  203. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +1 -1
  204. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +1 -1
  205. package/lib/development-environment/mock/mockObjects/data-menuData.js +1 -1
  206. package/lib/development-environment/mock/mockObjects/data-search.js +1 -1
  207. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +1 -1
  208. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +1 -1
  209. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +1 -1
  210. package/lib/development-environment/mock/mockObjects/eventsJson.js +1 -1
  211. package/lib/development-environment/mock/mockObjects/metascore.js +1 -1
  212. package/lib/development-environment/mock/mockObjects/permissionsJson.js +1 -1
  213. package/lib/development-environment/mock/mockObjects/pointsJson.js +1 -1
  214. package/lib/development-environment/mock/mockObjects/site-info.js +1 -1
  215. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +1 -1
  216. package/lib/development-environment/togly/ToglyDashboard.js +4 -22
  217. package/lib/development-environment/togly/ToglyItem.js +5 -25
  218. package/lib/development-environment/togly/flags.js +1 -1
  219. package/lib/development-environment/togly/init.js +1 -6
  220. package/lib/development-environment/togly/macro.js +7 -9
  221. package/lib/development-environment/togly/useDoubleKeyDown.js +1 -8
  222. package/lib/development-environment/togly/useLocalStorage.js +12 -19
  223. package/lib/hooks/useApi.js +10 -29
  224. package/lib/hooks/useApiWithDashboardQuery.js +10 -30
  225. package/lib/hooks/useClickOutside.js +1 -5
  226. package/lib/hooks/useInitializeHeaders.js +3 -8
  227. package/lib/hooks/useKandoFetch.js +13 -27
  228. package/lib/hooks/useMap.js +8 -35
  229. package/lib/hooks/useNavContext.js +13 -22
  230. package/lib/hooks/useQueryURL.js +1 -4
  231. package/lib/hooks/useRemoveExistingLayers.js +2 -7
  232. package/lib/hooks/useUpdateEventBodyTail.js +1 -10
  233. package/lib/hooks/useUserTimeZone.js +1 -9
  234. package/lib/hooks/useUserTimeZone.test.js +1 -9
  235. package/lib/hooks/useWindowSize.js +14 -19
  236. package/lib/i18n/en.json +4 -33
  237. package/lib/i18n/en_uk.json +2 -24
  238. package/lib/i18n/fr.json +2 -24
  239. package/lib/i18n/he.json +3 -30
  240. package/lib/i18n/it.json +2 -24
  241. package/lib/index.js +20 -29
  242. package/lib/macros/getVersion.js +2 -3
  243. package/lib/models/IAction.js +1 -1
  244. package/lib/models/IAppState.js +1 -1
  245. package/lib/pages/AreaPage/AreaPage.js +5 -34
  246. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +6 -17
  247. package/lib/pages/AreaPage/Dashboard/Dashboard.js +3 -24
  248. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +11 -35
  249. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +6 -8
  250. package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +28 -64
  251. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +1 -10
  252. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +3 -15
  253. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +3 -7
  254. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  255. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +1 -1
  256. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +3 -11
  257. package/lib/pages/AssessmentPage/AssessmentPage.js +5 -30
  258. package/lib/pages/CannyWidget/Feedback.js +10 -25
  259. package/lib/pages/CovidPage/CovidPage.js +1 -14
  260. package/lib/pages/CovidPage/components/Body.js +9 -33
  261. package/lib/pages/CovidPage/components/Map.js +20 -38
  262. package/lib/pages/CovidPage/components/Sidebar.js +4 -18
  263. package/lib/pages/CovidPage/components/Summary.js +8 -29
  264. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +12 -38
  265. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +1 -4
  266. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +14 -44
  267. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +1 -4
  268. package/lib/pages/CovidPage/components/areas/Area.js +6 -33
  269. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +4 -45
  270. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +5 -18
  271. package/lib/pages/CovidPage/components/areas/AreasList.js +14 -33
  272. package/lib/pages/CovidPage/components/areas/Sort.js +5 -19
  273. package/lib/pages/CovidPage/components/nvlStatusHelper.js +2 -11
  274. package/lib/pages/EventsPage/Body/Body.js +2 -19
  275. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +11 -28
  276. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +11 -31
  277. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +4 -11
  278. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +3 -11
  279. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +5 -10
  280. package/lib/pages/EventsPage/DragAndDropArea/index.js +1 -4
  281. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +9 -34
  282. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +2 -21
  283. package/lib/pages/EventsPage/EventsPage.js +1 -13
  284. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +9 -32
  285. package/lib/pages/EventsPage/events/EventsStyle.scss +0 -1
  286. package/lib/pages/EventsPage/events/MoreInfo.js +1 -19
  287. package/lib/pages/EventsPage/events/Sidebar.js +5 -18
  288. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +5 -29
  289. package/lib/pages/EventsPage/events/event_info/EventDetails.js +8 -32
  290. package/lib/pages/EventsPage/events/event_info/EventInfo.js +12 -41
  291. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +2 -14
  292. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +10 -40
  293. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +1 -12
  294. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +8 -30
  295. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +1 -8
  296. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/LineChartYear/LineChartYear.js +7 -27
  297. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/MockHistoryInformation.js +2 -10
  298. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +5 -21
  299. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsLineChart.js +4 -23
  300. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +4 -22
  301. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +6 -33
  302. package/lib/pages/EventsPage/events/event_info/samplings/Sampling.js +3 -15
  303. package/lib/pages/EventsPage/events/event_info/samplings/Samplings.js +2 -10
  304. package/lib/pages/EventsPage/events/event_info/sources/Source.js +8 -31
  305. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +4 -20
  306. package/lib/pages/EventsPage/events/events_list/EventItem.js +3 -24
  307. package/lib/pages/EventsPage/events/events_list/EventUtils.js +2 -13
  308. package/lib/pages/EventsPage/events/events_list/EventsList.js +39 -103
  309. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +11 -32
  310. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +31 -96
  311. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +10 -55
  312. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +5 -17
  313. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +15 -38
  314. package/lib/pages/EventsPage/events/events_list/Sort.js +4 -23
  315. package/lib/pages/ImportFileWizard/FileUploadRespones.js +4 -19
  316. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +2 -8
  317. package/lib/pages/ImportFileWizard/ImportFile.js +10 -29
  318. package/lib/pages/ImportFileWizard/ResponseBody.js +3 -12
  319. package/lib/pages/ImportFileWizard/ValidationForm.js +7 -27
  320. package/lib/pages/ImportFileWizard/ValidationResponse.js +6 -30
  321. package/lib/pages/ImportFileWizard/importFileUtils.js +1 -2
  322. package/lib/pages/ImportFileWizard/index.js +1 -4
  323. package/lib/pages/ImportGisPage/ImportGisContainer.js +7 -27
  324. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +10 -27
  325. package/lib/pages/ImportGisPage/importGisUtils.js +1 -13
  326. package/lib/pages/ImportGisProcess/index.js +4 -18
  327. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +5 -19
  328. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +3 -10
  329. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +1 -8
  330. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +25 -58
  331. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +2 -8
  332. package/lib/pages/NotificationsPage/Notification/Notification.js +8 -16
  333. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  334. package/lib/pages/NotificationsPage/Notifications.mock.js +1 -1
  335. package/lib/pages/NotificationsPage/Notifications.stories.js +2 -10
  336. package/lib/pages/NotificationsPage/NotificationsPage.js +11 -35
  337. package/lib/pages/NotificationsPage/assets/index.js +15 -24
  338. package/lib/pages/NotificationsPageV2/NotificationsPage.js +35 -83
  339. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +4 -24
  340. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +16 -41
  341. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +18 -49
  342. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +6 -49
  343. package/lib/pages/NotificationsPageV2/notificationUtils.js +4 -36
  344. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  345. package/lib/pages/OldSitePage/OldSitePage.js +16 -77
  346. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +3 -16
  347. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +2 -8
  348. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +4 -9
  349. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +5 -12
  350. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +2 -12
  351. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +7 -23
  352. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +6 -20
  353. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +4 -10
  354. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +2 -12
  355. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +9 -24
  356. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +4 -12
  357. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +28 -59
  358. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
  359. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  360. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +3 -18
  361. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +2 -15
  362. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +8 -16
  363. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +1 -16
  364. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  365. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +2 -10
  366. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +2 -7
  367. package/lib/pages/ProfilePage/Container.js +2 -6
  368. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +16 -43
  369. package/lib/pages/ProfilePage/ProfilePage.js +66 -229
  370. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +9 -32
  371. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +7 -17
  372. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +3 -14
  373. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +12 -57
  374. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +4 -21
  375. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +7 -15
  376. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +8 -29
  377. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +6 -25
  378. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +9 -21
  379. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +1 -13
  380. package/lib/pages/SamplingsPage/DesktopActions/index.js +1 -4
  381. package/lib/pages/SamplingsPage/NavigationDropdown.js +3 -21
  382. package/lib/pages/SamplingsPage/NewSamplingAction.js +38 -84
  383. package/lib/pages/SamplingsPage/SamplingMobileModal.js +12 -65
  384. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +5 -19
  385. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +3 -14
  386. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +22 -56
  387. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +4 -20
  388. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +1 -14
  389. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +37 -110
  390. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +11 -42
  391. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +14 -47
  392. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +15 -49
  393. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +5 -23
  394. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +2 -8
  395. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +1 -11
  396. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +7 -36
  397. package/lib/pages/SamplingsPage/SamplingsMobileList.js +10 -34
  398. package/lib/pages/SamplingsPage/SamplingsPage.js +14 -39
  399. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +14 -48
  400. package/lib/pages/SamplingsPage/index.js +1 -3
  401. package/lib/pages/SamplingsPage/samplingsPageUtils.js +7 -30
  402. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +2 -10
  403. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +2 -8
  404. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +3 -17
  405. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +6 -11
  406. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +15 -23
  407. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +7 -16
  408. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +18 -27
  409. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +2 -12
  410. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +9 -26
  411. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +6 -20
  412. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +4 -10
  413. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +2 -12
  414. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +9 -24
  415. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +4 -12
  416. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +32 -68
  417. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
  418. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +12 -10
  419. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +4 -19
  420. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +2 -15
  421. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +17 -38
  422. package/lib/pages/SitePage/SamplingParameters/dataParser.js +13 -29
  423. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +3 -7
  424. package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
  425. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +2 -10
  426. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +2 -8
  427. package/lib/pages/SitePage/SiteInformation/ContributorItem.js +5 -12
  428. package/lib/pages/SitePage/SiteInformation/EmptyState.js +1 -10
  429. package/lib/pages/SitePage/SiteInformation/PollutionContributor.js +5 -15
  430. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +17 -48
  431. package/lib/pages/SitePage/SiteInformation/style.js +2 -8
  432. package/lib/pages/SitePage/SitePage.js +10 -49
  433. package/lib/pages/UploadLabResult/index.js +1 -8
  434. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +9 -37
  435. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +2 -9
  436. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +2 -16
  437. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +2 -8
  438. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +9 -35
  439. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +1 -5
  440. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +1 -7
  441. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +1 -10
  442. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +7 -16
  443. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  444. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +1 -10
  445. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +1 -5
  446. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +3 -25
  447. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +13 -19
  448. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +8 -18
  449. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +5 -20
  450. package/lib/pages/WbeDashboard/ExpandableComponent.js +4 -16
  451. package/lib/pages/WbeDashboard/GraphWrapper.js +7 -29
  452. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +6 -19
  453. package/lib/pages/WbeDashboard/SearchInput.js +4 -22
  454. package/lib/pages/WbeDashboard/SummaryGraph.js +47 -91
  455. package/lib/pages/WbeDashboard/SummaryGraphModal.js +1 -13
  456. package/lib/pages/WbeDashboard/Tabs.js +3 -10
  457. package/lib/pages/WbeDashboard/WbeDashboardPage.js +67 -149
  458. package/lib/pages/WbeDashboard/WbeSummaryBar.js +15 -53
  459. package/lib/providers/Slideshow/SlideshowContext.js +3 -5
  460. package/lib/providers/Slideshow/SlideshowProvider.js +16 -31
  461. package/lib/providers/Slideshow/SlideshowRunner.js +7 -17
  462. package/lib/providers/UrlHistory/UrlHistoryContext.js +3 -7
  463. package/lib/providers/UrlHistory/UrlHistoryProvider.js +1 -13
  464. package/lib/providers/UrlHistory/index.js +5 -8
  465. package/lib/providers/UrlHistory/useLastVisited.js +1 -7
  466. package/lib/react-app-env.d.js +1 -1
  467. package/lib/store/ImportGis/action.js +1 -1
  468. package/lib/store/ImportGis/actionTypes.js +1 -2
  469. package/lib/store/ImportGis/actionsCreator.js +7 -17
  470. package/lib/store/ImportGis/models/gisImports.js +1 -1
  471. package/lib/store/ImportGis/reducer.js +1 -17
  472. package/lib/store/WBE/actionTypes.js +1 -1
  473. package/lib/store/WBE/actions.js +1 -3
  474. package/lib/store/WBE/models/IAreaWBE.js +1 -1
  475. package/lib/store/WBE/models/IWBE.js +1 -1
  476. package/lib/store/WBE/models/IWBEState.js +1 -1
  477. package/lib/store/WBE/reducer.js +2 -9
  478. package/lib/store/areas/actionTypes.js +2 -2
  479. package/lib/store/areas/actions.js +2 -11
  480. package/lib/store/areas/models/IArea.js +1 -1
  481. package/lib/store/areas/models/IAreasState.js +1 -1
  482. package/lib/store/areas/reducer.js +1 -9
  483. package/lib/store/context/actionTypes.js +2 -2
  484. package/lib/store/context/actions.js +2 -6
  485. package/lib/store/context/contextMiddlewares.js +1 -9
  486. package/lib/store/context/models/INavContext.js +1 -1
  487. package/lib/store/context/models/INavContextState.js +1 -1
  488. package/lib/store/context/reducer.js +2 -9
  489. package/lib/store/dashboard/dashboardSlice.js +1 -3
  490. package/lib/store/dashboard/periodType.js +1 -1
  491. package/lib/store/edges/actionTypes.js +2 -2
  492. package/lib/store/edges/actions.js +3 -9
  493. package/lib/store/edges/models/IEdge.js +1 -1
  494. package/lib/store/edges/models/IEdgesState.js +1 -1
  495. package/lib/store/edges/reducer.js +2 -16
  496. package/lib/store/events/actionTypes.js +2 -2
  497. package/lib/store/events/actions.js +12 -30
  498. package/lib/store/events/models/IEvent.js +1 -1
  499. package/lib/store/events/models/IEventsState.js +1 -1
  500. package/lib/store/events/models/ISource.js +1 -1
  501. package/lib/store/events/reducer.js +3 -41
  502. package/lib/store/filters/IFilter.js +1 -1
  503. package/lib/store/filters/IFilterItem.js +1 -1
  504. package/lib/store/global/actionTypes.js +2 -2
  505. package/lib/store/global/actions.js +8 -20
  506. package/lib/store/global/models/IGlobalState.js +1 -1
  507. package/lib/store/global/reducer.js +2 -18
  508. package/lib/store/permissions/permissionsSlice.js +1 -8
  509. package/lib/store/points/actionTypes.js +2 -2
  510. package/lib/store/points/actions.js +1 -5
  511. package/lib/store/points/models/IGroup.js +1 -1
  512. package/lib/store/points/models/IPoint.js +1 -1
  513. package/lib/store/points/models/IPointsState.js +1 -1
  514. package/lib/store/points/reducer.js +1 -7
  515. package/lib/store/rootActionTypes.js +1 -1
  516. package/lib/store/rootActions.js +1 -3
  517. package/lib/store/rootReducer.js +4 -23
  518. package/lib/store/rootStore.js +4 -12
  519. package/lib/store/samplings/action.js +1 -1
  520. package/lib/store/samplings/actionTypes.js +1 -2
  521. package/lib/store/samplings/actionsCreator.js +2 -5
  522. package/lib/store/samplings/models/Samplings.js +1 -1
  523. package/lib/store/samplings/reducer.js +1 -9
  524. package/lib/styles/StylesLayout.js +1 -7
  525. package/lib/styles/theme/theme.js +2 -4
  526. package/lib/test/mocks/browser.js +3 -7
  527. package/lib/test/test-utils.js +11 -21
  528. package/lib/ui-kit/Button/Button.js +15 -23
  529. package/lib/ui-kit/Button/Button.test.js +6 -26
  530. package/lib/ui-kit/Button/ButtonUtils.js +1 -1
  531. package/lib/ui-kit/Checkbox/Checkbox.js +7 -21
  532. package/lib/ui-kit/DropDown/DropDown.js +5 -16
  533. package/lib/ui-kit/DropDown/DropDown.test.js +6 -12
  534. package/lib/ui-kit/DropDown/DropDownItem.js +5 -13
  535. package/lib/ui-kit/DropDown/DropdownToggle.js +2 -13
  536. package/lib/ui-kit/IconAction/IconAction.js +3 -9
  537. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +19 -70
  538. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +16 -27
  539. package/lib/ui-kit/KandoList/KandoList.js +5 -16
  540. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  541. package/lib/ui-kit/KandoTable/KandoTable.js +22 -38
  542. package/lib/ui-kit/KandoTable/KandoTable.test.js +1 -16
  543. package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
  544. package/lib/ui-kit/Layout/Layout.js +1 -8
  545. package/lib/ui-kit/MobileInput/MobileInput.js +18 -33
  546. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +8 -14
  547. package/lib/ui-kit/ModalConfirmation/index.js +1 -3
  548. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +5 -10
  549. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +3 -11
  550. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +4 -11
  551. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +5 -14
  552. package/lib/ui-kit/Tooltip/Tooltip.js +3 -8
  553. package/lib/ui-kit/index.js +1 -15
  554. package/lib/ui-kit/kandoStepper/KandoStepper.js +2 -7
  555. package/lib/utilities/ActionUtility.js +1 -2
  556. package/lib/utilities/Alert.js +2 -10
  557. package/lib/utilities/Analytics.js +1 -12
  558. package/lib/utilities/Array.js +2 -6
  559. package/lib/utilities/Enum.js +1 -16
  560. package/lib/utilities/ErrorBoundary.js +3 -18
  561. package/lib/utilities/File.js +5 -24
  562. package/lib/utilities/GetDir.js +4 -8
  563. package/lib/utilities/KandoDate.js +1 -7
  564. package/lib/utilities/KandoModal.js +7 -22
  565. package/lib/utilities/LocalStorage.js +2 -13
  566. package/lib/utilities/ThousandsToK.js +1 -3
  567. package/lib/utilities/TimeFormat.js +6 -19
  568. package/lib/utilities/Truncate.js +7 -27
  569. package/lib/utilities/edgesMath.js +5 -25
  570. package/lib/utilities/i18n.js +1 -14
  571. package/lib/utilities/kql.js +3 -10
  572. package/lib/utilities/map/icons.js +1 -18
  573. package/lib/utilities/scoreToColor.js +1 -8
  574. package/lib/utilities/time.js +2 -9
  575. package/lib/utilities/uploadToS3.js +1 -9
  576. package/lib/utilities/urls.js +6 -14
  577. package/package.json +3 -1
@@ -1,57 +1,33 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.ProfilePage = void 0;
11
-
12
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
13
-
14
10
  var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
15
-
16
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
17
-
18
12
  var _react = _interopRequireWildcard(require("react"));
19
-
20
13
  var _Select = require("components/CustomInputs/Select/Select");
21
-
22
14
  var _i18n = _interopRequireDefault(require("utilities/i18n"));
23
-
24
15
  var _PasswordModal = require("./PasswordModal/PasswordModal");
25
-
26
16
  var _pen = require("@svgr/webpack?-svgo!./pen.svg");
27
-
28
17
  var _cancel = require("@svgr/webpack?-svgo!./cancel.svg");
29
-
30
18
  var _reactPhoneInput = _interopRequireDefault(require("react-phone-input-2"));
31
-
32
19
  require("react-phone-input-2/lib/style.css");
33
-
34
20
  var _TelegramModal = require("./TelegramModal/TelegramModal");
35
-
36
21
  var _axios = _interopRequireDefault(require("axios"));
37
-
38
22
  var _Container = require("./Container");
39
-
40
23
  var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
41
-
42
24
  var _Analytics = require("../../utilities/Analytics");
43
-
44
25
  var _reactRedux = require("react-redux");
45
-
46
26
  var _reactToastify = require("react-toastify");
47
-
48
27
  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); }
49
-
50
28
  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; }
51
-
52
29
  var ProfilePage = function ProfilePage() {
53
30
  var timezonesArray = _momentTimezone.default.tz.names();
54
-
55
31
  var dateTimeFormatOptions = [{
56
32
  value: 'us',
57
33
  label: 'United States',
@@ -96,48 +72,18 @@ var ProfilePage = function ProfilePage() {
96
72
  value: 'it',
97
73
  label: 'Italiano'
98
74
  }];
99
-
100
75
  var _useState = (0, _react.useState)(localeOptions[0]),
101
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
102
- locale = _useState2[0],
103
- setLocale = _useState2[1];
104
-
76
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
77
+ locale = _useState2[0],
78
+ setLocale = _useState2[1];
105
79
  var _useState3 = (0, _react.useState)(dateTimeFormatOptions[0]),
106
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
107
- dateTimeFormat = _useState4[0],
108
- setDateTimeFormat = _useState4[1];
109
-
80
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
81
+ dateTimeFormat = _useState4[0],
82
+ setDateTimeFormat = _useState4[1];
110
83
  var _useState5 = (0, _react.useState)(timezones[20]),
111
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
112
- timezone = _useState6[0],
113
- setTimezone = _useState6[1];
114
-
115
- var _useState7 = (0, _react.useState)([{
116
- value: '',
117
- label: ''
118
- }]),
119
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
120
- departments = _useState8[0],
121
- setDepartments = _useState8[1];
122
-
123
- var _useState9 = (0, _react.useState)([{
124
- value: '',
125
- label: ''
126
- }]),
127
- _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
128
- businessRoles = _useState10[0],
129
- setBusinessRoles = _useState10[1];
130
-
131
- var _useState11 = (0, _react.useState)(departments[0]),
132
- _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
133
- department = _useState12[0],
134
- setDepartment = _useState12[1];
135
-
136
- var _useState13 = (0, _react.useState)(businessRoles[0]),
137
- _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
138
- businessRole = _useState14[0],
139
- setBusinessRole = _useState14[1];
140
-
84
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
85
+ timezone = _useState6[0],
86
+ setTimezone = _useState6[1];
141
87
  var initialParamsState = {
142
88
  first_name: '',
143
89
  last_name: '',
@@ -146,58 +92,45 @@ var ProfilePage = function ProfilePage() {
146
92
  time_zone: '',
147
93
  date_time_format: '',
148
94
  locale: '',
149
- telegram_name: '',
150
- other_business_role_name: '',
151
- other_department_name: '',
152
- business_role: '',
153
- department: ''
95
+ telegram_name: ''
154
96
  };
155
-
97
+ var _useState7 = (0, _react.useState)(false),
98
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
99
+ isTelegramOpen = _useState8[0],
100
+ setIsTelegramOpen = _useState8[1];
101
+ var _useState9 = (0, _react.useState)(false),
102
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
103
+ showPasswordModal = _useState10[0],
104
+ setShowPasswordModal = _useState10[1];
105
+ var _useState11 = (0, _react.useState)(false),
106
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
107
+ submitting = _useState12[0],
108
+ setSubmitting = _useState12[1];
109
+ var _useState13 = (0, _react.useState)(false),
110
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
111
+ showSuccessMessage = _useState14[0],
112
+ setShowSuccessMessage = _useState14[1];
156
113
  var _useState15 = (0, _react.useState)(false),
157
- _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
158
- isTelegramOpen = _useState16[0],
159
- setIsTelegramOpen = _useState16[1];
160
-
161
- var _useState17 = (0, _react.useState)(false),
162
- _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
163
- showPasswordModal = _useState18[0],
164
- setShowPasswordModal = _useState18[1];
165
-
166
- var _useState19 = (0, _react.useState)(false),
167
- _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
168
- submitting = _useState20[0],
169
- setSubmitting = _useState20[1];
170
-
171
- var _useState21 = (0, _react.useState)(false),
172
- _useState22 = (0, _slicedToArray2.default)(_useState21, 2),
173
- showSuccessMessage = _useState22[0],
174
- setShowSuccessMessage = _useState22[1];
175
-
176
- var _useState23 = (0, _react.useState)(false),
177
- _useState24 = (0, _slicedToArray2.default)(_useState23, 2),
178
- showErrorMessage = _useState24[0],
179
- setShowErrorMessage = _useState24[1];
180
-
181
- var _useState25 = (0, _react.useState)({
182
- show: false,
183
- status: '',
184
- message: ''
185
- }),
186
- _useState26 = (0, _slicedToArray2.default)(_useState25, 2),
187
- showTelegramResponseMessage = _useState26[0],
188
- setShowTelegramResponseMessage = _useState26[1];
189
-
190
- var _useState27 = (0, _react.useState)(initialParamsState),
191
- _useState28 = (0, _slicedToArray2.default)(_useState27, 2),
192
- params = _useState28[0],
193
- setParams = _useState28[1];
194
-
114
+ _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
115
+ showErrorMessage = _useState16[0],
116
+ setShowErrorMessage = _useState16[1];
117
+ var _useState17 = (0, _react.useState)({
118
+ show: false,
119
+ status: '',
120
+ message: ''
121
+ }),
122
+ _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
123
+ showTelegramResponseMessage = _useState18[0],
124
+ setShowTelegramResponseMessage = _useState18[1];
125
+ var _useState19 = (0, _react.useState)(initialParamsState),
126
+ _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
127
+ params = _useState20[0],
128
+ setParams = _useState20[1];
195
129
  var handleOnChange = function handleOnChange(e) {
196
130
  if (typeof e === 'string') {
197
131
  if (e.startsWith('9720')) {
198
132
  e = e.replace(/(9720)/g, '972');
199
133
  }
200
-
201
134
  setParams(function (prevState) {
202
135
  return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, {
203
136
  phone: e
@@ -205,50 +138,26 @@ var ProfilePage = function ProfilePage() {
205
138
  });
206
139
  } else {
207
140
  var _e$target = e.target,
208
- value = _e$target.value,
209
- name = _e$target.name;
141
+ value = _e$target.value,
142
+ name = _e$target.name;
210
143
  setParams(function (prevState) {
211
144
  return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prevState), {}, (0, _defineProperty2.default)({}, name, value));
212
145
  });
213
146
  }
214
147
  };
215
-
216
- var handleBusinessRoleChange = function handleBusinessRoleChange(e) {
217
- if (e.target !== null) {
218
- setParams((0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
219
- business_role: e.value,
220
- other_business_role_name: e.target.value
221
- }));
222
- }
223
- };
224
-
225
- var handleDepartmentChange = function handleDepartmentChange(e) {
226
- if (e.target !== null) {
227
- setParams((0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
228
- department: e.value,
229
- other_department_name: e.target.value
230
- }));
231
- }
232
- };
233
-
234
148
  var getParamsWithAggregatedValues = function getParamsWithAggregatedValues() {
235
149
  return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, params), {}, {
236
150
  date_time_format: dateTimeFormat.value,
237
151
  locale: locale.value,
238
- time_zone: timezone.value,
239
- department_id: department === undefined ? null : department.value,
240
- business_role_id: businessRole === undefined ? null : businessRole.value
152
+ time_zone: timezone.value
241
153
  });
242
154
  };
243
-
244
155
  var waterAuthorityName = (0, _reactRedux.useSelector)(function (state) {
245
156
  return state.global_data.waterAuthorityName;
246
157
  });
247
-
248
158
  var showToast = function showToast(data) {
249
159
  var username = data.username;
250
160
  var error = data.error;
251
-
252
161
  if (data.status === 'success') {
253
162
  _reactToastify.toast.success(_i18n.default.t("my_profile_tab.telegram_messages.".concat(data.message), {
254
163
  username: username
@@ -264,15 +173,13 @@ var ProfilePage = function ProfilePage() {
264
173
  });
265
174
  }
266
175
  };
267
-
268
176
  var handleSubmit = function handleSubmit(e) {
269
177
  e.preventDefault();
270
178
  setSubmitting(true);
271
-
272
179
  _axios.default.put('/profiles', {
273
180
  user: getParamsWithAggregatedValues()
274
181
  }).then(function (resp) {
275
- if (resp.data.user.errors === null) {
182
+ if (resp.data.errors === null) {
276
183
  document.querySelectorAll('.error-message').forEach(function (p) {
277
184
  return p.innerHTML = '';
278
185
  });
@@ -301,8 +208,7 @@ var ProfilePage = function ProfilePage() {
301
208
  document.querySelectorAll('.error-message').forEach(function (p) {
302
209
  return p.innerHTML = '';
303
210
  });
304
- var errors = resp.data.user.errors;
305
-
211
+ var errors = resp.data.errors;
306
212
  for (var error in errors) {
307
213
  var findElement = document.querySelector("input[name='".concat(error, "']"));
308
214
  var parent = findElement.closest('.field');
@@ -310,10 +216,8 @@ var ProfilePage = function ProfilePage() {
310
216
  findInput.classList.add('invalid-field');
311
217
  parent.querySelector('.error-message').innerHTML = _i18n.default.t("dashboard_v2.profile.errors.".concat(error));
312
218
  }
313
-
314
219
  setShowSuccessMessage(false);
315
220
  }
316
-
317
221
  setSubmitting(false);
318
222
  }).catch(function (error) {
319
223
  setShowErrorMessage(true);
@@ -324,32 +228,28 @@ var ProfilePage = function ProfilePage() {
324
228
  }, 6000);
325
229
  });
326
230
  };
327
-
328
231
  (0, _react.useEffect)(function () {
329
232
  (0, _Analytics.analyticsTrack)('Viewed Profile Page', {
330
233
  utility_name: waterAuthorityName
331
- }); // @ts-ignore
332
-
234
+ });
235
+ // @ts-ignore
333
236
  var token = document.querySelector('[name=csrf-token]').content;
334
237
  _axios.default.defaults.headers.common['X-CSRF-TOKEN'] = token;
335
238
  _axios.default.defaults.headers.common['Content-Type'] = 'application/js';
336
-
337
- _axios.default.get("/profiles/resource").then(function (resp) {
338
- setParams(resp.data.user);
339
-
340
- var findProperty = function findProperty(object, property) {
341
- return object.find(function (e) {
342
- return e.value === property;
343
- });
344
- };
345
-
346
- setLocale(findProperty(localeOptions, resp.data.user.locale));
347
- setDateTimeFormat(findProperty(dateTimeFormatOptions, resp.data.user.date_time_format));
348
- setTimezone(findProperty(timezones, resp.data.user.time_zone));
349
- setBusinessRole(findProperty(resp.data.business_roles, resp.data.user.business_role_id));
350
- setDepartment(findProperty(resp.data.departments, resp.data.user.department_id));
351
- setDepartments(resp.data.departments);
352
- setBusinessRoles(resp.data.business_roles);
239
+ _axios.default.get('/profiles/resource').then(function (resp) {
240
+ setParams(resp.data);
241
+ var findLocale = localeOptions.find(function (e) {
242
+ return e.value === resp.data.locale;
243
+ });
244
+ var findDateTimeFormat = dateTimeFormatOptions.find(function (e) {
245
+ return e.value === resp.data.date_time_format;
246
+ });
247
+ var findTimezone = timezones.find(function (e) {
248
+ return e.value === resp.data.time_zone;
249
+ });
250
+ setLocale(findLocale);
251
+ setDateTimeFormat(findDateTimeFormat);
252
+ setTimezone(findTimezone);
353
253
  }).catch(function (error) {
354
254
  return alert(error);
355
255
  });
@@ -432,68 +332,6 @@ var ProfilePage = function ProfilePage() {
432
332
  className: 'error-message'
433
333
  })), /*#__PURE__*/_react.default.createElement("div", {
434
334
  className: "field"
435
- }, /*#__PURE__*/_react.default.createElement("div", {
436
- className: "label"
437
- }, _i18n.default.t('dashboard_v2.profile.department')), /*#__PURE__*/_react.default.createElement("div", {
438
- className: "my-input"
439
- }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
440
- setValue: setDepartment,
441
- value: {
442
- label: _i18n.default.t("dashboard_v2.profile.departments.".concat(department === null || department === void 0 ? void 0 : department.label)),
443
- value: department === null || department === void 0 ? void 0 : department.value
444
- },
445
- options: departments,
446
- cancelTextWidth: true,
447
- translate: {
448
- options: departments,
449
- translation_key: 'dashboard_v2.profile.departments'
450
- }
451
- }))), /*#__PURE__*/_react.default.createElement("div", {
452
- className: "field ".concat(department && (department === null || department === void 0 ? void 0 : department.value) === departments[departments.length - 1].value ? '' : 'field--hidden')
453
- }, /*#__PURE__*/_react.default.createElement("div", {
454
- className: "label"
455
- }, _i18n.default.t('dashboard_v2.profile.department_alt')), /*#__PURE__*/_react.default.createElement("input", {
456
- readOnly: false,
457
- type: "text",
458
- className: "my-input",
459
- name: 'other_department_name',
460
- value: params.other_department_name,
461
- onChange: function onChange(e) {
462
- return handleDepartmentChange(e);
463
- }
464
- })), /*#__PURE__*/_react.default.createElement("div", {
465
- className: "field"
466
- }, /*#__PURE__*/_react.default.createElement("div", {
467
- className: "label"
468
- }, _i18n.default.t('dashboard_v2.profile.business_role')), /*#__PURE__*/_react.default.createElement("div", {
469
- className: "my-input"
470
- }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
471
- setValue: setBusinessRole,
472
- value: {
473
- label: _i18n.default.t("dashboard_v2.profile.business_roles.".concat(businessRole === null || businessRole === void 0 ? void 0 : businessRole.label)),
474
- value: businessRole === null || businessRole === void 0 ? void 0 : businessRole.value
475
- },
476
- options: businessRoles,
477
- cancelTextWidth: true,
478
- translate: {
479
- options: businessRoles,
480
- translation_key: 'dashboard_v2.profile.business_roles'
481
- }
482
- }))), /*#__PURE__*/_react.default.createElement("div", {
483
- className: "field ".concat(businessRole && (businessRole === null || businessRole === void 0 ? void 0 : businessRole.value) === businessRoles[businessRoles.length - 1].value ? '' : 'field--hidden', " ")
484
- }, /*#__PURE__*/_react.default.createElement("div", {
485
- className: "label"
486
- }, _i18n.default.t('dashboard_v2.profile.business_role_alt')), /*#__PURE__*/_react.default.createElement("input", {
487
- readOnly: false,
488
- type: "text",
489
- className: "my-input",
490
- name: 'other_business_role_name',
491
- value: params.other_business_role_name,
492
- onChange: function onChange(e) {
493
- return handleBusinessRoleChange(e);
494
- }
495
- })), /*#__PURE__*/_react.default.createElement("div", {
496
- className: "field"
497
335
  }, /*#__PURE__*/_react.default.createElement("div", {
498
336
  className: "change-password",
499
337
  onClick: function onClick() {
@@ -586,8 +424,8 @@ var ProfilePage = function ProfilePage() {
586
424
  onClick: function onClick() {
587
425
  _axios.default.get("/telegram/send_test_message.json").then(function (resp) {
588
426
  setShowTelegramResponseMessage({
589
- status: resp.data.user.status[0].toUpperCase() + resp.data.user.status.substring(1),
590
- message: resp.data.user.message,
427
+ status: resp.data.status[0].toUpperCase() + resp.data.status.substring(1),
428
+ message: resp.data.message,
591
429
  show: true
592
430
  });
593
431
  setTimeout(function () {
@@ -597,7 +435,7 @@ var ProfilePage = function ProfilePage() {
597
435
  show: false
598
436
  });
599
437
  }, 6000);
600
- showToast(resp.data.user);
438
+ showToast(resp.data);
601
439
  }).catch(function (error) {
602
440
  return alert(error);
603
441
  });
@@ -619,6 +457,5 @@ var ProfilePage = function ProfilePage() {
619
457
  handleSubmit: handleSubmit
620
458
  }));
621
459
  };
622
-
623
460
  exports.ProfilePage = ProfilePage;
624
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9Qcm9maWxlUGFnZS9Qcm9maWxlUGFnZS50c3giXSwibmFtZXMiOlsiUHJvZmlsZVBhZ2UiLCJ0aW1lem9uZXNBcnJheSIsIm1vbWVudCIsInR6IiwibmFtZXMiLCJkYXRlVGltZUZvcm1hdE9wdGlvbnMiLCJ2YWx1ZSIsImxhYmVsIiwiZm9ybWF0IiwibW9udGgiLCJkYXkiLCJ5ZWFyIiwiaG91ciIsIm1pbnV0ZSIsImhvdXIxMiIsInRpbWV6b25lcyIsIm1hcCIsInQiLCJsb2NhbGVPcHRpb25zIiwibG9jYWxlIiwic2V0TG9jYWxlIiwiZGF0ZVRpbWVGb3JtYXQiLCJzZXREYXRlVGltZUZvcm1hdCIsInRpbWV6b25lIiwic2V0VGltZXpvbmUiLCJkZXBhcnRtZW50cyIsInNldERlcGFydG1lbnRzIiwiYnVzaW5lc3NSb2xlcyIsInNldEJ1c2luZXNzUm9sZXMiLCJkZXBhcnRtZW50Iiwic2V0RGVwYXJ0bWVudCIsImJ1c2luZXNzUm9sZSIsInNldEJ1c2luZXNzUm9sZSIsImluaXRpYWxQYXJhbXNTdGF0ZSIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJwaG9uZSIsImVtYWlsIiwidGltZV96b25lIiwiZGF0ZV90aW1lX2Zvcm1hdCIsInRlbGVncmFtX25hbWUiLCJvdGhlcl9idXNpbmVzc19yb2xlX25hbWUiLCJvdGhlcl9kZXBhcnRtZW50X25hbWUiLCJidXNpbmVzc19yb2xlIiwiaXNUZWxlZ3JhbU9wZW4iLCJzZXRJc1RlbGVncmFtT3BlbiIsInNob3dQYXNzd29yZE1vZGFsIiwic2V0U2hvd1Bhc3N3b3JkTW9kYWwiLCJzdWJtaXR0aW5nIiwic2V0U3VibWl0dGluZyIsInNob3dTdWNjZXNzTWVzc2FnZSIsInNldFNob3dTdWNjZXNzTWVzc2FnZSIsInNob3dFcnJvck1lc3NhZ2UiLCJzZXRTaG93RXJyb3JNZXNzYWdlIiwic2hvdyIsInN0YXR1cyIsIm1lc3NhZ2UiLCJzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UiLCJzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2UiLCJwYXJhbXMiLCJzZXRQYXJhbXMiLCJoYW5kbGVPbkNoYW5nZSIsImUiLCJzdGFydHNXaXRoIiwicmVwbGFjZSIsInByZXZTdGF0ZSIsInRhcmdldCIsIm5hbWUiLCJoYW5kbGVCdXNpbmVzc1JvbGVDaGFuZ2UiLCJoYW5kbGVEZXBhcnRtZW50Q2hhbmdlIiwiZ2V0UGFyYW1zV2l0aEFnZ3JlZ2F0ZWRWYWx1ZXMiLCJkZXBhcnRtZW50X2lkIiwidW5kZWZpbmVkIiwiYnVzaW5lc3Nfcm9sZV9pZCIsIndhdGVyQXV0aG9yaXR5TmFtZSIsInN0YXRlIiwiZ2xvYmFsX2RhdGEiLCJzaG93VG9hc3QiLCJkYXRhIiwidXNlcm5hbWUiLCJlcnJvciIsInRvYXN0Iiwic3VjY2VzcyIsImkxOG4iLCJwb3NpdGlvbiIsImhhbmRsZVN1Ym1pdCIsInByZXZlbnREZWZhdWx0IiwiYXhpb3MiLCJwdXQiLCJ1c2VyIiwidGhlbiIsInJlc3AiLCJlcnJvcnMiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwicCIsImlubmVySFRNTCIsImNsYXNzTGlzdCIsInJlbW92ZSIsIkpTT04iLCJwYXJzZSIsImZpbmRMb2NhbGUiLCJmaW5kIiwiZmluZERhdGVUaW1lRm9ybWF0IiwiZmluZFRpbWV6b25lIiwic2V0VGltZW91dCIsImZpbmRFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInBhcmVudCIsImNsb3Nlc3QiLCJmaW5kSW5wdXQiLCJhZGQiLCJjYXRjaCIsInV0aWxpdHlfbmFtZSIsInRva2VuIiwiY29udGVudCIsImRlZmF1bHRzIiwiaGVhZGVycyIsImNvbW1vbiIsImdldCIsImZpbmRQcm9wZXJ0eSIsIm9iamVjdCIsInByb3BlcnR5IiwiYnVzaW5lc3Nfcm9sZXMiLCJhbGVydCIsIm9wdGlvbnMiLCJ0cmFuc2xhdGlvbl9rZXkiLCJsZW5ndGgiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwidG9VcHBlckNhc2Ui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QUFLLEVBQUU7QUFBQSxhQUFNQyxpQkFBaUIsQ0FBQyxLQUFELENBQXZCO0FBQUEsS0FEVDtBQUVFLElBQUEsY0FBYyxFQUFFZ0IsY0FGbEI7QUFHRSxJQUFBLFlBQVksRUFBRXdCO0FBSGhCLElBclRKLENBREY7QUE4VEQsQ0FobUJNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTZWxlY3QgfSBmcm9tICdzcmMvY29tcG9uZW50cy9DdXN0b21JbnB1dHMvU2VsZWN0L1NlbGVjdCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgUGFzc3dvcmRNb2RhbCB9IGZyb20gJy4vUGFzc3dvcmRNb2RhbC9QYXNzd29yZE1vZGFsJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFBlblN2ZyB9IGZyb20gJy4vcGVuLnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBDYW5jZWwgfSBmcm9tICcuL2NhbmNlbC5zdmcnO1xuaW1wb3J0IFBob25lSW5wdXQgZnJvbSAncmVhY3QtcGhvbmUtaW5wdXQtMic7XG5pbXBvcnQgJ3JlYWN0LXBob25lLWlucHV0LTIvbGliL3N0eWxlLmNzcyc7XG5pbXBvcnQgeyBUZWxlZ3JhbU1vZGFsIH0gZnJvbSAnLi9UZWxlZ3JhbU1vZGFsL1RlbGVncmFtTW9kYWwnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gJy4vQ29udGFpbmVyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCB7IGFuYWx5dGljc1RyYWNrIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0FuYWx5dGljcyc7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSAncmVhY3QtdG9hc3RpZnknO1xuXG5leHBvcnQgY29uc3QgUHJvZmlsZVBhZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IHRpbWV6b25lc0FycmF5ID0gbW9tZW50LnR6Lm5hbWVzKCk7XG4gIGNvbnN0IGRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IFtcbiAgICB7XG4gICAgICB2YWx1ZTogJ3VzJyxcbiAgICAgIGxhYmVsOiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBmb3JtYXQ6IHtcbiAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdldScsXG4gICAgICBsYWJlbDogJ0V1cm9wZScsXG4gICAgICBmb3JtYXQ6IHtcbiAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgIG1vbnRoOiAnbnVtZXJpYycsXG4gICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcblxuICBjb25zdCB0aW1lem9uZXMgPSB0aW1lem9uZXNBcnJheS5tYXAoKHQpID0+IHtcbiAgICByZXR1cm4geyB2YWx1ZTogdCwgbGFiZWw6IHQgfTtcbiAgfSk7XG5cbiAgY29uc3QgbG9jYWxlT3B0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnZW4nLCBsYWJlbDogJ0VuZ2xpc2gnIH0sXG4gICAgeyB2YWx1ZTogJ2VuX3VrJywgbGFiZWw6ICdFbmdsaXNoIChVSyknIH0sXG4gICAgeyB2YWx1ZTogJ2hlJywgbGFiZWw6ICfXoteR16jXmdeqJyB9LFxuICAgIHsgdmFsdWU6ICdmcicsIGxhYmVsOiAnRnJhbsOnYWlzJyB9LFxuICAgIHsgdmFsdWU6ICdpdCcsIGxhYmVsOiAnSXRhbGlhbm8nIH0sXG4gIF07XG5cbiAgY29uc3QgW2xvY2FsZSwgc2V0TG9jYWxlXSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH0+KGxvY2FsZU9wdGlvbnNbMF0pO1xuXG4gIGNvbnN0IFtkYXRlVGltZUZvcm1hdCwgc2V0RGF0ZVRpbWVGb3JtYXRdID0gdXNlU3RhdGU8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBmb3JtYXQ6IG9iamVjdDtcbiAgfT4oZGF0ZVRpbWVGb3JtYXRPcHRpb25zWzBdKTtcblxuICBjb25zdCBbdGltZXpvbmUsIHNldFRpbWV6b25lXSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH0+KHRpbWV6b25lc1syMF0pO1xuXG4gIGNvbnN0IFtkZXBhcnRtZW50cywgc2V0RGVwYXJ0bWVudHNdID0gdXNlU3RhdGU8XG4gICAge1xuICAgICAgdmFsdWU6IHN0cmluZztcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgfVtdXG4gID4oW3sgdmFsdWU6ICcnLCBsYWJlbDogJycgfV0pO1xuXG4gIGNvbnN0IFtidXNpbmVzc1JvbGVzLCBzZXRCdXNpbmVzc1JvbGVzXSA9IHVzZVN0YXRlPFxuICAgIHtcbiAgICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgIH1bXVxuICA+KFt7IHZhbHVlOiAnJywgbGFiZWw6ICcnIH1dKTtcblxuICBjb25zdCBbZGVwYXJ0bWVudCwgc2V0RGVwYXJ0bWVudF0gPSB1c2VTdGF0ZTxhbnk+KGRlcGFydG1lbnRzWzBdKTtcblxuICBjb25zdCBbYnVzaW5lc3NSb2xlLCBzZXRCdXNpbmVzc1JvbGVdID0gdXNlU3RhdGU8YW55PihidXNpbmVzc1JvbGVzWzBdKTtcblxuICBjb25zdCBpbml0aWFsUGFyYW1zU3RhdGUgPSB7XG4gICAgZmlyc3RfbmFtZTogJycsXG4gICAgbGFzdF9uYW1lOiAnJyxcbiAgICBwaG9uZTogJycsXG4gICAgZW1haWw6ICcnLFxuICAgIHRpbWVfem9uZTogJycsXG4gICAgZGF0ZV90aW1lX2Zvcm1hdDogJycsXG4gICAgbG9jYWxlOiAnJyxcbiAgICB0ZWxlZ3JhbV9uYW1lOiAnJyxcbiAgICBvdGhlcl9idXNpbmVzc19yb2xlX25hbWU6ICcnLFxuICAgIG90aGVyX2RlcGFydG1lbnRfbmFtZTogJycsXG4gICAgYnVzaW5lc3Nfcm9sZTogJycsXG4gICAgZGVwYXJ0bWVudDogJycsXG4gIH07XG5cbiAgY29uc3QgW2lzVGVsZWdyYW1PcGVuLCBzZXRJc1RlbGVncmFtT3Blbl0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtzaG93UGFzc3dvcmRNb2RhbCwgc2V0U2hvd1Bhc3N3b3JkTW9kYWxdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc3VibWl0dGluZywgc2V0U3VibWl0dGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtzaG93U3VjY2Vzc01lc3NhZ2UsIHNldFNob3dTdWNjZXNzTWVzc2FnZV0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtzaG93RXJyb3JNZXNzYWdlLCBzZXRTaG93RXJyb3JNZXNzYWdlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZSwgc2V0U2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlXSA9XG4gICAgdXNlU3RhdGU8e1xuICAgICAgc2hvdzogYm9vbGVhbjtcbiAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIH0+KHtcbiAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgc3RhdHVzOiAnJyxcbiAgICAgIG1lc3NhZ2U6ICcnLFxuICAgIH0pO1xuICBjb25zdCBbcGFyYW1zLCBzZXRQYXJhbXNdID0gdXNlU3RhdGU8e1xuICAgIGZpcnN0X25hbWU6IHN0cmluZztcbiAgICBsYXN0X25hbWU6IHN0cmluZztcbiAgICBwaG9uZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgdGltZV96b25lOiBzdHJpbmc7XG4gICAgZGF0ZV90aW1lX2Zvcm1hdDogc3RyaW5nO1xuICAgIGxvY2FsZTogc3RyaW5nO1xuICAgIHRlbGVncmFtX25hbWU6IHN0cmluZztcbiAgICBvdGhlcl9idXNpbmVzc19yb2xlX25hbWU6IHN0cmluZztcbiAgICBvdGhlcl9kZXBhcnRtZW50X25hbWU6IHN0cmluZztcbiAgfT4oaW5pdGlhbFBhcmFtc1N0YXRlKTtcblxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBlID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKGUuc3RhcnRzV2l0aCgnOTcyMCcpKSB7XG4gICAgICAgIGUgPSBlLnJlcGxhY2UoLyg5NzIwKS9nLCAnOTcyJyk7XG4gICAgICB9XG4gICAgICBzZXRQYXJhbXMoKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICBwaG9uZTogZSxcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyB2YWx1ZSwgbmFtZSB9ID0gZS50YXJnZXQ7XG4gICAgICBzZXRQYXJhbXMoKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICBbbmFtZV06IHZhbHVlLFxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVCdXNpbmVzc1JvbGVDaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGlmIChlLnRhcmdldCAhPT0gbnVsbCkge1xuICAgICAgc2V0UGFyYW1zKHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICBidXNpbmVzc19yb2xlOiBlLnZhbHVlLFxuICAgICAgICBvdGhlcl9idXNpbmVzc19yb2xlX25hbWU6IGUudGFyZ2V0LnZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURlcGFydG1lbnRDaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGlmIChlLnRhcmdldCAhPT0gbnVsbCkge1xuICAgICAgc2V0UGFyYW1zKHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICBkZXBhcnRtZW50OiBlLnZhbHVlLFxuICAgICAgICBvdGhlcl9kZXBhcnRtZW50X25hbWU6IGUudGFyZ2V0LnZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldFBhcmFtc1dpdGhBZ2dyZWdhdGVkVmFsdWVzID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBkYXRlX3RpbWVfZm9ybWF0OiBkYXRlVGltZUZvcm1hdC52YWx1ZSxcbiAgICAgIGxvY2FsZTogbG9jYWxlLnZhbHVlLFxuICAgICAgdGltZV96b25lOiB0aW1lem9uZS52YWx1ZSxcbiAgICAgIGRlcGFydG1lbnRfaWQ6IGRlcGFydG1lbnQgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBkZXBhcnRtZW50LnZhbHVlLFxuICAgICAgYnVzaW5lc3Nfcm9sZV9pZDogYnVzaW5lc3NSb2xlID09PSB1bmRlZmluZWQgPyBudWxsIDogYnVzaW5lc3NSb2xlLnZhbHVlLFxuICAgIH07XG4gIH07XG5cbiAgY29uc3Qgd2F0ZXJBdXRob3JpdHlOYW1lID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS5nbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eU5hbWUsXG4gICk7XG5cbiAgY29uc3Qgc2hvd1RvYXN0ID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCB1c2VybmFtZSA9IGRhdGEudXNlcm5hbWU7XG4gICAgY29uc3QgZXJyb3IgPSBkYXRhLmVycm9yO1xuICAgIGlmIChkYXRhLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICB0b2FzdC5zdWNjZXNzKFxuICAgICAgICBpMThuLnQoYG15X3Byb2ZpbGVfdGFiLnRlbGVncmFtX21lc3NhZ2VzLiR7ZGF0YS5tZXNzYWdlfWAsIHtcbiAgICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9hc3QuZXJyb3IoXG4gICAgICAgIGkxOG4udChgbXlfcHJvZmlsZV90YWIudGVsZWdyYW1fbWVzc2FnZXMuJHtkYXRhLm1lc3NhZ2V9YCwge1xuICAgICAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgICAgICB1c2VybmFtZTogdXNlcm5hbWUsXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgcG9zaXRpb246ICd0b3AtY2VudGVyJyxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNldFN1Ym1pdHRpbmcodHJ1ZSk7XG4gICAgYXhpb3NcbiAgICAgIC5wdXQoJy9wcm9maWxlcycsIHsgdXNlcjogZ2V0UGFyYW1zV2l0aEFnZ3JlZ2F0ZWRWYWx1ZXMoKSB9KVxuICAgICAgLnRoZW4oKHJlc3ApID0+IHtcbiAgICAgICAgaWYgKHJlc3AuZGF0YS51c2VyLmVycm9ycyA9PT0gbnVsbCkge1xuICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmVycm9yLW1lc3NhZ2UnKVxuICAgICAgICAgICAgLmZvckVhY2goKHApID0+IChwLmlubmVySFRNTCA9ICcnKSk7XG5cbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbnZhbGlkLWZpZWxkJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChwKSA9PiBwLmNsYXNzTGlzdC5yZW1vdmUoJ2ludmFsaWQtZmllbGQnKSk7XG4gICAgICAgICAgbGV0IHVzZXIgPSBKU09OLnBhcnNlKHJlc3AuZGF0YS51c2VyKTtcbiAgICAgICAgICBjb25zdCBmaW5kTG9jYWxlID0gbG9jYWxlT3B0aW9ucy5maW5kKChlKSA9PiBlLnZhbHVlID09PSB1c2VyLmxvY2FsZSk7XG4gICAgICAgICAgY29uc3QgZmluZERhdGVUaW1lRm9ybWF0ID0gZGF0ZVRpbWVGb3JtYXRPcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAoZSkgPT4gZS52YWx1ZSA9PT0gdXNlci5kYXRlX3RpbWVfZm9ybWF0LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZmluZFRpbWV6b25lID0gdGltZXpvbmVzLmZpbmQoXG4gICAgICAgICAgICAoZSkgPT4gZS52YWx1ZSA9PT0gdXNlci50aW1lX3pvbmUsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHNldFBhcmFtcyh1c2VyKTtcbiAgICAgICAgICBzZXRMb2NhbGUoZmluZExvY2FsZSEpO1xuICAgICAgICAgIHNldERhdGVUaW1lRm9ybWF0KGZpbmREYXRlVGltZUZvcm1hdCEpO1xuICAgICAgICAgIHNldFRpbWV6b25lKGZpbmRUaW1lem9uZSEpO1xuICAgICAgICAgIHNldFNob3dTdWNjZXNzTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHNldFNob3dTdWNjZXNzTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgfSwgNjAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuZXJyb3ItbWVzc2FnZScpXG4gICAgICAgICAgICAuZm9yRWFjaCgocCkgPT4gKHAuaW5uZXJIVE1MID0gJycpKTtcbiAgICAgICAgICBsZXQgZXJyb3JzID0gcmVzcC5kYXRhLnVzZXIuZXJyb3JzO1xuICAgICAgICAgIGZvciAoY29uc3QgZXJyb3IgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICBsZXQgZmluZEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgICAgICBsZXQgcGFyZW50ID0gZmluZEVsZW1lbnQhLmNsb3Nlc3QoJy5maWVsZCcpO1xuICAgICAgICAgICAgbGV0IGZpbmRJbnB1dCA9IHBhcmVudCEucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgICAgICAgIGZpbmRJbnB1dCEuY2xhc3NMaXN0LmFkZCgnaW52YWxpZC1maWVsZCcpO1xuICAgICAgICAgICAgcGFyZW50IS5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItbWVzc2FnZScpIS5pbm5lckhUTUwgPSBpMThuLnQoXG4gICAgICAgICAgICAgIGBkYXNoYm9hcmRfdjIucHJvZmlsZS5lcnJvcnMuJHtlcnJvcn1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFN1Ym1pdHRpbmcoZmFsc2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgc2V0U2hvd0Vycm9yTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgc2V0U3VibWl0dGluZyhmYWxzZSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNldFNob3dFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB9LCA2MDAwKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYW5hbHl0aWNzVHJhY2soJ1ZpZXdlZCBQcm9maWxlIFBhZ2UnLCB7XG4gICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdG9rZW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1jc3JmLXRva2VuXScpIS5jb250ZW50O1xuICAgIGF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydYLUNTUkYtVE9LRU4nXSA9IHRva2VuO1xuICAgIGF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qcyc7XG4gICAgYXhpb3NcbiAgICAgIC5nZXQoYC9wcm9maWxlcy9yZXNvdXJjZWApXG4gICAgICAudGhlbigocmVzcCkgPT4ge1xuICAgICAgICBzZXRQYXJhbXMocmVzcC5kYXRhLnVzZXIpO1xuICAgICAgICBjb25zdCBmaW5kUHJvcGVydHkgPSAob2JqZWN0LCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgIHJldHVybiBvYmplY3QuZmluZCgoZSkgPT4gZS52YWx1ZSA9PT0gcHJvcGVydHkpO1xuICAgICAgICB9O1xuICAgICAgICBzZXRMb2NhbGUoZmluZFByb3BlcnR5KGxvY2FsZU9wdGlvbnMsIHJlc3AuZGF0YS51c2VyLmxvY2FsZSkpO1xuICAgICAgICBzZXREYXRlVGltZUZvcm1hdChcbiAgICAgICAgICBmaW5kUHJvcGVydHkoZGF0ZVRpbWVGb3JtYXRPcHRpb25zLCByZXNwLmRhdGEudXNlci5kYXRlX3RpbWVfZm9ybWF0KSxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0VGltZXpvbmUoZmluZFByb3BlcnR5KHRpbWV6b25lcywgcmVzcC5kYXRhLnVzZXIudGltZV96b25lKSk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZShcbiAgICAgICAgICBmaW5kUHJvcGVydHkoXG4gICAgICAgICAgICByZXNwLmRhdGEuYnVzaW5lc3Nfcm9sZXMsXG4gICAgICAgICAgICByZXNwLmRhdGEudXNlci5idXNpbmVzc19yb2xlX2lkLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnQoXG4gICAgICAgICAgZmluZFByb3BlcnR5KHJlc3AuZGF0YS5kZXBhcnRtZW50cywgcmVzcC5kYXRhLnVzZXIuZGVwYXJ0bWVudF9pZCksXG4gICAgICAgICk7XG4gICAgICAgIHNldERlcGFydG1lbnRzKHJlc3AuZGF0YS5kZXBhcnRtZW50cyk7XG4gICAgICAgIHNldEJ1c2luZXNzUm9sZXMocmVzcC5kYXRhLmJ1c2luZXNzX3JvbGVzKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBhbGVydChlcnJvcikpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXItdGl0bGVcIj57aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50aXRsZScpfTwvZGl2PlxuICAgICAgPGZvcm0gYWN0aW9uPVwiXCIgb25TdWJtaXQ9eyhlKSA9PiBoYW5kbGVTdWJtaXQoZSl9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5wZXJzb25hbC1kZXRhaWxzJyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicGVyc29uYWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmZpcnN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2ZpcnN0X25hbWUnfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMuZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZU9uQ2hhbmdlKGUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydlcnJvci1tZXNzYWdlJ30+PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5sYXN0X25hbWUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2xhc3RfbmFtZSd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5sYXN0X25hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVPbkNoYW5nZShlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZCBmaWVsZC0tcmVhZG9ubHlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmVtYWlsJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICByZWFkT25seT17dHJ1ZX1cbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgIG5hbWU9eydlbWFpbCd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5lbWFpbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUucGhvbmUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxQaG9uZUlucHV0XG4gICAgICAgICAgICAgICAgY291bnRyeT17J2lsJ31cbiAgICAgICAgICAgICAgICBsb2NhbGl6YXRpb249e2kxOG4udCgnY291bnRyaWVzJyl9XG4gICAgICAgICAgICAgICAgaW5wdXRDbGFzcz1cInBob25lLWlucHV0XCJcbiAgICAgICAgICAgICAgICBjb250YWluZXJDbGFzcz1cIm15LXBob25lXCJcbiAgICAgICAgICAgICAgICBidXR0b25DbGFzcz1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBkcm9wZG93bkNsYXNzPVwicGhvbmUtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMucGhvbmV9XG4gICAgICAgICAgICAgICAgZW5hYmxlU2VhcmNoXG4gICAgICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI9e2kxOG4udCgnc2VhcmNoJyl9XG4gICAgICAgICAgICAgICAgY291bnRyeUNvZGVFZGl0YWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlT25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17eyBuYW1lOiAncGhvbmUnIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnQnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXktaW5wdXRcIj5cbiAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0RGVwYXJ0bWVudH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgYGRhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRzLiR7ZGVwYXJ0bWVudD8ubGFiZWx9YCxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRlcGFydG1lbnQ/LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2RlcGFydG1lbnRzfVxuICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dFdpZHRoXG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3tcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogZGVwYXJ0bWVudHMsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uX2tleTogJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRzJyxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmllbGQgJHtcbiAgICAgICAgICAgICAgICBkZXBhcnRtZW50ICYmXG4gICAgICAgICAgICAgICAgZGVwYXJ0bWVudD8udmFsdWUgPT09IGRlcGFydG1lbnRzW2RlcGFydG1lbnRzLmxlbmd0aCAtIDFdLnZhbHVlXG4gICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICA6ICdmaWVsZC0taGlkZGVuJ1xuICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmRlcGFydG1lbnRfYWx0Jyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICByZWFkT25seT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICBuYW1lPXsnb3RoZXJfZGVwYXJ0bWVudF9uYW1lJ31cbiAgICAgICAgICAgICAgICB2YWx1ZT17cGFyYW1zLm90aGVyX2RlcGFydG1lbnRfbmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZURlcGFydG1lbnRDaGFuZ2UoZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmJ1c2luZXNzX3JvbGUnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXktaW5wdXRcIj5cbiAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0QnVzaW5lc3NSb2xlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGkxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICBgZGFzaGJvYXJkX3YyLnByb2ZpbGUuYnVzaW5lc3Nfcm9sZXMuJHtidXNpbmVzc1JvbGU/LmxhYmVsfWAsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBidXNpbmVzc1JvbGU/LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2J1c2luZXNzUm9sZXN9XG4gICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT17e1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBidXNpbmVzc1JvbGVzLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbl9rZXk6ICdkYXNoYm9hcmRfdjIucHJvZmlsZS5idXNpbmVzc19yb2xlcycsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YGZpZWxkICR7XG4gICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlICYmXG4gICAgICAgICAgICAgICAgYnVzaW5lc3NSb2xlPy52YWx1ZSA9PT1cbiAgICAgICAgICAgICAgICAgIGJ1c2luZXNzUm9sZXNbYnVzaW5lc3NSb2xlcy5sZW5ndGggLSAxXS52YWx1ZVxuICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgOiAnZmllbGQtLWhpZGRlbidcbiAgICAgICAgICAgICAgfSBgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuYnVzaW5lc3Nfcm9sZV9hbHQnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHJlYWRPbmx5PXtmYWxzZX1cbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktaW5wdXRcIlxuICAgICAgICAgICAgICAgIG5hbWU9eydvdGhlcl9idXNpbmVzc19yb2xlX25hbWUnfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMub3RoZXJfYnVzaW5lc3Nfcm9sZV9uYW1lfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlQnVzaW5lc3NSb2xlQ2hhbmdlKGUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjaGFuZ2UtcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dQYXNzd29yZE1vZGFsKHRydWUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFBlblN2ZyB3aWR0aD1cIjEycHhcIiBoZWlnaHQ9XCIxMnB4XCIgZmlsbD1cIiNmMDEzNGNcIiAvPlxuICAgICAgICAgICAgICAgIHsnICAnfVxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmNoYW5nZS1wYXNzd29yZCcpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+e2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc2V0dGluZ3MnKX08L2Rpdj5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJzZXR0aW5nc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUudGltZS16b25lJyl9KlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS1pbnB1dFwiPlxuICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgIHNldFZhbHVlPXtzZXRUaW1lem9uZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aW1lem9uZX1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3RpbWV6b25lc31cbiAgICAgICAgICAgICAgICAgIGNhbmNlbFRleHRXaWR0aFxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5kYXRlLXRpbWUtZm9ybWF0Jyl9KlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteS1pbnB1dFwiPlxuICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2RhdGVUaW1lRm9ybWF0T3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtkYXRlVGltZUZvcm1hdH1cbiAgICAgICAgICAgICAgICAgIHNldFZhbHVlPXtzZXREYXRlVGltZUZvcm1hdH1cbiAgICAgICAgICAgICAgICAgIGNhbmNlbFRleHRXaWR0aFxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2RhdGUtdGltZS1mb3JtYXQnfT5cbiAgICAgICAgICAgICAgICB7ZGF0ZVRpbWVGb3JtYXQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLVVTJywgZGF0ZVRpbWVGb3JtYXQuZm9ybWF0KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmxhbmd1YWdlJyl9KlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydteS1pbnB1dCd9PlxuICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2xvY2FsZU9wdGlvbnN9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgc2V0VmFsdWU9e3NldExvY2FsZX1cbiAgICAgICAgICAgICAgICAgIGNhbmNlbFRleHRXaWR0aFxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkIGZpZWxkLS1idXR0b25zXCI+XG4gICAgICAgICAgICAgIHtwYXJhbXMudGVsZWdyYW1fbmFtZSA9PT0gJycgJiYgKFxuICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInRlbGVncmFtXCIgb25DbGljaz17KCkgPT4gc2V0SXNUZWxlZ3JhbU9wZW4odHJ1ZSl9PlxuICAgICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuY29ubmVjdC10by10ZWxlZ3JhbScpfVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge3BhcmFtcy50ZWxlZ3JhbV9uYW1lICE9PSAnJyAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnRlbGVncmFtX25hbWUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc1RlbGVncmFtT3Blbih0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGVuU3ZnIHdpZHRoPVwiMTJweFwiIGhlaWdodD1cIjEycHhcIiBmaWxsPVwiI2YwMTM0Y1wiIC8+eycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmNoYW5nZS1uYW1lJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3RlbGVncmFtLWV4aXN0aW5nLWlucHV0J30+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICByZWFkT25seT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9eyd0ZWxlZ3JhbV9uYW1lJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwYXJhbXMudGVsZWdyYW1fbmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J3RlbGVncmFtLWV4aXN0aW5nLWlucHV0X19jYW5jZWwtYnV0dG9uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhcmFtcygocHJldlN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWxlZ3JhbV9uYW1lOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FuY2VsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydlcnJvci1tZXNzYWdlJ30+PC9wPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J3RlbGVncmFtIG9wZW4nfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF4aW9zXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoYC90ZWxlZ3JhbS9zZW5kX3Rlc3RfbWVzc2FnZS5qc29uYClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwLmRhdGEudXNlci5zdGF0dXNbMF0udG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YS51c2VyLnN0YXR1cy5zdWJzdHJpbmcoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwLmRhdGEudXNlci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDYwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUb2FzdChyZXNwLmRhdGEudXNlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGFsZXJ0KGVycm9yKSk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHshc2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLnNob3cgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc2VuZF90ZWxlZ3JhbV9tZXNzYWdlJyl9XG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZS5zaG93ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2Uuc3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9eydzdWJtaXQnfSBjbGFzc05hbWU9eydzYXZlJ30gZGlzYWJsZWQ9e3N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgeyFzdWJtaXR0aW5nICYmXG4gICAgICAgICAgICAgICFzaG93U3VjY2Vzc01lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgIXNob3dFcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zdWJtaXQnKX1cbiAgICAgICAgICAgIHtzdWJtaXR0aW5nICYmXG4gICAgICAgICAgICAgICFzaG93U3VjY2Vzc01lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgIXNob3dFcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zdWJtaXR0aW5nJyl9XG4gICAgICAgICAgICB7c2hvd1N1Y2Nlc3NNZXNzYWdlICYmIGkxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuc3VjY2VzcycpfVxuICAgICAgICAgICAge3Nob3dFcnJvck1lc3NhZ2UgJiYgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5lcnJvcicpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cblxuICAgICAge3Nob3dQYXNzd29yZE1vZGFsICYmIChcbiAgICAgICAgPFBhc3N3b3JkTW9kYWxcbiAgICAgICAgICBjbG9zZT17KCkgPT4gc2V0U2hvd1Bhc3N3b3JkTW9kYWwoZmFsc2UpfVxuICAgICAgICAgIHNhdmU9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtpc1RlbGVncmFtT3BlbiAmJiAoXG4gICAgICAgIDxUZWxlZ3JhbU1vZGFsXG4gICAgICAgICAgY2xvc2U9eygpID0+IHNldElzVGVsZWdyYW1PcGVuKGZhbHNlKX1cbiAgICAgICAgICBoYW5kbGVPbkNoYW5nZT17aGFuZGxlT25DaGFuZ2V9XG4gICAgICAgICAgaGFuZGxlU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcbiJdfQ==
461
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfU2VsZWN0IiwiX2kxOG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1Bhc3N3b3JkTW9kYWwiLCJfcGVuIiwiX2NhbmNlbCIsIl9yZWFjdFBob25lSW5wdXQiLCJfVGVsZWdyYW1Nb2RhbCIsIl9heGlvcyIsIl9Db250YWluZXIiLCJfbW9tZW50VGltZXpvbmUiLCJfQW5hbHl0aWNzIiwiX3JlYWN0UmVkdXgiLCJfcmVhY3RUb2FzdGlmeSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiUHJvZmlsZVBhZ2UiLCJ0aW1lem9uZXNBcnJheSIsIm1vbWVudCIsInR6IiwibmFtZXMiLCJkYXRlVGltZUZvcm1hdE9wdGlvbnMiLCJ2YWx1ZSIsImxhYmVsIiwiZm9ybWF0IiwibW9udGgiLCJkYXkiLCJ5ZWFyIiwiaG91ciIsIm1pbnV0ZSIsImhvdXIxMiIsInRpbWV6b25lcyIsIm1hcCIsInQiLCJsb2NhbGVPcHRpb25zIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwibG9jYWxlIiwic2V0TG9jYWxlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJkYXRlVGltZUZvcm1hdCIsInNldERhdGVUaW1lRm9ybWF0IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ0aW1lem9uZSIsInNldFRpbWV6b25lIiwiaW5pdGlhbFBhcmFtc1N0YXRlIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsInBob25lIiwiZW1haWwiLCJ0aW1lX3pvbmUiLCJkYXRlX3RpbWVfZm9ybWF0IiwidGVsZWdyYW1fbmFtZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNUZWxlZ3JhbU9wZW4iLCJzZXRJc1RlbGVncmFtT3BlbiIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUxMCIsInNob3dQYXNzd29yZE1vZGFsIiwic2V0U2hvd1Bhc3N3b3JkTW9kYWwiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwic3VibWl0dGluZyIsInNldFN1Ym1pdHRpbmciLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0Iiwic2hvd1N1Y2Nlc3NNZXNzYWdlIiwic2V0U2hvd1N1Y2Nlc3NNZXNzYWdlIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsInNob3dFcnJvck1lc3NhZ2UiLCJzZXRTaG93RXJyb3JNZXNzYWdlIiwiX3VzZVN0YXRlMTciLCJzaG93Iiwic3RhdHVzIiwibWVzc2FnZSIsIl91c2VTdGF0ZTE4Iiwic2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlIiwic2V0U2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInBhcmFtcyIsInNldFBhcmFtcyIsImhhbmRsZU9uQ2hhbmdlIiwiZSIsInN0YXJ0c1dpdGgiLCJyZXBsYWNlIiwicHJldlN0YXRlIiwiX29iamVjdFNwcmVhZDMiLCJfZSR0YXJnZXQiLCJ0YXJnZXQiLCJuYW1lIiwiX2RlZmluZVByb3BlcnR5MiIsImdldFBhcmFtc1dpdGhBZ2dyZWdhdGVkVmFsdWVzIiwid2F0ZXJBdXRob3JpdHlOYW1lIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsImdsb2JhbF9kYXRhIiwic2hvd1RvYXN0IiwiZGF0YSIsInVzZXJuYW1lIiwiZXJyb3IiLCJ0b2FzdCIsInN1Y2Nlc3MiLCJpMThuIiwiY29uY2F0IiwicG9zaXRpb24iLCJoYW5kbGVTdWJtaXQiLCJwcmV2ZW50RGVmYXVsdCIsImF4aW9zIiwicHV0IiwidXNlciIsInRoZW4iLCJyZXNwIiwiZXJyb3JzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInAiLCJpbm5lckhUTUwiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJKU09OIiwicGFyc2UiLCJmaW5kTG9jYWxlIiwiZmluZCIsImZpbmREYXRlVGltZUZvcm1hdCIsImZpbmRUaW1lem9uZSIsInNldFRpbWVvdXQiLCJmaW5kRWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJwYXJlbnQiLCJjbG9zZXN0IiwiZmluZElucHV0IiwiYWRkIiwiY2F0Y2giLCJ1c2VFZmZlY3QiLCJhbmFseXRpY3NUcmFjayIsInV0aWxpdHlfbmFtZSIsInRva2VuIiwiY29udGVudCIsImRlZmF1bHRzIiwiaGVhZGVycyIsImNvbW1vbiIsImFsZXJ0IiwiY3JlYXRlRWxlbWVudCIsIkNvbnRhaW5lciIsImNsYXNzTmFtZSIsImFjdGlvbiIsIm9uU3VibWl0IiwidHlwZSIsIm9uQ2hhbmdlIiwicmVhZE9ubHkiLCJjb3VudHJ5IiwibG9jYWxpemF0aW9uIiwiaW5wdXRDbGFzcyIsImNvbnRhaW5lckNsYXNzIiwiYnV0dG9uQ2xhc3MiLCJkcm9wZG93bkNsYXNzIiwiZW5hYmxlU2VhcmNoIiwic2VhcmNoUGxhY2Vob2xkZXIiLCJjb3VudHJ5Q29kZUVkaXRhYmxlIiwiaW5wdXRQcm9wcyIsIm9uQ2xpY2siLCJSZWFjdENvbXBvbmVudCIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsIlNlbGVjdCIsInNldFZhbHVlIiwib3B0aW9ucyIsImNhbmNlbFRleHRXaWR0aCIsInVuZGVmaW5lZCIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJGcmFnbWVudCIsInRvVXBwZXJDYXNlIiwic3Vic3RyaW5nIiwiZGlzYWJsZWQiLCJQYXNzd29yZE1vZGFsIiwiY2xvc2UiLCJzYXZlIiwiVGVsZWdyYW1Nb2RhbCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvUHJvZmlsZVBhZ2UvUHJvZmlsZVBhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnc3JjL2NvbXBvbmVudHMvQ3VzdG9tSW5wdXRzL1NlbGVjdC9TZWxlY3QnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IFBhc3N3b3JkTW9kYWwgfSBmcm9tICcuL1Bhc3N3b3JkTW9kYWwvUGFzc3dvcmRNb2RhbCc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBQZW5TdmcgfSBmcm9tICcuL3Blbi5zdmcnO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgQ2FuY2VsIH0gZnJvbSAnLi9jYW5jZWwuc3ZnJztcbmltcG9ydCBQaG9uZUlucHV0IGZyb20gJ3JlYWN0LXBob25lLWlucHV0LTInO1xuaW1wb3J0ICdyZWFjdC1waG9uZS1pbnB1dC0yL2xpYi9zdHlsZS5jc3MnO1xuaW1wb3J0IHsgVGVsZWdyYW1Nb2RhbCB9IGZyb20gJy4vVGVsZWdyYW1Nb2RhbC9UZWxlZ3JhbU1vZGFsJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBDb250YWluZXIgfSBmcm9tICcuL0NvbnRhaW5lcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgeyBhbmFseXRpY3NUcmFjayB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gJ3JlYWN0LXRvYXN0aWZ5JztcblxuZXhwb3J0IGNvbnN0IFByb2ZpbGVQYWdlID0gKCkgPT4ge1xuICBjb25zdCB0aW1lem9uZXNBcnJheSA9IG1vbWVudC50ei5uYW1lcygpO1xuICBjb25zdCBkYXRlVGltZUZvcm1hdE9wdGlvbnMgPSBbXG4gICAge1xuICAgICAgdmFsdWU6ICd1cycsXG4gICAgICBsYWJlbDogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgZm9ybWF0OiB7XG4gICAgICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgIG1pbnV0ZTogJ251bWVyaWMnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnZXUnLFxuICAgICAgbGFiZWw6ICdFdXJvcGUnLFxuICAgICAgZm9ybWF0OiB7XG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICBtb250aDogJ251bWVyaWMnLFxuICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICB9LFxuICAgIH0sXG4gIF07XG5cbiAgY29uc3QgdGltZXpvbmVzID0gdGltZXpvbmVzQXJyYXkubWFwKCh0KSA9PiB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHQsIGxhYmVsOiB0IH07XG4gIH0pO1xuXG4gIGNvbnN0IGxvY2FsZU9wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogJ2VuJywgbGFiZWw6ICdFbmdsaXNoJyB9LFxuICAgIHsgdmFsdWU6ICdlbl91aycsIGxhYmVsOiAnRW5nbGlzaCAoVUspJyB9LFxuICAgIHsgdmFsdWU6ICdoZScsIGxhYmVsOiAn16LXkdeo15nXqicgfSxcbiAgICB7IHZhbHVlOiAnZnInLCBsYWJlbDogJ0ZyYW7Dp2FpcycgfSxcbiAgICB7IHZhbHVlOiAnaXQnLCBsYWJlbDogJ0l0YWxpYW5vJyB9LFxuICBdO1xuXG4gIGNvbnN0IFtsb2NhbGUsIHNldExvY2FsZV0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9Pihsb2NhbGVPcHRpb25zWzBdKTtcblxuICBjb25zdCBbZGF0ZVRpbWVGb3JtYXQsIHNldERhdGVUaW1lRm9ybWF0XSA9IHVzZVN0YXRlPHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgZm9ybWF0OiBvYmplY3Q7XG4gIH0+KGRhdGVUaW1lRm9ybWF0T3B0aW9uc1swXSk7XG5cbiAgY29uc3QgW3RpbWV6b25lLCBzZXRUaW1lem9uZV0gPSB1c2VTdGF0ZTx7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9Pih0aW1lem9uZXNbMjBdKTtcblxuICBjb25zdCBpbml0aWFsUGFyYW1zU3RhdGUgPSB7XG4gICAgZmlyc3RfbmFtZTogJycsXG4gICAgbGFzdF9uYW1lOiAnJyxcbiAgICBwaG9uZTogJycsXG4gICAgZW1haWw6ICcnLFxuICAgIHRpbWVfem9uZTogJycsXG4gICAgZGF0ZV90aW1lX2Zvcm1hdDogJycsXG4gICAgbG9jYWxlOiAnJyxcbiAgICB0ZWxlZ3JhbV9uYW1lOiAnJyxcbiAgfTtcblxuICBjb25zdCBbaXNUZWxlZ3JhbU9wZW4sIHNldElzVGVsZWdyYW1PcGVuXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dQYXNzd29yZE1vZGFsLCBzZXRTaG93UGFzc3dvcmRNb2RhbF0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtzdWJtaXR0aW5nLCBzZXRTdWJtaXR0aW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dTdWNjZXNzTWVzc2FnZSwgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dFcnJvck1lc3NhZ2UsIHNldFNob3dFcnJvck1lc3NhZ2VdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLCBzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2VdID1cbiAgICB1c2VTdGF0ZTx7XG4gICAgICBzaG93OiBib29sZWFuO1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfT4oe1xuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICBzdGF0dXM6ICcnLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgfSk7XG4gIGNvbnN0IFtwYXJhbXMsIHNldFBhcmFtc10gPSB1c2VTdGF0ZTx7XG4gICAgZmlyc3RfbmFtZTogc3RyaW5nO1xuICAgIGxhc3RfbmFtZTogc3RyaW5nO1xuICAgIHBob25lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICB0aW1lX3pvbmU6IHN0cmluZztcbiAgICBkYXRlX3RpbWVfZm9ybWF0OiBzdHJpbmc7XG4gICAgbG9jYWxlOiBzdHJpbmc7XG4gICAgdGVsZWdyYW1fbmFtZTogc3RyaW5nO1xuICB9Pihpbml0aWFsUGFyYW1zU3RhdGUpO1xuXG4gIGNvbnN0IGhhbmRsZU9uQ2hhbmdlID0gKGUpID0+IHtcbiAgICBpZiAodHlwZW9mIGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoZS5zdGFydHNXaXRoKCc5NzIwJykpIHtcbiAgICAgICAgZSA9IGUucmVwbGFjZSgvKDk3MjApL2csICc5NzInKTtcbiAgICAgIH1cbiAgICAgIHNldFBhcmFtcygocHJldlN0YXRlKSA9PiAoe1xuICAgICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICAgIHBob25lOiBlLFxuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBuYW1lIH0gPSBlLnRhcmdldDtcbiAgICAgIHNldFBhcmFtcygocHJldlN0YXRlKSA9PiAoe1xuICAgICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICAgIFtuYW1lXTogdmFsdWUsXG4gICAgICB9KSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldFBhcmFtc1dpdGhBZ2dyZWdhdGVkVmFsdWVzID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBkYXRlX3RpbWVfZm9ybWF0OiBkYXRlVGltZUZvcm1hdC52YWx1ZSxcbiAgICAgIGxvY2FsZTogbG9jYWxlLnZhbHVlLFxuICAgICAgdGltZV96b25lOiB0aW1lem9uZS52YWx1ZSxcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5TmFtZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlOYW1lLFxuICApO1xuXG4gIGNvbnN0IHNob3dUb2FzdCA9IChkYXRhKSA9PiB7XG4gICAgY29uc3QgdXNlcm5hbWUgPSBkYXRhLnVzZXJuYW1lO1xuICAgIGNvbnN0IGVycm9yID0gZGF0YS5lcnJvcjtcbiAgICBpZiAoZGF0YS5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgdG9hc3Quc3VjY2VzcyhcbiAgICAgICAgaTE4bi50KGBteV9wcm9maWxlX3RhYi50ZWxlZ3JhbV9tZXNzYWdlcy4ke2RhdGEubWVzc2FnZX1gLCB7XG4gICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgcG9zaXRpb246ICd0b3AtY2VudGVyJyxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvYXN0LmVycm9yKFxuICAgICAgICBpMThuLnQoYG15X3Byb2ZpbGVfdGFiLnRlbGVncmFtX21lc3NhZ2VzLiR7ZGF0YS5tZXNzYWdlfWAsIHtcbiAgICAgICAgICBlcnJvcjogZXJyb3IsXG4gICAgICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiAndG9wLWNlbnRlcicsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBzZXRTdWJtaXR0aW5nKHRydWUpO1xuICAgIGF4aW9zXG4gICAgICAucHV0KCcvcHJvZmlsZXMnLCB7IHVzZXI6IGdldFBhcmFtc1dpdGhBZ2dyZWdhdGVkVmFsdWVzKCkgfSlcbiAgICAgIC50aGVuKChyZXNwKSA9PiB7XG4gICAgICAgIGlmIChyZXNwLmRhdGEuZXJyb3JzID09PSBudWxsKSB7XG4gICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuZXJyb3ItbWVzc2FnZScpXG4gICAgICAgICAgICAuZm9yRWFjaCgocCkgPT4gKHAuaW5uZXJIVE1MID0gJycpKTtcblxuICAgICAgICAgIGRvY3VtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmludmFsaWQtZmllbGQnKVxuICAgICAgICAgICAgLmZvckVhY2goKHApID0+IHAuY2xhc3NMaXN0LnJlbW92ZSgnaW52YWxpZC1maWVsZCcpKTtcbiAgICAgICAgICBsZXQgdXNlciA9IEpTT04ucGFyc2UocmVzcC5kYXRhLnVzZXIpO1xuICAgICAgICAgIGNvbnN0IGZpbmRMb2NhbGUgPSBsb2NhbGVPcHRpb25zLmZpbmQoKGUpID0+IGUudmFsdWUgPT09IHVzZXIubG9jYWxlKTtcbiAgICAgICAgICBjb25zdCBmaW5kRGF0ZVRpbWVGb3JtYXQgPSBkYXRlVGltZUZvcm1hdE9wdGlvbnMuZmluZChcbiAgICAgICAgICAgIChlKSA9PiBlLnZhbHVlID09PSB1c2VyLmRhdGVfdGltZV9mb3JtYXQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBmaW5kVGltZXpvbmUgPSB0aW1lem9uZXMuZmluZChcbiAgICAgICAgICAgIChlKSA9PiBlLnZhbHVlID09PSB1c2VyLnRpbWVfem9uZSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgc2V0UGFyYW1zKHVzZXIpO1xuICAgICAgICAgIHNldExvY2FsZShmaW5kTG9jYWxlISk7XG4gICAgICAgICAgc2V0RGF0ZVRpbWVGb3JtYXQoZmluZERhdGVUaW1lRm9ybWF0ISk7XG4gICAgICAgICAgc2V0VGltZXpvbmUoZmluZFRpbWV6b25lISk7XG4gICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKHRydWUpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICB9LCA2MDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5lcnJvci1tZXNzYWdlJylcbiAgICAgICAgICAgIC5mb3JFYWNoKChwKSA9PiAocC5pbm5lckhUTUwgPSAnJykpO1xuICAgICAgICAgIGxldCBlcnJvcnMgPSByZXNwLmRhdGEuZXJyb3JzO1xuICAgICAgICAgIGZvciAoY29uc3QgZXJyb3IgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICBsZXQgZmluZEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgICAgICBsZXQgcGFyZW50ID0gZmluZEVsZW1lbnQhLmNsb3Nlc3QoJy5maWVsZCcpO1xuICAgICAgICAgICAgbGV0IGZpbmRJbnB1dCA9IHBhcmVudCEucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgICAgICAgIGZpbmRJbnB1dCEuY2xhc3NMaXN0LmFkZCgnaW52YWxpZC1maWVsZCcpO1xuICAgICAgICAgICAgcGFyZW50IS5xdWVyeVNlbGVjdG9yKCcuZXJyb3ItbWVzc2FnZScpIS5pbm5lckhUTUwgPSBpMThuLnQoXG4gICAgICAgICAgICAgIGBkYXNoYm9hcmRfdjIucHJvZmlsZS5lcnJvcnMuJHtlcnJvcn1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFN1Ym1pdHRpbmcoZmFsc2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgc2V0U2hvd0Vycm9yTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgc2V0U2hvd1N1Y2Nlc3NNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgc2V0U3VibWl0dGluZyhmYWxzZSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNldFNob3dFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB9LCA2MDAwKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYW5hbHl0aWNzVHJhY2soJ1ZpZXdlZCBQcm9maWxlIFBhZ2UnLCB7XG4gICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdG9rZW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1jc3JmLXRva2VuXScpIS5jb250ZW50O1xuICAgIGF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydYLUNTUkYtVE9LRU4nXSA9IHRva2VuO1xuICAgIGF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qcyc7XG4gICAgYXhpb3NcbiAgICAgIC5nZXQoJy9wcm9maWxlcy9yZXNvdXJjZScpXG4gICAgICAudGhlbigocmVzcCkgPT4ge1xuICAgICAgICBzZXRQYXJhbXMocmVzcC5kYXRhKTtcbiAgICAgICAgY29uc3QgZmluZExvY2FsZSA9IGxvY2FsZU9wdGlvbnMuZmluZChcbiAgICAgICAgICAoZSkgPT4gZS52YWx1ZSA9PT0gcmVzcC5kYXRhLmxvY2FsZSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmluZERhdGVUaW1lRm9ybWF0ID0gZGF0ZVRpbWVGb3JtYXRPcHRpb25zLmZpbmQoXG4gICAgICAgICAgKGUpID0+IGUudmFsdWUgPT09IHJlc3AuZGF0YS5kYXRlX3RpbWVfZm9ybWF0LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaW5kVGltZXpvbmUgPSB0aW1lem9uZXMuZmluZChcbiAgICAgICAgICAoZSkgPT4gZS52YWx1ZSA9PT0gcmVzcC5kYXRhLnRpbWVfem9uZSxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0TG9jYWxlKGZpbmRMb2NhbGUhKTtcbiAgICAgICAgc2V0RGF0ZVRpbWVGb3JtYXQoZmluZERhdGVUaW1lRm9ybWF0ISk7XG4gICAgICAgIHNldFRpbWV6b25lKGZpbmRUaW1lem9uZSEpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGFsZXJ0KGVycm9yKSk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlYWRlci10aXRsZVwiPntpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnRpdGxlJyl9PC9kaXY+XG4gICAgICA8Zm9ybSBhY3Rpb249XCJcIiBvblN1Ym1pdD17KGUpID0+IGhhbmRsZVN1Ym1pdChlKX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj5cbiAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnBlcnNvbmFsLWRldGFpbHMnKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJwZXJzb25hbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZmlyc3RfbmFtZScpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICBuYW1lPXsnZmlyc3RfbmFtZSd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5maXJzdF9uYW1lfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlT25DaGFuZ2UoZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2Vycm9yLW1lc3NhZ2UnfT48L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmxhc3RfbmFtZScpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LWlucHV0XCJcbiAgICAgICAgICAgICAgICBuYW1lPXsnbGFzdF9uYW1lJ31cbiAgICAgICAgICAgICAgICB2YWx1ZT17cGFyYW1zLmxhc3RfbmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZU9uQ2hhbmdlKGUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydlcnJvci1tZXNzYWdlJ30+PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkIGZpZWxkLS1yZWFkb25seVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZW1haWwnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHJlYWRPbmx5PXt0cnVlfVxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbmFtZT17J2VtYWlsJ31cbiAgICAgICAgICAgICAgICB2YWx1ZT17cGFyYW1zLmVtYWlsfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydlcnJvci1tZXNzYWdlJ30+PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5waG9uZScpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPFBob25lSW5wdXRcbiAgICAgICAgICAgICAgICBjb3VudHJ5PXsnaWwnfVxuICAgICAgICAgICAgICAgIGxvY2FsaXphdGlvbj17aTE4bi50KCdjb3VudHJpZXMnKX1cbiAgICAgICAgICAgICAgICBpbnB1dENsYXNzPVwicGhvbmUtaW5wdXRcIlxuICAgICAgICAgICAgICAgIGNvbnRhaW5lckNsYXNzPVwibXktcGhvbmVcIlxuICAgICAgICAgICAgICAgIGJ1dHRvbkNsYXNzPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIGRyb3Bkb3duQ2xhc3M9XCJwaG9uZS1kcm9wZG93blwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3BhcmFtcy5waG9uZX1cbiAgICAgICAgICAgICAgICBlbmFibGVTZWFyY2hcbiAgICAgICAgICAgICAgICBzZWFyY2hQbGFjZWhvbGRlcj17aTE4bi50KCdzZWFyY2gnKX1cbiAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZUVkaXRhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVPbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXt7IG5hbWU6ICdwaG9uZScgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY2hhbmdlLXBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93UGFzc3dvcmRNb2RhbCh0cnVlKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxQZW5Tdmcgd2lkdGg9XCIxMnB4XCIgaGVpZ2h0PVwiMTJweFwiIGZpbGw9XCIjZjAxMzRjXCIgLz5cbiAgICAgICAgICAgICAgICB7JyAgJ31cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5jaGFuZ2UtcGFzc3dvcmQnKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aXRsZVwiPntpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnNldHRpbmdzJyl9PC9kaXY+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic2V0dGluZ3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnRpbWUtem9uZScpfSpcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXktaW5wdXRcIj5cbiAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0VGltZXpvbmV9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dGltZXpvbmV9XG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXt0aW1lem9uZXN9XG4gICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsXCI+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnZGFzaGJvYXJkX3YyLnByb2ZpbGUuZGF0ZS10aW1lLWZvcm1hdCcpfSpcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXktaW5wdXRcIj5cbiAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXtkYXRlVGltZUZvcm1hdE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZGF0ZVRpbWVGb3JtYXR9XG4gICAgICAgICAgICAgICAgICBzZXRWYWx1ZT17c2V0RGF0ZVRpbWVGb3JtYXR9XG4gICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydkYXRlLXRpbWUtZm9ybWF0J30+XG4gICAgICAgICAgICAgICAge2RhdGVUaW1lRm9ybWF0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycsIGRhdGVUaW1lRm9ybWF0LmZvcm1hdCl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5sYW5ndWFnZScpfSpcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnbXktaW5wdXQnfT5cbiAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXtsb2NhbGVPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgIHNldFZhbHVlPXtzZXRMb2NhbGV9XG4gICAgICAgICAgICAgICAgICBjYW5jZWxUZXh0V2lkdGhcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZCBmaWVsZC0tYnV0dG9uc1wiPlxuICAgICAgICAgICAgICB7cGFyYW1zLnRlbGVncmFtX25hbWUgPT09ICcnICYmIChcbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJ0ZWxlZ3JhbVwiIG9uQ2xpY2s9eygpID0+IHNldElzVGVsZWdyYW1PcGVuKHRydWUpfT5cbiAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmNvbm5lY3QtdG8tdGVsZWdyYW0nKX1cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtwYXJhbXMudGVsZWdyYW1fbmFtZSAhPT0gJycgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS50ZWxlZ3JhbV9uYW1lJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNUZWxlZ3JhbU9wZW4odHJ1ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBlblN2ZyB3aWR0aD1cIjEycHhcIiBoZWlnaHQ9XCIxMnB4XCIgZmlsbD1cIiNmMDEzNGNcIiAvPnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5jaGFuZ2UtbmFtZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eyd0ZWxlZ3JhbS1leGlzdGluZy1pbnB1dCd9PlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHk9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXsndGVsZWdyYW1fbmFtZSd9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cGFyYW1zLnRlbGVncmFtX25hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyd0ZWxlZ3JhbS1leGlzdGluZy1pbnB1dF9fY2FuY2VsLWJ1dHRvbid9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYXJhbXMoKHByZXZTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVsZWdyYW1fbmFtZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENhbmNlbCAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXsnZXJyb3ItbWVzc2FnZSd9PjwvcD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyd0ZWxlZ3JhbSBvcGVuJ31cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBheGlvc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KGAvdGVsZWdyYW0vc2VuZF90ZXN0X21lc3NhZ2UuanNvbmApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKChyZXNwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhLnN0YXR1c1swXS50b1VwcGVyQ2FzZSgpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhLnN0YXR1cy5zdWJzdHJpbmcoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwLmRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA2MDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9hc3QocmVzcC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gYWxlcnQoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgeyFzaG93VGVsZWdyYW1SZXNwb25zZU1lc3NhZ2Uuc2hvdyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zZW5kX3RlbGVncmFtX21lc3NhZ2UnKX1cbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1RlbGVncmFtUmVzcG9uc2VNZXNzYWdlLnNob3cgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUZWxlZ3JhbVJlc3BvbnNlTWVzc2FnZS5zdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDxidXR0b24gdHlwZT17J3N1Ym1pdCd9IGNsYXNzTmFtZT17J3NhdmUnfSBkaXNhYmxlZD17c3VibWl0dGluZ30+XG4gICAgICAgICAgICB7IXN1Ym1pdHRpbmcgJiZcbiAgICAgICAgICAgICAgIXNob3dTdWNjZXNzTWVzc2FnZSAmJlxuICAgICAgICAgICAgICAhc2hvd0Vycm9yTWVzc2FnZSAmJlxuICAgICAgICAgICAgICBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnN1Ym1pdCcpfVxuICAgICAgICAgICAge3N1Ym1pdHRpbmcgJiZcbiAgICAgICAgICAgICAgIXNob3dTdWNjZXNzTWVzc2FnZSAmJlxuICAgICAgICAgICAgICAhc2hvd0Vycm9yTWVzc2FnZSAmJlxuICAgICAgICAgICAgICBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLnN1Ym1pdHRpbmcnKX1cbiAgICAgICAgICAgIHtzaG93U3VjY2Vzc01lc3NhZ2UgJiYgaTE4bi50KCdkYXNoYm9hcmRfdjIucHJvZmlsZS5zdWNjZXNzJyl9XG4gICAgICAgICAgICB7c2hvd0Vycm9yTWVzc2FnZSAmJiBpMThuLnQoJ2Rhc2hib2FyZF92Mi5wcm9maWxlLmVycm9yJyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuXG4gICAgICB7c2hvd1Bhc3N3b3JkTW9kYWwgJiYgKFxuICAgICAgICA8UGFzc3dvcmRNb2RhbFxuICAgICAgICAgIGNsb3NlPXsoKSA9PiBzZXRTaG93UGFzc3dvcmRNb2RhbChmYWxzZSl9XG4gICAgICAgICAgc2F2ZT17KCkgPT4ge319XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge2lzVGVsZWdyYW1PcGVuICYmIChcbiAgICAgICAgPFRlbGVncmFtTW9kYWxcbiAgICAgICAgICBjbG9zZT17KCkgPT4gc2V0SXNUZWxlZ3JhbU9wZW4oZmFsc2UpfVxuICAgICAgICAgIGhhbmRsZU9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICBoYW5kbGVTdWJtaXQ9e2hhbmRsZVN1Ym1pdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLGNBQUEsR0FBQUosT0FBQTtBQUE4RCxJQUFBSyxJQUFBLEdBQUFMLE9BQUE7QUFBQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFHOUQsSUFBQU8sZ0JBQUEsR0FBQUosc0JBQUEsQ0FBQUgsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQVEsY0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBTixzQkFBQSxDQUFBSCxPQUFBO0FBQ0Es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