@thetradeengineorg1/snova-shell-module 0.0.3 → 0.0.4
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/bundles/thetradeengineorg1-snova-shell-module.umd.js +5926 -774
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
- package/esm2015/lib/globaldependencies/components/componentbase.js +9 -9
- package/esm2015/lib/globaldependencies/helpers/moment-utc-date-adapter.js +11 -11
- package/esm2015/lib/globaldependencies/intercepter/jwt.interceptor.js +6 -6
- package/esm2015/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/highLightText.pipe.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/orderby-pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/sanitize.pipe.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/softlabels.pipes.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/utctolocaltime.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/workflowstatus.pipes.js +11 -11
- package/esm2015/lib/shell-components/components/Payments/account.component.js +91 -20
- package/esm2015/lib/shell-components/components/Payments/company-information.js +322 -26
- package/esm2015/lib/shell-components/components/Payments/company-plans.component.js +509 -11
- package/esm2015/lib/shell-components/components/Payments/document.component.js +90 -18
- package/esm2015/lib/shell-components/components/Payments/payment-method.component.js +76 -18
- package/esm2015/lib/shell-components/components/Payments/product-service.component.js +317 -22
- package/esm2015/lib/shell-components/components/Payments/purchase-more-licenses.js +119 -22
- package/esm2015/lib/shell-components/components/Payments/transactions.component.js +132 -20
- package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +119 -20
- package/esm2015/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.js +29 -16
- package/esm2015/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.js +55 -19
- package/esm2015/lib/shell-components/components/export-import-configuration/export-configuration.component.js +174 -29
- package/esm2015/lib/shell-components/components/feed-time/feed-time-dialog.component.js +29 -16
- package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +20 -16
- package/esm2015/lib/shell-components/components/header-side/header-side.component.js +763 -73
- package/esm2015/lib/shell-components/components/header-top/header-top.component.js +417 -21
- package/esm2015/lib/shell-components/components/lives/lives-welcome-page.js +39 -10
- package/esm2015/lib/shell-components/components/menu/menu.component.js +962 -74
- package/esm2015/lib/shell-components/components/notifications/announcement-dialog.component.js +57 -20
- package/esm2015/lib/shell-components/components/notifications/notifications.component.js +99 -14
- package/esm2015/lib/shell-components/components/sidebar-top/sidebar-top.component.js +19 -13
- package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +80 -13
- package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +419 -23
- package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +17 -13
- package/esm2015/lib/shell-components/services/authentication.service.js +7 -7
- package/esm2015/lib/shell-components/services/chat.service.js +9 -9
- package/esm2015/lib/shell-components/services/common-used.service.js +7 -7
- package/esm2015/lib/shell-components/services/feature.service.js +7 -7
- package/esm2015/lib/shell-components/services/google-analytics.service.js +6 -6
- package/esm2015/lib/shell-components/services/layout.service.js +6 -6
- package/esm2015/lib/shell-components/services/payment.service.js +7 -7
- package/esm2015/lib/shell-components/services/recentSearch.service.js +9 -9
- package/esm2015/lib/shell-components/services/shell.modules.service.js +11 -11
- package/esm2015/lib/shell-components/services/signalr.service.js +9 -9
- package/esm2015/lib/shell-components/services/theme.service.js +6 -6
- package/esm2015/lib/shell-components/shell.module.js +185 -181
- package/esm2015/lib/shell-components/store/effects/authentication.effects.js +9 -9
- package/esm2015/lib/shell-components/store/effects/chat.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/menuitems.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/notification-validator.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/notifications.effects.js +6 -6
- package/fesm2015/thetradeengineorg1-snova-shell-module.js +5322 -911
- package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
- package/lib/globaldependencies/components/componentbase.d.ts +1 -0
- package/lib/globaldependencies/components/componentbase.d.ts.map +1 -0
- package/lib/globaldependencies/constants/feature-ids.d.ts +1 -0
- package/lib/globaldependencies/constants/feature-ids.d.ts.map +1 -0
- package/lib/globaldependencies/constants/localstorage-properties.d.ts +1 -0
- package/lib/globaldependencies/constants/localstorage-properties.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/dom.helper.d.ts +1 -0
- package/lib/globaldependencies/helpers/dom.helper.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/fontawesome-icons.d.ts +1 -0
- package/lib/globaldependencies/helpers/fontawesome-icons.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts +1 -0
- package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/window.helper.d.ts +1 -0
- package/lib/globaldependencies/helpers/window.helper.d.ts.map +1 -0
- package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts +1 -0
- package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/highLightText.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/highLightText.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/orderby-pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/orderby-pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/sanitize.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/sanitize.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/softlabels.pipes.d.ts +1 -0
- package/lib/globaldependencies/pipes/softlabels.pipes.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts +1 -0
- package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/account.component.d.ts +1 -0
- package/lib/shell-components/components/Payments/account.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/company-information.d.ts +1 -0
- package/lib/shell-components/components/Payments/company-information.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/company-plans.component.d.ts +1 -0
- package/lib/shell-components/components/Payments/company-plans.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/document.component.d.ts +2 -1
- package/lib/shell-components/components/Payments/document.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/payment-method.component.d.ts +1 -0
- package/lib/shell-components/components/Payments/payment-method.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/product-service.component.d.ts +1 -0
- package/lib/shell-components/components/Payments/product-service.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts +1 -0
- package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/transactions.component.d.ts +1 -0
- package/lib/shell-components/components/Payments/transactions.component.d.ts.map +1 -0
- package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts +1 -0
- package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts.map +1 -0
- package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts +1 -0
- package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts.map +1 -0
- package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts +1 -0
- package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
- package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts +1 -0
- package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts.map +1 -0
- package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts +1 -0
- package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts.map +1 -0
- package/lib/shell-components/components/feed-time/feed-time.component.d.ts +1 -0
- package/lib/shell-components/components/feed-time/feed-time.component.d.ts.map +1 -0
- package/lib/shell-components/components/header-side/header-side.component.d.ts +2 -1
- package/lib/shell-components/components/header-side/header-side.component.d.ts.map +1 -0
- package/lib/shell-components/components/header-top/header-top.component.d.ts +1 -0
- package/lib/shell-components/components/header-top/header-top.component.d.ts.map +1 -0
- package/lib/shell-components/components/lives/lives-welcome-page.d.ts +1 -0
- package/lib/shell-components/components/lives/lives-welcome-page.d.ts.map +1 -0
- package/lib/shell-components/components/menu/menu.component.d.ts +1 -0
- package/lib/shell-components/components/menu/menu.component.d.ts.map +1 -0
- package/lib/shell-components/components/menu/searchTask.enum.d.ts +1 -0
- package/lib/shell-components/components/menu/searchTask.enum.d.ts.map +1 -0
- package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts +1 -0
- package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts.map +1 -0
- package/lib/shell-components/components/notifications/notifications.component.d.ts +1 -0
- package/lib/shell-components/components/notifications/notifications.component.d.ts.map +1 -0
- package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts +1 -0
- package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts.map +1 -0
- package/lib/shell-components/components/sidenav/side-bar.component.d.ts +1 -0
- package/lib/shell-components/components/sidenav/side-bar.component.d.ts.map +1 -0
- package/lib/shell-components/components/sidenav/sidenav.component.d.ts +1 -0
- package/lib/shell-components/components/sidenav/sidenav.component.d.ts.map +1 -0
- package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts +1 -0
- package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts.map +1 -0
- package/lib/shell-components/constants/api-urls.d.ts +1 -0
- package/lib/shell-components/constants/api-urls.d.ts.map +1 -0
- package/lib/shell-components/constants/available-languages.d.ts +1 -0
- package/lib/shell-components/constants/available-languages.d.ts.map +1 -0
- package/lib/shell-components/constants/channel-names.d.ts +1 -0
- package/lib/shell-components/constants/channel-names.d.ts.map +1 -0
- package/lib/shell-components/constants/menu-categories.d.ts +1 -0
- package/lib/shell-components/constants/menu-categories.d.ts.map +1 -0
- package/lib/shell-components/constants/notification-routes.d.ts +1 -0
- package/lib/shell-components/constants/notification-routes.d.ts.map +1 -0
- package/lib/shell-components/constants/notification-type-ids.d.ts +1 -0
- package/lib/shell-components/constants/notification-type-ids.d.ts.map +1 -0
- package/lib/shell-components/enum/recentSearchType.enum.d.ts +1 -0
- package/lib/shell-components/enum/recentSearchType.enum.d.ts.map +1 -0
- package/lib/shell-components/models/AppMenuItemModel.d.ts +1 -0
- package/lib/shell-components/models/AppMenuItemModel.d.ts.map +1 -0
- package/lib/shell-components/models/AppNotification.d.ts +1 -0
- package/lib/shell-components/models/AppNotification.d.ts.map +1 -0
- package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/ChannelUpdateModel.d.ts +1 -0
- package/lib/shell-components/models/ChannelUpdateModel.d.ts.map +1 -0
- package/lib/shell-components/models/EmployeeStatusModel.d.ts +1 -0
- package/lib/shell-components/models/EmployeeStatusModel.d.ts.map +1 -0
- package/lib/shell-components/models/IAdjust-screen-options.d.ts +1 -0
- package/lib/shell-components/models/IAdjust-screen-options.d.ts.map +1 -0
- package/lib/shell-components/models/IBadge.d.ts +1 -0
- package/lib/shell-components/models/IBadge.d.ts.map +1 -0
- package/lib/shell-components/models/IChildItem.d.ts +1 -0
- package/lib/shell-components/models/IChildItem.d.ts.map +1 -0
- package/lib/shell-components/models/ILayout-change-options.d.ts +1 -0
- package/lib/shell-components/models/ILayout-change-options.d.ts.map +1 -0
- package/lib/shell-components/models/IMenuItem.d.ts +1 -0
- package/lib/shell-components/models/IMenuItem.d.ts.map +1 -0
- package/lib/shell-components/models/IlayoutConf.d.ts +1 -0
- package/lib/shell-components/models/IlayoutConf.d.ts.map +1 -0
- package/lib/shell-components/models/IntroModel.d.ts +1 -0
- package/lib/shell-components/models/IntroModel.d.ts.map +1 -0
- package/lib/shell-components/models/MessageDetails.d.ts +1 -0
- package/lib/shell-components/models/MessageDetails.d.ts.map +1 -0
- package/lib/shell-components/models/MessageTypingDetails.d.ts +1 -0
- package/lib/shell-components/models/MessageTypingDetails.d.ts.map +1 -0
- package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/NotificationsOutPutModel.d.ts +1 -0
- package/lib/shell-components/models/NotificationsOutPutModel.d.ts.map +1 -0
- package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts +1 -0
- package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts.map +1 -0
- package/lib/shell-components/models/RecentSearchModel.d.ts +1 -0
- package/lib/shell-components/models/RecentSearchModel.d.ts.map +1 -0
- package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts +1 -0
- package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/ReportSubmittedNotification.d.ts +1 -0
- package/lib/shell-components/models/ReportSubmittedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/RoleUpdatedNotification.d.ts +1 -0
- package/lib/shell-components/models/RoleUpdatedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/UserStoryAssignedNotification.d.ts +1 -0
- package/lib/shell-components/models/UserStoryAssignedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/archiveUserStoryModel.d.ts +1 -0
- package/lib/shell-components/models/archiveUserStoryModel.d.ts.map +1 -0
- package/lib/shell-components/models/companieslist.model.d.ts +1 -0
- package/lib/shell-components/models/companieslist.model.d.ts.map +1 -0
- package/lib/shell-components/models/company-model.d.ts +1 -0
- package/lib/shell-components/models/company-model.d.ts.map +1 -0
- package/lib/shell-components/models/company-payment-model.d.ts +1 -0
- package/lib/shell-components/models/company-payment-model.d.ts.map +1 -0
- package/lib/shell-components/models/dragedWidget.d.ts +1 -0
- package/lib/shell-components/models/dragedWidget.d.ts.map +1 -0
- package/lib/shell-components/models/employee-List.d.ts +1 -0
- package/lib/shell-components/models/employee-List.d.ts.map +1 -0
- package/lib/shell-components/models/employee.d.ts +1 -0
- package/lib/shell-components/models/employee.d.ts.map +1 -0
- package/lib/shell-components/models/entityRoleFeature.d.ts +1 -0
- package/lib/shell-components/models/entityRoleFeature.d.ts.map +1 -0
- package/lib/shell-components/models/export-configuration-model.d.ts +1 -0
- package/lib/shell-components/models/export-configuration-model.d.ts.map +1 -0
- package/lib/shell-components/models/export-data.module.d.ts +1 -0
- package/lib/shell-components/models/export-data.module.d.ts.map +1 -0
- package/lib/shell-components/models/goalApprovedNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/goalApprovedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/import-configuration-model.d.ts +1 -0
- package/lib/shell-components/models/import-configuration-model.d.ts.map +1 -0
- package/lib/shell-components/models/initialStatusofUsers.d.ts +1 -0
- package/lib/shell-components/models/initialStatusofUsers.d.ts.map +1 -0
- package/lib/shell-components/models/invoiceOutput-model.d.ts +1 -0
- package/lib/shell-components/models/invoiceOutput-model.d.ts.map +1 -0
- package/lib/shell-components/models/leaveApplicationNotifiction.d.ts +1 -0
- package/lib/shell-components/models/leaveApplicationNotifiction.d.ts.map +1 -0
- package/lib/shell-components/models/multiChartsScheduling.d.ts +1 -0
- package/lib/shell-components/models/multiChartsScheduling.d.ts.map +1 -0
- package/lib/shell-components/models/parkUserStoryInputModel.d.ts +1 -0
- package/lib/shell-components/models/parkUserStoryInputModel.d.ts.map +1 -0
- package/lib/shell-components/models/project.d.ts +1 -0
- package/lib/shell-components/models/project.d.ts.map +1 -0
- package/lib/shell-components/models/recentSearchApiModel.d.ts +1 -0
- package/lib/shell-components/models/recentSearchApiModel.d.ts.map +1 -0
- package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts +1 -0
- package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts.map +1 -0
- package/lib/shell-components/models/shellModulesInfo.d.ts +1 -0
- package/lib/shell-components/models/shellModulesInfo.d.ts.map +1 -0
- package/lib/shell-components/models/softlabels-model.d.ts +1 -0
- package/lib/shell-components/models/softlabels-model.d.ts.map +1 -0
- package/lib/shell-components/models/sprintReplanRequestedModel.d.ts +1 -0
- package/lib/shell-components/models/sprintReplanRequestedModel.d.ts.map +1 -0
- package/lib/shell-components/models/sprintStartedNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/sprintStartedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/store-model.d.ts +1 -0
- package/lib/shell-components/models/store-model.d.ts.map +1 -0
- package/lib/shell-components/models/store-search-model.d.ts +1 -0
- package/lib/shell-components/models/store-search-model.d.ts.map +1 -0
- package/lib/shell-components/models/themes.model.d.ts +1 -0
- package/lib/shell-components/models/themes.model.d.ts.map +1 -0
- package/lib/shell-components/models/timesheetenabledisable.d.ts +1 -0
- package/lib/shell-components/models/timesheetenabledisable.d.ts.map +1 -0
- package/lib/shell-components/models/user.d.ts +1 -0
- package/lib/shell-components/models/user.d.ts.map +1 -0
- package/lib/shell-components/models/userStory.d.ts +1 -0
- package/lib/shell-components/models/userStory.d.ts.map +1 -0
- package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/userstory-custom-fields.model.d.ts +1 -0
- package/lib/shell-components/models/userstory-custom-fields.model.d.ts.map +1 -0
- package/lib/shell-components/models/validation.model.d.ts +1 -0
- package/lib/shell-components/models/validation.model.d.ts.map +1 -0
- package/lib/shell-components/models/widgetlist.d.ts +1 -0
- package/lib/shell-components/models/widgetlist.d.ts.map +1 -0
- package/lib/shell-components/models/workspaceList.d.ts +1 -0
- package/lib/shell-components/models/workspaceList.d.ts.map +1 -0
- package/lib/shell-components/services/authentication.service.d.ts +1 -0
- package/lib/shell-components/services/authentication.service.d.ts.map +1 -0
- package/lib/shell-components/services/chat.service.d.ts +1 -0
- package/lib/shell-components/services/chat.service.d.ts.map +1 -0
- package/lib/shell-components/services/common-used.service.d.ts +1 -0
- package/lib/shell-components/services/common-used.service.d.ts.map +1 -0
- package/lib/shell-components/services/feature.service.d.ts +1 -0
- package/lib/shell-components/services/feature.service.d.ts.map +1 -0
- package/lib/shell-components/services/google-analytics.service.d.ts +1 -0
- package/lib/shell-components/services/google-analytics.service.d.ts.map +1 -0
- package/lib/shell-components/services/layout.service.d.ts +1 -0
- package/lib/shell-components/services/layout.service.d.ts.map +1 -0
- package/lib/shell-components/services/payment.service.d.ts +1 -0
- package/lib/shell-components/services/payment.service.d.ts.map +1 -0
- package/lib/shell-components/services/recentSearch.service.d.ts +1 -0
- package/lib/shell-components/services/recentSearch.service.d.ts.map +1 -0
- package/lib/shell-components/services/shell.modules.service.d.ts +1 -0
- package/lib/shell-components/services/shell.modules.service.d.ts.map +1 -0
- package/lib/shell-components/services/signalr.service.d.ts +1 -0
- package/lib/shell-components/services/signalr.service.d.ts.map +1 -0
- package/lib/shell-components/services/theme.service.d.ts +1 -0
- package/lib/shell-components/services/theme.service.d.ts.map +1 -0
- package/lib/shell-components/shell.module.d.ts +2 -1
- package/lib/shell-components/shell.module.d.ts.map +1 -0
- package/lib/shell-components/shell.routing.d.ts +1 -0
- package/lib/shell-components/shell.routing.d.ts.map +1 -0
- package/lib/shell-components/store/actions/authentication.actions.d.ts +1 -0
- package/lib/shell-components/store/actions/authentication.actions.d.ts.map +1 -0
- package/lib/shell-components/store/actions/chat.actions.d.ts +1 -0
- package/lib/shell-components/store/actions/chat.actions.d.ts.map +1 -0
- package/lib/shell-components/store/actions/menuitems.actions.d.ts +1 -0
- package/lib/shell-components/store/actions/menuitems.actions.d.ts.map +1 -0
- package/lib/shell-components/store/actions/notification-validator.action.d.ts +1 -0
- package/lib/shell-components/store/actions/notification-validator.action.d.ts.map +1 -0
- package/lib/shell-components/store/actions/notifications.actions.d.ts +1 -0
- package/lib/shell-components/store/actions/notifications.actions.d.ts.map +1 -0
- package/lib/shell-components/store/effects/authentication.effects.d.ts +1 -0
- package/lib/shell-components/store/effects/authentication.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/chat.effects.d.ts +1 -0
- package/lib/shell-components/store/effects/chat.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/index.d.ts +1 -0
- package/lib/shell-components/store/effects/index.d.ts.map +1 -0
- package/lib/shell-components/store/effects/menuitems.effects.d.ts +1 -0
- package/lib/shell-components/store/effects/menuitems.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/notification-validator.effects.d.ts +1 -0
- package/lib/shell-components/store/effects/notification-validator.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/notifications.effects.d.ts +1 -0
- package/lib/shell-components/store/effects/notifications.effects.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/authentication.reducers.d.ts +1 -0
- package/lib/shell-components/store/reducers/authentication.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/chat.reducers.d.ts +1 -0
- package/lib/shell-components/store/reducers/chat.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/index.d.ts +1 -0
- package/lib/shell-components/store/reducers/index.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/menuitems.reducers.d.ts +1 -0
- package/lib/shell-components/store/reducers/menuitems.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts +1 -0
- package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/notifications.reducers.d.ts +1 -0
- package/lib/shell-components/store/reducers/notifications.reducers.d.ts.map +1 -0
- package/package.json +5 -5
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -0
- package/store/reducers/index.d.ts +1 -0
- package/store/reducers/index.d.ts.map +1 -0
- package/thetradeengineorg1-snova-shell-module.d.ts +1 -0
- package/thetradeengineorg1-snova-shell-module.d.ts.map +1 -0
package/esm2015/lib/shell-components/components/notifications/announcement-dialog.component.js
CHANGED
|
@@ -7,8 +7,8 @@ import * as i1 from "@angular/material/dialog";
|
|
|
7
7
|
import * as i2 from "@angular/router";
|
|
8
8
|
import * as i3 from "@fortawesome/angular-fontawesome";
|
|
9
9
|
import * as i4 from "@angular/material/card";
|
|
10
|
-
import * as i5 from "@
|
|
11
|
-
import * as i6 from "@
|
|
10
|
+
import * as i5 from "@angular/flex-layout/flex";
|
|
11
|
+
import * as i6 from "@thetradeengineorg1/snova-avatar";
|
|
12
12
|
import * as i7 from "@angular/material/tooltip";
|
|
13
13
|
import * as i8 from "../../../globaldependencies/pipes/removeSpecialCharacters.pipe";
|
|
14
14
|
import * as i9 from "../../../globaldependencies/pipes/fetchSizedAndCachedImage.pipe";
|
|
@@ -53,21 +53,58 @@ export class AnnoucementDialogComponent extends CustomAppBaseComponent {
|
|
|
53
53
|
super.ngOnInit();
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
AnnoucementDialogComponent.ɵfac =
|
|
57
|
-
AnnoucementDialogComponent.ɵcmp = i0.ɵɵ
|
|
58
|
-
i0.ɵɵ
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
56
|
+
AnnoucementDialogComponent.ɵfac = function AnnoucementDialogComponent_Factory(t) { return new (t || AnnoucementDialogComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA), i0.ɵɵdirectiveInject(i1.MatDialog)); };
|
|
57
|
+
AnnoucementDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AnnoucementDialogComponent, selectors: [["announcement-dialog"]], inputs: { _data: ["data", "_data"] }, outputs: { closeMatDialog: "closeMatDialog" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 19, consts: [[1, "custom-dialog"], ["mat-dialog-close", "", 1, "custom-close", 3, "click"], ["icon", "times", 1, "project-dialog"], ["mat-dialog-content", "", "id", "style-1", 1, "project-dialogContent"], [1, "p-0"], ["fxLayout", "row", 1, "announcement"], ["fxFlex", "", "fxLayout", "column"], ["fxFlex", "100px", "fxLayoutAlign", "space-around center"], ["matTooltipClass", "tooltipClass-mat", "size", "80", 3, "matTooltip", "name", "src", "isRound"], ["fxFlex", "", "fxLayoutAlign", "space-around center", 2, "text-align", "center"], [3, "innerHTML"], ["fxFlex", "20px", "fxLayoutAlign", "space-around center", 1, "mb-1"]], template: function AnnoucementDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
59
|
+
i0.ɵɵelementStart(1, "div", 1);
|
|
60
|
+
i0.ɵɵlistener("click", function AnnoucementDialogComponent_Template_div_click_1_listener() { return ctx.onNoClick(); });
|
|
61
|
+
i0.ɵɵelement(2, "fa-icon", 2);
|
|
62
|
+
i0.ɵɵelementEnd();
|
|
63
|
+
i0.ɵɵelementEnd();
|
|
64
|
+
i0.ɵɵelementStart(3, "div", 3);
|
|
65
|
+
i0.ɵɵelementStart(4, "mat-card", 4);
|
|
66
|
+
i0.ɵɵelementStart(5, "div", 5);
|
|
67
|
+
i0.ɵɵelementStart(6, "div", 6);
|
|
68
|
+
i0.ɵɵelementStart(7, "div", 7);
|
|
69
|
+
i0.ɵɵelement(8, "app-avatar", 8);
|
|
70
|
+
i0.ɵɵpipe(9, "removeSpecialCharacters");
|
|
71
|
+
i0.ɵɵpipe(10, "fetchSizedAndCachedImage");
|
|
72
|
+
i0.ɵɵelementEnd();
|
|
73
|
+
i0.ɵɵelementStart(11, "div", 9);
|
|
74
|
+
i0.ɵɵelement(12, "span", 10);
|
|
75
|
+
i0.ɵɵpipe(13, "sanitizeHtml");
|
|
76
|
+
i0.ɵɵelementEnd();
|
|
77
|
+
i0.ɵɵelementStart(14, "div", 11);
|
|
78
|
+
i0.ɵɵtext(15);
|
|
79
|
+
i0.ɵɵpipe(16, "date");
|
|
80
|
+
i0.ɵɵpipe(17, "utcToLocalTime");
|
|
81
|
+
i0.ɵɵelementEnd();
|
|
82
|
+
i0.ɵɵelementEnd();
|
|
83
|
+
i0.ɵɵelementEnd();
|
|
84
|
+
i0.ɵɵelementEnd();
|
|
85
|
+
i0.ɵɵelementEnd();
|
|
86
|
+
} if (rf & 2) {
|
|
87
|
+
i0.ɵɵadvance(8);
|
|
88
|
+
i0.ɵɵpropertyInterpolate("matTooltip", ctx.announcedBy);
|
|
89
|
+
i0.ɵɵproperty("name", i0.ɵɵpipeBind1(9, 6, ctx.announcedBy))("src", i0.ɵɵpipeBind3(10, 8, ctx.announcedByUserImage, "80", ""))("isRound", true);
|
|
90
|
+
i0.ɵɵadvance(4);
|
|
91
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind1(13, 12, ctx.announcement), i0.ɵɵsanitizeHtml);
|
|
92
|
+
i0.ɵɵadvance(3);
|
|
93
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(16, 14, i0.ɵɵpipeBind1(17, 17, ctx.announcedOn), "dd/MM/yyyy HH:mm"), " ");
|
|
94
|
+
} }, directives: [i1.MatDialogClose, i3.FaIconComponent, i1.MatDialogContent, i4.MatCard, i5.DefaultLayoutDirective, i5.DefaultFlexDirective, i5.DefaultLayoutAlignDirective, i6.SnovasysAvatarComponent, i7.MatTooltip], pipes: [i8.RemoveSpecialCharactersPipe, i9.FetchSizedAndCachedImagePipe, i10.SanitizeHtmlPipe, i11.DatePipe, i12.UtcToLocalTimePipe], encapsulation: 2 });
|
|
95
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnnoucementDialogComponent, [{
|
|
96
|
+
type: Component,
|
|
97
|
+
args: [{
|
|
98
|
+
selector: "announcement-dialog",
|
|
99
|
+
templateUrl: "./announcement-dialog.component.html"
|
|
100
|
+
}]
|
|
101
|
+
}], function () { return [{ type: i1.MatDialogRef }, { type: i2.Router }, { type: undefined, decorators: [{
|
|
102
|
+
type: Inject,
|
|
103
|
+
args: [MAT_DIALOG_DATA]
|
|
104
|
+
}] }, { type: i1.MatDialog }]; }, { closeMatDialog: [{
|
|
105
|
+
type: Output
|
|
106
|
+
}], _data: [{
|
|
107
|
+
type: Input,
|
|
108
|
+
args: ["data"]
|
|
109
|
+
}] }); })();
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3VuY2VtZW50LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL25vdGlmaWNhdGlvbnMvYW5ub3VuY2VtZW50LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL25vdGlmaWNhdGlvbnMvYW5ub3VuY2VtZW50LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUEyQixNQUFNLDBCQUEwQixDQUFDO0FBR3BGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sdURBQXVELENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBTy9ELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxzQkFBc0I7SUE0QmxFLFlBQ1csU0FBbUQsRUFDbkQsTUFBYyxFQUFrQyxJQUFTLEVBQVMsTUFBaUI7UUFDMUYsS0FBSyxFQUFFLENBQUM7UUFGRCxjQUFTLEdBQVQsU0FBUyxDQUEwQztRQUNuRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQWtDLFNBQUksR0FBSixJQUFJLENBQUs7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBN0JwRixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUErQmxELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUMxRCxDQUFDO0lBbkNELElBQ0ksS0FBSyxDQUFDLElBQVM7UUFDZixJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzVCLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLGVBQWUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDckUsSUFBSSxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUM7YUFDcEU7U0FDSjtJQUNMLENBQUM7SUFzQkQsU0FBUztRQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQzs7b0dBL0NRLDBCQUEwQiwrRkE4QkEsZUFBZTs2RUE5QnpDLDBCQUEwQjtRQ1p2Qyw4QkFBMkI7UUFDdkIsOEJBQWlFO1FBQXRCLG9HQUFTLGVBQVcsSUFBQztRQUM1RCw2QkFBdUQ7UUFDM0QsaUJBQU07UUFDVixpQkFBTTtRQUNOLDhCQUFtRTtRQUMvRCxtQ0FBc0I7UUFDbEIsOEJBQXlDO1FBQ3JDLDhCQUE4QjtRQUMxQiw4QkFBd0Q7UUFDcEQsZ0NBRWE7OztRQUNqQixpQkFBTTtRQUNOLCtCQUE0RTtRQUN4RSw0QkFBdUQ7O1FBQzNELGlCQUFNO1FBQ04sZ0NBQXFFO1FBQ2pFLGFBQ0o7OztRQUFBLGlCQUFNO1FBQ1YsaUJBQU07UUFDVixpQkFBTTtRQUNWLGlCQUFXO1FBQ2YsaUJBQU07O1FBYjZELGVBQTRCO1FBQTVCLHVEQUE0QjtRQUFDLDREQUE4QyxrRUFBQSxpQkFBQTtRQUtwSCxlQUF5QztRQUF6Qyx1RkFBeUM7UUFHL0MsZUFDSjtRQURJLG9IQUNKOzt1RkRQSCwwQkFBMEI7Y0FMdEMsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFdBQVcsRUFBRSxzQ0FBc0M7YUFDdEQ7O3NCQWdDK0IsTUFBTTt1QkFBQyxlQUFlO2dEQTdCeEMsY0FBYztrQkFBdkIsTUFBTTtZQUdILEtBQUs7a0JBRFIsS0FBSzttQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYsIE1hdERpYWxvZyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gXCJAbmdyeC9zdG9yZVwiO1xyXG5pbXBvcnQgeyBDdXN0b21BcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbXBvbmVudHMvY29tcG9uZW50YmFzZSc7XHJcbmltcG9ydCAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2hlbHBlcnMvZm9udGF3ZXNvbWUtaWNvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJhbm5vdW5jZW1lbnQtZGlhbG9nXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2Fubm91bmNlbWVudC1kaWFsb2cuY29tcG9uZW50Lmh0bWxcIlxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFubm91Y2VtZW50RGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tQXBwQmFzZUNvbXBvbmVudCB7XHJcbiAgICBAT3V0cHV0KCkgY2xvc2VNYXREaWFsb2cgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgICBASW5wdXQoXCJkYXRhXCIpXHJcbiAgICBzZXQgX2RhdGEoZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxldCBhbm5vdWNlbWVudERhdGEgPSBkYXRhWzBdO1xyXG4gICAgICAgICAgICBpZiAoYW5ub3VjZW1lbnREYXRhKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnREaWFsb2dJZCA9IGFubm91Y2VtZW50RGF0YS5kaWFsb2dJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudERpYWxvZyA9IHRoaXMuZGlhbG9nLmdldERpYWxvZ0J5SWQodGhpcy5jdXJyZW50RGlhbG9nSWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbm5vdW5jZW1lbnRJZCA9IGFubm91Y2VtZW50RGF0YS5hbm5vdW5jZW1lbnRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VtZW50ID0gYW5ub3VjZW1lbnREYXRhLmFubm91bmNlbWVudDtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VkQnkgPSBhbm5vdWNlbWVudERhdGEuYW5ub3VuY2VkQnk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFubm91bmNlZEJ5SWQgPSBhbm5vdWNlbWVudERhdGEuYW5ub3VuY2VkQnlJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VkT24gPSBhbm5vdWNlbWVudERhdGEuYW5ub3VuY2VkT247XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFubm91bmNlZEJ5VXNlckltYWdlID0gYW5ub3VjZW1lbnREYXRhLmFubm91bmNlZEJ5VXNlckltYWdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYW5ub3VuY2VtZW50SWQ6IHN0cmluZztcclxuICAgIGFubm91bmNlbWVudDogc3RyaW5nO1xyXG4gICAgYW5ub3VuY2VkQnk6IHN0cmluZztcclxuICAgIGFubm91bmNlZE9uOiBzdHJpbmc7XHJcbiAgICBhbm5vdW5jZWRCeUlkOiBzdHJpbmc7XHJcbiAgICBhbm5vdW5jZWRCeVVzZXJJbWFnZTogc3RyaW5nO1xyXG4gICAgY3VycmVudERpYWxvZ0lkOiBzdHJpbmc7XHJcbiAgICBjdXJyZW50RGlhbG9nOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIEFwcERpYWxvZzogTWF0RGlhbG9nUmVmPEFubm91Y2VtZW50RGlhbG9nQ29tcG9uZW50PixcclxuICAgICAgICBwdWJsaWMgcm91dGVzOiBSb3V0ZXIsIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LCBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2cpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuYW5ub3VuY2VtZW50SWQgPSBkYXRhLmFubm91bmNlbWVudElkO1xyXG4gICAgICAgIHRoaXMuYW5ub3VuY2VtZW50ID0gZGF0YS5hbm5vdW5jZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5hbm5vdW5jZWRCeSA9IGRhdGEuYW5ub3VuY2VkQnk7XHJcbiAgICAgICAgdGhpcy5hbm5vdW5jZWRCeUlkID0gZGF0YS5hbm5vdW5jZWRCeUlkO1xyXG4gICAgICAgIHRoaXMuYW5ub3VuY2VkT24gPSBkYXRhLmFubm91bmNlZE9uO1xyXG4gICAgICAgIHRoaXMuYW5ub3VuY2VkQnlVc2VySW1hZ2UgPSBkYXRhLmFubm91bmNlZEJ5VXNlckltYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTm9DbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNsb3NlTWF0RGlhbG9nLmVtaXQoXCJcIik7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RGlhbG9nLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY3VzdG9tLWRpYWxvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1jbG9zZVwiIG1hdC1kaWFsb2ctY2xvc2UgKGNsaWNrKT1cIm9uTm9DbGljaygpXCI+XHJcbiAgICAgICAgPGZhLWljb24gaWNvbj1cInRpbWVzXCIgY2xhc3M9XCJwcm9qZWN0LWRpYWxvZ1wiPjwvZmEtaWNvbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJwcm9qZWN0LWRpYWxvZ0NvbnRlbnRcIiBpZD1cInN0eWxlLTFcIj5cclxuICAgIDxtYXQtY2FyZCBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBjbGFzcz1cImFubm91bmNlbWVudFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGZ4RmxleCBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIxMDBweFwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1hcm91bmQgY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1hdmF0YXIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7e2Fubm91bmNlZEJ5fX1cIiBbbmFtZV09XCJhbm5vdW5jZWRCeSB8IHJlbW92ZVNwZWNpYWxDaGFyYWN0ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJhbm5vdW5jZWRCeVVzZXJJbWFnZSB8IGZldGNoU2l6ZWRBbmRDYWNoZWRJbWFnZTogJzgwJzonJ1wiIFtpc1JvdW5kXT1cInRydWVcIiBzaXplPVwiODBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2FwcC1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZnhGbGV4IGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1hcm91bmQgY2VudGVyXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJhbm5vdW5jZW1lbnQgfCBzYW5pdGl6ZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xXCIgZnhGbGV4PVwiMjBweFwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1hcm91bmQgIGNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGFubm91bmNlZE9uIHwgdXRjVG9Mb2NhbFRpbWUgfCBkYXRlOiAnZGQvTU0veXl5eSBISDptbScgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -22,14 +22,79 @@ import * as i6 from "ngx-toastr";
|
|
|
22
22
|
import * as i7 from "@angular/material/dialog";
|
|
23
23
|
import * as i8 from "../../../globaldependencies/pipes/orderby-pipe";
|
|
24
24
|
import * as i9 from "../../services/signalr.service";
|
|
25
|
-
import * as i10 from "@angular/
|
|
25
|
+
import * as i10 from "@angular/common";
|
|
26
26
|
import * as i11 from "@angular/material/divider";
|
|
27
|
-
import * as i12 from "@angular/
|
|
27
|
+
import * as i12 from "@angular/material/list";
|
|
28
28
|
import * as i13 from "@angular/flex-layout/extended";
|
|
29
29
|
import * as i14 from "@ngx-translate/core";
|
|
30
30
|
import * as i15 from "../../../globaldependencies/pipes/sanitize.pipe";
|
|
31
31
|
import * as i16 from "ngx-timeago";
|
|
32
32
|
import * as i17 from "../../../globaldependencies/pipes/utctolocaltime.pipe";
|
|
33
|
+
const _c0 = function (a0, a1) { return { "notificataion-unread": a0, "notificataion-read": a1 }; };
|
|
34
|
+
function NotificationsComponent_div_4_mat_nav_list_1_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
36
|
+
i0.ɵɵelementStart(0, "mat-nav-list", 7);
|
|
37
|
+
i0.ɵɵelementStart(1, "mat-list-item", 8);
|
|
38
|
+
i0.ɵɵlistener("click", function NotificationsComponent_div_4_mat_nav_list_1_Template_mat_list_item_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r6); const notification_r4 = restoredCtx.$implicit; const ctx_r5 = i0.ɵɵnextContext(2); return ctx_r5.upsertReadNewNotification(notification_r4); });
|
|
39
|
+
i0.ɵɵelementStart(2, "div");
|
|
40
|
+
i0.ɵɵelementStart(3, "a");
|
|
41
|
+
i0.ɵɵelementStart(4, "div", 9);
|
|
42
|
+
i0.ɵɵelement(5, "div", 10);
|
|
43
|
+
i0.ɵɵpipe(6, "sanitizeHtml");
|
|
44
|
+
i0.ɵɵelementStart(7, "small", 11);
|
|
45
|
+
i0.ɵɵtext(8);
|
|
46
|
+
i0.ɵɵpipe(9, "timeago");
|
|
47
|
+
i0.ɵɵpipe(10, "utcToLocalTime");
|
|
48
|
+
i0.ɵɵelementEnd();
|
|
49
|
+
i0.ɵɵelementEnd();
|
|
50
|
+
i0.ɵɵelementEnd();
|
|
51
|
+
i0.ɵɵelementEnd();
|
|
52
|
+
i0.ɵɵelementEnd();
|
|
53
|
+
i0.ɵɵelementEnd();
|
|
54
|
+
} if (rf & 2) {
|
|
55
|
+
const notification_r4 = ctx.$implicit;
|
|
56
|
+
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
57
|
+
i0.ɵɵadvance(1);
|
|
58
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(9, _c0, !ctx_r3.notificationColor, ctx_r3.notificationColor));
|
|
59
|
+
i0.ɵɵadvance(4);
|
|
60
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind1(6, 3, notification_r4.summary), i0.ɵɵsanitizeHtml);
|
|
61
|
+
i0.ɵɵadvance(3);
|
|
62
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 5, i0.ɵɵpipeBind1(10, 7, notification_r4.createdDateTime)));
|
|
63
|
+
} }
|
|
64
|
+
function NotificationsComponent_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
+
i0.ɵɵelementStart(0, "div", 5);
|
|
66
|
+
i0.ɵɵtemplate(1, NotificationsComponent_div_4_mat_nav_list_1_Template, 11, 12, "mat-nav-list", 6);
|
|
67
|
+
i0.ɵɵpipe(2, "orderBy");
|
|
68
|
+
i0.ɵɵelementEnd();
|
|
69
|
+
} if (rf & 2) {
|
|
70
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
71
|
+
i0.ɵɵadvance(1);
|
|
72
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, ctx_r0.newNotifications));
|
|
73
|
+
} }
|
|
74
|
+
function NotificationsComponent_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
+
i0.ɵɵelementStart(0, "div", 12);
|
|
76
|
+
i0.ɵɵtext(1);
|
|
77
|
+
i0.ɵɵpipe(2, "translate");
|
|
78
|
+
i0.ɵɵelementEnd();
|
|
79
|
+
} if (rf & 2) {
|
|
80
|
+
i0.ɵɵadvance(1);
|
|
81
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "NOTIFICATIONS.NONOTIFICATIONSTITLE"), "");
|
|
82
|
+
} }
|
|
83
|
+
function NotificationsComponent_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
84
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
85
|
+
i0.ɵɵelementStart(0, "div", 13);
|
|
86
|
+
i0.ɵɵelementStart(1, "label", 14);
|
|
87
|
+
i0.ɵɵelementStart(2, "a", 15);
|
|
88
|
+
i0.ɵɵlistener("click", function NotificationsComponent_div_7_Template_a_click_2_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return ctx_r7.clearNewAll($event); });
|
|
89
|
+
i0.ɵɵtext(3);
|
|
90
|
+
i0.ɵɵpipe(4, "translate");
|
|
91
|
+
i0.ɵɵelementEnd();
|
|
92
|
+
i0.ɵɵelementEnd();
|
|
93
|
+
i0.ɵɵelementEnd();
|
|
94
|
+
} if (rf & 2) {
|
|
95
|
+
i0.ɵɵadvance(3);
|
|
96
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, "NOTIFICATIONS.CLEARALLNOTIFICATIONS"));
|
|
97
|
+
} }
|
|
33
98
|
export class NotificationsComponent {
|
|
34
99
|
constructor(router, pubnub, store, actionUpdates$, cookieService, toastr, dialog, orderByPipe, signalr, cdRef) {
|
|
35
100
|
this.router = router;
|
|
@@ -435,15 +500,35 @@ export class NotificationsComponent {
|
|
|
435
500
|
this.ngDestroyed$.next();
|
|
436
501
|
}
|
|
437
502
|
}
|
|
438
|
-
NotificationsComponent.ɵfac =
|
|
439
|
-
NotificationsComponent.ɵcmp = i0.ɵɵ
|
|
440
|
-
i0.ɵɵ
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThDLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBVyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUk1QyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHlCQUF5QixFQUF1QixNQUFNLDRDQUE0QyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxxQkFBcUIsRUFBMkIsd0JBQXdCLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUV6SyxPQUFPLEtBQUssb0JBQW9CLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFLNUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0RBQStELENBQUM7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QUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ25EO0lBRUgsQ0FBQztJQUVELFdBQVcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7YUFDM0QsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO2dCQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzthQUN2QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDOzttSEFuYlUsc0JBQXNCO3VHQUF0QixzQkFBc0IsbUdDN0NuQywrcERBNkJNOzJGRGdCTyxzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLGdDQUFnQztpQkFDOUM7MFVBSVUsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSB9IGZyb20gXCJAbmdyeC9lZmZlY3RzXCI7XHJcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tIFwiQG5ncngvc3RvcmVcIjtcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gXCJuZ3gtY29va2llLXNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcbmltcG9ydCB7IFB1Yk51YkFuZ3VsYXIgfSBmcm9tIFwicHVibnViLWFuZ3VsYXIyXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLCBSb2xlc0ZldGNoVHJpZ2dlcmVkIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvYXV0aGVudGljYXRpb24uYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBDbGVhckFsbE5vdGlmaWNhdGlvbnMsIE5ld05vdGlmaWNhdGlvblJlY2VpdmVkLCBOb3RpZmljYXRpb25zQWN0aW9uVHlwZXMsIFVwc2VydFVucmVhZE5vdGlmaWNhdGlvbnNUcmlnZ2VyZWQgfSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9ub3RpZmljYXRpb25zLmFjdGlvbnNcIjtcclxuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcclxuaW1wb3J0ICogYXMgc2hhcmVkTW9kdWxlUmVkdWNlcnMgZnJvbSBcIi4uLy4uL3N0b3JlL3JlZHVjZXJzL2luZGV4XCI7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblR5cGVJZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm90aWZpY2F0aW9uLXR5cGUtaWRzJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uTW9kZWwsIE5vdGlmaWNhdGlvbk91dHB1dE1vZGVsLCBVc2VyTm90aWZpY2F0aW9uUmVhZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL05vdGlmaWNhdGlvbnNPdXRQdXRNb2RlbCc7XHJcbmltcG9ydCB7IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zb2Z0bGFiZWxzLW1vZGVsJztcclxuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXInO1xyXG5pbXBvcnQgeyBPcmRlckJ5UGlwZSB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9waXBlcy9vcmRlcmJ5LXBpcGUnO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbnN0YW50cy9sb2NhbHN0b3JhZ2UtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IENoYW5uZWxOYW1lcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jaGFubmVsLW5hbWVzJztcclxuaW1wb3J0IHsgQ2hhbm5lbFJvdXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub3RpZmljYXRpb24tcm91dGVzJztcclxuaW1wb3J0IHsgVXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvVXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBSb2xlVXBkYXRlZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9Sb2xlVXBkYXRlZE5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9SZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBSZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9SZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IE11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZyB9IGZyb20gJy4uLy4uL21vZGVscy9tdWx0aUNoYXJ0c1NjaGVkdWxpbmcnO1xyXG5pbXBvcnQgeyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0Fzc2V0QXNzaWduZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IE5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IEdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgVXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyU3RvcnlDb21tZW50Tm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgU3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFNwcmludFJlcGxhblN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zcHJpbnRSZXBsYW5SZXF1ZXN0ZWRNb2RlbCc7XHJcbmltcG9ydCB7IEFubm91Y2VtZW50RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9hbm5vdW5jZW1lbnQtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEd1aWQgfSBmcm9tICdndWlkLXR5cGVzY3JpcHQnO1xyXG5pbXBvcnQgJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9oZWxwZXJzL2ZvbnRhd2Vzb21lLWljb25zJztcclxuaW1wb3J0ICogYXMgXyBmcm9tIFwidW5kZXJzY29yZVwiO1xyXG5pbXBvcnQgeyBTaWduYWxyU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC1ub3RpZmljYXRpb25zXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgbm90aWZpY1BhbmVsO1xyXG5cclxuICBwdWJsaWMgbmdEZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcclxuICBjb25zdE5vdGlmaWNhdGlvbl9Xb3JrSXRlbUFzc2lnbmVkVG9Vc2VyID0gTm90aWZpY2F0aW9uVHlwZUlkcy5Ob3RpZmljYXRpb25fV29ya0l0ZW1Bc3NpZ25lZFRvVXNlcjtcclxuICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25PdXRwdXRNb2RlbFtdPjtcclxuICBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25PdXRwdXRNb2RlbFtdO1xyXG4gIHNvZnRMYWJlbHM6IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbFtdO1xyXG4gIGxvYWRpbmdOb3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICBzZWxlY3RlZE5vdGlmaWNhdGlvbjogVXNlck5vdGlmaWNhdGlvblJlYWRNb2RlbDtcclxuICBhbm5vdW5jZW1lbnRJZDogc3RyaW5nO1xyXG4gIGFubm91bmNlTm90aWZpY2F0aW9uSWQ6IHN0cmluZztcclxuICBub3RpZmljYXRpb25Db2xvciA9IGZhbHNlO1xyXG4gIGF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkJDogT2JzZXJ2YWJsZTxVc2VyTW9kZWw+O1xyXG4gIG5ld05vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbk1vZGVsW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHB1Ym51YjogUHViTnViQW5ndWxhciwgcHJpdmF0ZSBzdG9yZTogU3RvcmU8U3RhdGU+LFxyXG4gICAgcHJpdmF0ZSBhY3Rpb25VcGRhdGVzJDogQWN0aW9ucywgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLCBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZywgcHJpdmF0ZSBvcmRlckJ5UGlwZTogT3JkZXJCeVBpcGUsIHByaXZhdGUgc2lnbmFscjogU2lnbmFsclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwpIHtcclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcy5Vc2VyRGV0YWlsc0ZldGNoZWRBZnRlckxvZ2luKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBDdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gVGFzayBBc3NpZ25tZW50IE5vdGlmaWNhaXRvbnMgaGVyZS5cclxuICAgICAgICAgICAgY29uc3QgdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVGFza0Fzc2lnbm1lbnRzICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgdGFzdGF0dXNSZXBvcnRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1N0YXR1c1JlcG9ydFN1Ym1pc3Npb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TdGF0dXNDb25maWdBc3NpZ24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBtdWx0aUNoYXJ0c1NjaGVkdWxpbmdDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTXVsdGlDaGFydHNTY2hlZHVsaW5nICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQXNzZXRBc3NpZ25tZW50ICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTmV3UHJvamVjdCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Qcm9qZWN0TWVtYmVyUm9sZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Hb2FsQXBwcm92ZWRGcm9tUmVwbGFuICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IEFubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bbm5vdW5jZW1lbnROb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9SZW1pbmRlck5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IFBlcmZvcm1hbmNlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Blcm9mb3JtYW5jZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5Q29tbWVudCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHNwcmludFN0YXJ0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3ByaW50U3RhcnRlZCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHNwcmludFJlcGxhbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TcHJpbnRSZXF1ZXN0ZWRUb1JlcGxhbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGllZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9MZWF2ZUFwcGxpZWQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBBcHByb3ZlTGVhdmVDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQXBwcm92ZUxlYXZlICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgUmVqZWN0TGVhdmVDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUmVqZWN0TGVhdmUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBSZXNpZ25hdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9SZXNpZ25hdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IEFwcHJvdmVSZXNpZ25hdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9BcHByb3ZlUmVzaWduYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBSZWplY3RSZXNpZ25hdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9SZWplY3RSZXNpZ25hdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IEF1dG9USW1lc2hlZXRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0F1dG9UaW1lc2hlZXRTdWJtaXNzaW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgUHJvYmF0aW9uQXNzaWduTm90aWZpY2F0aW9uID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUHJvYmF0aW9uQXNzaWduTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgUmV2aWV3QXNzaWduVG9FbXBsb3llZU5vdGlmaWNhdGlvbiA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Jldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBSZXZpZXdTdWJtaXR0ZWRCeUVtcGxveWVlTm90aWZpY2F0aW9uID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IFJldmlld0ludml0YXRpb25Ob3RpZmljYXRpb25Nb2RlbCA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Jldmlld0ludml0YXRpb25Ob3RpZmljYXRpb25Nb2RlbCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IFBlcmZvcm1hbmNlUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbiA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1BlcmZvcm1hbmNlUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IFBlcmZvcm1hbmNlUmV2aWV3SW52aXRhdGlvbk5vdGlmaWNhdGlvbk1vZGVsID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUGVyZm9ybWFuY2VSZXZpZXdJbnZpdGF0aW9uTm90aWZpY2F0aW9uTW9kZWwgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBQZXJmb3JtYW5jZVJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9QZXJmb3JtYW5jZVJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvIFwiICsgdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0byBcIiArIHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvIFwiICsgdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgcHJvamVjdEFjY2Vzc1RvTWVtYmVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgQW5ub3VuY2VtZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgc3ByaW50U3RhcnRlZENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBzcHJpbnRSZXBsYW5DaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgUmVtaW5kZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBjaGFubmVsczogW3Rhc2tBc3NpZ25tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50bywgdGFzdGF0dXNSZXBvcnRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICAgICAgICAgIFByb2JhdGlvbkFzc2lnbk5vdGlmaWNhdGlvbiwgUmV2aWV3QXNzaWduVG9FbXBsb3llZU5vdGlmaWNhdGlvbiwgUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbixcclxuICAgICAgICAgICAgICAgIFJldmlld0ludml0YXRpb25Ob3RpZmljYXRpb25Nb2RlbCwgUGVyZm9ybWFuY2VSZXZpZXdTdWJtaXR0ZWRCeUVtcGxveWVlTm90aWZpY2F0aW9uLCBQZXJmb3JtYW5jZVJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24sXHJcbiAgICAgICAgICAgICAgICB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8sIG11bHRpQ2hhcnRzU2NoZWR1bGluZ0NoYW5uZWxUb1N1YnNjcmliZUludG8sIFBlcmZvcm1hbmNlUmV2aWV3SW52aXRhdGlvbk5vdGlmaWNhdGlvbk1vZGVsLFxyXG4gICAgICAgICAgICAgICAgYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBwcm9qZWN0Q3JlYXRlZENoYW5uZWxUb1N1YnNjcmliZUludG8sICxcclxuICAgICAgICAgICAgICAgIHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8sIGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgICAgICAgICB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG8sIFJlamVjdFJlc2lnbmF0aW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICAgICAgICAgIHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBzcHJpbnRTdGFydGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgUmVzaWduYXRpb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBBcHByb3ZlUmVzaWduYXRpb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgICAgICAgICAgc3ByaW50UmVwbGFuQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgbGVhdmVBcHBsaWVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgQXBwcm92ZUxlYXZlQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgUmVqZWN0TGVhdmVDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgICAgICAgICAgUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBBdXRvVEltZXNoZWV0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG9dXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyBBZGQgb3RoZXIgc3Vic2NyaXB0aW9ucyBoZXJlLlxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJVc2VyIG5vdCBsb2dnZWQgaW4geWV0IHRvIGJlIGFibGUgdG8gc3Vic2NyaWJlLlwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgb2ZUeXBlKEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMuVXNlckRldGFpbHNGZXRjaGVkQWZ0ZXJMb2dpbiksXHJcbiAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgIHZhciByb2xlVXBkYXRlc0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Sb2xlVXBkYXRlcyArIFwiMTlCNkY5RkMtNzM3MC00QjlDLUEwNUMtM0I4RDgxOUVFRUFGXCI7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvIFwiICsgcm9sZVVwZGF0ZXNDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgIHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIGNoYW5uZWxzOiBbcm9sZVVwZGF0ZXNDaGFubmVsVG9TdWJzY3JpYmVJbnRvXVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIG9mVHlwZShOb3RpZmljYXRpb25zQWN0aW9uVHlwZXMuQ2xlYXJBbGxVbnJlYWROb3RpZmljYXRpb25zQ29tcGxldGVkKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Tm90aWZpY2F0aW9uQWxsKSk7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0geDtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAvLyBjb25zdCBzdG9yZUxpc3RuZXIgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyhcIi0tLS0tLS0tLVJlY2VpdmVkIHB1Ym51YiBtZXNzYWdlLS0tLS0tLS0tXCIpO1xyXG4gICAgLy8gICAvLyB0aGlzLnRvYXN0ci5pbmZvKG1lc3NhZ2UubWVzc2FnZS5TdW1tYXJ5KTtcclxuICAgIC8vICAgdHJ5IHtcclxuICAgIC8vICAgICAvLyBSZWNlaXZpbmcgdGhlIFVzZXIgU3RvcnkgQXNzaWduZWQgTm90aWZpY2F0aW9uXHJcbiAgICAvLyAgICAgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLk5vdGlmaWNhdGlvbl9Xb3JrSXRlbUFzc2lnbmVkVG9Vc2VyKSB7XHJcbiAgICAvLyAgICAgICB2YXIgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24gPSBuZXcgVXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgIC8vICAgICAgIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICB1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld1dvcmtJdGVtICsgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZCh1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgLy8gICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkID09IE5vdGlmaWNhdGlvblR5cGVJZHMuTm90aWZpY2F0aW9uX1JvbGVVcGRhdGVkKSB7XHJcbiAgICAvLyAgICAgICB2YXIgcm9sZVVwZGF0ZWROb3RpZmljYXRpb24gPSBuZXcgUm9sZVVwZGF0ZWROb3RpZmljYXRpb24oKTtcclxuICAgIC8vICAgICAgIHJvbGVVcGRhdGVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICByb2xlVXBkYXRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChyb2xlVXBkYXRlZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgLy8gICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgIC8vICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlN0YXR1c19SZXBvcnRfU3VtaXR0ZWQpIHtcclxuICAgIC8vICAgICAgIHZhciByZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24gPSBuZXcgUmVwb3J0U3VibWl0dGVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAvLyAgICAgICByZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIHJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChyZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24pKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5TdGF0dXNfUmVwb3J0X0NvbmZpZ19DcmVhdGVkKSB7XHJcbiAgICAvLyAgICAgICB2YXIgcmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24gPSBuZXcgUmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgIC8vICAgICAgIHJlcG9ydENvbmZpZ0Fzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICByZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChyZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgLy8gICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgIC8vICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLk11bHRpcGxlX0NoYXJ0c19TY2hlZHVsaW5nX2NyZWF0ZWQpIHtcclxuICAgIC8vICAgICAgIHZhciBtdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcgPSBuZXcgTXVsdGlwbGVDaGFydHNTY2hlZHVsaW5nKCk7XHJcbiAgICAvLyAgICAgICBtdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIG11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZy5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChtdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcpKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Bc3NldHNfQXNzaWdubWVudCkge1xyXG4gICAgLy8gICAgICAgY29uc3QgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmVtaW5kZXJfTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgLy8gICAgICAgY29uc3QgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuQW5ub3VuY2VtZW50X1JlY2VpdmVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgLy8gICAgICAgY29uc3QgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlLklkICE9IHRoaXMuYW5ub3VuY2VOb3RpZmljYXRpb25JZCkge1xyXG4gICAgLy8gICAgICAgICB0aGlzLmFubm91bmNlTm90aWZpY2F0aW9uSWQgPSBtZXNzYWdlLm1lc3NhZ2UuSWQ7XHJcbiAgICAvLyAgICAgICAgIHRoaXMub3BlbkFubm91bmNlbWVudERpYWxvZyhtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlBlcmZvcm1hbmNlX1JlY2VpdmVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSB8fCBtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUHJvamVjdE1lbWJlclJvbGVBZGRlZE5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgLy8gICAgICAgY29uc3QgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24gPSBuZXcgTmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgLy8gICAgICAgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgLy8gICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLk5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8IG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9qZWN0TWVtYmVyUm9sZUFkZGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAvLyAgICAgICBjb25zdCBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbiA9IG5ldyBOZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAvLyAgICAgICBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgLy8gICAgICAgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgLy8gICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24pKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuR29hbEFwcHJvdmVkRnJvbVJlcGxhbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgIC8vICAgICAgIGNvbnN0IGdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsID0gbmV3IEdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAvLyAgICAgICBnb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbC5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgLy8gICAgICAgZ29hbEFwcHJvdmVkTm90aWZpY2F0aW9uTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgLy8gICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoZ29hbEFwcHJvdmVkTm90aWZpY2F0aW9uTW9kZWwpKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuVVNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAvLyAgICAgICBjb25zdCB1c2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25Nb2RlbCA9IG5ldyBVc2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgLy8gICAgICAgdXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIHVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgLy8gICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlB1c2hOb3RpZmljYXRpb25Gb3JVc2VyU3RvcnlDb21tZW50LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgLy8gICAgICAgY29uc3QgdXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsID0gbmV3IFVzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgLy8gICAgICAgdXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICB1c2VyU3RvcnlDb21tZW50Tm90aWZpY2F0aW9uTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgLy8gICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQodXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgLy8gICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlNwcmludFN0YXJ0ZWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAvLyAgICAgICBjb25zdCBzcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwgPSBuZXcgU3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAvLyAgICAgICBzcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIHNwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChzcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwpKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuU3ByaW50UmVxdWVzdGRGb3JSRXBsYW4udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAvLyAgICAgICBjb25zdCBzcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwgPSBuZXcgU3ByaW50UmVwbGFuU3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAvLyAgICAgICBzcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIHNwcmludFJlcGxhblN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChzcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwpKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgIC8vIFRPRE86IFNlbmQgdGhlc2UgZXJyb3JzIG9udG8gc2VydmVyIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmdcclxuICAgIC8vICAgICAgIGNvbnNvbGUubG9nKFwiRm91bmQgdW5kZXRlY3RlZCBub3RpZmljYXRpb24gdHlwZS4gXCIgKyBtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICAvLyBBZGQgb3RoZXIgbm90aWZpY2F0aW9ucyBoZXJlLlxyXG5cclxuICAgIC8vICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XHJcbiAgICAvLyAgICAgLy8gVE9ETzogU2VuZCB0aGVzZSBleGNlcHRpb25zIG9udG8gc2VydmVyIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmdcclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIkV4Y2VwdGlvbiBPY2N1cmVkXCIgKyBleGNlcHRpb24ubWVzc2FnZSk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH07XHJcblxyXG4gICAgLy8gdGhpcy5wdWJudWIuYWRkTGlzdGVuZXIoe1xyXG4gICAgLy8gICBzdGF0dXM6IHN0ID0+IHtcclxuICAgIC8vICAgICBpZiAoc3QuY2F0ZWdvcnkgPT09IFwiUE5Vbmtub3duQ2F0ZWdvcnlcIikge1xyXG4gICAgLy8gICAgICAgdmFyIG5ld1N0YXRlID0ge1xyXG4gICAgLy8gICAgICAgICBuZXc6IFwiZXJyb3JcIlxyXG4gICAgLy8gICAgICAgfTtcclxuICAgIC8vICAgICAgIHRoaXMucHVibnViLnNldFN0YXRlKFxyXG4gICAgLy8gICAgICAgICB7XHJcbiAgICAvLyAgICAgICAgICAgc3RhdGU6IG5ld1N0YXRlXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgLy8gZnVuY3Rpb24gKHN0YXR1cykge1xyXG4gICAgLy8gICAgICAgICAvLyAgIGNvbnNvbGUubG9nKHN0LmVycm9yRGF0YS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgICAgLy8gfVxyXG4gICAgLy8gICAgICAgKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIG1lc3NhZ2U6IG1lc3NhZ2UgPT4ge1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJlZCB0byBcIiArIG1lc3NhZ2UpO1xyXG4gICAgLy8gICAgIHN0b3JlTGlzdG5lcihtZXNzYWdlKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyb3V0ZUNoYW5nZSkgPT4ge1xyXG4gICAgICAgIGlmIChyb3V0ZUNoYW5nZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm5vdGlmaWNQYW5lbCkge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNQYW5lbC5jbG9zZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnNpZ25hbHIubm90aWZpY2F0aW9ucyQuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5uZXdOb3RpZmljYXRpb25zID0gZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDAgPyBkYXRhIDogW107XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldFNvZnRMYWJlbENvbmZpZ3VyYXRpb25zKCk7XHJcblxyXG4gICAgdGhpcy5ub3RpZmljYXRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Tm90aWZpY2F0aW9uQWxsKSxcclxuICAgICAgdGFwKHggPT4gY29uc29sZS5sb2coeCkpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuYXV0aGVudGljYXRlZFVzZXJSZWNvcmQkID0gdGhpcy5zdG9yZS5waXBlKFxyXG4gICAgICBzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0QXV0aGVudGljYXRlZFVzZXJNb2RlbClcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nTm90aWZpY2F0aW9ucyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldE5vdGlmaWNhdGlvbnNMb2FkaW5nKSk7XHJcbiAgfVxyXG5cclxuICBnZXRTb2Z0TGFiZWxDb25maWd1cmF0aW9ucygpIHtcclxuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckFsbChlKSB7XHJcbiAgICBjb25zdCBub3RpZmljYXRpb25zID0gW107XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICBub3RpZmljYXRpb25zLnB1c2goZWxlbWVudCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IENsZWFyQWxsTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKSk7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkNvbG9yID0gIXRoaXMubm90aWZpY2F0aW9uQ29sb3I7XHJcbiAgfVxyXG5cclxuICAvLyBvcGVuQW5ub3VuY2VtZW50RGlhbG9nKGFubm91bmNlZCkge1xyXG4gIC8vICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcclxuICAvLyAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQW5ub3VjZW1lbnREaWFsb2dDb21wb25lbnQsIHtcclxuICAvLyAgICAgbWluV2lkdGg6IFwiNjB2d1wiLFxyXG4gIC8vICAgICBtYXhXaWR0aDogXCI2MHZ3XCIsXHJcbiAgLy8gICAgIG1pbkhlaWdodDogXCI1MHZoXCIsXHJcbiAgLy8gICAgIG1heEhlaWdodDogXCI4MHZoXCIsXHJcbiAgLy8gICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAvLyAgICAgZGF0YToge1xyXG4gIC8vICAgICAgIGFubm91bmNlbWVudElkOiBhbm5vdW5jZWQuQW5ub3VuY2VtZW50SWQsXHJcbiAgLy8gICAgICAgYW5ub3VuY2VtZW50OiBhbm5vdW5jZWQuQW5ub3VuY2VtZW50LFxyXG4gIC8vICAgICAgIGFubm91bmNlZEJ5OiBhbm5vdW5jZWQuQW5ub3VuY2VkQnksXHJcbiAgLy8gICAgICAgYW5ub3VuY2VkQnlJZDogYW5ub3VuY2VkLkFubm91bmNlZEJ5SWQsXHJcbiAgLy8gICAgICAgYW5ub3VuY2VkQnlVc2VySW1hZ2U6IGFubm91bmNlZC5Bbm5vdW5jZWRCeVVzZXJJbWFnZSxcclxuICAvLyAgICAgICBhbm5vdW5jZWRPbjogYW5ub3VuY2VkLkFubm91bmNlZE9uXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsb3NlTWF0RGlhbG9nLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ub3RpZmljYXRpb25zLmZpbmRJbmRleCgocCkgPT4gcC5ub3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5hbm5vdW5jZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgLy8gICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgLy8gICAgICAgdGhpcy51cHNlcnRSZWFkTm90aWZpY2F0aW9uKHRoaXMubm90aWZpY2F0aW9uc1tpbmRleF0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHVwc2VydFJlYWROb3RpZmljYXRpb24oc2VsZWN0ZWROb3RpZmljYXRpb24pIHtcclxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSBbXTtcclxuICAgIHZhciByb2xlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Sb2xlRmVhdHVyZXMpKTtcclxuICAgIGxldCBGZWF0dXJlX0FwcHJvdmVPclJlamVjdExlYXZlID0gJzJDMjI5MTZGLUI4MEItNEM1MS05NTM0LTIzRjY5OERFMTIwQic7XHJcbiAgICBsZXQgY2FuQWNjZXNzX2ZlYXR1cmVfQXBwcm92ZU9yUmVqZWN0TGVhdmUgPSBfLmZpbmQocm9sZXMsIGZ1bmN0aW9uIChyb2xlKSB7IHJldHVybiByb2xlWydmZWF0dXJlSWQnXS50b0xvd2VyQ2FzZSgpID09IEZlYXR1cmVfQXBwcm92ZU9yUmVqZWN0TGVhdmUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpOyB9KSAhPSBudWxsO1xyXG4gICAgY29uc3QgQ3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIG5vdGlmaWNhdGlvbnMucHVzaChzZWxlY3RlZE5vdGlmaWNhdGlvbik7XHJcbiAgICBjb25zdCBub3RpaWZjYXRpb25tb2RlbCA9IEpTT04ucGFyc2Uoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uSnNvbik7XHJcbiAgICBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLk5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8XHJcbiAgICAgIHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9qZWN0TWVtYmVyUm9sZUFkZGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Qcm9qZWN0R3VpZCArIFwiL2FjdGl2ZS1nb2Fsc1wiXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Hb2FsQXBwcm92ZWRGcm9tUmVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuR29hbEd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLk5vdGlmaWNhdGlvbl9Xb3JrSXRlbUFzc2lnbmVkVG9Vc2VyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJTdG9yeUd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlVTZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJTdG9yeUlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5TcHJpbnRTdGFydGVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnQvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5TcHJpbnRHdWlkXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuUHVzaE5vdGlmaWNhdGlvbkZvclVzZXJTdG9yeUNvbW1lbnQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlclN0b3J5R3VpZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuR29hbFJlcXVlc3RkRm9yUkVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuR29hbEd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlNwcmludFJlcXVlc3RkRm9yUkVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnQvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5TcHJpbnRHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Ob3RpZmljYXRpb25fQWRob2NXb3JrSXRlbUFzc2lnbmVkVG9Vc2VyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW0vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VyU3RvcnlHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5BZGhvY1VTZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW0vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VyU3RvcnlJZF0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLkxlYXZlQXBwbGljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpICYmIGNhbkFjY2Vzc19mZWF0dXJlX0FwcHJvdmVPclJlamVjdExlYXZlKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImhybWFuYWdtZW50L2xlYXZlc1wiXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuQXBwcm92ZUxlYXZlQXBwbGljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlL1wiICsgQ3VycmVudFVzZXJJZCArIFwiL2xlYXZlcy1wZXJtaXNzaW9uc1wiXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuUmVqZWN0TGVhdmVBcHBsaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBDdXJyZW50VXNlcklkICsgXCIvbGVhdmVzLXBlcm1pc3Npb25zXCJdKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5BdXRvVGltZVNoZWV0U3VibWlzc2lvbk5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBDdXJyZW50VXNlcklkICsgXCIvdGltZXNoZWV0QXBwcm92YWxcIl0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlByb2JhdGlvbkFzc2lnbk5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VySWQgKyBcIi9wcm9iYXRpb25cIl0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlL1wiICsgQ3VycmVudFVzZXJJZCArIFwiL3Byb2JhdGlvblwiXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VySWQgKyBcIi9wcm9iYXRpb25cIl0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlJldmlld0ludml0YXRpb25Ob3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlcklkICsgXCIvcHJvYmF0aW9uXCJdKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5QZXJmb3JtYW5jZVJldmlld1N1Ym1pdHRlZEJ5RW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlcklkICsgXCIvcGVyZm9ybWFuY2VcIl0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlBlcmZvcm1hbmNlUmV2aWV3SW52aXRhdGlvbk5vdGlmaWNhdGlvbk1vZGVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvcHJvZmlsZS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJJZCArIFwiL3BlcmZvcm1hbmNlXCJdKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5QZXJmb3JtYW5jZVJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlL1wiICsgQ3VycmVudFVzZXJJZCArIFwiL3BlcmZvcm1hbmNlXCJdKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwc2VydFVucmVhZE5vdGlmaWNhdGlvbnNUcmlnZ2VyZWQobm90aWZpY2F0aW9ucykpO1xyXG4gIH1cclxuXHJcbiAgdXBzZXJ0UmVhZE5ld05vdGlmaWNhdGlvbihub3RpZmljYXRpb24pIHtcclxuICAgIGxldCBub3RlczogTm90aWZpY2F0aW9uTW9kZWxbXSA9IFtub3RpZmljYXRpb25dO1xyXG4gICAgdGhpcy5zaWduYWxyLnVwc2VydFJlYWROZXdOb3RpZmljYXRpb25zKG5vdGVzKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5zaWduYWxyLnJlbW92ZUl0ZW1Gcm9tTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb24uaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBpZiAobm90aWZpY2F0aW9uLm5hdmlnYXRpb25VcmwpIHtcclxuICAgICAgd2luZG93Lm9wZW4obm90aWZpY2F0aW9uLm5hdmlnYXRpb25VcmwsIFwiX2JsYW5rXCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNsZWFyTmV3QWxsKGUpIHtcclxuICAgIHRoaXMuc2lnbmFsci51cHNlcnRSZWFkTmV3Tm90aWZpY2F0aW9ucyh0aGlzLm5ld05vdGlmaWNhdGlvbnMpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLnNpZ25hbHIucmVtb3ZlQWxsTm90aWZpY2F0aW9ucygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYXQtYmctcHJpbWFyeSBwdC0xIHBiLTFcIj5cclxuICA8IS0tIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiKGxvYWRpbmdOb3RpZmljYXRpb25zJCB8IGFzeW5jKVwiPjwvbWF0LXByb2dyZXNzLWJhcj4gLS0+XHJcbiAgPGg2IGNsYXNzPVwibS0wXCI+e3sgJ05PVElGSUNBVElPTlMuTk9USUZJQ0FUSU9OU1RJVExFJyB8IHRyYW5zbGF0ZSB9fSAoe3tuZXdOb3RpZmljYXRpb25zPy5sZW5ndGh9fSk8L2g2PlxyXG48L2Rpdj5cclxuPGRpdiBpZD1cInN0eWxlLTFcIiAqbmdJZj1cIm5ld05vdGlmaWNhdGlvbnMubGVuZ3RoICE9IDBcIj5cclxuICA8bWF0LW5hdi1saXN0IGNsYXNzPVwibm90aWZpY2F0aW9uLWxpc3QgcC0wIHByLTAzXCIgcm9sZT1cImxpc3RcIlxyXG4gICAgKm5nRm9yPVwibGV0IG5vdGlmaWNhdGlvbiBvZiAobmV3Tm90aWZpY2F0aW9ucyB8IG9yZGVyQnkpXCIgPlxyXG4gICAgPG1hdC1saXN0LWl0ZW0gY2xhc3M9XCJub3RpZmljLWl0ZW0gIHByLTAzIG5vdGlmaWNhdGlvbi1tYXJnaW5cIiByb2xlPVwibGlzdGl0ZW1cIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J25vdGlmaWNhdGFpb24tdW5yZWFkJzogIW5vdGlmaWNhdGlvbkNvbG9yICwnbm90aWZpY2F0YWlvbi1yZWFkJzogbm90aWZpY2F0aW9uQ29sb3IgfVwiXHJcbiAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJvcGVuXCIgKGNsaWNrKT1cInVwc2VydFJlYWROZXdOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKVwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxhPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1saXN0LXRleHQgcGwtMCBwci0wMyBub3RpZmljYXRpb24tY3Vyc29yIG5vdGlmaWNhdGlvbnMtbGlzdC1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3b3JkLWJyZWFrIGRpc3BsYXktcHJlLWxpbmVcIiBzdHlsZT1cIm1hcmdpbjogMHB4ICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm5vdGlmaWNhdGlvbi5zdW1tYXJ5IHwgc2FuaXRpemVIdG1sXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0aW1lIHRleHQtbXV0ZWRcIj57eyBub3RpZmljYXRpb24uY3JlYXRlZERhdGVUaW1lIHwgdXRjVG9Mb2NhbFRpbWUgfCB0aW1lYWdvIH19PC9zbWFsbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgPC9tYXQtbmF2LWxpc3Q+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcC0xXCIgKm5nSWY9XCJuZXdOb3RpZmljYXRpb25zLmxlbmd0aCA9PSAwXCI+XHJcbiAge3sgJ05PVElGSUNBVElPTlMuTk9OT1RJRklDQVRJT05TVElUTEUnIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbjxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtMDUgbWItMDVcIiAqbmdJZj1cIm5ld05vdGlmaWNhdGlvbnMubGVuZ3RoXCI+XHJcbiAgPGxhYmVsIGNsYXNzPVwibWItMFwiPjxhIChjbGljayk9XCJjbGVhck5ld0FsbCgkZXZlbnQpXCI+e3sgJ05PVElGSUNBVElPTlMuQ0xFQVJBTExOT1RJRklDQVRJT05TJyB8IHRyYW5zbGF0ZVxyXG4gICAgICB9fTwvYT48L2xhYmVsPlxyXG48L2Rpdj4iXX0=
|
|
503
|
+
NotificationsComponent.ɵfac = function NotificationsComponent_Factory(t) { return new (t || NotificationsComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.PubNubAngular), i0.ɵɵdirectiveInject(i3.Store), i0.ɵɵdirectiveInject(i4.Actions), i0.ɵɵdirectiveInject(i5.CookieService), i0.ɵɵdirectiveInject(i6.ToastrService), i0.ɵɵdirectiveInject(i7.MatDialog), i0.ɵɵdirectiveInject(i8.OrderByPipe), i0.ɵɵdirectiveInject(i9.SignalrService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
504
|
+
NotificationsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NotificationsComponent, selectors: [["app-notifications"]], inputs: { notificPanel: "notificPanel" }, decls: 8, vars: 7, consts: [[1, "text-center", "mat-bg-primary", "pt-1", "pb-1"], [1, "m-0"], ["id", "style-1", 4, "ngIf"], ["class", "text-center p-1", 4, "ngIf"], ["class", "text-center mt-05 mb-05", 4, "ngIf"], ["id", "style-1"], ["class", "notification-list p-0 pr-03", "role", "list", 4, "ngFor", "ngForOf"], ["role", "list", 1, "notification-list", "p-0", "pr-03"], ["role", "listitem", "routerLinkActive", "open", 1, "notific-item", "pr-03", "notification-margin", 3, "ngClass", "click"], [1, "mat-list-text", "pl-0", "pr-03", "notification-cursor", "notifications-list-item"], [1, "word-break", "display-pre-line", 2, "margin", "0px !important", 3, "innerHTML"], [1, "time", "text-muted"], [1, "text-center", "p-1"], [1, "text-center", "mt-05", "mb-05"], [1, "mb-0"], [3, "click"]], template: function NotificationsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
505
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
506
|
+
i0.ɵɵelementStart(1, "h6", 1);
|
|
507
|
+
i0.ɵɵtext(2);
|
|
508
|
+
i0.ɵɵpipe(3, "translate");
|
|
509
|
+
i0.ɵɵelementEnd();
|
|
510
|
+
i0.ɵɵelementEnd();
|
|
511
|
+
i0.ɵɵtemplate(4, NotificationsComponent_div_4_Template, 3, 3, "div", 2);
|
|
512
|
+
i0.ɵɵtemplate(5, NotificationsComponent_div_5_Template, 3, 3, "div", 3);
|
|
513
|
+
i0.ɵɵelement(6, "mat-divider");
|
|
514
|
+
i0.ɵɵtemplate(7, NotificationsComponent_div_7_Template, 5, 3, "div", 4);
|
|
515
|
+
} if (rf & 2) {
|
|
516
|
+
i0.ɵɵadvance(2);
|
|
517
|
+
i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind1(3, 5, "NOTIFICATIONS.NOTIFICATIONSTITLE"), " (", ctx.newNotifications == null ? null : ctx.newNotifications.length, ")");
|
|
518
|
+
i0.ɵɵadvance(2);
|
|
519
|
+
i0.ɵɵproperty("ngIf", ctx.newNotifications.length != 0);
|
|
520
|
+
i0.ɵɵadvance(1);
|
|
521
|
+
i0.ɵɵproperty("ngIf", ctx.newNotifications.length == 0);
|
|
522
|
+
i0.ɵɵadvance(2);
|
|
523
|
+
i0.ɵɵproperty("ngIf", ctx.newNotifications.length);
|
|
524
|
+
} }, directives: [i10.NgIf, i11.MatDivider, i10.NgForOf, i12.MatNavList, i12.MatListItem, i1.RouterLinkActive, i10.NgClass, i13.DefaultClassDirective], pipes: [i14.TranslatePipe, i8.OrderByPipe, i15.SanitizeHtmlPipe, i16.TimeagoPipe, i17.UtcToLocalTimePipe], encapsulation: 2 });
|
|
525
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NotificationsComponent, [{
|
|
526
|
+
type: Component,
|
|
527
|
+
args: [{
|
|
528
|
+
selector: "app-notifications",
|
|
529
|
+
templateUrl: "./notifications.component.html"
|
|
530
|
+
}]
|
|
531
|
+
}], function () { return [{ type: i1.Router }, { type: i2.PubNubAngular }, { type: i3.Store }, { type: i4.Actions }, { type: i5.CookieService }, { type: i6.ToastrService }, { type: i7.MatDialog }, { type: i8.OrderByPipe }, { type: i9.SignalrService }, { type: i0.ChangeDetectorRef }]; }, { notificPanel: [{
|
|
532
|
+
type: Input
|
|
533
|
+
}] }); })();
|
|
534
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThDLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFckcsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBVyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUk1QyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHlCQUF5QixFQUF1QixNQUFNLDRDQUE0QyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxxQkFBcUIsRUFBMkIsd0JBQXdCLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUV6SyxPQUFPLEtBQUssb0JBQW9CLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFLNUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0RBQStELENBQUM7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QzdDbkMsOEJBQWtEO1FBRWhELDZCQUFnQjtRQUFBLFlBQW1GOztRQUFBLGlCQUFLO1FBQzFHLGlCQUFNO1FBQ04sdUVBa0JNO1FBQ04sdUVBQzhEO1FBQzlELDhCQUEyQjtRQUMzQix1RUFHTTs7UUEzQlksZUFBbUY7UUFBbkYsaUtBQW1GO1FBRWxGLGVBQWtDO1FBQWxDLHVEQUFrQztRQW1CdkIsZUFBa0M7UUFBbEMsdURBQWtDO1FBRzFCLGVBQTZCO1FBQTdCLGtEQUE2Qjs7dUZEbUJ0RCxzQkFBc0I7Y0FMbEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFdBQVcsRUFBRSxnQ0FBZ0M7YUFDOUM7c1NBSVUsWUFBWTtrQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSB9IGZyb20gXCJAbmdyeC9lZmZlY3RzXCI7XHJcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tIFwiQG5ncngvc3RvcmVcIjtcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gXCJuZ3gtY29va2llLXNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcbmltcG9ydCB7IFB1Yk51YkFuZ3VsYXIgfSBmcm9tIFwicHVibnViLWFuZ3VsYXIyXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLCBSb2xlc0ZldGNoVHJpZ2dlcmVkIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvYXV0aGVudGljYXRpb24uYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBDbGVhckFsbE5vdGlmaWNhdGlvbnMsIE5ld05vdGlmaWNhdGlvblJlY2VpdmVkLCBOb3RpZmljYXRpb25zQWN0aW9uVHlwZXMsIFVwc2VydFVucmVhZE5vdGlmaWNhdGlvbnNUcmlnZ2VyZWQgfSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9ub3RpZmljYXRpb25zLmFjdGlvbnNcIjtcclxuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcclxuaW1wb3J0ICogYXMgc2hhcmVkTW9kdWxlUmVkdWNlcnMgZnJvbSBcIi4uLy4uL3N0b3JlL3JlZHVjZXJzL2luZGV4XCI7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblR5cGVJZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm90aWZpY2F0aW9uLXR5cGUtaWRzJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uTW9kZWwsIE5vdGlmaWNhdGlvbk91dHB1dE1vZGVsLCBVc2VyTm90aWZpY2F0aW9uUmVhZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL05vdGlmaWNhdGlvbnNPdXRQdXRNb2RlbCc7XHJcbmltcG9ydCB7IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zb2Z0bGFiZWxzLW1vZGVsJztcclxuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXInO1xyXG5pbXBvcnQgeyBPcmRlckJ5UGlwZSB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9waXBlcy9vcmRlcmJ5LXBpcGUnO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbnN0YW50cy9sb2NhbHN0b3JhZ2UtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IENoYW5uZWxOYW1lcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jaGFubmVsLW5hbWVzJztcclxuaW1wb3J0IHsgQ2hhbm5lbFJvdXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub3RpZmljYXRpb24tcm91dGVzJztcclxuaW1wb3J0IHsgVXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvVXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBSb2xlVXBkYXRlZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9Sb2xlVXBkYXRlZE5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9SZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24nO1xyXG5pbXBvcnQgeyBSZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9SZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IE11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZyB9IGZyb20gJy4uLy4uL21vZGVscy9tdWx0aUNoYXJ0c1NjaGVkdWxpbmcnO1xyXG5pbXBvcnQgeyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0Fzc2V0QXNzaWduZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IE5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IEdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgVXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyU3RvcnlDb21tZW50Tm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgU3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFNwcmludFJlcGxhblN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zcHJpbnRSZXBsYW5SZXF1ZXN0ZWRNb2RlbCc7XHJcbmltcG9ydCB7IEFubm91Y2VtZW50RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9hbm5vdW5jZW1lbnQtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEd1aWQgfSBmcm9tICdndWlkLXR5cGVzY3JpcHQnO1xyXG5pbXBvcnQgJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9oZWxwZXJzL2ZvbnRhd2Vzb21lLWljb25zJztcclxuaW1wb3J0ICogYXMgXyBmcm9tIFwidW5kZXJzY29yZVwiO1xyXG5pbXBvcnQgeyBTaWduYWxyU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC1ub3RpZmljYXRpb25zXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgbm90aWZpY1BhbmVsO1xyXG5cclxuICBwdWJsaWMgbmdEZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcclxuICBjb25zdE5vdGlmaWNhdGlvbl9Xb3JrSXRlbUFzc2lnbmVkVG9Vc2VyID0gTm90aWZpY2F0aW9uVHlwZUlkcy5Ob3RpZmljYXRpb25fV29ya0l0ZW1Bc3NpZ25lZFRvVXNlcjtcclxuICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25PdXRwdXRNb2RlbFtdPjtcclxuICBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25PdXRwdXRNb2RlbFtdO1xyXG4gIHNvZnRMYWJlbHM6IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbFtdO1xyXG4gIGxvYWRpbmdOb3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICBzZWxlY3RlZE5vdGlmaWNhdGlvbjogVXNlck5vdGlmaWNhdGlvblJlYWRNb2RlbDtcclxuICBhbm5vdW5jZW1lbnRJZDogc3RyaW5nO1xyXG4gIGFubm91bmNlTm90aWZpY2F0aW9uSWQ6IHN0cmluZztcclxuICBub3RpZmljYXRpb25Db2xvciA9IGZhbHNlO1xyXG4gIGF1dGhlbnRpY2F0ZWRVc2VyUmVjb3JkJDogT2JzZXJ2YWJsZTxVc2VyTW9kZWw+O1xyXG4gIG5ld05vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbk1vZGVsW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHB1Ym51YjogUHViTnViQW5ndWxhciwgcHJpdmF0ZSBzdG9yZTogU3RvcmU8U3RhdGU+LFxyXG4gICAgcHJpdmF0ZSBhY3Rpb25VcGRhdGVzJDogQWN0aW9ucywgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLCBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZywgcHJpdmF0ZSBvcmRlckJ5UGlwZTogT3JkZXJCeVBpcGUsIHByaXZhdGUgc2lnbmFscjogU2lnbmFsclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwpIHtcclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcy5Vc2VyRGV0YWlsc0ZldGNoZWRBZnRlckxvZ2luKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBDdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gVGFzayBBc3NpZ25tZW50IE5vdGlmaWNhaXRvbnMgaGVyZS5cclxuICAgICAgICAgICAgY29uc3QgdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVGFza0Fzc2lnbm1lbnRzICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgdGFzdGF0dXNSZXBvcnRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1N0YXR1c1JlcG9ydFN1Ym1pc3Npb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TdGF0dXNDb25maWdBc3NpZ24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBtdWx0aUNoYXJ0c1NjaGVkdWxpbmdDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTXVsdGlDaGFydHNTY2hlZHVsaW5nICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQXNzZXRBc3NpZ25tZW50ICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfTmV3UHJvamVjdCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Qcm9qZWN0TWVtYmVyUm9sZSArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Hb2FsQXBwcm92ZWRGcm9tUmVwbGFuICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgdXNlclN0b3J5VXBkYXRlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1VzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IEFubm91bmNlbWVudENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Bbm5vdW5jZW1lbnROb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9SZW1pbmRlck5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IFBlcmZvcm1hbmNlQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Blcm9mb3JtYW5jZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfVXNlclN0b3J5Q29tbWVudCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHNwcmludFN0YXJ0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfU3ByaW50U3RhcnRlZCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHNwcmludFJlcGxhbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9TcHJpbnRSZXF1ZXN0ZWRUb1JlcGxhbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlYXZlQXBwbGllZENoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9MZWF2ZUFwcGxpZWQgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBBcHByb3ZlTGVhdmVDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfQXBwcm92ZUxlYXZlICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgUmVqZWN0TGVhdmVDaGFubmVsVG9TdWJzY3JpYmVJbnRvID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUmVqZWN0TGVhdmUgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBSZXNpZ25hdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9SZXNpZ25hdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IEFwcHJvdmVSZXNpZ25hdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9BcHByb3ZlUmVzaWduYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBSZWplY3RSZXNpZ25hdGlvbkNoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9SZWplY3RSZXNpZ25hdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IEF1dG9USW1lc2hlZXRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byA9IENoYW5uZWxOYW1lcy5DaGFubmVsX0F1dG9UaW1lc2hlZXRTdWJtaXNzaW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgUHJvYmF0aW9uQXNzaWduTm90aWZpY2F0aW9uID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUHJvYmF0aW9uQXNzaWduTm90aWZpY2F0aW9uICsgQ3VycmVudFVzZXJJZDtcclxuICAgICAgICAgICAgY29uc3QgUmV2aWV3QXNzaWduVG9FbXBsb3llZU5vdGlmaWNhdGlvbiA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Jldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBSZXZpZXdTdWJtaXR0ZWRCeUVtcGxveWVlTm90aWZpY2F0aW9uID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IFJldmlld0ludml0YXRpb25Ob3RpZmljYXRpb25Nb2RlbCA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1Jldmlld0ludml0YXRpb25Ob3RpZmljYXRpb25Nb2RlbCArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IFBlcmZvcm1hbmNlUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbiA9IENoYW5uZWxOYW1lcy5DaGFubmVsX1BlcmZvcm1hbmNlUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbiArIEN1cnJlbnRVc2VySWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IFBlcmZvcm1hbmNlUmV2aWV3SW52aXRhdGlvbk5vdGlmaWNhdGlvbk1vZGVsID0gQ2hhbm5lbE5hbWVzLkNoYW5uZWxfUGVyZm9ybWFuY2VSZXZpZXdJbnZpdGF0aW9uTm90aWZpY2F0aW9uTW9kZWwgKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zdCBQZXJmb3JtYW5jZVJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9QZXJmb3JtYW5jZVJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24gKyBDdXJyZW50VXNlcklkO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvIFwiICsgdGFza0Fzc2lnbm1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0byBcIiArIHRhc3RhdHVzUmVwb3J0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvIFwiICsgdGFzdGF0dXNDb25maWdBc3NpZ25DaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgcHJvamVjdENyZWF0ZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgcHJvamVjdEFjY2Vzc1RvTWVtYmVyQ2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgQW5ub3VuY2VtZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50byk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJpbmcgdG9cIiArIHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgc3ByaW50U3RhcnRlZENoYW5uZWxUb1N1YnNjcmliZUludG8pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvXCIgKyBzcHJpbnRSZXBsYW5DaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgUmVtaW5kZXJDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzdWJzY3JpYmluZyB0b1wiICsgUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgICAgdGhpcy5wdWJudWIuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBjaGFubmVsczogW3Rhc2tBc3NpZ25tZW50Q2hhbm5lbFRvU3Vic2NyaWJlSW50bywgdGFzdGF0dXNSZXBvcnRTdWJtaXNzaW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICAgICAgICAgIFByb2JhdGlvbkFzc2lnbk5vdGlmaWNhdGlvbiwgUmV2aWV3QXNzaWduVG9FbXBsb3llZU5vdGlmaWNhdGlvbiwgUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbixcclxuICAgICAgICAgICAgICAgIFJldmlld0ludml0YXRpb25Ob3RpZmljYXRpb25Nb2RlbCwgUGVyZm9ybWFuY2VSZXZpZXdTdWJtaXR0ZWRCeUVtcGxveWVlTm90aWZpY2F0aW9uLCBQZXJmb3JtYW5jZVJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24sXHJcbiAgICAgICAgICAgICAgICB0YXN0YXR1c0NvbmZpZ0Fzc2lnbkNoYW5uZWxUb1N1YnNjcmliZUludG8sIG11bHRpQ2hhcnRzU2NoZWR1bGluZ0NoYW5uZWxUb1N1YnNjcmliZUludG8sIFBlcmZvcm1hbmNlUmV2aWV3SW52aXRhdGlvbk5vdGlmaWNhdGlvbk1vZGVsLFxyXG4gICAgICAgICAgICAgICAgYXNzZXRzQXNzaWduZWRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBwcm9qZWN0Q3JlYXRlZENoYW5uZWxUb1N1YnNjcmliZUludG8sICxcclxuICAgICAgICAgICAgICAgIHByb2plY3RBY2Nlc3NUb01lbWJlckNoYW5uZWxUb1N1YnNjcmliZUludG8sIGdvYWxBcHByb3ZlZENoYW5uZWxUb1N1YnNjcmliZUludG8sXHJcbiAgICAgICAgICAgICAgICB1c2VyU3RvcnlVcGRhdGVDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBBbm5vdW5jZW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBSZW1pbmRlckNoYW5uZWxUb1N1YnNjcmliZUludG8sIFJlamVjdFJlc2lnbmF0aW9uQ2hhbm5lbFRvU3Vic2NyaWJlSW50byxcclxuICAgICAgICAgICAgICAgIHVzZXJTdG9yeUNvbW1lbnRDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBzcHJpbnRTdGFydGVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgUmVzaWduYXRpb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBBcHByb3ZlUmVzaWduYXRpb25DaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgICAgICAgICAgc3ByaW50UmVwbGFuQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgbGVhdmVBcHBsaWVkQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgQXBwcm92ZUxlYXZlQ2hhbm5lbFRvU3Vic2NyaWJlSW50bywgUmVqZWN0TGVhdmVDaGFubmVsVG9TdWJzY3JpYmVJbnRvLFxyXG4gICAgICAgICAgICAgICAgUGVyZm9ybWFuY2VDaGFubmVsVG9TdWJzY3JpYmVJbnRvLCBBdXRvVEltZXNoZWV0U3VibWlzc2lvbkNoYW5uZWxUb1N1YnNjcmliZUludG9dXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyBBZGQgb3RoZXIgc3Vic2NyaXB0aW9ucyBoZXJlLlxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJVc2VyIG5vdCBsb2dnZWQgaW4geWV0IHRvIGJlIGFibGUgdG8gc3Vic2NyaWJlLlwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgb2ZUeXBlKEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMuVXNlckRldGFpbHNGZXRjaGVkQWZ0ZXJMb2dpbiksXHJcbiAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgIHZhciByb2xlVXBkYXRlc0NoYW5uZWxUb1N1YnNjcmliZUludG8gPSBDaGFubmVsTmFtZXMuQ2hhbm5lbF9Sb2xlVXBkYXRlcyArIFwiMTlCNkY5RkMtNzM3MC00QjlDLUEwNUMtM0I4RDgxOUVFRUFGXCI7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnNjcmliaW5nIHRvIFwiICsgcm9sZVVwZGF0ZXNDaGFubmVsVG9TdWJzY3JpYmVJbnRvKTtcclxuICAgICAgICAgIHRoaXMucHVibnViLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIGNoYW5uZWxzOiBbcm9sZVVwZGF0ZXNDaGFubmVsVG9TdWJzY3JpYmVJbnRvXVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIG9mVHlwZShOb3RpZmljYXRpb25zQWN0aW9uVHlwZXMuQ2xlYXJBbGxVbnJlYWROb3RpZmljYXRpb25zQ29tcGxldGVkKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Tm90aWZpY2F0aW9uQWxsKSk7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0geDtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAvLyBjb25zdCBzdG9yZUxpc3RuZXIgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyhcIi0tLS0tLS0tLVJlY2VpdmVkIHB1Ym51YiBtZXNzYWdlLS0tLS0tLS0tXCIpO1xyXG4gICAgLy8gICAvLyB0aGlzLnRvYXN0ci5pbmZvKG1lc3NhZ2UubWVzc2FnZS5TdW1tYXJ5KTtcclxuICAgIC8vICAgdHJ5IHtcclxuICAgIC8vICAgICAvLyBSZWNlaXZpbmcgdGhlIFVzZXIgU3RvcnkgQXNzaWduZWQgTm90aWZpY2F0aW9uXHJcbiAgICAvLyAgICAgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLk5vdGlmaWNhdGlvbl9Xb3JrSXRlbUFzc2lnbmVkVG9Vc2VyKSB7XHJcbiAgICAvLyAgICAgICB2YXIgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24gPSBuZXcgVXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgIC8vICAgICAgIHVzZXJTdG9yeUFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICB1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld1dvcmtJdGVtICsgdXNlclN0b3J5QXNzaWduZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZCh1c2VyU3RvcnlBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgLy8gICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkID09IE5vdGlmaWNhdGlvblR5cGVJZHMuTm90aWZpY2F0aW9uX1JvbGVVcGRhdGVkKSB7XHJcbiAgICAvLyAgICAgICB2YXIgcm9sZVVwZGF0ZWROb3RpZmljYXRpb24gPSBuZXcgUm9sZVVwZGF0ZWROb3RpZmljYXRpb24oKTtcclxuICAgIC8vICAgICAgIHJvbGVVcGRhdGVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICByb2xlVXBkYXRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChyb2xlVXBkYXRlZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgLy8gICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgIC8vICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlN0YXR1c19SZXBvcnRfU3VtaXR0ZWQpIHtcclxuICAgIC8vICAgICAgIHZhciByZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24gPSBuZXcgUmVwb3J0U3VibWl0dGVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAvLyAgICAgICByZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIHJlcG9ydFN1Ym1pdHRlZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChyZXBvcnRTdWJtaXR0ZWROb3RpZmljYXRpb24pKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5TdGF0dXNfUmVwb3J0X0NvbmZpZ19DcmVhdGVkKSB7XHJcbiAgICAvLyAgICAgICB2YXIgcmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24gPSBuZXcgUmVwb3J0Q29uZmlnQXNzaWduZWROb3RpZmljYXRpb24oKTtcclxuICAgIC8vICAgICAgIHJlcG9ydENvbmZpZ0Fzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICByZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbi5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChyZXBvcnRDb25maWdBc3NpZ25lZE5vdGlmaWNhdGlvbikpO1xyXG4gICAgLy8gICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgUm9sZXNGZXRjaFRyaWdnZXJlZCgpKTtcclxuICAgIC8vICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZCA9PSBOb3RpZmljYXRpb25UeXBlSWRzLk11bHRpcGxlX0NoYXJ0c19TY2hlZHVsaW5nX2NyZWF0ZWQpIHtcclxuICAgIC8vICAgICAgIHZhciBtdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcgPSBuZXcgTXVsdGlwbGVDaGFydHNTY2hlZHVsaW5nKCk7XHJcbiAgICAvLyAgICAgICBtdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIG11bHRpcGxlQ2hhcnRzU2NoZWR1bGluZy5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChtdWx0aXBsZUNoYXJ0c1NjaGVkdWxpbmcpKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Bc3NldHNfQXNzaWdubWVudCkge1xyXG4gICAgLy8gICAgICAgY29uc3QgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUmVtaW5kZXJfTm90aWZpY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgLy8gICAgICAgY29uc3QgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuQW5ub3VuY2VtZW50X1JlY2VpdmVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgLy8gICAgICAgY29uc3QgYXNzZXRBc3NpZ25lZE5vdGlmaWNhdGlvbiA9IG5ldyBBc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uKCk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICBhc3NldEFzc2lnbmVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKGFzc2V0QXNzaWduZWROb3RpZmljYXRpb24pKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlLklkICE9IHRoaXMuYW5ub3VuY2VOb3RpZmljYXRpb25JZCkge1xyXG4gICAgLy8gICAgICAgICB0aGlzLmFubm91bmNlTm90aWZpY2F0aW9uSWQgPSBtZXNzYWdlLm1lc3NhZ2UuSWQ7XHJcbiAgICAvLyAgICAgICAgIHRoaXMub3BlbkFubm91bmNlbWVudERpYWxvZyhtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlBlcmZvcm1hbmNlX1JlY2VpdmVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSB8fCBtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuUHJvamVjdE1lbWJlclJvbGVBZGRlZE5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgLy8gICAgICAgY29uc3QgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24gPSBuZXcgTmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgLy8gICAgICAgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24ubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKG5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uKSk7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgLy8gICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLk5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8IG1lc3NhZ2UubWVzc2FnZS5Ob3RpZmljYXRpb25UeXBlR3VpZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9qZWN0TWVtYmVyUm9sZUFkZGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAvLyAgICAgICBjb25zdCBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbiA9IG5ldyBOZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAvLyAgICAgICBuZXdQcm9qZWN0Q3JlYXRlZE5vdGlmaWNhdGlvbi5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgLy8gICAgICAgbmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24ucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgLy8gICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQobmV3UHJvamVjdENyZWF0ZWROb3RpZmljYXRpb24pKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuR29hbEFwcHJvdmVkRnJvbVJlcGxhbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgIC8vICAgICAgIGNvbnN0IGdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsID0gbmV3IEdvYWxBcHByb3ZlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAvLyAgICAgICBnb2FsQXBwcm92ZWROb3RpZmljYXRpb25Nb2RlbC5sb2FkRnJvbUNhc2VJbnNlbnNpdGl2ZU9iamVjdChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgLy8gICAgICAgZ29hbEFwcHJvdmVkTm90aWZpY2F0aW9uTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgLy8gICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQoZ29hbEFwcHJvdmVkTm90aWZpY2F0aW9uTW9kZWwpKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuVVNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAvLyAgICAgICBjb25zdCB1c2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25Nb2RlbCA9IG5ldyBVc2VyU3RvcnlVcGRhdGVOb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgLy8gICAgICAgdXNlclN0b3J5VXBkYXRlTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIHVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsLnJvdXRlID0gQ2hhbm5lbFJvdXRlcy5WaWV3QWNjb3VudDtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IE5ld05vdGlmaWNhdGlvblJlY2VpdmVkKHVzZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgLy8gICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlB1c2hOb3RpZmljYXRpb25Gb3JVc2VyU3RvcnlDb21tZW50LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgLy8gICAgICAgY29uc3QgdXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsID0gbmV3IFVzZXJTdG9yeUNvbW1lbnROb3RpZmljYXRpb25Nb2RlbCgpO1xyXG4gICAgLy8gICAgICAgdXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsLmxvYWRGcm9tQ2FzZUluc2Vuc2l0aXZlT2JqZWN0KG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAvLyAgICAgICB1c2VyU3RvcnlDb21tZW50Tm90aWZpY2F0aW9uTW9kZWwucm91dGUgPSBDaGFubmVsUm91dGVzLlZpZXdBY2NvdW50O1xyXG4gICAgLy8gICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTmV3Tm90aWZpY2F0aW9uUmVjZWl2ZWQodXNlclN0b3J5Q29tbWVudE5vdGlmaWNhdGlvbk1vZGVsKSk7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSb2xlc0ZldGNoVHJpZ2dlcmVkKCkpO1xyXG4gICAgLy8gICAgIH0gZWxzZSBpZiAobWVzc2FnZS5tZXNzYWdlLk5vdGlmaWNhdGlvblR5cGVHdWlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSBOb3RpZmljYXRpb25UeXBlSWRzLlNwcmludFN0YXJ0ZWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAvLyAgICAgICBjb25zdCBzcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwgPSBuZXcgU3ByaW50U3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAvLyAgICAgICBzcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIHNwcmludFN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChzcHJpbnRTdGFydGVkTm90aWZpY2F0aW9uTW9kZWwpKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIGlmIChtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09IE5vdGlmaWNhdGlvblR5cGVJZHMuU3ByaW50UmVxdWVzdGRGb3JSRXBsYW4udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAvLyAgICAgICBjb25zdCBzcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwgPSBuZXcgU3ByaW50UmVwbGFuU3RhcnRlZE5vdGlmaWNhdGlvbk1vZGVsKCk7XHJcbiAgICAvLyAgICAgICBzcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwubG9hZEZyb21DYXNlSW5zZW5zaXRpdmVPYmplY3QobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgIHNwcmludFJlcGxhblN0YXJ0ZWROb3RpZmljYXRpb25Nb2RlbC5yb3V0ZSA9IENoYW5uZWxSb3V0ZXMuVmlld0FjY291bnQ7XHJcbiAgICAvLyAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBOZXdOb3RpZmljYXRpb25SZWNlaXZlZChzcHJpbnRSZXBsYW5TdGFydGVkTm90aWZpY2F0aW9uTW9kZWwpKTtcclxuICAgIC8vICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJvbGVzRmV0Y2hUcmlnZ2VyZWQoKSk7XHJcbiAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgIC8vIFRPRE86IFNlbmQgdGhlc2UgZXJyb3JzIG9udG8gc2VydmVyIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmdcclxuICAgIC8vICAgICAgIGNvbnNvbGUubG9nKFwiRm91bmQgdW5kZXRlY3RlZCBub3RpZmljYXRpb24gdHlwZS4gXCIgKyBtZXNzYWdlLm1lc3NhZ2UuTm90aWZpY2F0aW9uVHlwZUd1aWQpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICAvLyBBZGQgb3RoZXIgbm90aWZpY2F0aW9ucyBoZXJlLlxyXG5cclxuICAgIC8vICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XHJcbiAgICAvLyAgICAgLy8gVE9ETzogU2VuZCB0aGVzZSBleGNlcHRpb25zIG9udG8gc2VydmVyIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmdcclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIkV4Y2VwdGlvbiBPY2N1cmVkXCIgKyBleGNlcHRpb24ubWVzc2FnZSk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH07XHJcblxyXG4gICAgLy8gdGhpcy5wdWJudWIuYWRkTGlzdGVuZXIoe1xyXG4gICAgLy8gICBzdGF0dXM6IHN0ID0+IHtcclxuICAgIC8vICAgICBpZiAoc3QuY2F0ZWdvcnkgPT09IFwiUE5Vbmtub3duQ2F0ZWdvcnlcIikge1xyXG4gICAgLy8gICAgICAgdmFyIG5ld1N0YXRlID0ge1xyXG4gICAgLy8gICAgICAgICBuZXc6IFwiZXJyb3JcIlxyXG4gICAgLy8gICAgICAgfTtcclxuICAgIC8vICAgICAgIHRoaXMucHVibnViLnNldFN0YXRlKFxyXG4gICAgLy8gICAgICAgICB7XHJcbiAgICAvLyAgICAgICAgICAgc3RhdGU6IG5ld1N0YXRlXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgLy8gZnVuY3Rpb24gKHN0YXR1cykge1xyXG4gICAgLy8gICAgICAgICAvLyAgIGNvbnNvbGUubG9nKHN0LmVycm9yRGF0YS5tZXNzYWdlKTtcclxuICAgIC8vICAgICAgICAgLy8gfVxyXG4gICAgLy8gICAgICAgKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIG1lc3NhZ2U6IG1lc3NhZ2UgPT4ge1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwic3Vic2NyaWJlZCB0byBcIiArIG1lc3NhZ2UpO1xyXG4gICAgLy8gICAgIHN0b3JlTGlzdG5lcihtZXNzYWdlKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyb3V0ZUNoYW5nZSkgPT4ge1xyXG4gICAgICAgIGlmIChyb3V0ZUNoYW5nZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm5vdGlmaWNQYW5lbCkge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNQYW5lbC5jbG9zZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnNpZ25hbHIubm90aWZpY2F0aW9ucyQuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5uZXdOb3RpZmljYXRpb25zID0gZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDAgPyBkYXRhIDogW107XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldFNvZnRMYWJlbENvbmZpZ3VyYXRpb25zKCk7XHJcblxyXG4gICAgdGhpcy5ub3RpZmljYXRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Tm90aWZpY2F0aW9uQWxsKSxcclxuICAgICAgdGFwKHggPT4gY29uc29sZS5sb2coeCkpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuYXV0aGVudGljYXRlZFVzZXJSZWNvcmQkID0gdGhpcy5zdG9yZS5waXBlKFxyXG4gICAgICBzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0QXV0aGVudGljYXRlZFVzZXJNb2RlbClcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nTm90aWZpY2F0aW9ucyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldE5vdGlmaWNhdGlvbnNMb2FkaW5nKSk7XHJcbiAgfVxyXG5cclxuICBnZXRTb2Z0TGFiZWxDb25maWd1cmF0aW9ucygpIHtcclxuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckFsbChlKSB7XHJcbiAgICBjb25zdCBub3RpZmljYXRpb25zID0gW107XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICBub3RpZmljYXRpb25zLnB1c2goZWxlbWVudCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IENsZWFyQWxsTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKSk7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvbkNvbG9yID0gIXRoaXMubm90aWZpY2F0aW9uQ29sb3I7XHJcbiAgfVxyXG5cclxuICAvLyBvcGVuQW5ub3VuY2VtZW50RGlhbG9nKGFubm91bmNlZCkge1xyXG4gIC8vICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcclxuICAvLyAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQW5ub3VjZW1lbnREaWFsb2dDb21wb25lbnQsIHtcclxuICAvLyAgICAgbWluV2lkdGg6IFwiNjB2d1wiLFxyXG4gIC8vICAgICBtYXhXaWR0aDogXCI2MHZ3XCIsXHJcbiAgLy8gICAgIG1pbkhlaWdodDogXCI1MHZoXCIsXHJcbiAgLy8gICAgIG1heEhlaWdodDogXCI4MHZoXCIsXHJcbiAgLy8gICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAvLyAgICAgZGF0YToge1xyXG4gIC8vICAgICAgIGFubm91bmNlbWVudElkOiBhbm5vdW5jZWQuQW5ub3VuY2VtZW50SWQsXHJcbiAgLy8gICAgICAgYW5ub3VuY2VtZW50OiBhbm5vdW5jZWQuQW5ub3VuY2VtZW50LFxyXG4gIC8vICAgICAgIGFubm91bmNlZEJ5OiBhbm5vdW5jZWQuQW5ub3VuY2VkQnksXHJcbiAgLy8gICAgICAgYW5ub3VuY2VkQnlJZDogYW5ub3VuY2VkLkFubm91bmNlZEJ5SWQsXHJcbiAgLy8gICAgICAgYW5ub3VuY2VkQnlVc2VySW1hZ2U6IGFubm91bmNlZC5Bbm5vdW5jZWRCeVVzZXJJbWFnZSxcclxuICAvLyAgICAgICBhbm5vdW5jZWRPbjogYW5ub3VuY2VkLkFubm91bmNlZE9uXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsb3NlTWF0RGlhbG9nLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ub3RpZmljYXRpb25zLmZpbmRJbmRleCgocCkgPT4gcC5ub3RpZmljYXRpb25JZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5hbm5vdW5jZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgLy8gICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgLy8gICAgICAgdGhpcy51cHNlcnRSZWFkTm90aWZpY2F0aW9uKHRoaXMubm90aWZpY2F0aW9uc1tpbmRleF0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHVwc2VydFJlYWROb3RpZmljYXRpb24oc2VsZWN0ZWROb3RpZmljYXRpb24pIHtcclxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSBbXTtcclxuICAgIHZhciByb2xlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Sb2xlRmVhdHVyZXMpKTtcclxuICAgIGxldCBGZWF0dXJlX0FwcHJvdmVPclJlamVjdExlYXZlID0gJzJDMjI5MTZGLUI4MEItNEM1MS05NTM0LTIzRjY5OERFMTIwQic7XHJcbiAgICBsZXQgY2FuQWNjZXNzX2ZlYXR1cmVfQXBwcm92ZU9yUmVqZWN0TGVhdmUgPSBfLmZpbmQocm9sZXMsIGZ1bmN0aW9uIChyb2xlKSB7IHJldHVybiByb2xlWydmZWF0dXJlSWQnXS50b0xvd2VyQ2FzZSgpID09IEZlYXR1cmVfQXBwcm92ZU9yUmVqZWN0TGVhdmUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpOyB9KSAhPSBudWxsO1xyXG4gICAgY29uc3QgQ3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIG5vdGlmaWNhdGlvbnMucHVzaChzZWxlY3RlZE5vdGlmaWNhdGlvbik7XHJcbiAgICBjb25zdCBub3RpaWZjYXRpb25tb2RlbCA9IEpTT04ucGFyc2Uoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uSnNvbik7XHJcbiAgICBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLk5ld1Byb2plY3RDcmVhdGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIHx8XHJcbiAgICAgIHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Qcm9qZWN0TWVtYmVyUm9sZUFkZGVkTm90aWZpY2F0aW9uSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Qcm9qZWN0R3VpZCArIFwiL2FjdGl2ZS1nb2Fsc1wiXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Hb2FsQXBwcm92ZWRGcm9tUmVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuR29hbEd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLk5vdGlmaWNhdGlvbl9Xb3JrSXRlbUFzc2lnbmVkVG9Vc2VyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJTdG9yeUd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlVTZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJTdG9yeUlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5TcHJpbnRTdGFydGVkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnQvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5TcHJpbnRHdWlkXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuUHVzaE5vdGlmaWNhdGlvbkZvclVzZXJTdG9yeUNvbW1lbnQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlclN0b3J5R3VpZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuR29hbFJlcXVlc3RkRm9yUkVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuR29hbEd1aWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlNwcmludFJlcXVlc3RkRm9yUkVwbGFuLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnQvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5TcHJpbnRHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5Ob3RpZmljYXRpb25fQWRob2NXb3JrSXRlbUFzc2lnbmVkVG9Vc2VyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW0vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VyU3RvcnlHdWlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5BZGhvY1VTZXJTdG9yeVVwZGF0ZU5vdGlmaWNhdGlvbklkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW0vXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VyU3RvcnlJZF0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLkxlYXZlQXBwbGljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpICYmIGNhbkFjY2Vzc19mZWF0dXJlX0FwcHJvdmVPclJlamVjdExlYXZlKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImhybWFuYWdtZW50L2xlYXZlc1wiXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuQXBwcm92ZUxlYXZlQXBwbGljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlL1wiICsgQ3VycmVudFVzZXJJZCArIFwiL2xlYXZlcy1wZXJtaXNzaW9uc1wiXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuUmVqZWN0TGVhdmVBcHBsaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBDdXJyZW50VXNlcklkICsgXCIvbGVhdmVzLXBlcm1pc3Npb25zXCJdKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5BdXRvVGltZVNoZWV0U3VibWlzc2lvbk5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBDdXJyZW50VXNlcklkICsgXCIvdGltZXNoZWV0QXBwcm92YWxcIl0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlByb2JhdGlvbkFzc2lnbk5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VySWQgKyBcIi9wcm9iYXRpb25cIl0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlL1wiICsgQ3VycmVudFVzZXJJZCArIFwiL3Byb2JhdGlvblwiXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzZWxlY3RlZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25UeXBlSWQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgIE5vdGlmaWNhdGlvblR5cGVJZHMuUmV2aWV3U3VibWl0dGVkQnlFbXBsb3llZU5vdGlmaWNhdGlvbi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBub3RpaWZjYXRpb25tb2RlbC5Vc2VySWQgKyBcIi9wcm9iYXRpb25cIl0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlJldmlld0ludml0YXRpb25Ob3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlcklkICsgXCIvcHJvYmF0aW9uXCJdKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5QZXJmb3JtYW5jZVJldmlld1N1Ym1pdHRlZEJ5RW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlL1wiICsgbm90aWlmY2F0aW9ubW9kZWwuVXNlcklkICsgXCIvcGVyZm9ybWFuY2VcIl0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc2VsZWN0ZWROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uVHlwZUlkLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICBOb3RpZmljYXRpb25UeXBlSWRzLlBlcmZvcm1hbmNlUmV2aWV3SW52aXRhdGlvbk5vdGlmaWNhdGlvbk1vZGVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvcHJvZmlsZS9cIiArIG5vdGlpZmNhdGlvbm1vZGVsLlVzZXJJZCArIFwiL3BlcmZvcm1hbmNlXCJdKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHNlbGVjdGVkTm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvblR5cGVJZC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgTm90aWZpY2F0aW9uVHlwZUlkcy5QZXJmb3JtYW5jZVJldmlld0Fzc2lnblRvRW1wbG95ZWVOb3RpZmljYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImRhc2hib2FyZC9wcm9maWxlL1wiICsgQ3VycmVudFVzZXJJZCArIFwiL3BlcmZvcm1hbmNlXCJdKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVwc2VydFVucmVhZE5vdGlmaWNhdGlvbnNUcmlnZ2VyZWQobm90aWZpY2F0aW9ucykpO1xyXG4gIH1cclxuXHJcbiAgdXBzZXJ0UmVhZE5ld05vdGlmaWNhdGlvbihub3RpZmljYXRpb24pIHtcclxuICAgIGxldCBub3RlczogTm90aWZpY2F0aW9uTW9kZWxbXSA9IFtub3RpZmljYXRpb25dO1xyXG4gICAgdGhpcy5zaWduYWxyLnVwc2VydFJlYWROZXdOb3RpZmljYXRpb25zKG5vdGVzKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5zaWduYWxyLnJlbW92ZUl0ZW1Gcm9tTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb24uaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBpZiAobm90aWZpY2F0aW9uLm5hdmlnYXRpb25VcmwpIHtcclxuICAgICAgd2luZG93Lm9wZW4obm90aWZpY2F0aW9uLm5hdmlnYXRpb25VcmwsIFwiX2JsYW5rXCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNsZWFyTmV3QWxsKGUpIHtcclxuICAgIHRoaXMuc2lnbmFsci51cHNlcnRSZWFkTmV3Tm90aWZpY2F0aW9ucyh0aGlzLm5ld05vdGlmaWNhdGlvbnMpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLnNpZ25hbHIucmVtb3ZlQWxsTm90aWZpY2F0aW9ucygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYXQtYmctcHJpbWFyeSBwdC0xIHBiLTFcIj5cclxuICA8IS0tIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiKGxvYWRpbmdOb3RpZmljYXRpb25zJCB8IGFzeW5jKVwiPjwvbWF0LXByb2dyZXNzLWJhcj4gLS0+XHJcbiAgPGg2IGNsYXNzPVwibS0wXCI+e3sgJ05PVElGSUNBVElPTlMuTk9USUZJQ0FUSU9OU1RJVExFJyB8IHRyYW5zbGF0ZSB9fSAoe3tuZXdOb3RpZmljYXRpb25zPy5sZW5ndGh9fSk8L2g2PlxyXG48L2Rpdj5cclxuPGRpdiBpZD1cInN0eWxlLTFcIiAqbmdJZj1cIm5ld05vdGlmaWNhdGlvbnMubGVuZ3RoICE9IDBcIj5cclxuICA8bWF0LW5hdi1saXN0IGNsYXNzPVwibm90aWZpY2F0aW9uLWxpc3QgcC0wIHByLTAzXCIgcm9sZT1cImxpc3RcIlxyXG4gICAgKm5nRm9yPVwibGV0IG5vdGlmaWNhdGlvbiBvZiAobmV3Tm90aWZpY2F0aW9ucyB8IG9yZGVyQnkpXCIgPlxyXG4gICAgPG1hdC1saXN0LWl0ZW0gY2xhc3M9XCJub3RpZmljLWl0ZW0gIHByLTAzIG5vdGlmaWNhdGlvbi1tYXJnaW5cIiByb2xlPVwibGlzdGl0ZW1cIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J25vdGlmaWNhdGFpb24tdW5yZWFkJzogIW5vdGlmaWNhdGlvbkNvbG9yICwnbm90aWZpY2F0YWlvbi1yZWFkJzogbm90aWZpY2F0aW9uQ29sb3IgfVwiXHJcbiAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJvcGVuXCIgKGNsaWNrKT1cInVwc2VydFJlYWROZXdOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKVwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxhPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1saXN0LXRleHQgcGwtMCBwci0wMyBub3RpZmljYXRpb24tY3Vyc29yIG5vdGlmaWNhdGlvbnMtbGlzdC1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3b3JkLWJyZWFrIGRpc3BsYXktcHJlLWxpbmVcIiBzdHlsZT1cIm1hcmdpbjogMHB4ICFpbXBvcnRhbnQ7XCJcclxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm5vdGlmaWNhdGlvbi5zdW1tYXJ5IHwgc2FuaXRpemVIdG1sXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0aW1lIHRleHQtbXV0ZWRcIj57eyBub3RpZmljYXRpb24uY3JlYXRlZERhdGVUaW1lIHwgdXRjVG9Mb2NhbFRpbWUgfCB0aW1lYWdvIH19PC9zbWFsbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgPC9tYXQtbmF2LWxpc3Q+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcC0xXCIgKm5nSWY9XCJuZXdOb3RpZmljYXRpb25zLmxlbmd0aCA9PSAwXCI+XHJcbiAge3sgJ05PVElGSUNBVElPTlMuTk9OT1RJRklDQVRJT05TVElUTEUnIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbjxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtMDUgbWItMDVcIiAqbmdJZj1cIm5ld05vdGlmaWNhdGlvbnMubGVuZ3RoXCI+XHJcbiAgPGxhYmVsIGNsYXNzPVwibWItMFwiPjxhIChjbGljayk9XCJjbGVhck5ld0FsbCgkZXZlbnQpXCI+e3sgJ05PVElGSUNBVElPTlMuQ0xFQVJBTExOT1RJRklDQVRJT05TJyB8IHRyYW5zbGF0ZVxyXG4gICAgICB9fTwvYT48L2xhYmVsPlxyXG48L2Rpdj4iXX0=
|