@kando-env/kando-ui 1.2.228-alpha.3 → 1.2.228-alpha.32
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.
- package/lib/Router.js +38 -106
- package/lib/Widgets/EventsCarousel/EventsCarousel.js +14 -46
- package/lib/Widgets/EventsRow/EventsRow.js +17 -46
- package/lib/Widgets/Map/GraphUtils.js +2 -5
- package/lib/Widgets/Map/Map.js +59 -88
- package/lib/Widgets/Map/MapUtils.js +6 -57
- package/lib/Widgets/Map/areas/AreaPolygon.js +9 -31
- package/lib/Widgets/Map/areas/AreaPolygons.js +10 -25
- package/lib/Widgets/Map/edges/Edge.js +11 -34
- package/lib/Widgets/Map/edges/Edges.js +13 -24
- package/lib/Widgets/Map/edges/arrows/Arrows.js +9 -24
- package/lib/Widgets/Map/events/Event.js +9 -27
- package/lib/Widgets/Map/events/EventIndicator.js +21 -46
- package/lib/Widgets/Map/events/EventPath.js +7 -24
- package/lib/Widgets/Map/events/EventUtils.js +5 -55
- package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +7 -23
- package/lib/Widgets/Map/events/PointOfEvent.js +7 -38
- package/lib/Widgets/Map/events/PointsForSpecificEvent.js +5 -17
- package/lib/Widgets/Map/events/Snail.js +9 -23
- package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +17 -58
- package/lib/Widgets/Map/map/FloatingGraph.js +4 -20
- package/lib/Widgets/Map/map/GraphDateButton.js +4 -10
- package/lib/Widgets/Map/matchGraph/MatchGraph.js +5 -11
- package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +5 -11
- package/lib/Widgets/Map/points/PointIcon.js +7 -23
- package/lib/Widgets/Map/points/PointMarker.js +15 -25
- package/lib/Widgets/Map/points/PointMarkers.js +18 -26
- package/lib/Widgets/Map/points/PointUtils.js +12 -95
- package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +17 -53
- package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +6 -23
- package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +3 -17
- package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +2 -6
- package/lib/Widgets/MostPolluting/Areas/Areas.js +21 -57
- package/lib/Widgets/MostPolluting/Areas/areas.mock.js +1 -1
- package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
- package/lib/Widgets/MostPolluting/Areas/styles.js +2 -8
- package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +4 -12
- package/lib/Widgets/MostPolluting/Factories/Factories.js +32 -68
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +5 -22
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +2 -11
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +5 -18
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +4 -8
- package/lib/Widgets/MostPolluting/Factories/factories.mock.js +1 -1
- package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
- package/lib/Widgets/MostPolluting/Factories/styles.js +2 -8
- package/lib/Widgets/MostPolluting/MostPolluting.js +6 -21
- package/lib/Widgets/MostPolluting/MostPolluting.stories.js +14 -18
- package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +3 -10
- package/lib/Widgets/MostPolluting/ShowMore/styles.js +2 -6
- package/lib/Widgets/MostPolluting/assets/index.js +18 -29
- package/lib/Widgets/MostPolluting/components/ChangePercent.js +2 -17
- package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +16 -27
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +5 -27
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +26 -34
- package/lib/Widgets/MostPolluting/components/PotentialImpact.js +5 -21
- package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +30 -44
- package/lib/Widgets/MostPolluting/models.js +1 -1
- package/lib/Widgets/MostPolluting/styles.js +2 -8
- package/lib/Widgets/PotentialImpactSummary/Back/Back.js +3 -10
- package/lib/Widgets/PotentialImpactSummary/Icon.js +2 -12
- package/lib/Widgets/PotentialImpactSummary/index.js +9 -31
- package/lib/Widgets/PotentialImpactSummary/index.test.js +18 -37
- package/lib/Widgets/PotentialImpactSummary/styles.js +3 -16
- package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
- package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +5 -11
- package/lib/Widgets/QualitySummary/PieChart/PieChart.js +8 -22
- package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +20 -30
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +16 -25
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +9 -25
- package/lib/Widgets/QualitySummary/QualitySummary.js +9 -25
- package/lib/Widgets/QualitySummary/qualitySummary.mock.js +2 -2
- package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
- package/lib/Widgets/QualitySummary/styles.js +3 -16
- package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +11 -24
- package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +11 -38
- package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +10 -19
- package/lib/Widgets/UtilityInformation/UtilityInformation.js +26 -51
- package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
- package/lib/Widgets/UtilityInformation/styles.js +4 -26
- package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +2 -2
- package/lib/assets/icons/index.js +5 -8
- package/lib/assets/icons/kandoStepper/index.js +9 -14
- package/lib/components/ApplyButton/ApplyButton.js +6 -12
- package/lib/components/ApplyButton/index.js +2 -5
- package/lib/components/Backdrop/Backdrop.js +3 -9
- package/lib/components/ContentLoader/ContentLoader.js +8 -13
- package/lib/components/ContentLoader/index.js +1 -2
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +8 -15
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +3 -9
- package/lib/components/CustomInputs/DoubleTabs/styles.js +3 -11
- package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +7 -22
- package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +2 -6
- package/lib/components/CustomInputs/Search/Search.js +15 -42
- package/lib/components/CustomInputs/Search/index.js +2 -5
- package/lib/components/CustomInputs/Select/Select.js +15 -35
- package/lib/components/CustomInputs/Select/Select.stories.js +3 -9
- package/lib/components/DamageType/DamageType.js +39 -80
- package/lib/components/DamageType/index.js +2 -5
- package/lib/components/DataLoaderError/DataLoaderError.js +5 -11
- package/lib/components/DischargeHeatmap/DischargeHeatmap.js +7 -17
- package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +18 -38
- package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +14 -41
- package/lib/components/DischargeHeatmap/HighchartsOptions.js +7 -11
- package/lib/components/DischargeHeatmap/index.js +2 -5
- package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -4
- package/lib/components/DischargeHeatmap/popupText.js +2 -17
- package/lib/components/DischargeHeatmap/titles.js +2 -9
- package/lib/components/DischargeHeatmap/types.js +1 -1
- package/lib/components/ErrorBoundary.js +4 -16
- package/lib/components/Events/Events.js +7 -34
- package/lib/components/Events/index.js +2 -5
- package/lib/components/Graph/Graph.js +35 -80
- package/lib/components/Graph/index.js +2 -5
- package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +2 -8
- package/lib/components/Header/Breadcrumbs/index.js +2 -5
- package/lib/components/Header/DoubleTabs/DoubleTabs.js +16 -34
- package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +3 -9
- package/lib/components/Header/DoubleTabs/styles.js +3 -11
- package/lib/components/Header/Header.js +2 -8
- package/lib/components/Header/Header.stories.js +3 -9
- package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +2 -12
- package/lib/components/Header/InfoBar/InfoBar.js +6 -34
- package/lib/components/Header/InfoBar/Search/Control.js +3 -14
- package/lib/components/Header/InfoBar/Search/GroupLabel.js +2 -13
- package/lib/components/Header/InfoBar/Search/Search.js +7 -30
- package/lib/components/Header/InfoBar/Search/SearchContainer.js +6 -25
- package/lib/components/Header/InfoBar/Search/index.js +2 -5
- package/lib/components/Header/InfoBar/Search/searchStyle.js +2 -5
- package/lib/components/Header/KandoNavbar/KandoNavbar.js +48 -95
- package/lib/components/Header/KandoNavbar/index.js +2 -5
- package/lib/components/Header/Slideshow/Slideshow.js +33 -71
- package/lib/components/Header/Slideshow/index.js +2 -5
- package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +2 -8
- package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +3 -16
- package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +2 -16
- package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +8 -25
- package/lib/components/Header/Toolbar/Toolbar.js +49 -89
- package/lib/components/InfoBar/InfoBar.js +10 -27
- package/lib/components/InfoBar/InfoBar.stories.js +3 -9
- package/lib/components/KandoModal/KandoModal.js +21 -46
- package/lib/components/KandoModal/index.js +2 -5
- package/lib/components/Link.js +3 -12
- package/lib/components/Links/CustomRedirect/CustomRedirect.js +4 -13
- package/lib/components/Links/StyledLink/StyledLink.js +7 -17
- package/lib/components/Links/StyledNavLink/StyledNavLink.js +5 -15
- package/lib/components/LiveEvents/CarouselSlide.js +6 -12
- package/lib/components/LiveEvents/LiveEvents.js +2 -11
- package/lib/components/LiveEvents/index.js +2 -5
- package/lib/components/LoaderByPercent/LoaderByPercent.js +14 -24
- package/lib/components/Map/Map.js +14 -30
- package/lib/components/Map/index.js +2 -5
- package/lib/components/Modal/Modal.js +4 -11
- package/lib/components/NarrowHeader.js +2 -13
- package/lib/components/PointInfo/PointInfo.js +11 -23
- package/lib/components/PointInfo/index.js +2 -5
- package/lib/components/PopupModal/PopupModal.js +7 -18
- package/lib/components/PopupModal/PopupModal.stories.js +3 -12
- package/lib/components/Sector/Sector.js +5 -14
- package/lib/components/Sector/Sector.test.js +4 -9
- package/lib/components/Sector/index.js +2 -5
- package/lib/components/Sector/sectorIcons.js +2 -28
- package/lib/components/SevereEvent/Eta/Eta.js +16 -43
- package/lib/components/SevereEvent/Eta/styles.js +2 -6
- package/lib/components/SevereEvent/SevereEvent.js +17 -40
- package/lib/components/Spinner/Spinner.js +6 -11
- package/lib/components/Spinner/Spinner.stories.js +3 -9
- package/lib/components/Spinner/index.js +2 -5
- package/lib/components/Spinner/styles.js +2 -10
- package/lib/components/Tabs/Tabs.js +7 -29
- package/lib/components/Tabs/Tabs.stories.js +3 -9
- package/lib/components/Tabs/assets/index.js +1 -6
- package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +4 -16
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +14 -47
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +14 -40
- package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +2 -5
- package/lib/components/TimeRangeSelector/TimeRangeHelper.js +10 -30
- package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +5 -10
- package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +2 -5
- package/lib/components/TimeRangeSelector/TimeRangeList.js +6 -17
- package/lib/components/TimeRangeSelector/TimeRangeOptions.js +13 -28
- package/lib/components/TimeRangeSelector/TimeRangeSelector.js +13 -40
- package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +3 -11
- package/lib/components/TimeRangeSelector/constants.js +2 -2
- package/lib/components/TimeRangeSelector/index.js +2 -5
- package/lib/components/Toggle/Toggle.js +9 -25
- package/lib/components/Toggle/index.js +2 -5
- package/lib/components/TrendGraph/TrendGraph.js +19 -54
- package/lib/components/TrendGraph/index.js +2 -5
- package/lib/components/TrendGraphNVL/TrendGraphNVL.js +12 -39
- package/lib/components/TrendGraphNVL/index.js +2 -5
- package/lib/development-environment/index.js +2 -14
- package/lib/development-environment/mock/browser.js +2 -9
- package/lib/development-environment/mock/get.js +1 -5
- package/lib/development-environment/mock/handlers.js +1 -26
- package/lib/development-environment/mock/mockBus.js +2 -7
- package/lib/development-environment/mock/mockObjects/area-trends-graph.js +1 -1
- package/lib/development-environment/mock/mockObjects/areaInformation.js +1 -1
- package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +1 -1
- package/lib/development-environment/mock/mockObjects/areaSitesData.js +1 -1
- package/lib/development-environment/mock/mockObjects/areasJson.js +1 -1
- package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +1 -1
- package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +1 -1
- package/lib/development-environment/mock/mockObjects/data-menuData.js +1 -1
- package/lib/development-environment/mock/mockObjects/data-search.js +1 -1
- package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +1 -1
- package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +1 -1
- package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +1 -1
- package/lib/development-environment/mock/mockObjects/eventsJson.js +1 -1
- package/lib/development-environment/mock/mockObjects/metascore.js +1 -1
- package/lib/development-environment/mock/mockObjects/permissionsJson.js +1 -1
- package/lib/development-environment/mock/mockObjects/pointsJson.js +1 -1
- package/lib/development-environment/mock/mockObjects/site-info.js +1 -1
- package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +1 -1
- package/lib/development-environment/togly/ToglyDashboard.js +6 -26
- package/lib/development-environment/togly/ToglyItem.js +7 -29
- package/lib/development-environment/togly/flags.js +1 -1
- package/lib/development-environment/togly/init.js +2 -7
- package/lib/development-environment/togly/macro.js +7 -9
- package/lib/development-environment/togly/useDoubleKeyDown.js +1 -8
- package/lib/development-environment/togly/useLocalStorage.js +13 -20
- package/lib/hooks/useApi.js +38 -59
- package/lib/hooks/useApiWithDashboardQuery.js +11 -31
- package/lib/hooks/useClickOutside.js +1 -5
- package/lib/hooks/useInitializeHeaders.js +2 -8
- package/lib/hooks/useKandoFetch.js +14 -28
- package/lib/hooks/useMap.js +11 -38
- package/lib/hooks/useNavContext.js +14 -23
- package/lib/hooks/useQueryURL.js +1 -4
- package/lib/hooks/useRemoveExistingLayers.js +2 -7
- package/lib/hooks/useUpdateEventBodyTail.js +1 -10
- package/lib/hooks/useUserTimeZone.js +1 -9
- package/lib/hooks/useUserTimeZone.test.js +3 -13
- package/lib/hooks/useWindowSize.js +15 -20
- package/lib/index.js +14 -30
- package/lib/macros/getVersion.js +2 -3
- package/lib/models/IAction.js +1 -1
- package/lib/models/IAppState.js +1 -1
- package/lib/pages/AreaPage/AreaPage.js +31 -64
- package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +7 -20
- package/lib/pages/AreaPage/Dashboard/Dashboard.js +4 -27
- package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +13 -39
- package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +7 -9
- package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +30 -68
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +2 -11
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +4 -16
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +4 -8
- package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
- package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +1 -1
- package/lib/pages/AreaPage/Dashboard/Sites/styles.js +3 -11
- package/lib/pages/AssessmentPage/AssessmentPage.js +7 -34
- package/lib/pages/CannyWidget/Feedback.js +12 -29
- package/lib/pages/CovidPage/CovidPage.js +3 -18
- package/lib/pages/CovidPage/components/Body.js +11 -37
- package/lib/pages/CovidPage/components/Map.js +22 -42
- package/lib/pages/CovidPage/components/Sidebar.js +6 -22
- package/lib/pages/CovidPage/components/Summary.js +10 -33
- package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +12 -39
- package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +2 -5
- package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +15 -45
- package/lib/pages/CovidPage/components/TrendPopupContent/index.js +2 -5
- package/lib/pages/CovidPage/components/areas/Area.js +8 -37
- package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +6 -49
- package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +7 -22
- package/lib/pages/CovidPage/components/areas/AreasList.js +16 -37
- package/lib/pages/CovidPage/components/areas/Sort.js +7 -23
- package/lib/pages/CovidPage/components/nvlStatusHelper.js +2 -11
- package/lib/pages/EventsPage/Body/Body.js +4 -23
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +13 -32
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +12 -32
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +5 -12
- package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +4 -12
- package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +6 -11
- package/lib/pages/EventsPage/DragAndDropArea/index.js +2 -5
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +9 -37
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +3 -22
- package/lib/pages/EventsPage/EventsPage.js +3 -17
- package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +12 -37
- package/lib/pages/EventsPage/events/MoreInfo.js +3 -23
- package/lib/pages/EventsPage/events/Sidebar.js +7 -22
- package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +7 -33
- package/lib/pages/EventsPage/events/event_info/EventDetails.js +9 -33
- package/lib/pages/EventsPage/events/event_info/EventInfo.js +14 -45
- package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +3 -15
- package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +12 -44
- package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +2 -13
- package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +10 -34
- package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +2 -9
- package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/LineChartYear/LineChartYear.js +9 -31
- package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/MockHistoryInformation.js +3 -11
- package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +7 -25
- package/lib/pages/EventsPage/events/event_info/charts/EventDetailsLineChart.js +6 -27
- package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +6 -26
- package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +8 -37
- package/lib/pages/EventsPage/events/event_info/samplings/Sampling.js +4 -16
- package/lib/pages/EventsPage/events/event_info/samplings/Samplings.js +3 -11
- package/lib/pages/EventsPage/events/event_info/sources/Source.js +9 -32
- package/lib/pages/EventsPage/events/event_info/sources/Sources.js +6 -24
- package/lib/pages/EventsPage/events/events_list/EventItem.js +5 -28
- package/lib/pages/EventsPage/events/events_list/EventUtils.js +3 -14
- package/lib/pages/EventsPage/events/events_list/EventsList.js +41 -107
- package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +13 -36
- package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +33 -100
- package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +12 -59
- package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +7 -21
- package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +17 -42
- package/lib/pages/EventsPage/events/events_list/Sort.js +6 -27
- package/lib/pages/ImportFileWizard/FileUploadRespones.js +5 -20
- package/lib/pages/ImportFileWizard/ImportButtomButtons.js +4 -10
- package/lib/pages/ImportFileWizard/ImportFile.js +12 -33
- package/lib/pages/ImportFileWizard/ResponseBody.js +4 -13
- package/lib/pages/ImportFileWizard/ValidationForm.js +8 -28
- package/lib/pages/ImportFileWizard/ValidationResponse.js +9 -35
- package/lib/pages/ImportFileWizard/importFileUtils.js +5 -6
- package/lib/pages/ImportFileWizard/index.js +2 -5
- package/lib/pages/ImportGisPage/ImportGisContainer.js +9 -31
- package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +11 -28
- package/lib/pages/ImportGisPage/importGisUtils.js +6 -18
- package/lib/pages/ImportGisProcess/index.js +5 -19
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -23
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +4 -11
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +2 -9
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +27 -62
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +3 -9
- package/lib/pages/NotificationsPage/Notification/Notification.js +9 -17
- package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
- package/lib/pages/NotificationsPage/Notifications.mock.js +1 -1
- package/lib/pages/NotificationsPage/Notifications.stories.js +3 -11
- package/lib/pages/NotificationsPage/NotificationsPage.js +14 -40
- package/lib/pages/NotificationsPage/assets/index.js +15 -24
- package/lib/pages/NotificationsPageV2/NotificationsPage.js +37 -87
- package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +5 -25
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +17 -44
- package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +20 -53
- package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +5 -48
- package/lib/pages/NotificationsPageV2/notificationUtils.js +3 -30
- package/lib/pages/OldSitePage/IDashboardData.js +1 -1
- package/lib/pages/OldSitePage/OldSitePage.js +65 -132
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +4 -17
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -9
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +5 -10
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +6 -13
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +3 -13
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +9 -27
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +7 -21
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -11
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +3 -13
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +11 -28
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +5 -13
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +30 -63
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +13 -11
- package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +5 -22
- package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +4 -19
- package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +9 -17
- package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +3 -18
- package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
- package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +3 -11
- package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +3 -8
- package/lib/pages/ProfilePage/Container.js +2 -6
- package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +18 -47
- package/lib/pages/ProfilePage/ProfilePage.js +41 -92
- package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +11 -36
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +8 -18
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +5 -18
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +69 -111
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +6 -25
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +8 -16
- package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +9 -30
- package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +7 -26
- package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +10 -22
- package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +2 -14
- package/lib/pages/SamplingsPage/DesktopActions/index.js +2 -5
- package/lib/pages/SamplingsPage/NavigationDropdown.js +4 -22
- package/lib/pages/SamplingsPage/NewSamplingAction.js +29 -79
- package/lib/pages/SamplingsPage/SamplingMobileModal.js +13 -66
- package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +6 -20
- package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +3 -14
- package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +24 -60
- package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +6 -24
- package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +2 -15
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +113 -192
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +13 -46
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +16 -51
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +17 -53
- package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +7 -25
- package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -9
- package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +2 -12
- package/lib/pages/SamplingsPage/SamplingsMobileItem.js +9 -40
- package/lib/pages/SamplingsPage/SamplingsMobileList.js +12 -38
- package/lib/pages/SamplingsPage/SamplingsPage.js +16 -43
- package/lib/pages/SamplingsPage/SamplingsPageContainer.js +16 -52
- package/lib/pages/SamplingsPage/index.js +1 -3
- package/lib/pages/SamplingsPage/samplingsPageUtils.js +8 -31
- package/lib/pages/SitePage/DischargePattern/DischargePattern.js +3 -11
- package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -9
- package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +4 -18
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +7 -12
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +16 -24
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +8 -17
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +19 -28
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +3 -13
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +11 -30
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +7 -21
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -11
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +3 -13
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +11 -28
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +5 -13
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +34 -72
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +13 -11
- package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +6 -23
- package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +4 -19
- package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +18 -39
- package/lib/pages/SitePage/SamplingParameters/dataParser.js +15 -31
- package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +3 -7
- package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
- package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +3 -11
- package/lib/pages/SitePage/SamplingParameters/styles/styles.js +3 -9
- package/lib/pages/SitePage/SiteInformation/ContributorItem.js +6 -13
- package/lib/pages/SitePage/SiteInformation/EmptyState.js +2 -11
- package/lib/pages/SitePage/SiteInformation/PollutionContributor.js +6 -16
- package/lib/pages/SitePage/SiteInformation/SiteInformation.js +19 -52
- package/lib/pages/SitePage/SiteInformation/style.js +3 -9
- package/lib/pages/SitePage/SitePage.js +36 -79
- package/lib/pages/UploadLabResult/index.js +2 -9
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +12 -42
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +3 -10
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +3 -17
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +3 -9
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +11 -39
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +2 -6
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +2 -8
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +2 -11
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +8 -17
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
- package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +2 -11
- package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -6
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +5 -29
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +14 -20
- package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +7 -20
- package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +7 -24
- package/lib/pages/WbeDashboard/ExpandableComponent.js +3 -15
- package/lib/pages/WbeDashboard/GraphWrapper.js +7 -30
- package/lib/pages/WbeDashboard/IndividualTinyGraph.js +8 -23
- package/lib/pages/WbeDashboard/SearchInput.js +6 -26
- package/lib/pages/WbeDashboard/SummaryGraph.js +34 -69
- package/lib/pages/WbeDashboard/SummaryGraphModal.js +2 -14
- package/lib/pages/WbeDashboard/Tabs.js +4 -10
- package/lib/pages/WbeDashboard/WbeDashboardPage.js +27 -116
- package/lib/pages/WbeDashboard/WbeSummaryBar.js +10 -46
- package/lib/providers/Slideshow/SlideshowContext.js +3 -5
- package/lib/providers/Slideshow/SlideshowProvider.js +18 -35
- package/lib/providers/Slideshow/SlideshowRunner.js +7 -17
- package/lib/providers/UrlHistory/UrlHistoryContext.js +4 -8
- package/lib/providers/UrlHistory/UrlHistoryProvider.js +2 -16
- package/lib/providers/UrlHistory/index.js +6 -9
- package/lib/providers/UrlHistory/useLastVisited.js +1 -7
- package/lib/react-app-env.d.js +1 -1
- package/lib/store/ImportGis/action.js +1 -1
- package/lib/store/ImportGis/actionTypes.js +5 -6
- package/lib/store/ImportGis/actionsCreator.js +7 -17
- package/lib/store/ImportGis/models/gisImports.js +1 -1
- package/lib/store/ImportGis/reducer.js +3 -19
- package/lib/store/WBE/actionTypes.js +1 -1
- package/lib/store/WBE/actions.js +1 -3
- package/lib/store/WBE/models/IAreaWBE.js +1 -1
- package/lib/store/WBE/models/IWBE.js +1 -1
- package/lib/store/WBE/models/IWBEState.js +1 -1
- package/lib/store/WBE/reducer.js +3 -10
- package/lib/store/areas/actionTypes.js +2 -2
- package/lib/store/areas/actions.js +3 -12
- package/lib/store/areas/models/IArea.js +1 -1
- package/lib/store/areas/models/IAreasState.js +1 -1
- package/lib/store/areas/reducer.js +1 -9
- package/lib/store/context/actionTypes.js +2 -2
- package/lib/store/context/actions.js +2 -6
- package/lib/store/context/contextMiddlewares.js +1 -9
- package/lib/store/context/models/INavContext.js +1 -1
- package/lib/store/context/models/INavContextState.js +1 -1
- package/lib/store/context/reducer.js +3 -10
- package/lib/store/dashboard/dashboardSlice.js +1 -3
- package/lib/store/dashboard/periodType.js +1 -1
- package/lib/store/edges/actionTypes.js +2 -2
- package/lib/store/edges/actions.js +3 -9
- package/lib/store/edges/models/IEdge.js +1 -1
- package/lib/store/edges/models/IEdgesState.js +1 -1
- package/lib/store/edges/reducer.js +3 -17
- package/lib/store/events/actionTypes.js +2 -2
- package/lib/store/events/actions.js +10 -28
- package/lib/store/events/models/IEvent.js +1 -1
- package/lib/store/events/models/IEventsState.js +1 -1
- package/lib/store/events/models/ISource.js +1 -1
- package/lib/store/events/reducer.js +4 -42
- package/lib/store/filters/IFilter.js +1 -1
- package/lib/store/filters/IFilterItem.js +1 -1
- package/lib/store/global/actionTypes.js +2 -2
- package/lib/store/global/actions.js +8 -20
- package/lib/store/global/models/IGlobalState.js +1 -1
- package/lib/store/global/reducer.js +3 -19
- package/lib/store/permissions/permissionsSlice.js +1 -6
- package/lib/store/points/actionTypes.js +2 -2
- package/lib/store/points/actions.js +1 -5
- package/lib/store/points/models/IGroup.js +1 -1
- package/lib/store/points/models/IPoint.js +1 -1
- package/lib/store/points/models/IPointsState.js +1 -1
- package/lib/store/points/reducer.js +1 -7
- package/lib/store/rootActionTypes.js +1 -1
- package/lib/store/rootActions.js +1 -3
- package/lib/store/rootReducer.js +5 -24
- package/lib/store/rootStore.js +5 -13
- package/lib/store/samplings/action.js +1 -1
- package/lib/store/samplings/actionTypes.js +5 -6
- package/lib/store/samplings/actionsCreator.js +2 -5
- package/lib/store/samplings/models/Samplings.js +1 -1
- package/lib/store/samplings/reducer.js +2 -10
- package/lib/styles/StylesLayout.js +2 -8
- package/lib/styles/theme/theme.js +2 -4
- package/lib/test/mocks/browser.js +4 -8
- package/lib/test/test-utils.js +12 -22
- package/lib/ui-kit/Button/Button.js +16 -24
- package/lib/ui-kit/Button/Button.test.js +8 -30
- package/lib/ui-kit/Button/ButtonUtils.js +1 -1
- package/lib/ui-kit/Checkbox/Checkbox.js +8 -22
- package/lib/ui-kit/DropDown/DropDown.js +6 -17
- package/lib/ui-kit/DropDown/DropDown.test.js +7 -13
- package/lib/ui-kit/DropDown/DropDownItem.js +6 -14
- package/lib/ui-kit/DropDown/DropdownToggle.js +3 -14
- package/lib/ui-kit/IconAction/IconAction.js +4 -10
- package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +19 -54
- package/lib/ui-kit/InfoTooltip/InfoTooltip.js +17 -28
- package/lib/ui-kit/KandoList/KandoList.js +6 -19
- package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
- package/lib/ui-kit/KandoTable/KandoTable.js +23 -39
- package/lib/ui-kit/KandoTable/KandoTable.test.js +2 -17
- package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
- package/lib/ui-kit/Layout/Layout.js +2 -9
- package/lib/ui-kit/MobileInput/MobileInput.js +19 -34
- package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +9 -15
- package/lib/ui-kit/ModalConfirmation/index.js +1 -3
- package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +6 -11
- package/lib/ui-kit/SamplingStatus/SamplingStatus.js +4 -12
- package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +4 -11
- package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +6 -15
- package/lib/ui-kit/Tooltip/Tooltip.js +4 -9
- package/lib/ui-kit/index.js +1 -15
- package/lib/ui-kit/kandoStepper/KandoStepper.js +3 -8
- package/lib/utilities/ActionUtility.js +1 -2
- package/lib/utilities/Alert.js +3 -11
- package/lib/utilities/Analytics.js +2 -13
- package/lib/utilities/Array.js +2 -6
- package/lib/utilities/Enum.js +22 -39
- package/lib/utilities/ErrorBoundary.js +4 -19
- package/lib/utilities/File.js +43 -66
- package/lib/utilities/GetDir.js +5 -9
- package/lib/utilities/KandoDate.js +2 -8
- package/lib/utilities/KandoModal.js +9 -26
- package/lib/utilities/LocalStorage.js +2 -13
- package/lib/utilities/ThousandsToK.js +1 -3
- package/lib/utilities/TimeFormat.js +8 -23
- package/lib/utilities/Truncate.js +9 -31
- package/lib/utilities/edgesMath.js +9 -28
- package/lib/utilities/i18n.js +2 -15
- package/lib/utilities/kql.js +3 -10
- package/lib/utilities/map/icons.js +2 -19
- package/lib/utilities/scoreToColor.js +1 -8
- package/lib/utilities/time.js +3 -10
- package/lib/utilities/uploadToS3.js +2 -10
- package/lib/utilities/urls.js +5 -13
- package/package.json +4 -2
|
@@ -1,100 +1,65 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.SamplingProperties = void 0;
|
|
11
|
-
|
|
12
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
-
|
|
14
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
15
|
-
|
|
10
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/regeneratorRuntime"));
|
|
16
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
|
|
17
|
-
|
|
18
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
19
|
-
|
|
20
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
-
|
|
22
14
|
var _axios = _interopRequireDefault(require("axios"));
|
|
23
|
-
|
|
24
15
|
var _reactDeviceDetect = require("react-device-detect");
|
|
25
|
-
|
|
26
16
|
var _formik = require("formik");
|
|
27
|
-
|
|
28
17
|
var _reactRouterDom = require("react-router-dom");
|
|
29
|
-
|
|
30
18
|
var _reactRedux = require("react-redux");
|
|
31
|
-
|
|
32
19
|
var _Layout = _interopRequireDefault(require("ui-kit/Layout/Layout"));
|
|
33
|
-
|
|
34
20
|
var _i18n = _interopRequireDefault(require("utilities/i18n"));
|
|
35
|
-
|
|
36
21
|
var _useQueryURL = _interopRequireDefault(require("hooks/useQueryURL"));
|
|
37
|
-
|
|
38
22
|
var _Spinner = require("components/Spinner/Spinner");
|
|
39
|
-
|
|
40
23
|
var _urls = require("utilities/urls");
|
|
41
|
-
|
|
42
24
|
var _styles = require("./styles");
|
|
43
|
-
|
|
44
25
|
var _samplingsPageUtils = require("../samplingsPageUtils");
|
|
45
|
-
|
|
46
26
|
var _SamplingPropertiesForm = require("./SamplingPropertiesForm");
|
|
47
|
-
|
|
48
27
|
var _SamplingPropertiesHead = require("./SamplingPropertiesHead");
|
|
49
|
-
|
|
50
28
|
var _SamplingPropertiesHeadMobile = require("./SamplingPropertiesHeadMobile");
|
|
51
|
-
|
|
52
29
|
var _samplingPropertiesUtils = require("./samplingPropertiesUtils");
|
|
53
|
-
|
|
54
30
|
var _SamplerInProcess = _interopRequireDefault(require("./SamplerInProcess"));
|
|
55
|
-
|
|
56
|
-
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); }
|
|
57
|
-
|
|
58
|
-
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; }
|
|
59
|
-
|
|
60
31
|
/*
|
|
61
32
|
* Properties and Cancelling forms.
|
|
62
33
|
**/
|
|
34
|
+
|
|
63
35
|
var isPropertiesPage = function isPropertiesPage(pageType) {
|
|
64
36
|
return pageType === 'edit';
|
|
65
37
|
};
|
|
66
|
-
|
|
67
38
|
var SamplingProperties = function SamplingProperties() {
|
|
68
39
|
var _useState = (0, _react.useState)(new Date()),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
40
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
41
|
+
collectionTime = _useState2[0],
|
|
42
|
+
setCollectionTime = _useState2[1];
|
|
73
43
|
var _useState3 = (0, _react.useState)([]),
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
44
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
45
|
+
photos = _useState4[0],
|
|
46
|
+
setPhotos = _useState4[1];
|
|
78
47
|
var _useState5 = (0, _react.useState)([]),
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
48
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
49
|
+
photosToDelete = _useState6[0],
|
|
50
|
+
setPhotosToDelete = _useState6[1];
|
|
83
51
|
var _useState7 = (0, _react.useState)(_i18n.default.t('buttons.save')),
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
52
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
53
|
+
savingMsg = _useState8[0],
|
|
54
|
+
setSavingMsg = _useState8[1];
|
|
88
55
|
var _useState9 = (0, _react.useState)(false),
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
56
|
+
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
57
|
+
samplingUpdated = _useState10[0],
|
|
58
|
+
setSamplingUpdated = _useState10[1];
|
|
93
59
|
var _useState11 = (0, _react.useState)(undefined),
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
60
|
+
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
61
|
+
samplingPlan = _useState12[0],
|
|
62
|
+
setSamplingPlan = _useState12[1];
|
|
98
63
|
var history = (0, _reactRouterDom.useHistory)();
|
|
99
64
|
var location = (0, _reactRouterDom.useLocation)();
|
|
100
65
|
var query = (0, _useQueryURL.default)();
|
|
@@ -103,22 +68,18 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
103
68
|
});
|
|
104
69
|
var dateFormat = userInfo.date_time_format === 'us' ? 'MMM d, yyyy hh:mm aa' : 'd/MM/yyyy HH:mm';
|
|
105
70
|
var pageType = (0, _react.useRef)('');
|
|
106
|
-
|
|
107
71
|
var _useState13 = (0, _react.useState)(),
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
72
|
+
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
73
|
+
samplingProperties = _useState14[0],
|
|
74
|
+
setSamplingProperties = _useState14[1];
|
|
112
75
|
var _useParams = (0, _reactRouterDom.useParams)(),
|
|
113
|
-
|
|
114
|
-
|
|
76
|
+
sampleId = _useParams.sampleId;
|
|
115
77
|
var waterAuthorityId = (0, _reactRedux.useSelector)(function (state) {
|
|
116
78
|
return state.global_data.waterAuthorityId;
|
|
117
79
|
});
|
|
118
80
|
var locale = (0, _reactRedux.useSelector)(function (state) {
|
|
119
81
|
return state.nav_context_data.navContext.locale;
|
|
120
82
|
});
|
|
121
|
-
|
|
122
83
|
var initFormikValues = function initFormikValues(samplingProperties, isCanceled, timeZone, userInfo) {
|
|
123
84
|
var pageCollectionTime = (0, _samplingPropertiesUtils.isCollectLayout)(pageType.current) ? collectionTime : (0, _samplingPropertiesUtils.collectionTimeFormat)(samplingProperties.sampling.collection_time, timeZone);
|
|
124
85
|
var sam = samplingProperties.sampling;
|
|
@@ -140,7 +101,6 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
140
101
|
formikValues.kando_rep = samplingProperties.sampling.kando_rep;
|
|
141
102
|
formik.setValues(formikValues);
|
|
142
103
|
};
|
|
143
|
-
|
|
144
104
|
var isCancelledLayout = function isCancelledLayout(samplingProperties) {
|
|
145
105
|
var pageType2isCancelled = {
|
|
146
106
|
cancel: true,
|
|
@@ -148,48 +108,41 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
148
108
|
revert_cancel: false
|
|
149
109
|
};
|
|
150
110
|
var isCanceled = pageType2isCancelled[pageType.current];
|
|
151
|
-
|
|
152
111
|
if (isCanceled === null) {
|
|
153
112
|
isCanceled = samplingProperties.sampling.is_canceled || false;
|
|
154
113
|
}
|
|
155
|
-
|
|
156
114
|
return isCanceled;
|
|
157
115
|
};
|
|
158
|
-
|
|
159
|
-
var fetchSamplingProperties = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
116
|
+
var fetchSamplingProperties = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
|
|
160
117
|
var samplingId,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
return
|
|
168
|
-
while (1) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
case 13:
|
|
190
|
-
case "end":
|
|
191
|
-
return _context.stop();
|
|
192
|
-
}
|
|
118
|
+
op,
|
|
119
|
+
response,
|
|
120
|
+
sampling,
|
|
121
|
+
samplingProperties,
|
|
122
|
+
isCanceled,
|
|
123
|
+
_args = arguments;
|
|
124
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
125
|
+
while (1) switch (_context.prev = _context.next) {
|
|
126
|
+
case 0:
|
|
127
|
+
samplingId = _args.length > 0 && _args[0] !== undefined ? _args[0] : sampleId;
|
|
128
|
+
op = _args.length > 1 ? _args[1] : undefined;
|
|
129
|
+
_context.next = 4;
|
|
130
|
+
return _axios.default.get((0, _urls.urls)({
|
|
131
|
+
samplingId: samplingId
|
|
132
|
+
}).samplingProperties.fetchSampling.url);
|
|
133
|
+
case 4:
|
|
134
|
+
response = _context.sent;
|
|
135
|
+
sampling = response.data;
|
|
136
|
+
samplingProperties = sampling.sampling_properties;
|
|
137
|
+
pageType.current = detectPageType(samplingProperties.sampling.is_canceled, op);
|
|
138
|
+
setCollectionTime(determineCollectionTime((0, _samplingPropertiesUtils.collectionTimeFormat)(samplingProperties.sampling.collection_time, sampling.sampling_plan.time_zone), op));
|
|
139
|
+
isCanceled = isCancelledLayout(samplingProperties.sampling.is_canceled);
|
|
140
|
+
initFormikValues(samplingProperties, isCanceled, sampling.sampling_plan.time_zone, userInfo);
|
|
141
|
+
setSamplingProperties(samplingProperties);
|
|
142
|
+
setSamplingPlan(sampling.sampling_plan);
|
|
143
|
+
case 13:
|
|
144
|
+
case "end":
|
|
145
|
+
return _context.stop();
|
|
193
146
|
}
|
|
194
147
|
}, _callee);
|
|
195
148
|
})), []);
|
|
@@ -207,7 +160,6 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
207
160
|
handleSubmit(values);
|
|
208
161
|
}
|
|
209
162
|
});
|
|
210
|
-
|
|
211
163
|
var handleClose = function handleClose() {
|
|
212
164
|
if (location.key) {
|
|
213
165
|
history.goBack();
|
|
@@ -218,7 +170,6 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
218
170
|
}).samplingsPage.samplingsListRoute.url);
|
|
219
171
|
}
|
|
220
172
|
};
|
|
221
|
-
|
|
222
173
|
var handleSubmit = function handleSubmit(values) {
|
|
223
174
|
setSavingMsg(_i18n.default.t('buttons.saving'));
|
|
224
175
|
values.pictures_attributes = photos;
|
|
@@ -226,23 +177,19 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
226
177
|
var saveFormData = formDataBuilder(values);
|
|
227
178
|
updateOrCreate(saveFormData);
|
|
228
179
|
};
|
|
229
|
-
|
|
230
180
|
var setOriginalSaveMessageWithTimeout = function setOriginalSaveMessageWithTimeout() {
|
|
231
181
|
setTimeout(function () {
|
|
232
182
|
setSavingMsg(_i18n.default.t('buttons.save'));
|
|
233
183
|
}, 3000);
|
|
234
184
|
};
|
|
235
|
-
|
|
236
185
|
var formDataBuilder = function formDataBuilder(values) {
|
|
237
186
|
var formData = new FormData();
|
|
238
|
-
|
|
239
187
|
for (var key in values) {
|
|
240
188
|
if (key !== 'pictures_attributes') {
|
|
241
189
|
var value = values[key] === null ? '' : values[key];
|
|
242
190
|
formData.append("sampling[".concat(key, "]"), value);
|
|
243
191
|
}
|
|
244
192
|
}
|
|
245
|
-
|
|
246
193
|
var uniquePhotosToDelete = (0, _toConsumableArray2.default)(new Set(photosToDelete));
|
|
247
194
|
uniquePhotosToDelete.length !== 0 && uniquePhotosToDelete.forEach(function (id, index) {
|
|
248
195
|
formData.append("sampling[pictures_attributes][".concat(index, "][id]"), JSON.stringify(id));
|
|
@@ -250,93 +197,75 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
250
197
|
});
|
|
251
198
|
return formData;
|
|
252
199
|
};
|
|
253
|
-
|
|
254
200
|
var updateOrCreate = /*#__PURE__*/function () {
|
|
255
|
-
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/
|
|
201
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2(formData) {
|
|
256
202
|
var _samplingProperties$s;
|
|
257
|
-
|
|
258
203
|
var updateOrCreateSuccess, samplingID;
|
|
259
|
-
return
|
|
260
|
-
while (1) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
setSamplingUpdated(true);
|
|
266
|
-
setOriginalSaveMessageWithTimeout();
|
|
267
|
-
handleClose();
|
|
268
|
-
};
|
|
269
|
-
|
|
270
|
-
samplingID = samplingProperties === null || samplingProperties === void 0 ? void 0 : (_samplingProperties$s = samplingProperties.sampling) === null || _samplingProperties$s === void 0 ? void 0 : _samplingProperties$s.id;
|
|
271
|
-
|
|
272
|
-
if (!(samplingID === null)) {
|
|
273
|
-
_context2.next = 16;
|
|
274
|
-
break;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
// create
|
|
278
|
-
formData.append("sampling[date]", collectionTime);
|
|
279
|
-
_context2.prev = 4;
|
|
280
|
-
_context2.next = 7;
|
|
281
|
-
return _axios.default.post((0, _urls.urls)({
|
|
282
|
-
waterAuthorityId: waterAuthorityId
|
|
283
|
-
}).samplingProperties.createSampling.url, formData);
|
|
284
|
-
|
|
285
|
-
case 7:
|
|
286
|
-
updateOrCreateSuccess('buttons.created');
|
|
287
|
-
_context2.next = 14;
|
|
288
|
-
break;
|
|
289
|
-
|
|
290
|
-
case 10:
|
|
291
|
-
_context2.prev = 10;
|
|
292
|
-
_context2.t0 = _context2["catch"](4);
|
|
293
|
-
setSavingMsg(_i18n.default.t('buttons.error'));
|
|
204
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
|
|
205
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
206
|
+
case 0:
|
|
207
|
+
updateOrCreateSuccess = function updateOrCreateSuccess(msg) {
|
|
208
|
+
setSavingMsg(_i18n.default.t(msg));
|
|
209
|
+
setSamplingUpdated(true);
|
|
294
210
|
setOriginalSaveMessageWithTimeout();
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
211
|
+
handleClose();
|
|
212
|
+
};
|
|
213
|
+
samplingID = samplingProperties === null || samplingProperties === void 0 ? void 0 : (_samplingProperties$s = samplingProperties.sampling) === null || _samplingProperties$s === void 0 ? void 0 : _samplingProperties$s.id;
|
|
214
|
+
if (!(samplingID === null)) {
|
|
215
|
+
_context2.next = 16;
|
|
298
216
|
break;
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
217
|
+
}
|
|
218
|
+
// create
|
|
219
|
+
formData.append("sampling[date]", collectionTime);
|
|
220
|
+
_context2.prev = 4;
|
|
221
|
+
_context2.next = 7;
|
|
222
|
+
return _axios.default.post((0, _urls.urls)({
|
|
223
|
+
waterAuthorityId: waterAuthorityId
|
|
224
|
+
}).samplingProperties.createSampling.url, formData);
|
|
225
|
+
case 7:
|
|
226
|
+
updateOrCreateSuccess('buttons.created');
|
|
227
|
+
_context2.next = 14;
|
|
228
|
+
break;
|
|
229
|
+
case 10:
|
|
230
|
+
_context2.prev = 10;
|
|
231
|
+
_context2.t0 = _context2["catch"](4);
|
|
232
|
+
setSavingMsg(_i18n.default.t('buttons.error'));
|
|
233
|
+
setOriginalSaveMessageWithTimeout();
|
|
234
|
+
case 14:
|
|
235
|
+
_context2.next = 27;
|
|
236
|
+
break;
|
|
237
|
+
case 16:
|
|
238
|
+
if (pageType.current === 'revert_cancel') {
|
|
239
|
+
formData.append("sampling[collection_time]", collectionTime);
|
|
240
|
+
}
|
|
241
|
+
// update
|
|
242
|
+
_context2.prev = 17;
|
|
243
|
+
_context2.next = 20;
|
|
244
|
+
return _axios.default.put((0, _urls.urls)({
|
|
245
|
+
samplingId: samplingID,
|
|
246
|
+
waterAuthorityId: waterAuthorityId
|
|
247
|
+
}).samplingProperties.updateSampling.url, formData);
|
|
248
|
+
case 20:
|
|
249
|
+
updateOrCreateSuccess('buttons.updated');
|
|
250
|
+
_context2.next = 27;
|
|
251
|
+
break;
|
|
252
|
+
case 23:
|
|
253
|
+
_context2.prev = 23;
|
|
254
|
+
_context2.t1 = _context2["catch"](17);
|
|
255
|
+
setSavingMsg(_i18n.default.t('buttons.error'));
|
|
256
|
+
setOriginalSaveMessageWithTimeout();
|
|
257
|
+
case 27:
|
|
258
|
+
case "end":
|
|
259
|
+
return _context2.stop();
|
|
328
260
|
}
|
|
329
261
|
}, _callee2, null, [[4, 10], [17, 23]]);
|
|
330
262
|
}));
|
|
331
|
-
|
|
332
263
|
return function updateOrCreate(_x) {
|
|
333
264
|
return _ref2.apply(this, arguments);
|
|
334
265
|
};
|
|
335
266
|
}();
|
|
336
|
-
|
|
337
267
|
var detectPageType = function detectPageType(isSamplingCancelled, op) {
|
|
338
268
|
var editPageValue = isSamplingCancelled ? 'cancel' : 'collect';
|
|
339
|
-
|
|
340
269
|
if (op === 'edit') {
|
|
341
270
|
return editPageValue;
|
|
342
271
|
} else if (op === _samplingsPageUtils.COLLECT_SAMPLING_OP) {
|
|
@@ -349,12 +278,10 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
349
278
|
return editPageValue;
|
|
350
279
|
}
|
|
351
280
|
};
|
|
352
|
-
|
|
353
281
|
var determineCollectionTime = function determineCollectionTime(serverCollectionTime, op) {
|
|
354
282
|
var currentTime = new Date();
|
|
355
283
|
var serverTime = serverCollectionTime ? new Date(serverCollectionTime) : currentTime;
|
|
356
284
|
var editPageValue = serverCollectionTime ? serverTime : currentTime;
|
|
357
|
-
|
|
358
285
|
if (op === 'edit') {
|
|
359
286
|
return editPageValue;
|
|
360
287
|
} else if (op === _samplingsPageUtils.COLLECT_SAMPLING_OP) {
|
|
@@ -365,27 +292,22 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
365
292
|
return editPageValue;
|
|
366
293
|
}
|
|
367
294
|
};
|
|
368
|
-
|
|
369
295
|
var getUrlQueryOp = function getUrlQueryOp() {
|
|
370
|
-
var op = query.get('op');
|
|
371
|
-
|
|
296
|
+
var op = query.get('op');
|
|
297
|
+
// if not present then default op is 'collecting'
|
|
372
298
|
if ([undefined, null, ''].includes(op)) {
|
|
373
299
|
return _samplingsPageUtils.COLLECT_SAMPLING_OP;
|
|
374
300
|
}
|
|
375
|
-
|
|
376
301
|
return op;
|
|
377
302
|
};
|
|
378
|
-
|
|
379
303
|
if (!samplingPlan || !samplingProperties) {
|
|
380
304
|
return /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, null);
|
|
381
305
|
}
|
|
382
|
-
|
|
383
306
|
if (samplingProperties.is_pump_in_progress) {
|
|
384
307
|
return /*#__PURE__*/_react.default.createElement(_SamplerInProcess.default, {
|
|
385
308
|
handleClose: handleClose
|
|
386
309
|
});
|
|
387
310
|
}
|
|
388
|
-
|
|
389
311
|
return /*#__PURE__*/_react.default.createElement("form", {
|
|
390
312
|
onSubmit: formik.handleSubmit
|
|
391
313
|
}, /*#__PURE__*/_react.default.createElement(_Layout.default, null, /*#__PURE__*/_react.default.createElement(_styles.SamplingPropertiesStyle, null, !_reactDeviceDetect.isMobile && /*#__PURE__*/_react.default.createElement(_SamplingPropertiesHead.SamplingPropertiesHead, {
|
|
@@ -421,6 +343,5 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
421
343
|
formik: formik
|
|
422
344
|
}))));
|
|
423
345
|
};
|
|
424
|
-
|
|
425
346
|
exports.SamplingProperties = SamplingProperties;
|
|
426
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWdlcy9TYW1wbGluZ3NQYWdlL1NhbXBsaW5nUHJvcGVydGllcy9TYW1wbGluZ1Byb3BlcnRpZXMudHN4Il0sIm5hbWVzIjpbImlzUHJvcGVydGllc1BhZ2UiLCJwYWdlVHlwZSIsIlNhbXBsaW5nUHJvcGVydGllcyIsIkRhdGUiLCJjb2xsZWN0aW9uVGltZSIsInNldENvbGxlY3Rpb25UaW1lIiwicGhvdG9zIiwic2V0UGhvdG9zIiwicGhvdG9zVG9EZWxldGUiLCJzZXRQaG90b3NUb0RlbGV0ZSIsImkxOG4iLCJ0Iiwic2F2aW5nTXNnIiwic2V0U2F2aW5nTXNnIiwic2FtcGxpbmdVcGRhdGVkIiwic2V0U2FtcGxpbmdVcGRhdGVkIiwidW5kZWZpbmVkIiwic2FtcGxpbmdQbGFuIiwic2V0U2FtcGxpbmdQbGFuIiwiaGlzdG9yeSIsImxvY2F0aW9uIiwicXVlcnkiLCJ1c2VySW5mbyIsInN0YXRlIiwicGVybWlzc2lvbnMiLCJ1c2VyX2luZm8iLCJkYXRlRm9ybWF0IiwiZGF0ZV90aW1lX2Zvcm1hdCIsInNhbXBsaW5nUHJvcGVydGllcyIsInNldFNhbXBsaW5nUHJvcGVydGllcyIsInNhbXBsZUlkIiwid2F0ZXJBdXRob3JpdHlJZCIsImdsb2JhbF9kYXRhIiwibG9jYWxlIiwibmF2X2NvbnRleHRfZGF0YSIsIm5hdkNvbnRleHQiLCJpbml0Rm9ybWlrVmFsdWVzIiwiaXNDYW5jZWxlZCIsInRpbWVab25lIiwicGFnZUNvbGxlY3Rpb25UaW1lIiwiY3VycmVudCIsInNhbXBsaW5nIiwiY29sbGVjdGlvbl90aW1lIiwic2FtIiwiZm9ybWlrVmFsdWVzIiwibGFiX2lkIiwicHVtcF9zYW1wbGluZ192b2x1bWUiLCJwdW1wX2JhdHRlcnlfbGV2ZWwiLCJkZXNjcmlwdGlvbiIsImthbmRvX3JlcCIsInNhbXBsaW5nX3BsYW5faWQiLCJjYW5jZWxsYXRpb25fcmVhc29uIiwiaXNfY2FuY2VsZWQiLCJpc0NhbmNlbGxlZExheW91dCIsImNhbmNlbGVkX2J5X2lkIiwibmFtZSIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJpZCIsInVzZXJfaWQiLCJmb3JtaWsiLCJzZXRWYWx1ZXMiLCJwYWdlVHlwZTJpc0NhbmNlbGxlZCIsImNhbmNlbCIsImNvbGxlY3QiLCJyZXZlcnRfY2FuY2VsIiwiZmV0Y2hTYW1wbGluZ1Byb3BlcnRpZXMiLCJzYW1wbGluZ0lkIiwib3AiLCJheGlvcyIsImdldCIsImZldGNoU2FtcGxpbmciLCJ1cmwiLCJyZXNwb25zZSIsImRhdGEiLCJzYW1wbGluZ19wcm9wZXJ0aWVzIiwiZGV0ZWN0UGFnZVR5cGUiLCJkZXRlcm1pbmVDb2xsZWN0aW9uVGltZSIsInNhbXBsaW5nX3BsYW4iLCJ0aW1lX3pvbmUiLCJnZXRVcmxRdWVyeU9wIiwidmFsaWRhdGlvblNjaGVtYSIsInByb3BlcnRpZXNWYWxpZGF0aW9uU2NoZW1hIiwiY2FuY2VsbGF0aW9uVmFsaWRhdGlvblNjaGVtYSIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImluaXRpYWxWYWx1ZXMiLCJzYW1wbGluZ1Byb3BlcnR5IiwidmFsaWRhdGVPbkNoYW5nZSIsInZhbGlkYXRlT25CbHVyIiwib25TdWJtaXQiLCJ2YWx1ZXMiLCJoYW5kbGVTdWJtaXQiLCJoYW5kbGVDbG9zZSIsImtleSIsImdvQmFjayIsInB1c2giLCJzYW1wbGluZ3NQYWdlIiwic2FtcGxpbmdzTGlzdFJvdXRlIiwicGljdHVyZXNfYXR0cmlidXRlcyIsInNhdmVGb3JtRGF0YSIsImZvcm1EYXRhQnVpbGRlciIsInVwZGF0ZU9yQ3JlYXRlIiwic2V0T3JpZ2luYWxTYXZlTWVzc2FnZVdpdGhUaW1lb3V0Iiwic2V0VGltZW91dCIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJ2YWx1ZSIsImFwcGVuZCIsInVuaXF1ZVBob3Rvc1RvRGVsZXRlIiwiU2V0IiwibGVuZ3RoIiwiZm9yRWFjaCIsImluZGV4IiwiSlNPTiIsInN0cmluZ2lmeSIsInVwZGF0ZU9yQ3JlYXRlU3VjY2VzcyIsIm1zZyIsInNhbXBsaW5nSUQiLCJwb3N0IiwiY3JlYXRlU2FtcGxpbmciLCJwdXQiLCJ1cGRhdGVTYW1wbGluZyIsImlzU2FtcGxpbmdDYW5jZWxsZWQiLCJlZGl0UGFnZVZhbHVlIiwiQ09MTEVDVF9TQU1QTElOR19PUCIsIkNBTkNFTF9TQU1QTElOR19PUCIsIlJFVkVSVF9DQU5DRUxMQVRJT04iLCJzZXJ2ZXJDb2xsZWN0aW9uVGltZSIsImN1cnJlbnRUaW1lIiwic2VydmVyVGltZSIsImluY2x1ZGVzIiwiaXNfcHVtcF9pbl9wcm9ncmVzcyIsImlzTW9iaWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBTUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBU0E7Ozs7OztBQW5DQTtBQUNBO0FBQ0E7QUFtQ0EsSUFBTUEsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFDQyxRQUFEO0FBQUEsU0FBY0EsUUFBUSxLQUFLLE1BQTNCO0FBQUEsQ0FBekI7O0FBRU8sSUFBTUMsa0JBQXNCLEdBQUcsU0FBekJBLGtCQUF5QixHQUFNO0FBQzFDLGtCQUE0QyxxQkFDMUMsSUFBSUMsSUFBSixFQUQwQyxDQUE1QztBQUFBO0FBQUEsTUFBT0MsY0FBUDtBQUFBLE1BQXVCQyxpQkFBdkI7O0FBR0EsbUJBQTRCLHFCQUE4QixFQUE5QixDQUE1QjtBQUFBO0FBQUEsTUFBT0MsTUFBUDtBQUFBLE1BQWVDLFNBQWY7O0FBQ0EsbUJBQTRDLHFCQUFtQixFQUFuQixDQUE1QztBQUFBO0FBQUEsTUFBT0MsY0FBUDtBQUFBLE1BQXVCQyxpQkFBdkI7O0FBQ0EsbUJBQWtDLHFCQUFpQkMsY0FBS0MsQ0FBTCxDQUFPLGNBQVAsQ0FBakIsQ0FBbEM7QUFBQTtBQUFBLE1BQU9DLFNBQVA7QUFBQSxNQUFrQkMsWUFBbEI7O0FBQ0EsbUJBQThDLHFCQUFTLEtBQVQsQ0FBOUM7QUFBQTtBQUFB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LEVBQUUzRCxRQUFRLENBQUN1QyxPQUpyQjtBQUtFLElBQUEsY0FBYyxFQUFFcEMsY0FMbEI7QUFNRSxJQUFBLGlCQUFpQixFQUFFQyxpQkFOckI7QUFPRSxJQUFBLGtCQUFrQixFQUFFVSxrQkFQdEI7QUFRRSxJQUFBLG9CQUFvQixFQUFFZixnQkFBZ0IsQ0FBQ0MsUUFBRCxDQVJ4QztBQVNFLElBQUEsVUFBVSxFQUFFeUI7QUFUZCxJQWhCSixFQTZCR0Usa0JBQWtCLElBQUkzQixRQUF0QixpQkFDQyw2QkFBQyw4Q0FBRDtBQUNFLElBQUEsa0JBQWtCLEVBQUUyQixrQkFEdEI7QUFFRSxJQUFBLFFBQVEsRUFBRVgsWUFGWjtBQUdFLElBQUEsUUFBUSxFQUFFaEIsUUFBUSxDQUFDdUMsT0FIckI7QUFJRSxJQUFBLGtCQUFrQixFQUFFekIsa0JBSnRCO0FBS0UsSUFBQSxTQUFTLEVBQUVILFNBTGI7QUFNRSxJQUFBLFdBQVcsRUFBRWdGLFdBTmY7QUFPRSxJQUFBLGlCQUFpQixFQUFFbkYsaUJBUHJCO0FBUUUsSUFBQSxTQUFTLEVBQUVGLFNBUmI7QUFTRSxJQUFBLE1BQU0sRUFBRUQsTUFUVjtBQVVFLElBQUEsTUFBTSxFQUFFc0Q7QUFWVixJQTlCSixDQURGLENBREYsQ0FERjtBQWtERCxDQWhVTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQcm9wZXJ0aWVzIGFuZCBDYW5jZWxsaW5nIGZvcm1zLlxuICoqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEZvcm1pa0NvbmZpZyB9IGZyb20gJ2Zvcm1pay9kaXN0L3R5cGVzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAncmVhY3QtZGV2aWNlLWRldGVjdCc7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tICdmb3JtaWsnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlUGFyYW1zLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbmltcG9ydCBMYXlvdXQgZnJvbSAnc3JjL3VpLWtpdC9MYXlvdXQvTGF5b3V0JztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgdXNlUXVlcnlVUkwgZnJvbSAnc3JjL2hvb2tzL3VzZVF1ZXJ5VVJMJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICdzcmMvY29tcG9uZW50cy9TcGlubmVyL1NwaW5uZXInO1xuaW1wb3J0IHsgdXJscyB9IGZyb20gJ3NyYy91dGlsaXRpZXMvdXJscyc7XG5pbXBvcnQgeyBTYW1wbGluZ1Byb3BlcnRpZXNTdHlsZSB9IGZyb20gJy4vc3R5bGVzJztcbmltcG9ydCB7XG4gIENBTkNFTF9TQU1QTElOR19PUCxcbiAgQ09MTEVDVF9TQU1QTElOR19PUCxcbiAgUkVWRVJUX0NBTkNFTExBVElPTixcbiAgU2FtcGxpbmdGZXRjaERhdGEsXG59IGZyb20gJy4uL3NhbXBsaW5nc1BhZ2VVdGlscyc7XG5pbXBvcnQgeyBTYW1wbGluZ1Byb3BlcnRpZXNGb3JtIH0gZnJvbSAnLi9TYW1wbGluZ1Byb3BlcnRpZXNGb3JtJztcbmltcG9ydCB7IFNhbXBsaW5nUHJvcGVydGllc0hlYWQgfSBmcm9tICcuL1NhbXBsaW5nUHJvcGVydGllc0hlYWQnO1xuaW1wb3J0IHsgU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZSB9IGZyb20gJy4vU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZSc7XG5pbXBvcnQge1xuICBGb3JtVHlwZSxcbiAgVFNhbXBsaW5nUHJvcGVydGllcyxcbiAgY2FuY2VsbGF0aW9uVmFsaWRhdGlvblNjaGVtYSxcbiAgaXNDb2xsZWN0TGF5b3V0LFxuICBwcm9wZXJ0aWVzVmFsaWRhdGlvblNjaGVtYSxcbiAgc2FtcGxpbmdQcm9wZXJ0eSxcbiAgY29sbGVjdGlvblRpbWVGb3JtYXQsXG59IGZyb20gJy4vc2FtcGxpbmdQcm9wZXJ0aWVzVXRpbHMnO1xuaW1wb3J0IFNhbXBsZXJJblByb2Nlc3MgZnJvbSAnLi9TYW1wbGVySW5Qcm9jZXNzJztcblxuY29uc3QgaXNQcm9wZXJ0aWVzUGFnZSA9IChwYWdlVHlwZSkgPT4gcGFnZVR5cGUgPT09ICdlZGl0JztcblxuZXhwb3J0IGNvbnN0IFNhbXBsaW5nUHJvcGVydGllczogRkMgPSAoKSA9PiB7XG4gIGNvbnN0IFtjb2xsZWN0aW9uVGltZSwgc2V0Q29sbGVjdGlvblRpbWVdID0gdXNlU3RhdGU8c3RyaW5nIHwgRGF0ZSB8IG51bGw+KFxuICAgIG5ldyBEYXRlKCksXG4gICk7XG4gIGNvbnN0IFtwaG90b3MsIHNldFBob3Rvc10gPSB1c2VTdGF0ZTxzdHJpbmcgfCBCbG9iIHwgYW55PihbXSk7XG4gIGNvbnN0IFtwaG90b3NUb0RlbGV0ZSwgc2V0UGhvdG9zVG9EZWxldGVdID0gdXNlU3RhdGU8bnVtYmVyW10+KFtdKTtcbiAgY29uc3QgW3NhdmluZ01zZywgc2V0U2F2aW5nTXNnXSA9IHVzZVN0YXRlPHN0cmluZz4oaTE4bi50KCdidXR0b25zLnNhdmUnKSk7XG4gIGNvbnN0IFtzYW1wbGluZ1VwZGF0ZWQsIHNldFNhbXBsaW5nVXBkYXRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzYW1wbGluZ1BsYW4sIHNldFNhbXBsaW5nUGxhbl0gPSB1c2VTdGF0ZTxcbiAgICBTYW1wbGluZ0ZldGNoRGF0YSB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KCk7XG4gIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgY29uc3QgcXVlcnkgPSB1c2VRdWVyeVVSTCgpO1xuICBjb25zdCB1c2VySW5mbyA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUucGVybWlzc2lvbnMudXNlcl9pbmZvKTtcbiAgY29uc3QgZGF0ZUZvcm1hdCA9XG4gICAgdXNlckluZm8uZGF0ZV90aW1lX2Zvcm1hdCA9PT0gJ3VzJ1xuICAgICAgPyAnTU1NIGQsIHl5eXkgaGg6bW0gYWEnXG4gICAgICA6ICdkL01NL3l5eXkgSEg6bW0nO1xuICBjb25zdCBwYWdlVHlwZSA9IHVzZVJlZjxzdHJpbmc+KCcnKTtcbiAgY29uc3QgW3NhbXBsaW5nUHJvcGVydGllcywgc2V0U2FtcGxpbmdQcm9wZXJ0aWVzXSA9XG4gICAgdXNlU3RhdGU8VFNhbXBsaW5nUHJvcGVydGllcz4oKTtcbiAgY29uc3QgeyBzYW1wbGVJZCB9ID0gdXNlUGFyYW1zKCk7XG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5SWQgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICk7XG4gIGNvbnN0IGxvY2FsZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUubmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LmxvY2FsZSxcbiAgKTtcblxuICBjb25zdCBpbml0Rm9ybWlrVmFsdWVzID0gKFxuICAgIHNhbXBsaW5nUHJvcGVydGllcyxcbiAgICBpc0NhbmNlbGVkLFxuICAgIHRpbWVab25lLFxuICAgIHVzZXJJbmZvLFxuICApID0+IHtcbiAgICBjb25zdCBwYWdlQ29sbGVjdGlvblRpbWUgPSBpc0NvbGxlY3RMYXlvdXQocGFnZVR5cGUuY3VycmVudClcbiAgICAgID8gY29sbGVjdGlvblRpbWVcbiAgICAgIDogY29sbGVjdGlvblRpbWVGb3JtYXQoXG4gICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmNvbGxlY3Rpb25fdGltZSxcbiAgICAgICAgICB0aW1lWm9uZSxcbiAgICAgICAgKTtcbiAgICBjb25zdCBzYW0gPSBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmc7XG4gICAgbGV0IGZvcm1pa1ZhbHVlczogRm9ybVR5cGUgPSB7XG4gICAgICBsYWJfaWQ6IHNhbS5sYWJfaWQsXG4gICAgICBjb2xsZWN0aW9uX3RpbWU6IHBhZ2VDb2xsZWN0aW9uVGltZSxcbiAgICAgIHB1bXBfc2FtcGxpbmdfdm9sdW1lOiBzYW0ucHVtcF9zYW1wbGluZ192b2x1bWUsXG4gICAgICBwdW1wX2JhdHRlcnlfbGV2ZWw6IHNhbS5wdW1wX2JhdHRlcnlfbGV2ZWwsXG4gICAgICBkZXNjcmlwdGlvbjogc2FtLmRlc2NyaXB0aW9uLFxuICAgICAga2FuZG9fcmVwOiBzYW0ua2FuZG9fcmVwLFxuICAgICAgc2FtcGxpbmdfcGxhbl9pZDogc2FtLnNhbXBsaW5nX3BsYW5faWQsXG4gICAgICBjYW5jZWxsYXRpb25fcmVhc29uOiBzYW0uY2FuY2VsbGF0aW9uX3JlYXNvbiB8fCAnJyxcbiAgICAgIGlzX2NhbmNlbGVkOiBpc0NhbmNlbGVkLFxuICAgIH07XG5cbiAgICBpZiAoaXNDYW5jZWxsZWRMYXlvdXQoc2FtcGxpbmdQcm9wZXJ0aWVzKSlcbiAgICAgIGZvcm1pa1ZhbHVlcy5jYW5jZWxlZF9ieV9pZCA9IHtcbiAgICAgICAgbmFtZTogdXNlckluZm8uZmlyc3RfbmFtZSArICcgJyArIHVzZXJJbmZvLmxhc3RfbmFtZSxcbiAgICAgICAgaWQ6IHVzZXJJbmZvLnVzZXJfaWQsXG4gICAgICB9O1xuICAgIGZvcm1pa1ZhbHVlcy5rYW5kb19yZXAgPSBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcua2FuZG9fcmVwO1xuICAgIGZvcm1pay5zZXRWYWx1ZXMoZm9ybWlrVmFsdWVzKTtcbiAgfTtcblxuICBjb25zdCBpc0NhbmNlbGxlZExheW91dCA9IChzYW1wbGluZ1Byb3BlcnRpZXMpID0+IHtcbiAgICBjb25zdCBwYWdlVHlwZTJpc0NhbmNlbGxlZCA9IHtcbiAgICAgIGNhbmNlbDogdHJ1ZSxcbiAgICAgIGNvbGxlY3Q6IGZhbHNlLFxuICAgICAgcmV2ZXJ0X2NhbmNlbDogZmFsc2UsXG4gICAgfTtcbiAgICBsZXQgaXNDYW5jZWxlZCA9IHBhZ2VUeXBlMmlzQ2FuY2VsbGVkW3BhZ2VUeXBlLmN1cnJlbnRdO1xuICAgIGlmIChpc0NhbmNlbGVkID09PSBudWxsKSB7XG4gICAgICBpc0NhbmNlbGVkID0gc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmlzX2NhbmNlbGVkIHx8IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNDYW5jZWxlZDtcbiAgfTtcblxuICBjb25zdCBmZXRjaFNhbXBsaW5nUHJvcGVydGllcyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChzYW1wbGluZ0lkID0gc2FtcGxlSWQsIG9wKSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nSWQgfSkuc2FtcGxpbmdQcm9wZXJ0aWVzLmZldGNoU2FtcGxpbmcudXJsLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNhbXBsaW5nID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIGNvbnN0IHNhbXBsaW5nUHJvcGVydGllcyA9IHNhbXBsaW5nLnNhbXBsaW5nX3Byb3BlcnRpZXM7XG4gICAgICBwYWdlVHlwZS5jdXJyZW50ID0gZGV0ZWN0UGFnZVR5cGUoXG4gICAgICAgIHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5pc19jYW5jZWxlZCxcbiAgICAgICAgb3AsXG4gICAgICApO1xuICAgICAgc2V0Q29sbGVjdGlvblRpbWUoXG4gICAgICAgIGRldGVybWluZUNvbGxlY3Rpb25UaW1lKFxuICAgICAgICAgIGNvbGxlY3Rpb25UaW1lRm9ybWF0KFxuICAgICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmNvbGxlY3Rpb25fdGltZSxcbiAgICAgICAgICAgIHNhbXBsaW5nLnNhbXBsaW5nX3BsYW4udGltZV96b25lLFxuICAgICAgICAgICksXG4gICAgICAgICAgb3AsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgbGV0IGlzQ2FuY2VsZWQgPSBpc0NhbmNlbGxlZExheW91dChcbiAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmlzX2NhbmNlbGVkLFxuICAgICAgKTtcbiAgICAgIGluaXRGb3JtaWtWYWx1ZXMoXG4gICAgICAgIHNhbXBsaW5nUHJvcGVydGllcyxcbiAgICAgICAgaXNDYW5jZWxlZCxcbiAgICAgICAgc2FtcGxpbmcuc2FtcGxpbmdfcGxhbi50aW1lX3pvbmUsXG4gICAgICAgIHVzZXJJbmZvLFxuICAgICAgKTtcbiAgICAgIHNldFNhbXBsaW5nUHJvcGVydGllcyhzYW1wbGluZ1Byb3BlcnRpZXMpO1xuICAgICAgc2V0U2FtcGxpbmdQbGFuKHNhbXBsaW5nLnNhbXBsaW5nX3BsYW4pO1xuICAgIH0sXG4gICAgW10sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFNhbXBsaW5nUHJvcGVydGllcyhzYW1wbGVJZCwgZ2V0VXJsUXVlcnlPcCgpKTtcbiAgfSwgW3NhbXBsaW5nVXBkYXRlZF0pO1xuXG4gIGNvbnN0IHZhbGlkYXRpb25TY2hlbWEgPSBpc0NvbGxlY3RMYXlvdXQocGFnZVR5cGUuY3VycmVudClcbiAgICA/IHByb3BlcnRpZXNWYWxpZGF0aW9uU2NoZW1hXG4gICAgOiBjYW5jZWxsYXRpb25WYWxpZGF0aW9uU2NoZW1hO1xuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWs8Rm9ybWlrQ29uZmlnPEZvcm1UeXBlPj4oe1xuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZSxcbiAgICBpbml0aWFsVmFsdWVzOiBzYW1wbGluZ1Byb3BlcnR5LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHZhbGlkYXRpb25TY2hlbWEsXG4gICAgdmFsaWRhdGVPbkNoYW5nZTogZmFsc2UsXG4gICAgdmFsaWRhdGVPbkJsdXI6IHRydWUsXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGhhbmRsZVN1Ym1pdCh2YWx1ZXMpO1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgIGlmIChsb2NhdGlvbi5rZXkpIHtcbiAgICAgIGhpc3RvcnkuZ29CYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhpc3RvcnkucHVzaChcbiAgICAgICAgdXJscyh7IGxvY2FsZSwgd2F0ZXJBdXRob3JpdHlJZCB9KS5zYW1wbGluZ3NQYWdlLnNhbXBsaW5nc0xpc3RSb3V0ZS51cmwsXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSAodmFsdWVzKSA9PiB7XG4gICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5zYXZpbmcnKSk7XG4gICAgdmFsdWVzLnBpY3R1cmVzX2F0dHJpYnV0ZXMgPSBwaG90b3M7XG4gICAgaWYgKHZhbHVlcy5jYW5jZWxlZF9ieV9pZCAmJiBpc0NhbmNlbGxlZExheW91dChzYW1wbGluZ1Byb3BlcnRpZXMpKVxuICAgICAgdmFsdWVzLmNhbmNlbGVkX2J5X2lkID0gdXNlckluZm8udXNlcl9pZDtcbiAgICBjb25zdCBzYXZlRm9ybURhdGEgPSBmb3JtRGF0YUJ1aWxkZXIodmFsdWVzKTtcbiAgICB1cGRhdGVPckNyZWF0ZShzYXZlRm9ybURhdGEpO1xuICB9O1xuXG4gIGNvbnN0IHNldE9yaWdpbmFsU2F2ZU1lc3NhZ2VXaXRoVGltZW91dCA9ICgpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFNhdmluZ01zZyhpMThuLnQoJ2J1dHRvbnMuc2F2ZScpKTtcbiAgICB9LCAzMDAwKTtcbiAgfTtcblxuICBjb25zdCBmb3JtRGF0YUJ1aWxkZXIgPSAodmFsdWVzKSA9PiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZXMpIHtcbiAgICAgIGlmIChrZXkgIT09ICdwaWN0dXJlc19hdHRyaWJ1dGVzJykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1trZXldID09PSBudWxsID8gJycgOiB2YWx1ZXNba2V5XTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBzYW1wbGluZ1ske2tleX1dYCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgdW5pcXVlUGhvdG9zVG9EZWxldGUgPSBbLi4ubmV3IFNldChwaG90b3NUb0RlbGV0ZSldO1xuICAgIHVuaXF1ZVBob3Rvc1RvRGVsZXRlLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgdW5pcXVlUGhvdG9zVG9EZWxldGUuZm9yRWFjaCgoaWQsIGluZGV4KSA9PiB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICBgc2FtcGxpbmdbcGljdHVyZXNfYXR0cmlidXRlc11bJHtpbmRleH1dW2lkXWAsXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoaWQpLFxuICAgICAgICApO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgYHNhbXBsaW5nW3BpY3R1cmVzX2F0dHJpYnV0ZXNdWyR7aW5kZXh9XVtfZGVzdHJveV1gLFxuICAgICAgICAgICd0cnVlJyxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVPckNyZWF0ZSA9IGFzeW5jIChmb3JtRGF0YSkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZU9yQ3JlYXRlU3VjY2VzcyA9IChtc2cpID0+IHtcbiAgICAgIHNldFNhdmluZ01zZyhpMThuLnQobXNnKSk7XG4gICAgICBzZXRTYW1wbGluZ1VwZGF0ZWQodHJ1ZSk7XG4gICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNhbXBsaW5nSUQgPSBzYW1wbGluZ1Byb3BlcnRpZXM/LnNhbXBsaW5nPy5pZDtcbiAgICBpZiAoc2FtcGxpbmdJRCA9PT0gbnVsbCkge1xuICAgICAgLy8gY3JlYXRlXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoYHNhbXBsaW5nW2RhdGVdYCwgY29sbGVjdGlvblRpbWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXhpb3MucG9zdChcbiAgICAgICAgICB1cmxzKHtcbiAgICAgICAgICAgIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQsXG4gICAgICAgICAgfSkuc2FtcGxpbmdQcm9wZXJ0aWVzLmNyZWF0ZVNhbXBsaW5nLnVybCxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgKTtcbiAgICAgICAgdXBkYXRlT3JDcmVhdGVTdWNjZXNzKCdidXR0b25zLmNyZWF0ZWQnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5lcnJvcicpKTtcbiAgICAgICAgc2V0T3JpZ2luYWxTYXZlTWVzc2FnZVdpdGhUaW1lb3V0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYWdlVHlwZS5jdXJyZW50ID09PSAncmV2ZXJ0X2NhbmNlbCcpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBzYW1wbGluZ1tjb2xsZWN0aW9uX3RpbWVdYCwgY29sbGVjdGlvblRpbWUpO1xuICAgICAgfVxuICAgICAgLy8gdXBkYXRlXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBheGlvcy5wdXQoXG4gICAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nSUQsIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQgfSlcbiAgICAgICAgICAgIC5zYW1wbGluZ1Byb3BlcnRpZXMudXBkYXRlU2FtcGxpbmcudXJsLFxuICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICApO1xuICAgICAgICB1cGRhdGVPckNyZWF0ZVN1Y2Nlc3MoJ2J1dHRvbnMudXBkYXRlZCcpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzZXRTYXZpbmdNc2coaTE4bi50KCdidXR0b25zLmVycm9yJykpO1xuICAgICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGV0ZWN0UGFnZVR5cGUgPSAoaXNTYW1wbGluZ0NhbmNlbGxlZCwgb3ApID0+IHtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gaXNTYW1wbGluZ0NhbmNlbGxlZCA/ICdjYW5jZWwnIDogJ2NvbGxlY3QnO1xuICAgIGlmIChvcCA9PT0gJ2VkaXQnKSB7XG4gICAgICByZXR1cm4gZWRpdFBhZ2VWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKG9wID09PSBDT0xMRUNUX1NBTVBMSU5HX09QKSB7XG4gICAgICByZXR1cm4gJ2NvbGxlY3QnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENBTkNFTF9TQU1QTElOR19PUCkge1xuICAgICAgcmV0dXJuICdjYW5jZWwnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IFJFVkVSVF9DQU5DRUxMQVRJT04pIHtcbiAgICAgIHJldHVybiAncmV2ZXJ0X2NhbmNlbCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZXRlcm1pbmVDb2xsZWN0aW9uVGltZSA9IChzZXJ2ZXJDb2xsZWN0aW9uVGltZSwgb3ApID0+IHtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3Qgc2VydmVyVGltZSA9IHNlcnZlckNvbGxlY3Rpb25UaW1lXG4gICAgICA/IG5ldyBEYXRlKHNlcnZlckNvbGxlY3Rpb25UaW1lKVxuICAgICAgOiBjdXJyZW50VGltZTtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gc2VydmVyQ29sbGVjdGlvblRpbWUgPyBzZXJ2ZXJUaW1lIDogY3VycmVudFRpbWU7XG4gICAgaWYgKG9wID09PSAnZWRpdCcpIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENPTExFQ1RfU0FNUExJTkdfT1ApIHtcbiAgICAgIHJldHVybiBjdXJyZW50VGltZTtcbiAgICB9IGVsc2UgaWYgKFtDQU5DRUxfU0FNUExJTkdfT1AsIFJFVkVSVF9DQU5DRUxMQVRJT05dLmluY2x1ZGVzKG9wKSkge1xuICAgICAgcmV0dXJuIHNlcnZlclRpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRVcmxRdWVyeU9wID0gKCkgPT4ge1xuICAgIGxldCBvcCA9IHF1ZXJ5LmdldCgnb3AnKTtcbiAgICAvLyBpZiBub3QgcHJlc2VudCB0aGVuIGRlZmF1bHQgb3AgaXMgJ2NvbGxlY3RpbmcnXG4gICAgaWYgKFt1bmRlZmluZWQsIG51bGwsICcnXS5pbmNsdWRlcyhvcCkpIHtcbiAgICAgIHJldHVybiBDT0xMRUNUX1NBTVBMSU5HX09QO1xuICAgIH1cbiAgICByZXR1cm4gb3A7XG4gIH07XG5cbiAgaWYgKCFzYW1wbGluZ1BsYW4gfHwgIXNhbXBsaW5nUHJvcGVydGllcykge1xuICAgIHJldHVybiA8U3Bpbm5lciAvPjtcbiAgfVxuXG4gIGlmIChzYW1wbGluZ1Byb3BlcnRpZXMuaXNfcHVtcF9pbl9wcm9ncmVzcykge1xuICAgIHJldHVybiA8U2FtcGxlckluUHJvY2VzcyBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0+XG4gICAgICA8TGF5b3V0PlxuICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzU3R5bGU+XG4gICAgICAgICAgeyFpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZFxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZVxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtzYW1wbGluZ1Byb3BlcnRpZXMgJiYgcGFnZVR5cGUgJiYgKFxuICAgICAgICAgICAgPFNhbXBsaW5nUHJvcGVydGllc0Zvcm1cbiAgICAgICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzPXtzYW1wbGluZ1Byb3BlcnRpZXN9XG4gICAgICAgICAgICAgIHNhbXBsaW5nPXtzYW1wbGluZ1BsYW59XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBzZXRTYW1wbGluZ1VwZGF0ZWQ9e3NldFNhbXBsaW5nVXBkYXRlZH1cbiAgICAgICAgICAgICAgc2F2aW5nTXNnPXtzYXZpbmdNc2d9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAgICAgICAgICAgICAgc2V0UGhvdG9zVG9EZWxldGU9e3NldFBob3Rvc1RvRGVsZXRlfVxuICAgICAgICAgICAgICBzZXRQaG90b3M9e3NldFBob3Rvc31cbiAgICAgICAgICAgICAgcGhvdG9zPXtwaG90b3N9XG4gICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NhbXBsaW5nUHJvcGVydGllc1N0eWxlPlxuICAgICAgPC9MYXlvdXQ+XG4gICAgPC9mb3JtPlxuICApO1xufTtcbiJdfQ==
|
|
347
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0RGV2aWNlRGV0ZWN0IiwiX2Zvcm1payIsIl9yZWFjdFJvdXRlckRvbSIsIl9yZWFjdFJlZHV4IiwiX0xheW91dCIsIl9pMThuIiwiX3VzZVF1ZXJ5VVJMIiwiX1NwaW5uZXIiLCJfdXJscyIsIl9zdHlsZXMiLCJfc2FtcGxpbmdzUGFnZVV0aWxzIiwiX1NhbXBsaW5nUHJvcGVydGllc0Zvcm0iLCJfU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZCIsIl9TYW1wbGluZ1Byb3BlcnRpZXNIZWFkTW9iaWxlIiwiX3NhbXBsaW5nUHJvcGVydGllc1V0aWxzIiwiX1NhbXBsZXJJblByb2Nlc3MiLCJpc1Byb3BlcnRpZXNQYWdlIiwicGFnZVR5cGUiLCJTYW1wbGluZ1Byb3BlcnRpZXMiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIkRhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZGVmYXVsdCIsImNvbGxlY3Rpb25UaW1lIiwic2V0Q29sbGVjdGlvblRpbWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInBob3RvcyIsInNldFBob3RvcyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwicGhvdG9zVG9EZWxldGUiLCJzZXRQaG90b3NUb0RlbGV0ZSIsIl91c2VTdGF0ZTciLCJpMThuIiwidCIsIl91c2VTdGF0ZTgiLCJzYXZpbmdNc2ciLCJzZXRTYXZpbmdNc2ciLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMTAiLCJzYW1wbGluZ1VwZGF0ZWQiLCJzZXRTYW1wbGluZ1VwZGF0ZWQiLCJfdXNlU3RhdGUxMSIsInVuZGVmaW5lZCIsIl91c2VTdGF0ZTEyIiwic2FtcGxpbmdQbGFuIiwic2V0U2FtcGxpbmdQbGFuIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJsb2NhdGlvbiIsInVzZUxvY2F0aW9uIiwicXVlcnkiLCJ1c2VRdWVyeVVSTCIsInVzZXJJbmZvIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsInBlcm1pc3Npb25zIiwidXNlcl9pbmZvIiwiZGF0ZUZvcm1hdCIsImRhdGVfdGltZV9mb3JtYXQiLCJ1c2VSZWYiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0Iiwic2FtcGxpbmdQcm9wZXJ0aWVzIiwic2V0U2FtcGxpbmdQcm9wZXJ0aWVzIiwiX3VzZVBhcmFtcyIsInVzZVBhcmFtcyIsInNhbXBsZUlkIiwid2F0ZXJBdXRob3JpdHlJZCIsImdsb2JhbF9kYXRhIiwibG9jYWxlIiwibmF2X2NvbnRleHRfZGF0YSIsIm5hdkNvbnRleHQiLCJpbml0Rm9ybWlrVmFsdWVzIiwiaXNDYW5jZWxlZCIsInRpbWVab25lIiwicGFnZUNvbGxlY3Rpb25UaW1lIiwiaXNDb2xsZWN0TGF5b3V0IiwiY3VycmVudCIsImNvbGxlY3Rpb25UaW1lRm9ybWF0Iiwic2FtcGxpbmciLCJjb2xsZWN0aW9uX3RpbWUiLCJzYW0iLCJmb3JtaWtWYWx1ZXMiLCJsYWJfaWQiLCJwdW1wX3NhbXBsaW5nX3ZvbHVtZSIsInB1bXBfYmF0dGVyeV9sZXZlbCIsImRlc2NyaXB0aW9uIiwia2FuZG9fcmVwIiwic2FtcGxpbmdfcGxhbl9pZCIsImNhbmNlbGxhdGlvbl9yZWFzb24iLCJpc19jYW5jZWxlZCIsImlzQ2FuY2VsbGVkTGF5b3V0IiwiY2FuY2VsZWRfYnlfaWQiLCJuYW1lIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsImlkIiwidXNlcl9pZCIsImZvcm1payIsInNldFZhbHVlcyIsInBhZ2VUeXBlMmlzQ2FuY2VsbGVkIiwiY2FuY2VsIiwiY29sbGVjdCIsInJldmVydF9jYW5jZWwiLCJmZXRjaFNhbXBsaW5nUHJvcGVydGllcyIsInVzZUNhbGxiYWNrIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yUnVudGltZTIiLCJtYXJrIiwiX2NhbGxlZSIsInNhbXBsaW5nSWQiLCJvcCIsInJlc3BvbnNlIiwiX2FyZ3MiLCJhcmd1bWVudHMiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwibGVuZ3RoIiwiYXhpb3MiLCJnZXQiLCJ1cmxzIiwiZmV0Y2hTYW1wbGluZyIsInVybCIsInNlbnQiLCJkYXRhIiwic2FtcGxpbmdfcHJvcGVydGllcyIsImRldGVjdFBhZ2VUeXBlIiwiZGV0ZXJtaW5lQ29sbGVjdGlvblRpbWUiLCJzYW1wbGluZ19wbGFuIiwidGltZV96b25lIiwic3RvcCIsInVzZUVmZmVjdCIsImdldFVybFF1ZXJ5T3AiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicHJvcGVydGllc1ZhbGlkYXRpb25TY2hlbWEiLCJjYW5jZWxsYXRpb25WYWxpZGF0aW9uU2NoZW1hIiwidXNlRm9ybWlrIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaW5pdGlhbFZhbHVlcyIsInNhbXBsaW5nUHJvcGVydHkiLCJ2YWxpZGF0ZU9uQ2hhbmdlIiwidmFsaWRhdGVPbkJsdXIiLCJvblN1Ym1pdCIsInZhbHVlcyIsImhhbmRsZVN1Ym1pdCIsImhhbmRsZUNsb3NlIiwia2V5IiwiZ29CYWNrIiwicHVzaCIsInNhbXBsaW5nc1BhZ2UiLCJzYW1wbGluZ3NMaXN0Um91dGUiLCJwaWN0dXJlc19hdHRyaWJ1dGVzIiwic2F2ZUZvcm1EYXRhIiwiZm9ybURhdGFCdWlsZGVyIiwidXBkYXRlT3JDcmVhdGUiLCJzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsInZhbHVlIiwiYXBwZW5kIiwiY29uY2F0IiwidW5pcXVlUGhvdG9zVG9EZWxldGUiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiU2V0IiwiZm9yRWFjaCIsImluZGV4IiwiSlNPTiIsInN0cmluZ2lmeSIsIl9yZWYyIiwiX2NhbGxlZTIiLCJfc2FtcGxpbmdQcm9wZXJ0aWVzJHMiLCJ1cGRhdGVPckNyZWF0ZVN1Y2Nlc3MiLCJzYW1wbGluZ0lEIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwibXNnIiwicG9zdCIsImNyZWF0ZVNhbXBsaW5nIiwidDAiLCJwdXQiLCJ1cGRhdGVTYW1wbGluZyIsInQxIiwiX3giLCJhcHBseSIsImlzU2FtcGxpbmdDYW5jZWxsZWQiLCJlZGl0UGFnZVZhbHVlIiwiQ09MTEVDVF9TQU1QTElOR19PUCIsIkNBTkNFTF9TQU1QTElOR19PUCIsIlJFVkVSVF9DQU5DRUxMQVRJT04iLCJzZXJ2ZXJDb2xsZWN0aW9uVGltZSIsImN1cnJlbnRUaW1lIiwic2VydmVyVGltZSIsImluY2x1ZGVzIiwiY3JlYXRlRWxlbWVudCIsIlNwaW5uZXIiLCJpc19wdW1wX2luX3Byb2dyZXNzIiwiU2FtcGxpbmdQcm9wZXJ0aWVzU3R5bGUiLCJpc01vYmlsZSIsIlNhbXBsaW5nUHJvcGVydGllc0hlYWQiLCJpc0RhdGVQaWNrZXJEaXNhYmxlZCIsIlNhbXBsaW5nUHJvcGVydGllc0hlYWRNb2JpbGUiLCJTYW1wbGluZ1Byb3BlcnRpZXNGb3JtIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWdlcy9TYW1wbGluZ3NQYWdlL1NhbXBsaW5nUHJvcGVydGllcy9TYW1wbGluZ1Byb3BlcnRpZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQcm9wZXJ0aWVzIGFuZCBDYW5jZWxsaW5nIGZvcm1zLlxuICoqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEZvcm1pa0NvbmZpZyB9IGZyb20gJ2Zvcm1pay9kaXN0L3R5cGVzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAncmVhY3QtZGV2aWNlLWRldGVjdCc7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tICdmb3JtaWsnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlUGFyYW1zLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbmltcG9ydCBMYXlvdXQgZnJvbSAnc3JjL3VpLWtpdC9MYXlvdXQvTGF5b3V0JztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgdXNlUXVlcnlVUkwgZnJvbSAnc3JjL2hvb2tzL3VzZVF1ZXJ5VVJMJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICdzcmMvY29tcG9uZW50cy9TcGlubmVyL1NwaW5uZXInO1xuaW1wb3J0IHsgdXJscyB9IGZyb20gJ3NyYy91dGlsaXRpZXMvdXJscyc7XG5pbXBvcnQgeyBTYW1wbGluZ1Byb3BlcnRpZXNTdHlsZSB9IGZyb20gJy4vc3R5bGVzJztcbmltcG9ydCB7XG4gIENBTkNFTF9TQU1QTElOR19PUCxcbiAgQ09MTEVDVF9TQU1QTElOR19PUCxcbiAgUkVWRVJUX0NBTkNFTExBVElPTixcbiAgU2FtcGxpbmdGZXRjaERhdGEsXG59IGZyb20gJy4uL3NhbXBsaW5nc1BhZ2VVdGlscyc7XG5pbXBvcnQgeyBTYW1wbGluZ1Byb3BlcnRpZXNGb3JtIH0gZnJvbSAnLi9TYW1wbGluZ1Byb3BlcnRpZXNGb3JtJztcbmltcG9ydCB7IFNhbXBsaW5nUHJvcGVydGllc0hlYWQgfSBmcm9tICcuL1NhbXBsaW5nUHJvcGVydGllc0hlYWQnO1xuaW1wb3J0IHsgU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZSB9IGZyb20gJy4vU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZSc7XG5pbXBvcnQge1xuICBGb3JtVHlwZSxcbiAgVFNhbXBsaW5nUHJvcGVydGllcyxcbiAgY2FuY2VsbGF0aW9uVmFsaWRhdGlvblNjaGVtYSxcbiAgaXNDb2xsZWN0TGF5b3V0LFxuICBwcm9wZXJ0aWVzVmFsaWRhdGlvblNjaGVtYSxcbiAgc2FtcGxpbmdQcm9wZXJ0eSxcbiAgY29sbGVjdGlvblRpbWVGb3JtYXQsXG59IGZyb20gJy4vc2FtcGxpbmdQcm9wZXJ0aWVzVXRpbHMnO1xuaW1wb3J0IFNhbXBsZXJJblByb2Nlc3MgZnJvbSAnLi9TYW1wbGVySW5Qcm9jZXNzJztcblxuY29uc3QgaXNQcm9wZXJ0aWVzUGFnZSA9IChwYWdlVHlwZSkgPT4gcGFnZVR5cGUgPT09ICdlZGl0JztcblxuZXhwb3J0IGNvbnN0IFNhbXBsaW5nUHJvcGVydGllczogRkMgPSAoKSA9PiB7XG4gIGNvbnN0IFtjb2xsZWN0aW9uVGltZSwgc2V0Q29sbGVjdGlvblRpbWVdID0gdXNlU3RhdGU8c3RyaW5nIHwgRGF0ZSB8IG51bGw+KFxuICAgIG5ldyBEYXRlKCksXG4gICk7XG4gIGNvbnN0IFtwaG90b3MsIHNldFBob3Rvc10gPSB1c2VTdGF0ZTxzdHJpbmcgfCBCbG9iIHwgYW55PihbXSk7XG4gIGNvbnN0IFtwaG90b3NUb0RlbGV0ZSwgc2V0UGhvdG9zVG9EZWxldGVdID0gdXNlU3RhdGU8bnVtYmVyW10+KFtdKTtcbiAgY29uc3QgW3NhdmluZ01zZywgc2V0U2F2aW5nTXNnXSA9IHVzZVN0YXRlPHN0cmluZz4oaTE4bi50KCdidXR0b25zLnNhdmUnKSk7XG4gIGNvbnN0IFtzYW1wbGluZ1VwZGF0ZWQsIHNldFNhbXBsaW5nVXBkYXRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzYW1wbGluZ1BsYW4sIHNldFNhbXBsaW5nUGxhbl0gPSB1c2VTdGF0ZTxcbiAgICBTYW1wbGluZ0ZldGNoRGF0YSB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KCk7XG4gIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgY29uc3QgcXVlcnkgPSB1c2VRdWVyeVVSTCgpO1xuICBjb25zdCB1c2VySW5mbyA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUucGVybWlzc2lvbnMudXNlcl9pbmZvKTtcbiAgY29uc3QgZGF0ZUZvcm1hdCA9XG4gICAgdXNlckluZm8uZGF0ZV90aW1lX2Zvcm1hdCA9PT0gJ3VzJ1xuICAgICAgPyAnTU1NIGQsIHl5eXkgaGg6bW0gYWEnXG4gICAgICA6ICdkL01NL3l5eXkgSEg6bW0nO1xuICBjb25zdCBwYWdlVHlwZSA9IHVzZVJlZjxzdHJpbmc+KCcnKTtcbiAgY29uc3QgW3NhbXBsaW5nUHJvcGVydGllcywgc2V0U2FtcGxpbmdQcm9wZXJ0aWVzXSA9XG4gICAgdXNlU3RhdGU8VFNhbXBsaW5nUHJvcGVydGllcz4oKTtcbiAgY29uc3QgeyBzYW1wbGVJZCB9ID0gdXNlUGFyYW1zKCk7XG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5SWQgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICk7XG4gIGNvbnN0IGxvY2FsZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUubmF2X2NvbnRleHRfZGF0YS5uYXZDb250ZXh0LmxvY2FsZSxcbiAgKTtcblxuICBjb25zdCBpbml0Rm9ybWlrVmFsdWVzID0gKFxuICAgIHNhbXBsaW5nUHJvcGVydGllcyxcbiAgICBpc0NhbmNlbGVkLFxuICAgIHRpbWVab25lLFxuICAgIHVzZXJJbmZvLFxuICApID0+IHtcbiAgICBjb25zdCBwYWdlQ29sbGVjdGlvblRpbWUgPSBpc0NvbGxlY3RMYXlvdXQocGFnZVR5cGUuY3VycmVudClcbiAgICAgID8gY29sbGVjdGlvblRpbWVcbiAgICAgIDogY29sbGVjdGlvblRpbWVGb3JtYXQoXG4gICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmNvbGxlY3Rpb25fdGltZSxcbiAgICAgICAgICB0aW1lWm9uZSxcbiAgICAgICAgKTtcbiAgICBjb25zdCBzYW0gPSBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmc7XG4gICAgbGV0IGZvcm1pa1ZhbHVlczogRm9ybVR5cGUgPSB7XG4gICAgICBsYWJfaWQ6IHNhbS5sYWJfaWQsXG4gICAgICBjb2xsZWN0aW9uX3RpbWU6IHBhZ2VDb2xsZWN0aW9uVGltZSxcbiAgICAgIHB1bXBfc2FtcGxpbmdfdm9sdW1lOiBzYW0ucHVtcF9zYW1wbGluZ192b2x1bWUsXG4gICAgICBwdW1wX2JhdHRlcnlfbGV2ZWw6IHNhbS5wdW1wX2JhdHRlcnlfbGV2ZWwsXG4gICAgICBkZXNjcmlwdGlvbjogc2FtLmRlc2NyaXB0aW9uLFxuICAgICAga2FuZG9fcmVwOiBzYW0ua2FuZG9fcmVwLFxuICAgICAgc2FtcGxpbmdfcGxhbl9pZDogc2FtLnNhbXBsaW5nX3BsYW5faWQsXG4gICAgICBjYW5jZWxsYXRpb25fcmVhc29uOiBzYW0uY2FuY2VsbGF0aW9uX3JlYXNvbiB8fCAnJyxcbiAgICAgIGlzX2NhbmNlbGVkOiBpc0NhbmNlbGVkLFxuICAgIH07XG5cbiAgICBpZiAoaXNDYW5jZWxsZWRMYXlvdXQoc2FtcGxpbmdQcm9wZXJ0aWVzKSlcbiAgICAgIGZvcm1pa1ZhbHVlcy5jYW5jZWxlZF9ieV9pZCA9IHtcbiAgICAgICAgbmFtZTogdXNlckluZm8uZmlyc3RfbmFtZSArICcgJyArIHVzZXJJbmZvLmxhc3RfbmFtZSxcbiAgICAgICAgaWQ6IHVzZXJJbmZvLnVzZXJfaWQsXG4gICAgICB9O1xuICAgIGZvcm1pa1ZhbHVlcy5rYW5kb19yZXAgPSBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcua2FuZG9fcmVwO1xuICAgIGZvcm1pay5zZXRWYWx1ZXMoZm9ybWlrVmFsdWVzKTtcbiAgfTtcblxuICBjb25zdCBpc0NhbmNlbGxlZExheW91dCA9IChzYW1wbGluZ1Byb3BlcnRpZXMpID0+IHtcbiAgICBjb25zdCBwYWdlVHlwZTJpc0NhbmNlbGxlZCA9IHtcbiAgICAgIGNhbmNlbDogdHJ1ZSxcbiAgICAgIGNvbGxlY3Q6IGZhbHNlLFxuICAgICAgcmV2ZXJ0X2NhbmNlbDogZmFsc2UsXG4gICAgfTtcbiAgICBsZXQgaXNDYW5jZWxlZCA9IHBhZ2VUeXBlMmlzQ2FuY2VsbGVkW3BhZ2VUeXBlLmN1cnJlbnRdO1xuICAgIGlmIChpc0NhbmNlbGVkID09PSBudWxsKSB7XG4gICAgICBpc0NhbmNlbGVkID0gc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmlzX2NhbmNlbGVkIHx8IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gaXNDYW5jZWxlZDtcbiAgfTtcblxuICBjb25zdCBmZXRjaFNhbXBsaW5nUHJvcGVydGllcyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChzYW1wbGluZ0lkID0gc2FtcGxlSWQsIG9wKSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nSWQgfSkuc2FtcGxpbmdQcm9wZXJ0aWVzLmZldGNoU2FtcGxpbmcudXJsLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNhbXBsaW5nID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIGNvbnN0IHNhbXBsaW5nUHJvcGVydGllcyA9IHNhbXBsaW5nLnNhbXBsaW5nX3Byb3BlcnRpZXM7XG4gICAgICBwYWdlVHlwZS5jdXJyZW50ID0gZGV0ZWN0UGFnZVR5cGUoXG4gICAgICAgIHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5pc19jYW5jZWxlZCxcbiAgICAgICAgb3AsXG4gICAgICApO1xuICAgICAgc2V0Q29sbGVjdGlvblRpbWUoXG4gICAgICAgIGRldGVybWluZUNvbGxlY3Rpb25UaW1lKFxuICAgICAgICAgIGNvbGxlY3Rpb25UaW1lRm9ybWF0KFxuICAgICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmNvbGxlY3Rpb25fdGltZSxcbiAgICAgICAgICAgIHNhbXBsaW5nLnNhbXBsaW5nX3BsYW4udGltZV96b25lLFxuICAgICAgICAgICksXG4gICAgICAgICAgb3AsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgbGV0IGlzQ2FuY2VsZWQgPSBpc0NhbmNlbGxlZExheW91dChcbiAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmlzX2NhbmNlbGVkLFxuICAgICAgKTtcbiAgICAgIGluaXRGb3JtaWtWYWx1ZXMoXG4gICAgICAgIHNhbXBsaW5nUHJvcGVydGllcyxcbiAgICAgICAgaXNDYW5jZWxlZCxcbiAgICAgICAgc2FtcGxpbmcuc2FtcGxpbmdfcGxhbi50aW1lX3pvbmUsXG4gICAgICAgIHVzZXJJbmZvLFxuICAgICAgKTtcbiAgICAgIHNldFNhbXBsaW5nUHJvcGVydGllcyhzYW1wbGluZ1Byb3BlcnRpZXMpO1xuICAgICAgc2V0U2FtcGxpbmdQbGFuKHNhbXBsaW5nLnNhbXBsaW5nX3BsYW4pO1xuICAgIH0sXG4gICAgW10sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFNhbXBsaW5nUHJvcGVydGllcyhzYW1wbGVJZCwgZ2V0VXJsUXVlcnlPcCgpKTtcbiAgfSwgW3NhbXBsaW5nVXBkYXRlZF0pO1xuXG4gIGNvbnN0IHZhbGlkYXRpb25TY2hlbWEgPSBpc0NvbGxlY3RMYXlvdXQocGFnZVR5cGUuY3VycmVudClcbiAgICA/IHByb3BlcnRpZXNWYWxpZGF0aW9uU2NoZW1hXG4gICAgOiBjYW5jZWxsYXRpb25WYWxpZGF0aW9uU2NoZW1hO1xuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWs8Rm9ybWlrQ29uZmlnPEZvcm1UeXBlPj4oe1xuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZSxcbiAgICBpbml0aWFsVmFsdWVzOiBzYW1wbGluZ1Byb3BlcnR5LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHZhbGlkYXRpb25TY2hlbWEsXG4gICAgdmFsaWRhdGVPbkNoYW5nZTogZmFsc2UsXG4gICAgdmFsaWRhdGVPbkJsdXI6IHRydWUsXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGhhbmRsZVN1Ym1pdCh2YWx1ZXMpO1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgIGlmIChsb2NhdGlvbi5rZXkpIHtcbiAgICAgIGhpc3RvcnkuZ29CYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhpc3RvcnkucHVzaChcbiAgICAgICAgdXJscyh7IGxvY2FsZSwgd2F0ZXJBdXRob3JpdHlJZCB9KS5zYW1wbGluZ3NQYWdlLnNhbXBsaW5nc0xpc3RSb3V0ZS51cmwsXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSAodmFsdWVzKSA9PiB7XG4gICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5zYXZpbmcnKSk7XG4gICAgdmFsdWVzLnBpY3R1cmVzX2F0dHJpYnV0ZXMgPSBwaG90b3M7XG4gICAgaWYgKHZhbHVlcy5jYW5jZWxlZF9ieV9pZCAmJiBpc0NhbmNlbGxlZExheW91dChzYW1wbGluZ1Byb3BlcnRpZXMpKVxuICAgICAgdmFsdWVzLmNhbmNlbGVkX2J5X2lkID0gdXNlckluZm8udXNlcl9pZDtcbiAgICBjb25zdCBzYXZlRm9ybURhdGEgPSBmb3JtRGF0YUJ1aWxkZXIodmFsdWVzKTtcbiAgICB1cGRhdGVPckNyZWF0ZShzYXZlRm9ybURhdGEpO1xuICB9O1xuXG4gIGNvbnN0IHNldE9yaWdpbmFsU2F2ZU1lc3NhZ2VXaXRoVGltZW91dCA9ICgpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFNhdmluZ01zZyhpMThuLnQoJ2J1dHRvbnMuc2F2ZScpKTtcbiAgICB9LCAzMDAwKTtcbiAgfTtcblxuICBjb25zdCBmb3JtRGF0YUJ1aWxkZXIgPSAodmFsdWVzKSA9PiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZXMpIHtcbiAgICAgIGlmIChrZXkgIT09ICdwaWN0dXJlc19hdHRyaWJ1dGVzJykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1trZXldID09PSBudWxsID8gJycgOiB2YWx1ZXNba2V5XTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBzYW1wbGluZ1ske2tleX1dYCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgdW5pcXVlUGhvdG9zVG9EZWxldGUgPSBbLi4ubmV3IFNldChwaG90b3NUb0RlbGV0ZSldO1xuICAgIHVuaXF1ZVBob3Rvc1RvRGVsZXRlLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgdW5pcXVlUGhvdG9zVG9EZWxldGUuZm9yRWFjaCgoaWQsIGluZGV4KSA9PiB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICBgc2FtcGxpbmdbcGljdHVyZXNfYXR0cmlidXRlc11bJHtpbmRleH1dW2lkXWAsXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoaWQpLFxuICAgICAgICApO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgYHNhbXBsaW5nW3BpY3R1cmVzX2F0dHJpYnV0ZXNdWyR7aW5kZXh9XVtfZGVzdHJveV1gLFxuICAgICAgICAgICd0cnVlJyxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVPckNyZWF0ZSA9IGFzeW5jIChmb3JtRGF0YSkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZU9yQ3JlYXRlU3VjY2VzcyA9IChtc2cpID0+IHtcbiAgICAgIHNldFNhdmluZ01zZyhpMThuLnQobXNnKSk7XG4gICAgICBzZXRTYW1wbGluZ1VwZGF0ZWQodHJ1ZSk7XG4gICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNhbXBsaW5nSUQgPSBzYW1wbGluZ1Byb3BlcnRpZXM/LnNhbXBsaW5nPy5pZDtcbiAgICBpZiAoc2FtcGxpbmdJRCA9PT0gbnVsbCkge1xuICAgICAgLy8gY3JlYXRlXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoYHNhbXBsaW5nW2RhdGVdYCwgY29sbGVjdGlvblRpbWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXhpb3MucG9zdChcbiAgICAgICAgICB1cmxzKHtcbiAgICAgICAgICAgIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQsXG4gICAgICAgICAgfSkuc2FtcGxpbmdQcm9wZXJ0aWVzLmNyZWF0ZVNhbXBsaW5nLnVybCxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgKTtcbiAgICAgICAgdXBkYXRlT3JDcmVhdGVTdWNjZXNzKCdidXR0b25zLmNyZWF0ZWQnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5lcnJvcicpKTtcbiAgICAgICAgc2V0T3JpZ2luYWxTYXZlTWVzc2FnZVdpdGhUaW1lb3V0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYWdlVHlwZS5jdXJyZW50ID09PSAncmV2ZXJ0X2NhbmNlbCcpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBzYW1wbGluZ1tjb2xsZWN0aW9uX3RpbWVdYCwgY29sbGVjdGlvblRpbWUpO1xuICAgICAgfVxuICAgICAgLy8gdXBkYXRlXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBheGlvcy5wdXQoXG4gICAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nSUQsIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQgfSlcbiAgICAgICAgICAgIC5zYW1wbGluZ1Byb3BlcnRpZXMudXBkYXRlU2FtcGxpbmcudXJsLFxuICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICApO1xuICAgICAgICB1cGRhdGVPckNyZWF0ZVN1Y2Nlc3MoJ2J1dHRvbnMudXBkYXRlZCcpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzZXRTYXZpbmdNc2coaTE4bi50KCdidXR0b25zLmVycm9yJykpO1xuICAgICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGV0ZWN0UGFnZVR5cGUgPSAoaXNTYW1wbGluZ0NhbmNlbGxlZCwgb3ApID0+IHtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gaXNTYW1wbGluZ0NhbmNlbGxlZCA/ICdjYW5jZWwnIDogJ2NvbGxlY3QnO1xuICAgIGlmIChvcCA9PT0gJ2VkaXQnKSB7XG4gICAgICByZXR1cm4gZWRpdFBhZ2VWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKG9wID09PSBDT0xMRUNUX1NBTVBMSU5HX09QKSB7XG4gICAgICByZXR1cm4gJ2NvbGxlY3QnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENBTkNFTF9TQU1QTElOR19PUCkge1xuICAgICAgcmV0dXJuICdjYW5jZWwnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IFJFVkVSVF9DQU5DRUxMQVRJT04pIHtcbiAgICAgIHJldHVybiAncmV2ZXJ0X2NhbmNlbCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZXRlcm1pbmVDb2xsZWN0aW9uVGltZSA9IChzZXJ2ZXJDb2xsZWN0aW9uVGltZSwgb3ApID0+IHtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3Qgc2VydmVyVGltZSA9IHNlcnZlckNvbGxlY3Rpb25UaW1lXG4gICAgICA/IG5ldyBEYXRlKHNlcnZlckNvbGxlY3Rpb25UaW1lKVxuICAgICAgOiBjdXJyZW50VGltZTtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gc2VydmVyQ29sbGVjdGlvblRpbWUgPyBzZXJ2ZXJUaW1lIDogY3VycmVudFRpbWU7XG4gICAgaWYgKG9wID09PSAnZWRpdCcpIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENPTExFQ1RfU0FNUExJTkdfT1ApIHtcbiAgICAgIHJldHVybiBjdXJyZW50VGltZTtcbiAgICB9IGVsc2UgaWYgKFtDQU5DRUxfU0FNUExJTkdfT1AsIFJFVkVSVF9DQU5DRUxMQVRJT05dLmluY2x1ZGVzKG9wKSkge1xuICAgICAgcmV0dXJuIHNlcnZlclRpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRVcmxRdWVyeU9wID0gKCkgPT4ge1xuICAgIGxldCBvcCA9IHF1ZXJ5LmdldCgnb3AnKTtcbiAgICAvLyBpZiBub3QgcHJlc2VudCB0aGVuIGRlZmF1bHQgb3AgaXMgJ2NvbGxlY3RpbmcnXG4gICAgaWYgKFt1bmRlZmluZWQsIG51bGwsICcnXS5pbmNsdWRlcyhvcCkpIHtcbiAgICAgIHJldHVybiBDT0xMRUNUX1NBTVBMSU5HX09QO1xuICAgIH1cbiAgICByZXR1cm4gb3A7XG4gIH07XG5cbiAgaWYgKCFzYW1wbGluZ1BsYW4gfHwgIXNhbXBsaW5nUHJvcGVydGllcykge1xuICAgIHJldHVybiA8U3Bpbm5lciAvPjtcbiAgfVxuXG4gIGlmIChzYW1wbGluZ1Byb3BlcnRpZXMuaXNfcHVtcF9pbl9wcm9ncmVzcykge1xuICAgIHJldHVybiA8U2FtcGxlckluUHJvY2VzcyBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0+XG4gICAgICA8TGF5b3V0PlxuICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzU3R5bGU+XG4gICAgICAgICAgeyFpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZFxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZVxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtzYW1wbGluZ1Byb3BlcnRpZXMgJiYgcGFnZVR5cGUgJiYgKFxuICAgICAgICAgICAgPFNhbXBsaW5nUHJvcGVydGllc0Zvcm1cbiAgICAgICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzPXtzYW1wbGluZ1Byb3BlcnRpZXN9XG4gICAgICAgICAgICAgIHNhbXBsaW5nPXtzYW1wbGluZ1BsYW59XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBzZXRTYW1wbGluZ1VwZGF0ZWQ9e3NldFNhbXBsaW5nVXBkYXRlZH1cbiAgICAgICAgICAgICAgc2F2aW5nTXNnPXtzYXZpbmdNc2d9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAgICAgICAgICAgICAgc2V0UGhvdG9zVG9EZWxldGU9e3NldFBob3Rvc1RvRGVsZXRlfVxuICAgICAgICAgICAgICBzZXRQaG90b3M9e3NldFBob3Rvc31cbiAgICAgICAgICAgICAgcGhvdG9zPXtwaG90b3N9XG4gICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NhbXBsaW5nUHJvcGVydGllc1N0eWxlPlxuICAgICAgPC9MYXlvdXQ+XG4gICAgPC9mb3JtPlxuICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsa0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFdBQUEsR0FBQU4sT0FBQTtBQUVBLElBQUFPLE9BQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFlBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLFFBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLEtBQUEsR0FBQVgsT0FBQTtB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
|