@thetradeengineorg1/snova-shell-module 0.0.262 → 0.0.263
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/README.md +24 -24
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js +19022 -13748
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
- package/esm2015/lib/globaldependencies/components/avatar.component.js +33 -28
- package/esm2015/lib/globaldependencies/components/componentbase.js +538 -538
- package/esm2015/lib/globaldependencies/constants/feature-ids.js +449 -449
- package/esm2015/lib/globaldependencies/constants/localstorage-properties.js +38 -38
- package/esm2015/lib/globaldependencies/helpers/dom.helper.js +70 -70
- package/esm2015/lib/globaldependencies/helpers/fontawesome-icons.js +144 -144
- package/esm2015/lib/globaldependencies/helpers/moment-utc-date-adapter.js +37 -37
- package/esm2015/lib/globaldependencies/helpers/window.helper.js +32 -32
- package/esm2015/lib/globaldependencies/intercepter/jwt.interceptor.js +40 -40
- package/esm2015/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.js +36 -36
- package/esm2015/lib/globaldependencies/pipes/highLightText.pipe.js +24 -24
- package/esm2015/lib/globaldependencies/pipes/orderby-pipe.js +24 -24
- package/esm2015/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.js +22 -22
- package/esm2015/lib/globaldependencies/pipes/sanitize.pipe.js +24 -24
- package/esm2015/lib/globaldependencies/pipes/softlabels.pipes.js +346 -346
- package/esm2015/lib/globaldependencies/pipes/utctolocaltime.pipe.js +23 -23
- package/esm2015/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.js +25 -25
- package/esm2015/lib/globaldependencies/pipes/workflowstatus.pipes.js +27 -27
- package/esm2015/lib/shell-components/components/Payments/account.component.js +121 -50
- package/esm2015/lib/shell-components/components/Payments/company-information.js +558 -262
- package/esm2015/lib/shell-components/components/Payments/company-plans.component.js +636 -138
- package/esm2015/lib/shell-components/components/Payments/document.component.js +129 -57
- package/esm2015/lib/shell-components/components/Payments/payment-method.component.js +90 -32
- package/esm2015/lib/shell-components/components/Payments/product-service.component.js +438 -143
- package/esm2015/lib/shell-components/components/Payments/purchase-more-licenses.js +249 -152
- package/esm2015/lib/shell-components/components/Payments/transactions.component.js +172 -60
- package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +350 -250
- package/esm2015/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.js +102 -89
- package/esm2015/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.js +126 -90
- package/esm2015/lib/shell-components/components/export-import-configuration/export-configuration.component.js +502 -357
- package/esm2015/lib/shell-components/components/feed-time/feed-time-dialog.component.js +98 -85
- package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +87 -83
- package/esm2015/lib/shell-components/components/header-side/header-side.component.js +2342 -1617
- package/esm2015/lib/shell-components/components/header-top/header-top.component.js +489 -93
- package/esm2015/lib/shell-components/components/lives/lives-welcome-page.js +55 -26
- package/esm2015/lib/shell-components/components/menu/menu.component.js +3429 -2478
- package/esm2015/lib/shell-components/components/menu/searchTask.enum.js +10 -10
- package/esm2015/lib/shell-components/components/notifications/announcement-dialog.component.js +110 -73
- package/esm2015/lib/shell-components/components/notifications/notifications.component.js +534 -449
- package/esm2015/lib/shell-components/components/sidebar-top/sidebar-top.component.js +39 -33
- package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +148 -81
- package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +439 -43
- package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +75 -71
- package/esm2015/lib/shell-components/constants/api-urls.js +1052 -1052
- package/esm2015/lib/shell-components/constants/available-languages.js +25 -25
- package/esm2015/lib/shell-components/constants/channel-names.js +38 -38
- package/esm2015/lib/shell-components/constants/menu-categories.js +6 -6
- package/esm2015/lib/shell-components/constants/notification-routes.js +6 -6
- package/esm2015/lib/shell-components/constants/notification-type-ids.js +42 -42
- package/esm2015/lib/shell-components/enum/recentSearchType.enum.js +13 -13
- package/esm2015/lib/shell-components/models/AppMenuItemModel.js +3 -3
- package/esm2015/lib/shell-components/models/AppNotification.js +17 -17
- package/esm2015/lib/shell-components/models/AssetAssignedNotificationModel.js +12 -12
- package/esm2015/lib/shell-components/models/ChannelUpdateModel.js +3 -3
- package/esm2015/lib/shell-components/models/EmployeeStatusModel.js +3 -3
- package/esm2015/lib/shell-components/models/IAdjust-screen-options.js +2 -2
- package/esm2015/lib/shell-components/models/IBadge.js +2 -2
- package/esm2015/lib/shell-components/models/IChildItem.js +2 -2
- package/esm2015/lib/shell-components/models/ILayout-change-options.js +2 -2
- package/esm2015/lib/shell-components/models/IMenuItem.js +2 -2
- package/esm2015/lib/shell-components/models/IlayoutConf.js +2 -2
- package/esm2015/lib/shell-components/models/IntroModel.js +3 -3
- package/esm2015/lib/shell-components/models/MessageDetails.js +3 -3
- package/esm2015/lib/shell-components/models/MessageTypingDetails.js +3 -3
- package/esm2015/lib/shell-components/models/NewProjectCreatedNotificationModel.js +10 -10
- package/esm2015/lib/shell-components/models/NewProjectFeatureNotificationModel.js +10 -10
- package/esm2015/lib/shell-components/models/NotificationsOutPutModel.js +22 -22
- package/esm2015/lib/shell-components/models/ProjectSearchCriteriaInputModel.js +3 -3
- package/esm2015/lib/shell-components/models/RecentSearchModel.js +5 -5
- package/esm2015/lib/shell-components/models/ReportConfigAssignedNotification.js +11 -11
- package/esm2015/lib/shell-components/models/ReportSubmittedNotification.js +12 -12
- package/esm2015/lib/shell-components/models/RoleUpdatedNotification.js +9 -9
- package/esm2015/lib/shell-components/models/UserStoryAssignedNotification.js +13 -13
- package/esm2015/lib/shell-components/models/archiveUserStoryModel.js +10 -10
- package/esm2015/lib/shell-components/models/companieslist.model.js +3 -3
- package/esm2015/lib/shell-components/models/company-model.js +7 -7
- package/esm2015/lib/shell-components/models/company-payment-model.js +3 -3
- package/esm2015/lib/shell-components/models/dragedWidget.js +3 -3
- package/esm2015/lib/shell-components/models/employee-List.js +3 -3
- package/esm2015/lib/shell-components/models/employee.js +4 -4
- package/esm2015/lib/shell-components/models/entityRoleFeature.js +3 -3
- package/esm2015/lib/shell-components/models/export-configuration-model.js +3 -3
- package/esm2015/lib/shell-components/models/export-data.module.js +8 -8
- package/esm2015/lib/shell-components/models/goalApprovedNotificationModel.js +9 -9
- package/esm2015/lib/shell-components/models/import-configuration-model.js +3 -3
- package/esm2015/lib/shell-components/models/initialStatusofUsers.js +3 -3
- package/esm2015/lib/shell-components/models/invoiceOutput-model.js +3 -3
- package/esm2015/lib/shell-components/models/leaveApplicationNotifiction.js +9 -9
- package/esm2015/lib/shell-components/models/multiChartsScheduling.js +11 -11
- package/esm2015/lib/shell-components/models/parkUserStoryInputModel.js +10 -10
- package/esm2015/lib/shell-components/models/project.js +3 -3
- package/esm2015/lib/shell-components/models/recentSearchApiModel.js +3 -3
- package/esm2015/lib/shell-components/models/searchCriteriaInputModelBase.js +3 -3
- package/esm2015/lib/shell-components/models/shellModulesInfo.js +7 -7
- package/esm2015/lib/shell-components/models/softlabels-model.js +7 -7
- package/esm2015/lib/shell-components/models/sprintReplanRequestedModel.js +9 -9
- package/esm2015/lib/shell-components/models/sprintStartedNotificationModel.js +9 -9
- package/esm2015/lib/shell-components/models/store-model.js +3 -3
- package/esm2015/lib/shell-components/models/store-search-model.js +4 -4
- package/esm2015/lib/shell-components/models/themes.model.js +3 -3
- package/esm2015/lib/shell-components/models/timesheetenabledisable.js +4 -4
- package/esm2015/lib/shell-components/models/user.js +8 -8
- package/esm2015/lib/shell-components/models/userStory.js +3 -3
- package/esm2015/lib/shell-components/models/userStoryCommentNotificationModel.js +9 -9
- package/esm2015/lib/shell-components/models/userStoryUpdateNotificationModel.js +9 -9
- package/esm2015/lib/shell-components/models/userstory-custom-fields.model.js +3 -3
- package/esm2015/lib/shell-components/models/validation.model.js +2 -2
- package/esm2015/lib/shell-components/models/widgetlist.js +6 -6
- package/esm2015/lib/shell-components/models/workspaceList.js +3 -3
- package/esm2015/lib/shell-components/services/authentication.service.js +96 -96
- package/esm2015/lib/shell-components/services/chat.service.js +67 -67
- package/esm2015/lib/shell-components/services/common-used.service.js +263 -263
- package/esm2015/lib/shell-components/services/feature.service.js +101 -101
- package/esm2015/lib/shell-components/services/google-analytics.service.js +24 -24
- package/esm2015/lib/shell-components/services/layout.service.js +68 -68
- package/esm2015/lib/shell-components/services/payment.service.js +103 -103
- package/esm2015/lib/shell-components/services/recentSearch.service.js +90 -90
- package/esm2015/lib/shell-components/services/shell.modules.service.js +24 -24
- package/esm2015/lib/shell-components/services/signalr.service.js +113 -113
- package/esm2015/lib/shell-components/services/theme.service.js +228 -228
- package/esm2015/lib/shell-components/shell.module.js +450 -449
- package/esm2015/lib/shell-components/shell.routing.js +16 -16
- package/esm2015/lib/shell-components/store/actions/authentication.actions.js +260 -260
- package/esm2015/lib/shell-components/store/actions/chat.actions.js +248 -248
- package/esm2015/lib/shell-components/store/actions/menuitems.actions.js +39 -39
- package/esm2015/lib/shell-components/store/actions/notification-validator.action.js +19 -19
- package/esm2015/lib/shell-components/store/actions/notifications.actions.js +74 -74
- package/esm2015/lib/shell-components/store/effects/authentication.effects.js +503 -503
- package/esm2015/lib/shell-components/store/effects/chat.effects.js +139 -139
- package/esm2015/lib/shell-components/store/effects/index.js +13 -13
- package/esm2015/lib/shell-components/store/effects/menuitems.effects.js +53 -53
- package/esm2015/lib/shell-components/store/effects/notification-validator.effects.js +56 -56
- package/esm2015/lib/shell-components/store/effects/notifications.effects.js +116 -116
- package/esm2015/lib/shell-components/store/reducers/authentication.reducers.js +86 -86
- package/esm2015/lib/shell-components/store/reducers/chat.reducers.js +68 -68
- package/esm2015/lib/shell-components/store/reducers/index.js +80 -80
- package/esm2015/lib/shell-components/store/reducers/menuitems.reducers.js +56 -56
- package/esm2015/lib/shell-components/store/reducers/notification-validator.reducers.js +13 -13
- package/esm2015/lib/shell-components/store/reducers/notifications.reducers.js +38 -38
- package/esm2015/public-api.js +92 -92
- package/esm2015/store/reducers/index.js +47 -47
- package/esm2015/thetradeengineorg1-snova-shell-module.js +4 -4
- package/fesm2015/thetradeengineorg1-snova-shell-module.js +17152 -12640
- package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
- package/lib/globaldependencies/components/avatar.component.d.ts +11 -10
- package/lib/globaldependencies/components/avatar.component.d.ts.map +1 -0
- package/lib/globaldependencies/components/componentbase.d.ts +456 -455
- package/lib/globaldependencies/components/componentbase.d.ts.map +1 -0
- package/lib/globaldependencies/constants/feature-ids.d.ts +449 -448
- package/lib/globaldependencies/constants/feature-ids.d.ts.map +1 -0
- package/lib/globaldependencies/constants/localstorage-properties.d.ts +38 -37
- package/lib/globaldependencies/constants/localstorage-properties.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/dom.helper.d.ts +8 -7
- package/lib/globaldependencies/helpers/dom.helper.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/fontawesome-icons.d.ts +2 -1
- package/lib/globaldependencies/helpers/fontawesome-icons.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts +10 -9
- package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/window.helper.d.ts +13 -12
- package/lib/globaldependencies/helpers/window.helper.d.ts.map +1 -0
- package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts +12 -11
- package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts +9 -8
- package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/highLightText.pipe.d.ts +9 -8
- package/lib/globaldependencies/pipes/highLightText.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/orderby-pipe.d.ts +10 -9
- package/lib/globaldependencies/pipes/orderby-pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts +9 -8
- package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/sanitize.pipe.d.ts +12 -11
- package/lib/globaldependencies/pipes/sanitize.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/softlabels.pipes.d.ts +9 -8
- package/lib/globaldependencies/pipes/softlabels.pipes.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts +9 -8
- package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts +9 -8
- package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts +9 -8
- package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/account.component.d.ts +15 -14
- package/lib/shell-components/components/Payments/account.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/company-information.d.ts +63 -62
- package/lib/shell-components/components/Payments/company-information.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/company-plans.component.d.ts +48 -47
- package/lib/shell-components/components/Payments/company-plans.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/document.component.d.ts +21 -20
- package/lib/shell-components/components/Payments/document.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/payment-method.component.d.ts +16 -15
- 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 +49 -48
- 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 +38 -37
- package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/transactions.component.d.ts +29 -28
- 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 +68 -67
- 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 +33 -32
- 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 +33 -32
- 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 +61 -60
- 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 +34 -33
- 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 +28 -27
- 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 +221 -220
- 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 +41 -40
- 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 +15 -14
- package/lib/shell-components/components/lives/lives-welcome-page.d.ts.map +1 -0
- package/lib/shell-components/components/menu/menu.component.d.ts +221 -220
- package/lib/shell-components/components/menu/menu.component.d.ts.map +1 -0
- package/lib/shell-components/components/menu/searchTask.enum.d.ts +9 -8
- package/lib/shell-components/components/menu/searchTask.enum.d.ts.map +1 -0
- package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts +28 -27
- package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts.map +1 -0
- package/lib/shell-components/components/notifications/notifications.component.d.ts +54 -53
- 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 +11 -10
- 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 +24 -23
- package/lib/shell-components/components/sidenav/side-bar.component.d.ts.map +1 -0
- package/lib/shell-components/components/sidenav/sidenav.component.d.ts +18 -17
- 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 +26 -25
- package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts.map +1 -0
- package/lib/shell-components/constants/api-urls.d.ts +1052 -1051
- package/lib/shell-components/constants/api-urls.d.ts.map +1 -0
- package/lib/shell-components/constants/available-languages.d.ts +8 -7
- package/lib/shell-components/constants/available-languages.d.ts.map +1 -0
- package/lib/shell-components/constants/channel-names.d.ts +38 -37
- package/lib/shell-components/constants/channel-names.d.ts.map +1 -0
- package/lib/shell-components/constants/menu-categories.d.ts +6 -5
- package/lib/shell-components/constants/menu-categories.d.ts.map +1 -0
- package/lib/shell-components/constants/notification-routes.d.ts +6 -5
- package/lib/shell-components/constants/notification-routes.d.ts.map +1 -0
- package/lib/shell-components/constants/notification-type-ids.d.ts +42 -41
- package/lib/shell-components/constants/notification-type-ids.d.ts.map +1 -0
- package/lib/shell-components/enum/recentSearchType.enum.d.ts +12 -11
- package/lib/shell-components/enum/recentSearchType.enum.d.ts.map +1 -0
- package/lib/shell-components/models/AppMenuItemModel.d.ts +13 -12
- package/lib/shell-components/models/AppMenuItemModel.d.ts.map +1 -0
- package/lib/shell-components/models/AppNotification.d.ts +13 -12
- package/lib/shell-components/models/AppNotification.d.ts.map +1 -0
- package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts +11 -10
- package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/ChannelUpdateModel.d.ts +48 -47
- package/lib/shell-components/models/ChannelUpdateModel.d.ts.map +1 -0
- package/lib/shell-components/models/EmployeeStatusModel.d.ts +12 -11
- package/lib/shell-components/models/EmployeeStatusModel.d.ts.map +1 -0
- package/lib/shell-components/models/IAdjust-screen-options.d.ts +5 -4
- package/lib/shell-components/models/IAdjust-screen-options.d.ts.map +1 -0
- package/lib/shell-components/models/IBadge.d.ts +5 -4
- package/lib/shell-components/models/IBadge.d.ts.map +1 -0
- package/lib/shell-components/models/IChildItem.d.ts +8 -7
- package/lib/shell-components/models/IChildItem.d.ts.map +1 -0
- package/lib/shell-components/models/ILayout-change-options.d.ts +5 -4
- package/lib/shell-components/models/ILayout-change-options.d.ts.map +1 -0
- package/lib/shell-components/models/IMenuItem.d.ts +15 -14
- package/lib/shell-components/models/IMenuItem.d.ts.map +1 -0
- package/lib/shell-components/models/IlayoutConf.d.ts +11 -10
- package/lib/shell-components/models/IlayoutConf.d.ts.map +1 -0
- package/lib/shell-components/models/IntroModel.d.ts +4 -3
- package/lib/shell-components/models/IntroModel.d.ts.map +1 -0
- package/lib/shell-components/models/MessageDetails.d.ts +56 -55
- package/lib/shell-components/models/MessageDetails.d.ts.map +1 -0
- package/lib/shell-components/models/MessageTypingDetails.d.ts +10 -9
- package/lib/shell-components/models/MessageTypingDetails.d.ts.map +1 -0
- package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts +9 -8
- package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts +9 -8
- package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/NotificationsOutPutModel.d.ts +42 -41
- package/lib/shell-components/models/NotificationsOutPutModel.d.ts.map +1 -0
- package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts +11 -10
- package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts.map +1 -0
- package/lib/shell-components/models/RecentSearchModel.d.ts +15 -14
- package/lib/shell-components/models/RecentSearchModel.d.ts.map +1 -0
- package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts +10 -9
- package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/ReportSubmittedNotification.d.ts +11 -10
- package/lib/shell-components/models/ReportSubmittedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/RoleUpdatedNotification.d.ts +8 -7
- package/lib/shell-components/models/RoleUpdatedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/UserStoryAssignedNotification.d.ts +9 -8
- package/lib/shell-components/models/UserStoryAssignedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/archiveUserStoryModel.d.ts +8 -7
- package/lib/shell-components/models/archiveUserStoryModel.d.ts.map +1 -0
- package/lib/shell-components/models/companieslist.model.d.ts +9 -8
- package/lib/shell-components/models/companieslist.model.d.ts.map +1 -0
- package/lib/shell-components/models/company-model.d.ts +32 -31
- package/lib/shell-components/models/company-model.d.ts.map +1 -0
- package/lib/shell-components/models/company-payment-model.d.ts +19 -18
- package/lib/shell-components/models/company-payment-model.d.ts.map +1 -0
- package/lib/shell-components/models/dragedWidget.d.ts +17 -16
- package/lib/shell-components/models/dragedWidget.d.ts.map +1 -0
- package/lib/shell-components/models/employee-List.d.ts +9 -8
- package/lib/shell-components/models/employee-List.d.ts.map +1 -0
- package/lib/shell-components/models/employee.d.ts +61 -60
- package/lib/shell-components/models/employee.d.ts.map +1 -0
- package/lib/shell-components/models/entityRoleFeature.d.ts +10 -9
- package/lib/shell-components/models/entityRoleFeature.d.ts.map +1 -0
- package/lib/shell-components/models/export-configuration-model.d.ts +9 -8
- package/lib/shell-components/models/export-configuration-model.d.ts.map +1 -0
- package/lib/shell-components/models/export-data.module.d.ts +7 -6
- package/lib/shell-components/models/export-data.module.d.ts.map +1 -0
- package/lib/shell-components/models/goalApprovedNotificationModel.d.ts +9 -8
- package/lib/shell-components/models/goalApprovedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/import-configuration-model.d.ts +4 -3
- package/lib/shell-components/models/import-configuration-model.d.ts.map +1 -0
- package/lib/shell-components/models/initialStatusofUsers.d.ts +6 -5
- package/lib/shell-components/models/initialStatusofUsers.d.ts.map +1 -0
- package/lib/shell-components/models/invoiceOutput-model.d.ts +10 -9
- package/lib/shell-components/models/invoiceOutput-model.d.ts.map +1 -0
- package/lib/shell-components/models/leaveApplicationNotifiction.d.ts +8 -7
- package/lib/shell-components/models/leaveApplicationNotifiction.d.ts.map +1 -0
- package/lib/shell-components/models/multiChartsScheduling.d.ts +10 -9
- package/lib/shell-components/models/multiChartsScheduling.d.ts.map +1 -0
- package/lib/shell-components/models/parkUserStoryInputModel.d.ts +8 -7
- package/lib/shell-components/models/parkUserStoryInputModel.d.ts.map +1 -0
- package/lib/shell-components/models/project.d.ts +29 -28
- package/lib/shell-components/models/project.d.ts.map +1 -0
- package/lib/shell-components/models/recentSearchApiModel.d.ts +7 -6
- package/lib/shell-components/models/recentSearchApiModel.d.ts.map +1 -0
- package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts +11 -10
- package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts.map +1 -0
- package/lib/shell-components/models/shellModulesInfo.d.ts +17 -16
- package/lib/shell-components/models/shellModulesInfo.d.ts.map +1 -0
- package/lib/shell-components/models/softlabels-model.d.ts +67 -66
- package/lib/shell-components/models/softlabels-model.d.ts.map +1 -0
- package/lib/shell-components/models/sprintReplanRequestedModel.d.ts +8 -7
- package/lib/shell-components/models/sprintReplanRequestedModel.d.ts.map +1 -0
- package/lib/shell-components/models/sprintStartedNotificationModel.d.ts +8 -7
- package/lib/shell-components/models/sprintStartedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/store-model.d.ts +14 -13
- package/lib/shell-components/models/store-model.d.ts.map +1 -0
- package/lib/shell-components/models/store-search-model.d.ts +8 -7
- package/lib/shell-components/models/store-search-model.d.ts.map +1 -0
- package/lib/shell-components/models/themes.model.d.ts +10 -9
- package/lib/shell-components/models/themes.model.d.ts.map +1 -0
- package/lib/shell-components/models/timesheetenabledisable.d.ts +17 -16
- package/lib/shell-components/models/timesheetenabledisable.d.ts.map +1 -0
- package/lib/shell-components/models/user.d.ts +41 -40
- package/lib/shell-components/models/user.d.ts.map +1 -0
- package/lib/shell-components/models/userStory.d.ts +189 -188
- package/lib/shell-components/models/userStory.d.ts.map +1 -0
- package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts +7 -6
- package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts +7 -6
- package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/userstory-custom-fields.model.d.ts +7 -6
- package/lib/shell-components/models/userstory-custom-fields.model.d.ts.map +1 -0
- package/lib/shell-components/models/validation.model.d.ts +6 -5
- package/lib/shell-components/models/validation.model.d.ts.map +1 -0
- package/lib/shell-components/models/widgetlist.d.ts +29 -28
- package/lib/shell-components/models/widgetlist.d.ts.map +1 -0
- package/lib/shell-components/models/workspaceList.d.ts +20 -19
- package/lib/shell-components/models/workspaceList.d.ts.map +1 -0
- package/lib/shell-components/services/authentication.service.d.ts +19 -18
- package/lib/shell-components/services/authentication.service.d.ts.map +1 -0
- package/lib/shell-components/services/chat.service.d.ts +17 -16
- package/lib/shell-components/services/chat.service.d.ts.map +1 -0
- package/lib/shell-components/services/common-used.service.d.ts +46 -45
- package/lib/shell-components/services/common-used.service.d.ts.map +1 -0
- package/lib/shell-components/services/feature.service.d.ts +20 -19
- package/lib/shell-components/services/feature.service.d.ts.map +1 -0
- package/lib/shell-components/services/google-analytics.service.d.ts +10 -9
- package/lib/shell-components/services/google-analytics.service.d.ts.map +1 -0
- package/lib/shell-components/services/layout.service.d.ts +24 -23
- package/lib/shell-components/services/layout.service.d.ts.map +1 -0
- package/lib/shell-components/services/payment.service.d.ts +20 -19
- package/lib/shell-components/services/payment.service.d.ts.map +1 -0
- package/lib/shell-components/services/recentSearch.service.d.ts +17 -16
- package/lib/shell-components/services/recentSearch.service.d.ts.map +1 -0
- package/lib/shell-components/services/shell.modules.service.d.ts +10 -9
- package/lib/shell-components/services/shell.modules.service.d.ts.map +1 -0
- package/lib/shell-components/services/signalr.service.d.ts +26 -25
- package/lib/shell-components/services/signalr.service.d.ts.map +1 -0
- package/lib/shell-components/services/theme.service.d.ts +15 -14
- package/lib/shell-components/services/theme.service.d.ts.map +1 -0
- package/lib/shell-components/shell.module.d.ts +120 -119
- package/lib/shell-components/shell.module.d.ts.map +1 -0
- package/lib/shell-components/shell.routing.d.ts +3 -2
- package/lib/shell-components/shell.routing.d.ts.map +1 -0
- package/lib/shell-components/store/actions/authentication.actions.d.ts +328 -327
- package/lib/shell-components/store/actions/authentication.actions.d.ts.map +1 -0
- package/lib/shell-components/store/actions/chat.actions.d.ts +400 -399
- package/lib/shell-components/store/actions/chat.actions.d.ts.map +1 -0
- package/lib/shell-components/store/actions/menuitems.actions.d.ts +52 -51
- package/lib/shell-components/store/actions/menuitems.actions.d.ts.map +1 -0
- package/lib/shell-components/store/actions/notification-validator.action.d.ts +26 -25
- package/lib/shell-components/store/actions/notification-validator.action.d.ts.map +1 -0
- package/lib/shell-components/store/actions/notifications.actions.d.ts +117 -116
- package/lib/shell-components/store/actions/notifications.actions.d.ts.map +1 -0
- package/lib/shell-components/store/effects/authentication.effects.d.ts +55 -54
- package/lib/shell-components/store/effects/authentication.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/chat.effects.d.ts +31 -30
- package/lib/shell-components/store/effects/chat.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/index.d.ts +2 -1
- package/lib/shell-components/store/effects/index.d.ts.map +1 -0
- package/lib/shell-components/store/effects/menuitems.effects.d.ts +18 -17
- package/lib/shell-components/store/effects/menuitems.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/notification-validator.effects.d.ts +22 -21
- package/lib/shell-components/store/effects/notification-validator.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/notifications.effects.d.ts +24 -23
- package/lib/shell-components/store/effects/notifications.effects.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/authentication.reducers.d.ts +31 -30
- package/lib/shell-components/store/reducers/authentication.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/chat.reducers.d.ts +18 -17
- package/lib/shell-components/store/reducers/chat.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/index.d.ts +60 -59
- package/lib/shell-components/store/reducers/index.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/menuitems.reducers.d.ts +12 -11
- package/lib/shell-components/store/reducers/menuitems.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts +6 -5
- package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/notifications.reducers.d.ts +11 -10
- package/lib/shell-components/store/reducers/notifications.reducers.d.ts.map +1 -0
- package/package.json +5 -2
- package/public-api.d.ts +83 -82
- package/public-api.d.ts.map +1 -0
- package/store/reducers/index.d.ts +25 -24
- package/store/reducers/index.d.ts.map +1 -0
- package/thetradeengineorg1-snova-shell-module.d.ts +6 -5
- package/thetradeengineorg1-snova-shell-module.d.ts.map +1 -0
|
@@ -1,250 +1,350 @@
|
|
|
1
|
-
import { Component, HostListener } from "@angular/core";
|
|
2
|
-
import { NavigationEnd, RouteConfigLoadStart, RouteConfigLoadEnd, ResolveStart, ResolveEnd, NavigationStart, NavigationCancel, NavigationError, } from "@angular/router";
|
|
3
|
-
// import PerfectScrollbar from 'perfect-scrollbar';
|
|
4
|
-
import { Subject } from "rxjs";
|
|
5
|
-
import { takeUntil, tap } from "rxjs/operators";
|
|
6
|
-
import { filter } from "rxjs/operators";
|
|
7
|
-
import { UserDetailsFetchedAfterLogin, AuthenticationActionTypes } from "../../store/actions/authentication.actions";
|
|
8
|
-
import { ofType } from "@ngrx/effects";
|
|
9
|
-
import { SoftLabelConfigurationModel } from "../../models/softlabels-model";
|
|
10
|
-
import '../../../globaldependencies/helpers/fontawesome-icons';
|
|
11
|
-
import { LocalStorageProperties } from '../../../globaldependencies/constants/localstorage-properties';
|
|
12
|
-
import { SPINNER } from 'ngx-ui-loader';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@angular/router";
|
|
15
|
-
import * as i2 from "@ngx-translate/core";
|
|
16
|
-
import * as i3 from "../../services/layout.service";
|
|
17
|
-
import * as i4 from "@ngrx/store";
|
|
18
|
-
import * as i5 from "ngx-cookie-service";
|
|
19
|
-
import * as i6 from "@ngrx/effects";
|
|
20
|
-
import * as i7 from "@angular/common";
|
|
21
|
-
import * as i8 from "../../services/common-used.service";
|
|
22
|
-
import * as i9 from "pubnub-angular2";
|
|
23
|
-
import * as i10 from "../../services/signalr.service";
|
|
24
|
-
import * as i11 from "
|
|
25
|
-
import * as i12 from "ngx-ui-loader";
|
|
26
|
-
import * as i13 from "@angular/material/sidenav";
|
|
27
|
-
import * as i14 from "
|
|
28
|
-
import * as i15 from "
|
|
29
|
-
import * as i16 from "../
|
|
30
|
-
import * as i17 from "
|
|
31
|
-
import * as i18 from "
|
|
32
|
-
import * as i19 from "
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
this.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
this.
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
event instanceof
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
this.
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvYWRtaW4tbGF5b3V0L2FkbWluLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL2FkbWluLWxheW91dC9hZG1pbi1sYXlvdXQudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFvQyxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFVLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEdBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUt4TCxvREFBb0Q7QUFDcEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUseUJBQXlCLEVBQTZCLE1BQU0sNENBQTRDLENBQUM7QUFFaEosT0FBTyxFQUFXLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUkzRSxPQUFPLHVEQUF1RCxDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtE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QUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbEM7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQztRQUNELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7WUFDOUIsWUFBWSxFQUFFLFFBQVE7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ1YsQ0FBQzs7aUhBMVBVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHNIQy9CakMsazNPQXlITTsyRkQxRk8sb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSw4QkFBOEI7aUJBQzVDOzJVQThLQyxRQUFRO3NCQUZQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25FbmQsIFJvdXRlQ29uZmlnTG9hZFN0YXJ0LCBSb3V0ZUNvbmZpZ0xvYWRFbmQsIFJlc29sdmVTdGFydCwgUmVzb2x2ZUVuZCwgTmF2aWdhdGlvblN0YXJ0LCBOYXZpZ2F0aW9uQ2FuY2VsLCBOYXZpZ2F0aW9uRXJyb3IsIEV2ZW50LCB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgTWF0U2lkZW5hdiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2XCI7XHJcbmltcG9ydCB7IE1lZGlhQ2hhbmdlIH0gZnJvbSBcIkBhbmd1bGFyL2ZsZXgtbGF5b3V0XCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG4vLyBpbXBvcnQgUGVyZmVjdFNjcm9sbGJhciBmcm9tICdwZXJmZWN0LXNjcm9sbGJhcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gXCJAbmdyeC9zdG9yZVwiO1xyXG5pbXBvcnQgeyBVc2VyRGV0YWlsc0ZldGNoZWRBZnRlckxvZ2luLCBBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLCBVc2VySW5pdGlhbERldGFpbHNGZXRjaGVkIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvYXV0aGVudGljYXRpb24uYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSBcIm5neC1jb29raWUtc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBY3Rpb25zLCBvZlR5cGUgfSBmcm9tIFwiQG5ncngvZWZmZWN0c1wiO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9zb2Z0bGFiZWxzLW1vZGVsXCJcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlclN0b3J5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJTdG9yeSc7XHJcbmltcG9ydCAqIGFzIFNoYXJlZE1vZHVsZVN0YXRlIGZyb20gXCIuLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xyXG5pbXBvcnQgJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9oZWxwZXJzL2ZvbnRhd2Vzb21lLWljb25zJztcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlUHJvcGVydGllcyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvbG9jYWxzdG9yYWdlLXByb3BlcnRpZXMnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLXVzZWQuc2VydmljZSc7XHJcbmltcG9ydCB7IFB1Yk51YkFuZ3VsYXIgfSBmcm9tICdwdWJudWItYW5ndWxhcjInO1xyXG5pbXBvcnQgeyBTUElOTkVSIH0gZnJvbSAnbmd4LXVpLWxvYWRlcic7XHJcbmltcG9ydCB7IFNpZ25hbHJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NpZ25hbHIuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLWFkbWluLWxheW91dFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWRtaW4tbGF5b3V0LnRlbXBsYXRlLmh0bWxcIlxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkbWluTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBpc01vZHVsZUxvYWRpbmc6IEJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIG1vZHVsZUxvYWRlclN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgbGF5b3V0Q29uZlN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgcm91dGVyRXZlbnRTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIG1lZGlhU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgc29mdExhYmVscyQ6IE9ic2VydmFibGU8U29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsW10+O1xyXG4gIHNvZnRMYWJlbHM6IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbFtdO1xyXG4gIC8vIHByaXZhdGUgc2lkZWJhclBTOiBQZXJmZWN0U2Nyb2xsYmFyO1xyXG5cclxuICAvLyBwcml2YXRlIGJvZHlQUzogUGVyZmVjdFNjcm9sbGJhcjtcclxuICAvLyBwcml2YXRlIGhlYWRlckZpeGVkQm9keVBTOiBQZXJmZWN0U2Nyb2xsYmFyO1xyXG4gIHB1YmxpYyBzY3JvbGxDb25maWcgPSB7fTtcclxuICBwdWJsaWMgbGF5b3V0Q29uZjogYW55ID0ge307XHJcbiAgZGlzcGxheTogYm9vbGVhbjtcclxuICB1c2VyU3RvcmllcyQ6IE9ic2VydmFibGU8VXNlclN0b3J5W10+O1xyXG4gIHNob3c6IGJvb2xlYW47XHJcbiAgdXNlclN0b3JpZXM6IFVzZXJTdG9yeVtdO1xyXG4gIHVzZXJTdG9yeTogVXNlclN0b3J5O1xyXG4gIGFueU9wZXJhdGlvbkluUHJvZ3Jlc3NGb3JBdXRvTG9nZ2luZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgcHVibGljIG5nRGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZGFzaGJvYXJkUGFnZTogYm9vbGVhbjtcclxuICBiZ2NvbG9yOiBhbnk7XHJcbiAgcHJpdmF0ZSBzdWI6IFN1YnNjcmlwdGlvbjtcclxuICB1c2Vyc3RvcnkgPSAndXNlcnN0b3J5JztcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgdG90YWxMb2FkaW5nVGltZTogbnVtYmVyID0gMDtcclxuICBpbnRlcnZhbDtcclxuICBzcGlubmVyVHlwZSA9IFNQSU5ORVIuY2lyY2xlO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgbGF5b3V0OiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8U2hhcmVkTW9kdWxlU3RhdGUuU3RhdGU+LFxyXG4gICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3Rpb25VcGRhdGVzJDogQWN0aW9ucyxcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwdWJudWI6IFB1Yk51YkFuZ3VsYXIsXHJcbiAgICBwcml2YXRlIHNpZ25hbHI6IFNpZ25hbHJTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgLy8gbGV0IGNvbklkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY29uZWN0aW9uSWQnKTtcclxuICAgIC8vIGlmKCFjb25JZCkge1xyXG4gICAgICB0aGlzLnNpZ25hbHIuaW5pdGlhbGl6ZVNpZ25hbFJDb25uZWN0aW9uKCk7XHJcbiAgICAvLyB9XHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIGxldCBjb21wYW55U2V0dGluZ3MgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncyk7XHJcbiAgICBpZiAoIWNvbXBhbnlTZXR0aW5ncyB8fCBjb21wYW55U2V0dGluZ3MgPT0gJ251bGwnIHx8IGNvbXBhbnlTZXR0aW5ncyA9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgIHB1Ym51Yi5pbml0KHtcclxuICAgICAgICBwdWJsaXNoS2V5OiBlbnZpcm9ubWVudC5wdWJsaXNoS2V5LFxyXG4gICAgICAgIHN1YnNjcmliZUtleTogZW52aXJvbm1lbnQuc3Vic2NyaWJlS2V5XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY29tU2V0ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xyXG4gICAgICB2YXIgcHVibGlzaEtleSA9IGNvbVNldC5maW5kKGkgPT4gaS5rZXkgPT0gXCJQdWJudWJQdWJsaXNoS2V5XCIpO1xyXG4gICAgICB2YXIgc3Vic2NyaWJlS2V5ID0gY29tU2V0LmZpbmQoaSA9PiBpLmtleSA9PSBcIlB1Ym51YlN1YnNjcmliZUtleVwiKVxyXG4gICAgICBpZiAoKHB1Ymxpc2hLZXkgJiYgcHVibGlzaEtleS52YWx1ZSkgJiYgKHN1YnNjcmliZUtleSAmJiBzdWJzY3JpYmVLZXkudmFsdWUpKSB7XHJcbiAgICAgICAgcHVibnViLmluaXQoe1xyXG4gICAgICAgICAgcHVibGlzaEtleTogcHVibGlzaEtleS52YWx1ZSxcclxuICAgICAgICAgIHN1YnNjcmliZUtleTogc3Vic2NyaWJlS2V5LnZhbHVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcHVibnViLmluaXQoe1xyXG4gICAgICAgICAgcHVibGlzaEtleTogZW52aXJvbm1lbnQucHVibGlzaEtleSxcclxuICAgICAgICAgIHN1YnNjcmliZUtleTogZW52aXJvbm1lbnQuc3Vic2NyaWJlS2V5XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8vIENsb3NlIHNpZGVuYXYgYWZ0ZXIgcm91dGUgY2hhbmdlIGluIG1vYmlsZVxyXG4gICAgdGhpcy5yb3V0ZXJFdmVudFN1YiA9IHJvdXRlci5ldmVudHNcclxuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJvdXRlQ2hhbmdlOiBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sYXlvdXQuYWRqdXN0TGF5b3V0KHsgcm91dGU6IHJvdXRlQ2hhbmdlLnVybCB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gVHJhbnNsYXRvciBpbml0XHJcbiAgICBsZXQgY3VycmVudEN1bHR1cmUgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudEN1bHR1cmUpO1xyXG5cclxuICAgIGlmIChjdXJyZW50Q3VsdHVyZSA9PT0gJ251bGwnIHx8IGN1cnJlbnRDdWx0dXJlID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBjdXJyZW50Q3VsdHVyZSA9ICdlbic7XHJcbiAgICB9XHJcbiAgICB0cmFuc2xhdGUudXNlKGN1cnJlbnRDdWx0dXJlKTtcclxuXHJcblxyXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIHN3aXRjaCAodHJ1ZSkge1xyXG4gICAgICAgIGNhc2UgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQ6IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsTG9hZGluZ1RpbWUgPSAwO1xyXG4gICAgICAgICAgdGhpcy5zdGFydFRpbWVyKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhc2UgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kOiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWw6XHJcbiAgICAgICAgY2FzZSBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcjoge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICBpZiAobG9jYXRpb24ucGF0aCgpICE9IFwiXCIpIHtcclxuICAgICAgICBpZiAobG9jYXRpb24ucGF0aCgpLmluY2x1ZGVzKCcvZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkLycpKSB7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZFBhZ2UgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5iZ2NvbG9yID0gJ25vbmUnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkUGFnZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5iZ2NvbG9yID0gJ2JlaWdlJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpKSB7XHJcbiAgICAvLyAgIGxldCBkYXRhID0gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSk7XHJcbiAgICAvLyAgIGlmIChkYXRhICYmIGRhdGEgIT0gJ251bGwnICYmIGRhdGEgIT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAvLyAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXNlckRldGFpbHNGZXRjaGVkQWZ0ZXJMb2dpbihkYXRhKSk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkgIT0gbnVsbCAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkgIT0gdW5kZWZpbmVkKVxyXG4gICAgICAmJiAhbG9jYWxTdG9yYWdlLmhhc093blByb3BlcnR5KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJvbGVGZWF0dXJlcykpIHtcclxuICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlck1vZGVsKSk7XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVzZXJEZXRhaWxzRmV0Y2hlZEFmdGVyTG9naW4oZGF0YSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgICAgICBvZlR5cGUoQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcy5DbGVhckRlbW9EYXRhQ29tcGxldGVkKSxcclxuICAgICAgICB0YXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5jb21wYW55SWQpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRTb2Z0TGFiZWxzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRTb2Z0TGFiZWxDb25maWd1cmF0aW9ucygpO1xyXG4gICAgdGhpcy5sYXlvdXRDb25mID0gdGhpcy5sYXlvdXQubGF5b3V0Q29uZjtcclxuICAgIC8vIHRoaXMubGF5b3V0LmFkanVzdExheW91dCgpO1xyXG5cclxuICAgIC8vIEZPUiBNT0RVTEUgTE9BREVSIEZMQUdcclxuICAgIHRoaXMubW9kdWxlTG9hZGVyU3ViID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBldmVudCBpbnN0YW5jZW9mIFJvdXRlQ29uZmlnTG9hZFN0YXJ0IHx8XHJcbiAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBSZXNvbHZlU3RhcnRcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5pc01vZHVsZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBSb3V0ZUNvbmZpZ0xvYWRFbmQgfHwgZXZlbnQgaW5zdGFuY2VvZiBSZXNvbHZlRW5kKSB7XHJcbiAgICAgICAgdGhpcy5pc01vZHVsZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiLCBbJyRldmVudCddKVxyXG5cclxuICBvblJlc2l6ZShldmVudCkge1xyXG4gICAgdGhpcy5sYXlvdXQuYWRqdXN0TGF5b3V0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIE9wZW5lZChldmVudCkge1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRTb2Z0TGFiZWxDb25maWd1cmF0aW9ucygpIHtcclxuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XHJcbiAgfVxyXG5cclxuICBnZXRTb2Z0TGFiZWxzKCkge1xyXG4gICAgbGV0IG1vZGVsID0gbmV3IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbCgpO1xyXG4gICAgbW9kZWwuc2VhcmNoVGV4dCA9IG51bGw7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U29mdExhYmVscyhtb2RlbCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgbGV0IGRhdGEgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnU29mdExhYmVscycsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gdGhpcy5sYXlvdXRDb25mU3ViID0gdGhpcy5sYXlvdXQubGF5b3V0Q29uZiQuc3Vic2NyaWJlKGNoYW5nZSA9PiB7XHJcbiAgICAvLyAgIC8vIHRoaXMuaW5pdEJvZHlQUyhjaGFuZ2UpXHJcbiAgICAvLyB9KVxyXG4gIH1cclxuXHJcbiAgLy8gaW5pdEJvZHlQUyhsYXlvdXRDb25mOmFueSA9IHt9KSB7XHJcbiAgLy8gICBpZihsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICdzaWRlJyAmJiBsYXlvdXRDb25mLnRvcGJhckZpeGVkKSB7XHJcbiAgLy8gICAgIGlmICh0aGlzLmJvZHlQUykgdGhpcy5ib2R5UFMuZGVzdHJveSgpO1xyXG4gIC8vICAgICBpZiAodGhpcy5oZWFkZXJGaXhlZEJvZHlQUykgdGhpcy5oZWFkZXJGaXhlZEJvZHlQUy5kZXN0cm95KCk7XHJcbiAgLy8gICAgIHRoaXMuaGVhZGVyRml4ZWRCb2R5UFMgPSBuZXcgUGVyZmVjdFNjcm9sbGJhcignLnJpZ2h0c2lkZS1jb250ZW50LWhvbGQnLCB7XHJcbiAgLy8gICAgICAgc3VwcHJlc3NTY3JvbGxYOiB0cnVlXHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgICB0aGlzLnNjcm9sbFRvVG9wKCcucmlnaHRzaWRlLWNvbnRlbnQtaG9sZCcpO1xyXG4gIC8vICAgfSBlbHNlIHtcclxuICAvLyAgICAgaWYgKHRoaXMuYm9keVBTKSB0aGlzLmJvZHlQUy5kZXN0cm95KCk7XHJcbiAgLy8gICAgIGlmICh0aGlzLmhlYWRlckZpeGVkQm9keVBTKSB0aGlzLmhlYWRlckZpeGVkQm9keVBTLmRlc3Ryb3koKTtcclxuICAvLyAgICAgdGhpcy5ib2R5UFMgPSBuZXcgUGVyZmVjdFNjcm9sbGJhcignLm1haW4tY29udGVudC13cmFwJywge1xyXG4gIC8vICAgICAgIHN1cHByZXNzU2Nyb2xsWDogdHJ1ZVxyXG4gIC8vICAgICB9KTtcclxuICAvLyAgICAgdGhpcy5zY3JvbGxUb1RvcCgnLm1haW4tY29udGVudC13cmFwJyk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG4gIHNjcm9sbFRvVG9wKHNlbGVjdG9yOiBzdHJpbmcpIHtcclxuICAgIGlmIChkb2N1bWVudCkge1xyXG4gICAgICBsZXQgZWxlbWVudCA9IDxIVE1MRWxlbWVudD5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcclxuICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLm1vZHVsZUxvYWRlclN1Yikge1xyXG4gICAgICB0aGlzLm1vZHVsZUxvYWRlclN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubGF5b3V0Q29uZlN1Yikge1xyXG4gICAgICB0aGlzLmxheW91dENvbmZTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJvdXRlckV2ZW50U3ViKSB7XHJcbiAgICAgIHRoaXMucm91dGVyRXZlbnRTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnN1Yikge1xyXG4gICAgICB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjbG9zZVNpZGViYXIoKSB7XHJcbiAgICB0aGlzLmxheW91dC5wdWJsaXNoTGF5b3V0Q2hhbmdlKHtcclxuICAgICAgc2lkZWJhclN0eWxlOiBcImNsb3NlZFwiXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0YXJ0VGltZXIoKSB7XHJcbiAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRvdGFsTG9hZGluZ1RpbWUrKztcclxuICAgIH0sIDEwMDApXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJhcHAtYWRtaW4td3JhcFwiIFtkaXJdPSdsYXlvdXRDb25mLmRpcic+XHJcbiAgPCEtLSBIZWFkZXIgZm9yIHRvcCBuYXZpZ2F0aW9uIGxheW91dCAtLT5cclxuICA8IS0tIE9OTFkgUkVRVUlSRUQgRk9SICoqVE9QKiogTkFWSUdBVElPTiBMQVlPVVQgLS0+XHJcbiAgPGFwcC1oZWFkZXItdG9wICpuZ0lmPVwibGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAndG9wJ1wiIFtub3RpZmljUGFuZWxdPVwic2lkZW5hdlwiPlxyXG4gIDwvYXBwLWhlYWRlci10b3A+XHJcbiAgPG5neC11aS1sb2FkZXIgZmdzU2l6ZT1cIjE4MFwiIFtmZ3NUeXBlXT1cInNwaW5uZXJUeXBlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9uZ3gtdWktbG9hZGVyPlxyXG4gIDwhLS0gTWFpbiBDb250YWluZXIgLS0+XHJcbiAgPG1hdC1zaWRlbmF2LWNvbnRhaW5lciBbZGlyXT0nbGF5b3V0Q29uZi5kaXInIGNsYXNzPVwiYXBwLWFkbWluLWNvbnRhaW5lciBhcHAtc2lkZS1uYXYtY29udGFpbmVyIG1hdC1kcmF3ZXItdHJhbnNpdGlvblwiXHJcbiAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAnbmF2aWdhdGlvbi10b3AnOiBsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICd0b3AnLFxyXG4gICAgJ3NpZGViYXItZnVsbCc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlID09PSAnZnVsbCcsXHJcbiAgICAnc2lkZWJhci1jb21wYWN0JzogbGF5b3V0Q29uZi5zaWRlYmFyU3R5bGUgPT09ICdjb21wYWN0JyAmJiBsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICdzaWRlJyxcclxuICAgICdzaWRlYmFyLWNvbXBhY3QtYmlnJzogbGF5b3V0Q29uZi5zaWRlYmFyU3R5bGUgPT09ICdjb21wYWN0LWJpZycgJiYgbGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAnc2lkZScsXHJcbiAgICAnbGF5b3V0LWludHJhbnNpdGlvbic6IGxheW91dENvbmYubGF5b3V0SW5UcmFuc2l0aW9uLFxyXG4gICAgJ3NpZGViYXItb3BlbmVkJzogbGF5b3V0Q29uZi5zaWRlYmFyU3R5bGUgIT09ICdjbG9zZWQnICYmIGxheW91dENvbmYubmF2aWdhdGlvblBvcyA9PT0gJ3NpZGUnLFxyXG4gICAgJ3NpZGViYXItY2xvc2VkJzogbGF5b3V0Q29uZi5zaWRlYmFyU3R5bGUgPT09ICdjbG9zZWQnLFxyXG4gICAgJ2ZpeGVkLXRvcGJhcic6IGxheW91dENvbmYudG9wYmFyRml4ZWQgJiYgbGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAnc2lkZSdcclxuICB9XCI+XHJcbiAgICA8IS0tIFNJREVCQVIgLS0+XHJcbiAgICA8IS0tIE9OTFkgUkVRVUlSRUQgRk9SICoqU0lERSoqIE5BVklHQVRJT04gTEFZT1VUIC0tPlxyXG4gICAgPCEtLSA8YXBwLXNpZGViYXItc2lkZSAqbmdJZj1cImxheW91dENvbmYubmF2aWdhdGlvblBvcyA9PT0gJ3NpZGUnXCI+PC9hcHAtc2lkZWJhci1zaWRlPiAtLT5cclxuXHJcbiAgICA8IS0tIFRvcCBuYXZpZ2F0aW9uIGxheW91dCAobmF2aWdhdGlvbiBmb3IgbW9iaWxlIHNjcmVlbikgLS0+XHJcbiAgICA8IS0tIE9OTFkgUkVRVUlSRUQgRk9SICoqVE9QKiogTkFWSUdBVElPTiBNT0JJTEUgTEFZT1VUIC0tPlxyXG4gICAgPGFwcC1zaWRlYmFyLXRvcCAqbmdJZj1cImxheW91dENvbmYubmF2aWdhdGlvblBvcyA9PT0gJ3RvcCcgJiYgbGF5b3V0Q29uZi5pc01vYmlsZVwiPjwvYXBwLXNpZGViYXItdG9wPlxyXG5cclxuICAgIDwhLS0gQXBwIGNvbnRlbnQgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50LXdyYXBcIiBbcGVyZmVjdFNjcm9sbGJhcl09XCJzY3JvbGxDb25maWdcIiBbZGlzYWJsZWRdPVwibGF5b3V0Q29uZi50b3BiYXJGaXhlZFwiPlxyXG4gICAgICA8IS0tIEhlYWRlciBmb3Igc2lkZSBuYXZpZ2F0aW9uIGxheW91dCAtLT5cclxuICAgICAgPCEtLSBPTkxZIFJFUVVJUkVEIEZPUiAqKlNJREUqKiBOQVZJR0FUSU9OIExBWU9VVCAtLT5cclxuICAgICAgPGFwcC1oZWFkZXItc2lkZSBjbGFzcz1cInt7bGF5b3V0Q29uZi5pc01vYmlsZSA/ICdjdXN0b20tYXBwLWhlYWRlci1tb2JpbGUnIDogJ2N1c3RvbS1hcHAtaGVhZGVyJ319XCIgKG9wZW5lZCk9XCJPcGVuZWQoJGV2ZW50KVwiIFtub3RpZmljUGFuZWxdPVwic2lkZW5hdlwiPlxyXG4gICAgICA8L2FwcC1oZWFkZXItc2lkZT5cclxuXHJcbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1yLTFcIiAqbmdJZj1cIiFkYXNoYm9hcmRQYWdlXCI+XHJcbiAgICAgICAgPGdjLXVzZXJzdG9yeS1zdW1tYXJ5ICpuZ0lmPVwidXNlclN0b3J5XCIgc3R5bGU9XCJ3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtiYWNrZ3JvdW5kLWNvbG9yOiBiZWlnZTtcIlxyXG4gICAgICAgICAgW3VzZXJTdG9yeV09XCJ1c2VyU3RvcnlcIiBbaXNTdWJUYXNrc1BhZ2VdPWZhbHNlIFtpc0xvYWRpbmddPVwiKGFueU9wZXJhdGlvbkluUHJvZ3Jlc3NGb3JBdXRvTG9nZ2luZyR8YXN5bmMpXCJcclxuICAgICAgICAgIFtpc1VzZXJTdG9yaWVzUGFnZV09ZmFsc2UgKHVwZGF0ZUF1dG9Mb2cpPVwiTG9nQWN0aW9uKCRldmVudClcIj5cclxuICAgICAgICA8L2djLXVzZXJzdG9yeS1zdW1tYXJ5PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhdXNlclN0b3J5XCI+XHJcbiAgICAgICAgICBZb3UgYXJlIG5vdCBzdGFydGVkIGFueSB1c2Vyc3RvcnkgeWV0ISBQbGVhc2Ugc3RhcnQgd29yayEhXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTA1XCI+XHJcbiAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cImNhcmV0LXNpemVcIiBzdHlsZT1cImNvbG9yOiMzZGE4YjVcIiBpY29uPVwiY2FyZXQtZG93blwiIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cInJlY2VudFVzZXJTdG9yeVwiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwicmVjZW50VXNlclN0b3J5LnRvZ2dsZSgpXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzYXQtcG9wb3ZlciAjcmVjZW50VXNlclN0b3J5IGhhc0JhY2tkcm9wICBiYWNrZHJvcENsYXNzPVwidXMtcG9wb3ZlclwiPiBcclxuICAgICAgICAgICAgPG1hdC1jYXJkPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdXNlclN0b3J5IG9mICh1c2VyU3RvcmllcyQgfCBhc3luYyB8IHNsaWNlOjA6NSlcIiBzdHlsZT1cIm1pbi13aWR0aDogMTAwMHB4O1wiIGNsYXNzPVwidmlldy11c1wiPlxyXG4gICAgICAgICAgICA8Z2MtdXNlcnN0b3J5LXN1bW1hcnkgc3R5bGU9XCJ3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtiYWNrZ3JvdW5kLWNvbG9yOiBiZWlnZTtcIlxyXG4gICAgICAgICAgICAgIFt1c2VyU3RvcnldPVwidXNlclN0b3J5XCIgW2lzU3ViVGFza3NQYWdlXT1mYWxzZSBbaXNMb2FkaW5nXT1cIihhbnlPcGVyYXRpb25JblByb2dyZXNzRm9yQXV0b0xvZ2dpbmckfGFzeW5jKVwiXHJcbiAgICAgICAgICAgICAgW2lzVXNlclN0b3JpZXNQYWdlXT10cnVlICh1cGRhdGVBdXRvTG9nKT1cIkxvZ0FjdGlvbigkZXZlbnQpXCIgW2lzU2hvd109XCJmYWxzZVwiIChjbG9zZSk9XCJyZWNlbnRVc2VyU3RvcnkuY2xvc2UoKVwiPlxyXG4gICAgICAgICAgICA8L2djLXVzZXJzdG9yeS1zdW1tYXJ5PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgICA8L3NhdC1wb3BvdmVyPlxyXG4gICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRzaWRlLWNvbnRlbnQtaG9sZFwiIFtwZXJmZWN0U2Nyb2xsYmFyXT1cInNjcm9sbENvbmZpZ1wiIFtkaXNhYmxlZF09XCIhbGF5b3V0Q29uZi50b3BiYXJGaXhlZFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydibHVyLW9uLW9wZW5lZCc6IGRpc3BsYXl9XCIgW25nQ2xhc3NdPVwieydzaG93LWluLWRhc2hib2FyZCc6ZGFzaGJvYXJkUGFnZX1cIj5cclxuICAgICAgICA8IS0tIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGNsYXNzPVwibXItMVwiICpuZ0lmPVwiIWRhc2hib2FyZFBhZ2VcIiBbbmdTdHlsZV09XCJ7J21hcmdpbi1sZWZ0JzogJzkwcHgnfVwiIFxyXG4gICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOiB1c2VyU3RvcnkgPyAnYmVpZ2UnIDogJ25vbmUnIH1cIiBzdHlsZT1cIm1hcmdpbi1yaWdodDo5MHB4ICFpbXBvcnRhbnRcIj5cclxuICAgICAgICA8Z2MtdXNlcnN0b3J5LXN1bW1hcnkgZnhGbGV4PVwiOTBcIiAqbmdJZj1cInVzZXJTdG9yeVwiIHN0eWxlPVwid2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7YmFja2dyb3VuZC1jb2xvcjogYmVpZ2U7XCJcclxuICAgICAgICAgIFt1c2VyU3RvcnldPVwidXNlclN0b3J5XCIgW2lzU3ViVGFza3NQYWdlXT1mYWxzZSBbaXNMb2FkaW5nXT1cIihhbnlPcGVyYXRpb25JblByb2dyZXNzRm9yQXV0b0xvZ2dpbmckfGFzeW5jKVwiXHJcbiAgICAgICAgICBbaXNVc2VyU3Rvcmllc1BhZ2VdPWZhbHNlICh1cGRhdGVBdXRvTG9nKT1cIkxvZ0FjdGlvbigkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9nYy11c2Vyc3Rvcnktc3VtbWFyeT5cclxuICAgICAgICA8bWF0LWNhcmQgKm5nSWY9XCIhdXNlclN0b3J5XCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O2xlZnQ6IC03NXB4O1wiPlxyXG4gICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgWW91IGFyZSBub3Qgc3RhcnRlZCBhbnkge3sgdXNlcnN0b3J5IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX0geWV0ISBQbGVhc2Ugc3RhcnQgd29yayEhXHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMDVcIj5cclxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwiY2FyZXQtc2l6ZVwiIHN0eWxlPVwiY29sb3I6IzNkYThiNVwiIGljb249XCJjYXJldC1kb3duXCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwicmVjZW50VXNlclN0b3J5XCJcclxuICAgICAgICAgICAgIChjbGljayk9XCJyZWNlbnRVc2VyU3RvcnkudG9nZ2xlKClcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgKm5nSWY9XCJhbnlPcGVyYXRpb25JblByb2dyZXNzRm9yQXV0b0xvZ2dpbmckfGFzeW5jXCI+XHJcbiAgICAgICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPiAtLT5cclxuICAgICAgICA8IS0tIDxkaXYgZnhGbGV4IGNsYXNzPVwibWwtMDVcIiAqbmdJZj1cInVzZXJTdG9yeVwiPlxyXG4gICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJjYXJldC1zaXplXCIgc3R5bGU9XCJjb2xvcjojM2RhOGI1XCIgaWNvbj1cImNhcmV0LWRvd25cIiBbc2F0UG9wb3ZlckFuY2hvckZvcl09XCJyZWNlbnRVc2VyU3RvcnlcIlxyXG4gICAgICAgICAgICAgKGNsaWNrKT1cInJlY2VudFVzZXJTdG9yeS50b2dnbGUoKVwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8c2F0LXBvcG92ZXIgI3JlY2VudFVzZXJTdG9yeSBoYXNCYWNrZHJvcCAgYmFja2Ryb3BDbGFzcz1cInVzLXBvcG92ZXJcIj4gXHJcbiAgICAgICAgICAgIDxtYXQtY2FyZD5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHVzZXJTdG9yeSBvZiAodXNlclN0b3JpZXMkIHwgYXN5bmMgfCBzbGljZTowOjUpXCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwMDBweDtcIiBjbGFzcz1cInZpZXctdXNcIj5cclxuICAgICAgICAgICAgPGdjLXVzZXJzdG9yeS1zdW1tYXJ5IHN0eWxlPVwid2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7YmFja2dyb3VuZC1jb2xvcjogYmVpZ2U7XCJcclxuICAgICAgICAgICAgICBbdXNlclN0b3J5XT1cInVzZXJTdG9yeVwiIFtpc1N1YlRhc2tzUGFnZV09ZmFsc2UgW2lzTG9hZGluZ109XCIoYW55T3BlcmF0aW9uSW5Qcm9ncmVzc0ZvckF1dG9Mb2dnaW5nJHxhc3luYylcIlxyXG4gICAgICAgICAgICAgIFtpc1VzZXJTdG9yaWVzUGFnZV09dHJ1ZSAodXBkYXRlQXV0b0xvZyk9XCJMb2dBY3Rpb24oJGV2ZW50KVwiIFtpc1Nob3ddPVwiZmFsc2VcIiAoY2xvc2UpPVwicmVjZW50VXNlclN0b3J5LmNsb3NlKClcIj5cclxuICAgICAgICAgICAgPC9nYy11c2Vyc3Rvcnktc3VtbWFyeT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgICAgPC9zYXQtcG9wb3Zlcj5cclxuICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwhLS0gVmlldyBMb2FkZXIgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZpZXctbG9hZGVyXCIgKm5nSWY9XCJpc01vZHVsZUxvYWRpbmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3VibGUtYm91bmNlMSBtYXQtYmctYWNjZW50XCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3VibGUtYm91bmNlMiBtYXQtYmctcHJpbWFyeVwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSBWaWV3IG91dGxldCAtLT5cclxuICAgICAgICA8ZGl2IGlkPVwiYnRyYWstcHJlbG9hZGVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInByZWxvYWRpbmctdGV4dFwiPlxyXG4gICAgICAgICAgICB7eyAnTE9BRElOR1BMRUFTRVdBSVQnIHwgdHJhbnNsYXRlIH19ICh7e3RvdGFsTG9hZGluZ1RpbWV9fSB7eyAnU0VDT05EUycgfCB0cmFuc2xhdGUgfX0pXHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGlkPVwiYnRyYWstbG9hZGVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICAgICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gVmlldyBvdmVybGF5IGZvciBtb2JpbGUgbmF2aWdhdGlvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLWJhY2tkcm9wXCIgW25nQ2xhc3NdPVwieyd2aXNpYmxlJzogbGF5b3V0Q29uZi5zaWRlYmFyU3R5bGUgIT09ICdjbG9zZWQnICYmIGxheW91dENvbmYuaXNNb2JpbGV9XCJcclxuICAgICAgKGNsaWNrKT1cImNsb3NlU2lkZWJhcigpXCI+PC9kaXY+XHJcblxyXG4gICAgPCEtLSBOb3RpZmljYWF0aW9uIGJhciAtLT5cclxuICAgIDxtYXQtc2lkZW5hdiAjc2lkZW5hdiBtb2RlPVwic2lkZVwiIG9wZW5lZCBjbGFzcz1cImV4YW1wbGUtc2lkZW5hdlwiIFtmaXhlZEluVmlld3BvcnRdPVwidHJ1ZVwiIFtmaXhlZFRvcEdhcF09XCJsYXlvdXRDb25mLmlzTW9iaWxlID8gNDUgOiA4OFwiXHJcbiAgICAgIFtmaXhlZEJvdHRvbUdhcF09XCIwXCIgY2xhc3M9XCJzaWRlLW5hdi1jb2xvciBjdXN0b20tYXBwLW5hdlwiIGlkPVwic3R5bGUtMVwiPlxyXG4gICAgICA8YXBwLXNpZGViYXI+PC9hcHAtc2lkZWJhcj5cclxuICAgIDwvbWF0LXNpZGVuYXY+XHJcbiAgPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XHJcbjwvZGl2PiJdfQ==
|
|
1
|
+
import { Component, HostListener } from "@angular/core";
|
|
2
|
+
import { NavigationEnd, RouteConfigLoadStart, RouteConfigLoadEnd, ResolveStart, ResolveEnd, NavigationStart, NavigationCancel, NavigationError, } from "@angular/router";
|
|
3
|
+
// import PerfectScrollbar from 'perfect-scrollbar';
|
|
4
|
+
import { Subject } from "rxjs";
|
|
5
|
+
import { takeUntil, tap } from "rxjs/operators";
|
|
6
|
+
import { filter } from "rxjs/operators";
|
|
7
|
+
import { UserDetailsFetchedAfterLogin, AuthenticationActionTypes } from "../../store/actions/authentication.actions";
|
|
8
|
+
import { ofType } from "@ngrx/effects";
|
|
9
|
+
import { SoftLabelConfigurationModel } from "../../models/softlabels-model";
|
|
10
|
+
import '../../../globaldependencies/helpers/fontawesome-icons';
|
|
11
|
+
import { LocalStorageProperties } from '../../../globaldependencies/constants/localstorage-properties';
|
|
12
|
+
import { SPINNER } from 'ngx-ui-loader';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "@angular/router";
|
|
15
|
+
import * as i2 from "@ngx-translate/core";
|
|
16
|
+
import * as i3 from "../../services/layout.service";
|
|
17
|
+
import * as i4 from "@ngrx/store";
|
|
18
|
+
import * as i5 from "ngx-cookie-service";
|
|
19
|
+
import * as i6 from "@ngrx/effects";
|
|
20
|
+
import * as i7 from "@angular/common";
|
|
21
|
+
import * as i8 from "../../services/common-used.service";
|
|
22
|
+
import * as i9 from "pubnub-angular2";
|
|
23
|
+
import * as i10 from "../../services/signalr.service";
|
|
24
|
+
import * as i11 from "@angular/cdk/bidi";
|
|
25
|
+
import * as i12 from "ngx-ui-loader";
|
|
26
|
+
import * as i13 from "@angular/material/sidenav";
|
|
27
|
+
import * as i14 from "@angular/flex-layout/extended";
|
|
28
|
+
import * as i15 from "ngx-perfect-scrollbar";
|
|
29
|
+
import * as i16 from "../header-side/header-side.component";
|
|
30
|
+
import * as i17 from "../sidenav/side-bar.component";
|
|
31
|
+
import * as i18 from "../header-top/header-top.component";
|
|
32
|
+
import * as i19 from "../sidebar-top/sidebar-top.component";
|
|
33
|
+
function AdminLayoutComponent_app_header_top_1_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
+
i0.ɵɵelement(0, "app-header-top", 13);
|
|
35
|
+
} if (rf & 2) {
|
|
36
|
+
i0.ɵɵnextContext();
|
|
37
|
+
const _r5 = i0.ɵɵreference(13);
|
|
38
|
+
i0.ɵɵproperty("notificPanel", _r5);
|
|
39
|
+
} }
|
|
40
|
+
function AdminLayoutComponent_app_sidebar_top_4_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
+
i0.ɵɵelement(0, "app-sidebar-top");
|
|
42
|
+
} }
|
|
43
|
+
function AdminLayoutComponent_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
+
i0.ɵɵelementStart(0, "div", 14);
|
|
45
|
+
i0.ɵɵelementStart(1, "div", 15);
|
|
46
|
+
i0.ɵɵelement(2, "div", 16);
|
|
47
|
+
i0.ɵɵelement(3, "div", 17);
|
|
48
|
+
i0.ɵɵelementEnd();
|
|
49
|
+
i0.ɵɵelementEnd();
|
|
50
|
+
} }
|
|
51
|
+
function AdminLayoutComponent_div_9_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
i0.ɵɵelement(0, "div", 21);
|
|
53
|
+
} }
|
|
54
|
+
function AdminLayoutComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
+
i0.ɵɵelementStart(0, "div", 18);
|
|
56
|
+
i0.ɵɵelementStart(1, "span", 19);
|
|
57
|
+
i0.ɵɵtext(2);
|
|
58
|
+
i0.ɵɵpipe(3, "translate");
|
|
59
|
+
i0.ɵɵpipe(4, "translate");
|
|
60
|
+
i0.ɵɵelementEnd();
|
|
61
|
+
i0.ɵɵtemplate(5, AdminLayoutComponent_div_9_div_5_Template, 1, 0, "div", 20);
|
|
62
|
+
i0.ɵɵelementEnd();
|
|
63
|
+
} if (rf & 2) {
|
|
64
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
65
|
+
i0.ɵɵadvance(2);
|
|
66
|
+
i0.ɵɵtextInterpolate3(" ", i0.ɵɵpipeBind1(3, 4, "LOADINGPLEASEWAIT"), " (", ctx_r3.totalLoadingTime, " ", i0.ɵɵpipeBind1(4, 6, "SECONDS"), ") ");
|
|
67
|
+
i0.ɵɵadvance(3);
|
|
68
|
+
i0.ɵɵproperty("ngIf", ctx_r3.loading);
|
|
69
|
+
} }
|
|
70
|
+
function AdminLayoutComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
i0.ɵɵelementStart(0, "div");
|
|
72
|
+
i0.ɵɵelement(1, "router-outlet");
|
|
73
|
+
i0.ɵɵelementEnd();
|
|
74
|
+
} }
|
|
75
|
+
const _c0 = function (a0, a1, a2, a3, a4, a5, a6, a7) { return { "navigation-top": a0, "sidebar-full": a1, "sidebar-compact": a2, "sidebar-compact-big": a3, "layout-intransition": a4, "sidebar-opened": a5, "sidebar-closed": a6, "fixed-topbar": a7 }; };
|
|
76
|
+
const _c1 = function (a0) { return { "blur-on-opened": a0 }; };
|
|
77
|
+
const _c2 = function (a0) { return { "show-in-dashboard": a0 }; };
|
|
78
|
+
const _c3 = function (a0) { return { "visible": a0 }; };
|
|
79
|
+
export class AdminLayoutComponent {
|
|
80
|
+
constructor(router, translate, layout, store, cookieService, actionUpdates$, location, commonService, pubnub, signalr) {
|
|
81
|
+
this.router = router;
|
|
82
|
+
this.translate = translate;
|
|
83
|
+
this.layout = layout;
|
|
84
|
+
this.store = store;
|
|
85
|
+
this.cookieService = cookieService;
|
|
86
|
+
this.actionUpdates$ = actionUpdates$;
|
|
87
|
+
this.location = location;
|
|
88
|
+
this.commonService = commonService;
|
|
89
|
+
this.pubnub = pubnub;
|
|
90
|
+
this.signalr = signalr;
|
|
91
|
+
this.isModuleLoading = false;
|
|
92
|
+
// private sidebarPS: PerfectScrollbar;
|
|
93
|
+
// private bodyPS: PerfectScrollbar;
|
|
94
|
+
// private headerFixedBodyPS: PerfectScrollbar;
|
|
95
|
+
this.scrollConfig = {};
|
|
96
|
+
this.layoutConf = {};
|
|
97
|
+
this.ngDestroyed$ = new Subject();
|
|
98
|
+
this.userstory = 'userstory';
|
|
99
|
+
this.loading = false;
|
|
100
|
+
this.totalLoadingTime = 0;
|
|
101
|
+
this.spinnerType = SPINNER.circle;
|
|
102
|
+
// let conId = sessionStorage.getItem('conectionId');
|
|
103
|
+
// if(!conId) {
|
|
104
|
+
this.signalr.initializeSignalRConnection();
|
|
105
|
+
// }
|
|
106
|
+
let environment = JSON.parse(localStorage.getItem(LocalStorageProperties.Environment));
|
|
107
|
+
let companySettings = localStorage.getItem(LocalStorageProperties.CompanySettings);
|
|
108
|
+
if (!companySettings || companySettings == 'null' || companySettings == "undefined") {
|
|
109
|
+
pubnub.init({
|
|
110
|
+
publishKey: environment.publishKey,
|
|
111
|
+
subscribeKey: environment.subscribeKey
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
const comSet = JSON.parse(localStorage.getItem(LocalStorageProperties.CompanySettings));
|
|
116
|
+
var publishKey = comSet.find(i => i.key == "PubnubPublishKey");
|
|
117
|
+
var subscribeKey = comSet.find(i => i.key == "PubnubSubscribeKey");
|
|
118
|
+
if ((publishKey && publishKey.value) && (subscribeKey && subscribeKey.value)) {
|
|
119
|
+
pubnub.init({
|
|
120
|
+
publishKey: publishKey.value,
|
|
121
|
+
subscribeKey: subscribeKey.value
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
pubnub.init({
|
|
126
|
+
publishKey: environment.publishKey,
|
|
127
|
+
subscribeKey: environment.subscribeKey
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Close sidenav after route change in mobile
|
|
132
|
+
this.routerEventSub = router.events
|
|
133
|
+
.pipe(filter(event => event instanceof NavigationEnd))
|
|
134
|
+
.subscribe((routeChange) => {
|
|
135
|
+
this.layout.adjustLayout({ route: routeChange.url });
|
|
136
|
+
});
|
|
137
|
+
// Translator init
|
|
138
|
+
let currentCulture = this.cookieService.get(LocalStorageProperties.CurrentCulture);
|
|
139
|
+
if (currentCulture === 'null' || currentCulture === 'undefined') {
|
|
140
|
+
currentCulture = 'en';
|
|
141
|
+
}
|
|
142
|
+
translate.use(currentCulture);
|
|
143
|
+
this.router.events.subscribe((event) => {
|
|
144
|
+
switch (true) {
|
|
145
|
+
case event instanceof NavigationStart: {
|
|
146
|
+
this.loading = true;
|
|
147
|
+
this.totalLoadingTime = 0;
|
|
148
|
+
this.startTimer();
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
case event instanceof NavigationEnd: {
|
|
152
|
+
this.loading = false;
|
|
153
|
+
clearInterval(this.interval);
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case event instanceof NavigationCancel:
|
|
157
|
+
case event instanceof NavigationError: {
|
|
158
|
+
this.loading = false;
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
default: {
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
router.events.subscribe(val => {
|
|
167
|
+
if (location.path() != "") {
|
|
168
|
+
if (location.path().includes('/dashboard-management/dashboard/')) {
|
|
169
|
+
this.dashboardPage = true;
|
|
170
|
+
this.bgcolor = 'none';
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
this.dashboardPage = false;
|
|
174
|
+
this.bgcolor = 'beige';
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
// if (this.cookieService.check(LocalStorageProperties.UserModel)) {
|
|
179
|
+
// let data = JSON.parse(this.cookieService.get(LocalStorageProperties.UserModel));
|
|
180
|
+
// if (data && data != 'null' && data != 'undefined')
|
|
181
|
+
// this.store.dispatch(new UserDetailsFetchedAfterLogin(data));
|
|
182
|
+
// }
|
|
183
|
+
if ((localStorage.getItem(LocalStorageProperties.UserModel) != null && localStorage.getItem(LocalStorageProperties.UserModel) != undefined)
|
|
184
|
+
&& !localStorage.hasOwnProperty(LocalStorageProperties.UserRoleFeatures)) {
|
|
185
|
+
let data = JSON.parse(localStorage.getItem(LocalStorageProperties.UserModel));
|
|
186
|
+
this.store.dispatch(new UserDetailsFetchedAfterLogin(data));
|
|
187
|
+
}
|
|
188
|
+
this.actionUpdates$
|
|
189
|
+
.pipe(takeUntil(this.ngDestroyed$), ofType(AuthenticationActionTypes.ClearDemoDataCompleted), tap((result) => {
|
|
190
|
+
if (result && result.companyId) {
|
|
191
|
+
this.getSoftLabels();
|
|
192
|
+
}
|
|
193
|
+
})).subscribe();
|
|
194
|
+
}
|
|
195
|
+
ngOnInit() {
|
|
196
|
+
this.getSoftLabelConfigurations();
|
|
197
|
+
this.layoutConf = this.layout.layoutConf;
|
|
198
|
+
// this.layout.adjustLayout();
|
|
199
|
+
// FOR MODULE LOADER FLAG
|
|
200
|
+
this.moduleLoaderSub = this.router.events.subscribe(event => {
|
|
201
|
+
if (event instanceof RouteConfigLoadStart ||
|
|
202
|
+
event instanceof ResolveStart) {
|
|
203
|
+
this.isModuleLoading = false;
|
|
204
|
+
}
|
|
205
|
+
if (event instanceof RouteConfigLoadEnd || event instanceof ResolveEnd) {
|
|
206
|
+
this.isModuleLoading = false;
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
onResize(event) {
|
|
211
|
+
this.layout.adjustLayout(event);
|
|
212
|
+
}
|
|
213
|
+
Opened(event) {
|
|
214
|
+
this.display = event;
|
|
215
|
+
}
|
|
216
|
+
getSoftLabelConfigurations() {
|
|
217
|
+
this.softLabels = JSON.parse(localStorage.getItem('SoftLabels'));
|
|
218
|
+
}
|
|
219
|
+
getSoftLabels() {
|
|
220
|
+
let model = new SoftLabelConfigurationModel();
|
|
221
|
+
model.searchText = null;
|
|
222
|
+
this.commonService.getSoftLabels(model).subscribe((response) => {
|
|
223
|
+
if (response.success) {
|
|
224
|
+
let data = response.data;
|
|
225
|
+
if (data) {
|
|
226
|
+
localStorage.setItem('SoftLabels', JSON.stringify(data));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
ngAfterViewInit() {
|
|
232
|
+
// this.layoutConfSub = this.layout.layoutConf$.subscribe(change => {
|
|
233
|
+
// // this.initBodyPS(change)
|
|
234
|
+
// })
|
|
235
|
+
}
|
|
236
|
+
// initBodyPS(layoutConf:any = {}) {
|
|
237
|
+
// if(layoutConf.navigationPos === 'side' && layoutConf.topbarFixed) {
|
|
238
|
+
// if (this.bodyPS) this.bodyPS.destroy();
|
|
239
|
+
// if (this.headerFixedBodyPS) this.headerFixedBodyPS.destroy();
|
|
240
|
+
// this.headerFixedBodyPS = new PerfectScrollbar('.rightside-content-hold', {
|
|
241
|
+
// suppressScrollX: true
|
|
242
|
+
// });
|
|
243
|
+
// this.scrollToTop('.rightside-content-hold');
|
|
244
|
+
// } else {
|
|
245
|
+
// if (this.bodyPS) this.bodyPS.destroy();
|
|
246
|
+
// if (this.headerFixedBodyPS) this.headerFixedBodyPS.destroy();
|
|
247
|
+
// this.bodyPS = new PerfectScrollbar('.main-content-wrap', {
|
|
248
|
+
// suppressScrollX: true
|
|
249
|
+
// });
|
|
250
|
+
// this.scrollToTop('.main-content-wrap');
|
|
251
|
+
// }
|
|
252
|
+
// }
|
|
253
|
+
scrollToTop(selector) {
|
|
254
|
+
if (document) {
|
|
255
|
+
let element = document.querySelector(selector);
|
|
256
|
+
element.scrollTop = 0;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
ngOnDestroy() {
|
|
260
|
+
if (this.moduleLoaderSub) {
|
|
261
|
+
this.moduleLoaderSub.unsubscribe();
|
|
262
|
+
}
|
|
263
|
+
if (this.layoutConfSub) {
|
|
264
|
+
this.layoutConfSub.unsubscribe();
|
|
265
|
+
}
|
|
266
|
+
if (this.routerEventSub) {
|
|
267
|
+
this.routerEventSub.unsubscribe();
|
|
268
|
+
}
|
|
269
|
+
if (this.sub) {
|
|
270
|
+
this.sub.unsubscribe();
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
closeSidebar() {
|
|
274
|
+
this.layout.publishLayoutChange({
|
|
275
|
+
sidebarStyle: "closed"
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
startTimer() {
|
|
279
|
+
this.interval = setInterval(() => {
|
|
280
|
+
this.totalLoadingTime++;
|
|
281
|
+
}, 1000);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
AdminLayoutComponent.ɵfac = function AdminLayoutComponent_Factory(t) { return new (t || AdminLayoutComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.TranslateService), i0.ɵɵdirectiveInject(i3.LayoutService), i0.ɵɵdirectiveInject(i4.Store), i0.ɵɵdirectiveInject(i5.CookieService), i0.ɵɵdirectiveInject(i6.Actions), i0.ɵɵdirectiveInject(i7.Location), i0.ɵɵdirectiveInject(i8.CommonService), i0.ɵɵdirectiveInject(i9.PubNubAngular), i0.ɵɵdirectiveInject(i10.SignalrService)); };
|
|
285
|
+
AdminLayoutComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminLayoutComponent, selectors: [["app-admin-layout"]], hostBindings: function AdminLayoutComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
286
|
+
i0.ɵɵlistener("resize", function AdminLayoutComponent_resize_HostBindingHandler($event) { return ctx.onResize($event); }, false, i0.ɵɵresolveWindow);
|
|
287
|
+
} }, decls: 15, vars: 38, consts: [[1, "app-admin-wrap", 3, "dir"], [3, "notificPanel", 4, "ngIf"], ["fgsSize", "180", "color", "primary", 3, "fgsType"], [1, "app-admin-container", "app-side-nav-container", "mat-drawer-transition", 3, "dir", "ngClass"], [4, "ngIf"], [1, "main-content-wrap", 3, "perfectScrollbar", "disabled"], [3, "notificPanel", "opened"], [1, "rightside-content-hold", 3, "perfectScrollbar", "disabled", "ngClass"], ["class", "view-loader", 4, "ngIf"], ["id", "btrak-preloader", 4, "ngIf"], [1, "sidebar-backdrop", 3, "ngClass", "click"], ["mode", "side", "opened", "", "id", "style-1", 1, "side-nav-color", "custom-app-nav", 3, "fixedInViewport", "fixedTopGap", "fixedBottomGap"], ["sidenav", ""], [3, "notificPanel"], [1, "view-loader"], [1, "spinner"], [1, "double-bounce1", "mat-bg-accent"], [1, "double-bounce2", "mat-bg-primary"], ["id", "btrak-preloader"], [1, "preloading-text"], ["id", "btrak-loader", 4, "ngIf"], ["id", "btrak-loader"]], template: function AdminLayoutComponent_Template(rf, ctx) { if (rf & 1) {
|
|
288
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
289
|
+
i0.ɵɵtemplate(1, AdminLayoutComponent_app_header_top_1_Template, 1, 1, "app-header-top", 1);
|
|
290
|
+
i0.ɵɵelement(2, "ngx-ui-loader", 2);
|
|
291
|
+
i0.ɵɵelementStart(3, "mat-sidenav-container", 3);
|
|
292
|
+
i0.ɵɵtemplate(4, AdminLayoutComponent_app_sidebar_top_4_Template, 1, 0, "app-sidebar-top", 4);
|
|
293
|
+
i0.ɵɵelementStart(5, "div", 5);
|
|
294
|
+
i0.ɵɵelementStart(6, "app-header-side", 6);
|
|
295
|
+
i0.ɵɵlistener("opened", function AdminLayoutComponent_Template_app_header_side_opened_6_listener($event) { return ctx.Opened($event); });
|
|
296
|
+
i0.ɵɵelementEnd();
|
|
297
|
+
i0.ɵɵelementStart(7, "div", 7);
|
|
298
|
+
i0.ɵɵtemplate(8, AdminLayoutComponent_div_8_Template, 4, 0, "div", 8);
|
|
299
|
+
i0.ɵɵtemplate(9, AdminLayoutComponent_div_9_Template, 6, 8, "div", 9);
|
|
300
|
+
i0.ɵɵtemplate(10, AdminLayoutComponent_div_10_Template, 2, 0, "div", 4);
|
|
301
|
+
i0.ɵɵelementEnd();
|
|
302
|
+
i0.ɵɵelementEnd();
|
|
303
|
+
i0.ɵɵelementStart(11, "div", 10);
|
|
304
|
+
i0.ɵɵlistener("click", function AdminLayoutComponent_Template_div_click_11_listener() { return ctx.closeSidebar(); });
|
|
305
|
+
i0.ɵɵelementEnd();
|
|
306
|
+
i0.ɵɵelementStart(12, "mat-sidenav", 11, 12);
|
|
307
|
+
i0.ɵɵelement(14, "app-sidebar");
|
|
308
|
+
i0.ɵɵelementEnd();
|
|
309
|
+
i0.ɵɵelementEnd();
|
|
310
|
+
i0.ɵɵelementEnd();
|
|
311
|
+
} if (rf & 2) {
|
|
312
|
+
const _r5 = i0.ɵɵreference(13);
|
|
313
|
+
i0.ɵɵproperty("dir", ctx.layoutConf.dir);
|
|
314
|
+
i0.ɵɵadvance(1);
|
|
315
|
+
i0.ɵɵproperty("ngIf", ctx.layoutConf.navigationPos === "top");
|
|
316
|
+
i0.ɵɵadvance(1);
|
|
317
|
+
i0.ɵɵproperty("fgsType", ctx.spinnerType);
|
|
318
|
+
i0.ɵɵadvance(1);
|
|
319
|
+
i0.ɵɵproperty("dir", ctx.layoutConf.dir)("ngClass", i0.ɵɵpureFunction8(23, _c0, ctx.layoutConf.navigationPos === "top", ctx.layoutConf.sidebarStyle === "full", ctx.layoutConf.sidebarStyle === "compact" && ctx.layoutConf.navigationPos === "side", ctx.layoutConf.sidebarStyle === "compact-big" && ctx.layoutConf.navigationPos === "side", ctx.layoutConf.layoutInTransition, ctx.layoutConf.sidebarStyle !== "closed" && ctx.layoutConf.navigationPos === "side", ctx.layoutConf.sidebarStyle === "closed", ctx.layoutConf.topbarFixed && ctx.layoutConf.navigationPos === "side"));
|
|
320
|
+
i0.ɵɵadvance(1);
|
|
321
|
+
i0.ɵɵproperty("ngIf", ctx.layoutConf.navigationPos === "top" && ctx.layoutConf.isMobile);
|
|
322
|
+
i0.ɵɵadvance(1);
|
|
323
|
+
i0.ɵɵproperty("perfectScrollbar", ctx.scrollConfig)("disabled", ctx.layoutConf.topbarFixed);
|
|
324
|
+
i0.ɵɵadvance(1);
|
|
325
|
+
i0.ɵɵclassMap(ctx.layoutConf.isMobile ? "custom-app-header-mobile" : "custom-app-header");
|
|
326
|
+
i0.ɵɵproperty("notificPanel", _r5);
|
|
327
|
+
i0.ɵɵadvance(1);
|
|
328
|
+
i0.ɵɵproperty("perfectScrollbar", ctx.scrollConfig)("disabled", !ctx.layoutConf.topbarFixed)("ngClass", i0.ɵɵpureFunction1(32, _c1, ctx.display))("ngClass", i0.ɵɵpureFunction1(34, _c2, ctx.dashboardPage));
|
|
329
|
+
i0.ɵɵadvance(1);
|
|
330
|
+
i0.ɵɵproperty("ngIf", ctx.isModuleLoading);
|
|
331
|
+
i0.ɵɵadvance(1);
|
|
332
|
+
i0.ɵɵproperty("ngIf", ctx.loading);
|
|
333
|
+
i0.ɵɵadvance(1);
|
|
334
|
+
i0.ɵɵproperty("ngIf", !ctx.loading);
|
|
335
|
+
i0.ɵɵadvance(1);
|
|
336
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(36, _c3, ctx.layoutConf.sidebarStyle !== "closed" && ctx.layoutConf.isMobile));
|
|
337
|
+
i0.ɵɵadvance(1);
|
|
338
|
+
i0.ɵɵproperty("fixedInViewport", true)("fixedTopGap", ctx.layoutConf.isMobile ? 45 : 88)("fixedBottomGap", 0);
|
|
339
|
+
} }, directives: [i11.Dir, i7.NgIf, i12.ɵb, i13.MatSidenavContainer, i7.NgClass, i14.DefaultClassDirective, i15.PerfectScrollbarDirective, i16.HeaderSideComponent, i13.MatSidenav, i17.SideBarComponent, i18.HeaderTopComponent, i19.SidebarTopComponent, i1.RouterOutlet], pipes: [i2.TranslatePipe], encapsulation: 2 });
|
|
340
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AdminLayoutComponent, [{
|
|
341
|
+
type: Component,
|
|
342
|
+
args: [{
|
|
343
|
+
selector: "app-admin-layout",
|
|
344
|
+
templateUrl: "./admin-layout.template.html"
|
|
345
|
+
}]
|
|
346
|
+
}], function () { return [{ type: i1.Router }, { type: i2.TranslateService }, { type: i3.LayoutService }, { type: i4.Store }, { type: i5.CookieService }, { type: i6.Actions }, { type: i7.Location }, { type: i8.CommonService }, { type: i9.PubNubAngular }, { type: i10.SignalrService }]; }, { onResize: [{
|
|
347
|
+
type: HostListener,
|
|
348
|
+
args: ["window:resize", ['$event']]
|
|
349
|
+
}] }); })();
|
|
350
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4tbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NoZWxsLW1vZHVsZS1jb21wb25lbnRzL3NoZWxsLWNvbXBvbmVudHMvc3JjL2xpYi9zaGVsbC1jb21wb25lbnRzL2NvbXBvbmVudHMvYWRtaW4tbGF5b3V0L2FkbWluLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL2FkbWluLWxheW91dC9hZG1pbi1sYXlvdXQudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFvQyxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFVLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEdBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUt4TCxvREFBb0Q7QUFDcEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUseUJBQXlCLEVBQTZCLE1BQU0sNENBQTRDLENBQUM7QUFFaEosT0FBTyxFQUFXLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUkzRSxPQUFPLHVEQUF1RCxDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtE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Z0RBVUc7UUFPRCw2RkFBcUc7UUFHckcsOEJBQXFHO1FBR25HLDBDQUF1SjtRQUFuRCxrSEFBVSxrQkFBYyxJQUFDO1FBQzdILGlCQUFrQjtRQTBCbEIsOEJBQzBGO1FBa0N4RixxRUFLTTtRQUVOLHFFQU1NO1FBQ04sdUVBRU07UUFDUixpQkFBTTtRQUNSLGlCQUFNO1FBRU4sZ0NBQzJCO1FBQXpCLCtGQUFTLGtCQUFjLElBQUM7UUFBQyxpQkFBTTtRQUdqQyw0Q0FDMEU7UUFDeEUsK0JBQTJCO1FBQzdCLGlCQUFjO1FBQ2hCLGlCQUF3QjtRQUMxQixpQkFBTTs7O1FBekhzQix3Q0FBc0I7UUFHL0IsZUFBd0M7UUFBeEMsNkRBQXdDO1FBRTVCLGVBQXVCO1FBQXZCLHlDQUF1QjtRQUU3QixlQUFzQjtRQUF0Qix3Q0FBc0IsaWhCQUFBO1FBaUJ6QixlQUErRDtRQUEvRCx3RkFBK0Q7UUFHbEQsZUFBaUM7UUFBakMsbURBQWlDLHdDQUFBO1FBRzdDLGVBQWtGO1FBQWxGLHlGQUFrRjtRQUEyQixrQ0FBd0I7UUEyQmxILGVBQWlDO1FBQWpDLG1EQUFpQyx5Q0FBQSxxREFBQSwyREFBQTtRQW1DekMsZUFBcUI7UUFBckIsMENBQXFCO1FBT3BCLGVBQWE7UUFBYixrQ0FBYTtRQU9sQyxlQUFjO1FBQWQsbUNBQWM7UUFNTSxlQUFvRjtRQUFwRiwwSEFBb0Y7UUFJakQsZUFBd0I7UUFBeEIsc0NBQXdCLGtEQUFBLHFCQUFBOzt1RkRyRmhGLG9CQUFvQjtjQUxoQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsV0FBVyxFQUFFLDhCQUE4QjthQUM1Qzt1U0E4S0MsUUFBUTtrQkFGUCxZQUFZO21CQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkVuZCwgUm91dGVDb25maWdMb2FkU3RhcnQsIFJvdXRlQ29uZmlnTG9hZEVuZCwgUmVzb2x2ZVN0YXJ0LCBSZXNvbHZlRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FcnJvciwgRXZlbnQsIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdlwiO1xuaW1wb3J0IHsgTWVkaWFDaGFuZ2UgfSBmcm9tIFwiQGFuZ3VsYXIvZmxleC1sYXlvdXRcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuLy8gaW1wb3J0IFBlcmZlY3RTY3JvbGxiYXIgZnJvbSAncGVyZmVjdC1zY3JvbGxiYXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XG5pbXBvcnQgeyBVc2VyRGV0YWlsc0ZldGNoZWRBZnRlckxvZ2luLCBBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLCBVc2VySW5pdGlhbERldGFpbHNGZXRjaGVkIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvYXV0aGVudGljYXRpb24uYWN0aW9uc1wiO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gXCJuZ3gtY29va2llLXNlcnZpY2VcIjtcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSB9IGZyb20gXCJAbmdyeC9lZmZlY3RzXCI7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvc29mdGxhYmVscy1tb2RlbFwiXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclN0b3J5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJTdG9yeSc7XG5pbXBvcnQgKiBhcyBTaGFyZWRNb2R1bGVTdGF0ZSBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcbmltcG9ydCAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2hlbHBlcnMvZm9udGF3ZXNvbWUtaWNvbnMnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlUHJvcGVydGllcyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvbG9jYWxzdG9yYWdlLXByb3BlcnRpZXMnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi11c2VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHViTnViQW5ndWxhciB9IGZyb20gJ3B1Ym51Yi1hbmd1bGFyMic7XG5pbXBvcnQgeyBTUElOTkVSIH0gZnJvbSAnbmd4LXVpLWxvYWRlcic7XG5pbXBvcnQgeyBTaWduYWxyU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImFwcC1hZG1pbi1sYXlvdXRcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9hZG1pbi1sYXlvdXQudGVtcGxhdGUuaHRtbFwiXG59KVxuXG5leHBvcnQgY2xhc3MgQWRtaW5MYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBpc01vZHVsZUxvYWRpbmc6IEJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBtb2R1bGVMb2FkZXJTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBsYXlvdXRDb25mU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcm91dGVyRXZlbnRTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBtZWRpYVN1YjogU3Vic2NyaXB0aW9uO1xuICBzb2Z0TGFiZWxzJDogT2JzZXJ2YWJsZTxTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWxbXT47XG4gIHNvZnRMYWJlbHM6IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbFtdO1xuICAvLyBwcml2YXRlIHNpZGViYXJQUzogUGVyZmVjdFNjcm9sbGJhcjtcblxuICAvLyBwcml2YXRlIGJvZHlQUzogUGVyZmVjdFNjcm9sbGJhcjtcbiAgLy8gcHJpdmF0ZSBoZWFkZXJGaXhlZEJvZHlQUzogUGVyZmVjdFNjcm9sbGJhcjtcbiAgcHVibGljIHNjcm9sbENvbmZpZyA9IHt9O1xuICBwdWJsaWMgbGF5b3V0Q29uZjogYW55ID0ge307XG4gIGRpc3BsYXk6IGJvb2xlYW47XG4gIHVzZXJTdG9yaWVzJDogT2JzZXJ2YWJsZTxVc2VyU3RvcnlbXT47XG4gIHNob3c6IGJvb2xlYW47XG4gIHVzZXJTdG9yaWVzOiBVc2VyU3RvcnlbXTtcbiAgdXNlclN0b3J5OiBVc2VyU3Rvcnk7XG4gIGFueU9wZXJhdGlvbkluUHJvZ3Jlc3NGb3JBdXRvTG9nZ2luZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBuZ0Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuICBkYXNoYm9hcmRQYWdlOiBib29sZWFuO1xuICBiZ2NvbG9yOiBhbnk7XG4gIHByaXZhdGUgc3ViOiBTdWJzY3JpcHRpb247XG4gIHVzZXJzdG9yeSA9ICd1c2Vyc3RvcnknO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIHRvdGFsTG9hZGluZ1RpbWU6IG51bWJlciA9IDA7XG4gIGludGVydmFsO1xuICBzcGlubmVyVHlwZSA9IFNQSU5ORVIuY2lyY2xlO1xuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGF5b3V0OiBMYXlvdXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPFNoYXJlZE1vZHVsZVN0YXRlLlN0YXRlPixcbiAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25VcGRhdGVzJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwdWJudWI6IFB1Yk51YkFuZ3VsYXIsXG4gICAgcHJpdmF0ZSBzaWduYWxyOiBTaWduYWxyU2VydmljZSxcbiAgKSB7XG4gICAgLy8gbGV0IGNvbklkID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY29uZWN0aW9uSWQnKTtcbiAgICAvLyBpZighY29uSWQpIHtcbiAgICAgIHRoaXMuc2lnbmFsci5pbml0aWFsaXplU2lnbmFsUkNvbm5lY3Rpb24oKTtcbiAgICAvLyB9XG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XG4gICAgbGV0IGNvbXBhbnlTZXR0aW5ncyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKTtcbiAgICBpZiAoIWNvbXBhbnlTZXR0aW5ncyB8fCBjb21wYW55U2V0dGluZ3MgPT0gJ251bGwnIHx8IGNvbXBhbnlTZXR0aW5ncyA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBwdWJudWIuaW5pdCh7XG4gICAgICAgIHB1Ymxpc2hLZXk6IGVudmlyb25tZW50LnB1Ymxpc2hLZXksXG4gICAgICAgIHN1YnNjcmliZUtleTogZW52aXJvbm1lbnQuc3Vic2NyaWJlS2V5XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29tU2V0ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xuICAgICAgdmFyIHB1Ymxpc2hLZXkgPSBjb21TZXQuZmluZChpID0+IGkua2V5ID09IFwiUHVibnViUHVibGlzaEtleVwiKTtcbiAgICAgIHZhciBzdWJzY3JpYmVLZXkgPSBjb21TZXQuZmluZChpID0+IGkua2V5ID09IFwiUHVibnViU3Vic2NyaWJlS2V5XCIpXG4gICAgICBpZiAoKHB1Ymxpc2hLZXkgJiYgcHVibGlzaEtleS52YWx1ZSkgJiYgKHN1YnNjcmliZUtleSAmJiBzdWJzY3JpYmVLZXkudmFsdWUpKSB7XG4gICAgICAgIHB1Ym51Yi5pbml0KHtcbiAgICAgICAgICBwdWJsaXNoS2V5OiBwdWJsaXNoS2V5LnZhbHVlLFxuICAgICAgICAgIHN1YnNjcmliZUtleTogc3Vic2NyaWJlS2V5LnZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHVibnViLmluaXQoe1xuICAgICAgICAgIHB1Ymxpc2hLZXk6IGVudmlyb25tZW50LnB1Ymxpc2hLZXksXG4gICAgICAgICAgc3Vic2NyaWJlS2V5OiBlbnZpcm9ubWVudC5zdWJzY3JpYmVLZXlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG5cblxuICAgIC8vIENsb3NlIHNpZGVuYXYgYWZ0ZXIgcm91dGUgY2hhbmdlIGluIG1vYmlsZVxuICAgIHRoaXMucm91dGVyRXZlbnRTdWIgPSByb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJvdXRlQ2hhbmdlOiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgIHRoaXMubGF5b3V0LmFkanVzdExheW91dCh7IHJvdXRlOiByb3V0ZUNoYW5nZS51cmwgfSk7XG4gICAgICB9KTtcblxuICAgIC8vIFRyYW5zbGF0b3IgaW5pdFxuICAgIGxldCBjdXJyZW50Q3VsdHVyZSA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50Q3VsdHVyZSk7XG5cbiAgICBpZiAoY3VycmVudEN1bHR1cmUgPT09ICdudWxsJyB8fCBjdXJyZW50Q3VsdHVyZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGN1cnJlbnRDdWx0dXJlID0gJ2VuJztcbiAgICB9XG4gICAgdHJhbnNsYXRlLnVzZShjdXJyZW50Q3VsdHVyZSk7XG5cblxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgIGNhc2UgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQ6IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudG90YWxMb2FkaW5nVGltZSA9IDA7XG4gICAgICAgICAgdGhpcy5zdGFydFRpbWVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZDoge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWw6XG4gICAgICAgIGNhc2UgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3I6IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJvdXRlci5ldmVudHMuc3Vic2NyaWJlKHZhbCA9PiB7XG4gICAgICBpZiAobG9jYXRpb24ucGF0aCgpICE9IFwiXCIpIHtcbiAgICAgICAgaWYgKGxvY2F0aW9uLnBhdGgoKS5pbmNsdWRlcygnL2Rhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC8nKSkge1xuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkUGFnZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5iZ2NvbG9yID0gJ25vbmUnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkUGFnZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYmdjb2xvciA9ICdiZWlnZSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGlmICh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpKSB7XG4gICAgLy8gICBsZXQgZGF0YSA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkpO1xuICAgIC8vICAgaWYgKGRhdGEgJiYgZGF0YSAhPSAnbnVsbCcgJiYgZGF0YSAhPSAndW5kZWZpbmVkJylcbiAgICAvLyAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXNlckRldGFpbHNGZXRjaGVkQWZ0ZXJMb2dpbihkYXRhKSk7XG4gICAgLy8gfVxuXG4gICAgaWYgKChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkgIT0gbnVsbCAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJNb2RlbCkgIT0gdW5kZWZpbmVkKVxuICAgICAgJiYgIWxvY2FsU3RvcmFnZS5oYXNPd25Qcm9wZXJ0eShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSb2xlRmVhdHVyZXMpKSB7XG4gICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyTW9kZWwpKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFVzZXJEZXRhaWxzRmV0Y2hlZEFmdGVyTG9naW4oZGF0YSkpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aW9uVXBkYXRlcyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxuICAgICAgICBvZlR5cGUoQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcy5DbGVhckRlbW9EYXRhQ29tcGxldGVkKSxcbiAgICAgICAgdGFwKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmNvbXBhbnlJZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRTb2Z0TGFiZWxzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ2V0U29mdExhYmVsQ29uZmlndXJhdGlvbnMoKTtcbiAgICB0aGlzLmxheW91dENvbmYgPSB0aGlzLmxheW91dC5sYXlvdXRDb25mO1xuICAgIC8vIHRoaXMubGF5b3V0LmFkanVzdExheW91dCgpO1xuXG4gICAgLy8gRk9SIE1PRFVMRSBMT0FERVIgRkxBR1xuICAgIHRoaXMubW9kdWxlTG9hZGVyU3ViID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50IGluc3RhbmNlb2YgUm91dGVDb25maWdMb2FkU3RhcnQgfHxcbiAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBSZXNvbHZlU3RhcnRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmlzTW9kdWxlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgUm91dGVDb25maWdMb2FkRW5kIHx8IGV2ZW50IGluc3RhbmNlb2YgUmVzb2x2ZUVuZCkge1xuICAgICAgICB0aGlzLmlzTW9kdWxlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgWyckZXZlbnQnXSlcblxuICBvblJlc2l6ZShldmVudCkge1xuICAgIHRoaXMubGF5b3V0LmFkanVzdExheW91dChldmVudCk7XG4gIH1cblxuICBPcGVuZWQoZXZlbnQpIHtcbiAgICB0aGlzLmRpc3BsYXkgPSBldmVudDtcbiAgfVxuXG4gIGdldFNvZnRMYWJlbENvbmZpZ3VyYXRpb25zKCkge1xuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XG4gIH1cblxuICBnZXRTb2Z0TGFiZWxzKCkge1xuICAgIGxldCBtb2RlbCA9IG5ldyBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWwoKTtcbiAgICBtb2RlbC5zZWFyY2hUZXh0ID0gbnVsbDtcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U29mdExhYmVscyhtb2RlbCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICBsZXQgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1NvZnRMYWJlbHMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyB0aGlzLmxheW91dENvbmZTdWIgPSB0aGlzLmxheW91dC5sYXlvdXRDb25mJC5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAvLyAgIC8vIHRoaXMuaW5pdEJvZHlQUyhjaGFuZ2UpXG4gICAgLy8gfSlcbiAgfVxuXG4gIC8vIGluaXRCb2R5UFMobGF5b3V0Q29uZjphbnkgPSB7fSkge1xuICAvLyAgIGlmKGxheW91dENvbmYubmF2aWdhdGlvblBvcyA9PT0gJ3NpZGUnICYmIGxheW91dENvbmYudG9wYmFyRml4ZWQpIHtcbiAgLy8gICAgIGlmICh0aGlzLmJvZHlQUykgdGhpcy5ib2R5UFMuZGVzdHJveSgpO1xuICAvLyAgICAgaWYgKHRoaXMuaGVhZGVyRml4ZWRCb2R5UFMpIHRoaXMuaGVhZGVyRml4ZWRCb2R5UFMuZGVzdHJveSgpO1xuICAvLyAgICAgdGhpcy5oZWFkZXJGaXhlZEJvZHlQUyA9IG5ldyBQZXJmZWN0U2Nyb2xsYmFyKCcucmlnaHRzaWRlLWNvbnRlbnQtaG9sZCcsIHtcbiAgLy8gICAgICAgc3VwcHJlc3NTY3JvbGxYOiB0cnVlXG4gIC8vICAgICB9KTtcbiAgLy8gICAgIHRoaXMuc2Nyb2xsVG9Ub3AoJy5yaWdodHNpZGUtY29udGVudC1ob2xkJyk7XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIGlmICh0aGlzLmJvZHlQUykgdGhpcy5ib2R5UFMuZGVzdHJveSgpO1xuICAvLyAgICAgaWYgKHRoaXMuaGVhZGVyRml4ZWRCb2R5UFMpIHRoaXMuaGVhZGVyRml4ZWRCb2R5UFMuZGVzdHJveSgpO1xuICAvLyAgICAgdGhpcy5ib2R5UFMgPSBuZXcgUGVyZmVjdFNjcm9sbGJhcignLm1haW4tY29udGVudC13cmFwJywge1xuICAvLyAgICAgICBzdXBwcmVzc1Njcm9sbFg6IHRydWVcbiAgLy8gICAgIH0pO1xuICAvLyAgICAgdGhpcy5zY3JvbGxUb1RvcCgnLm1haW4tY29udGVudC13cmFwJyk7XG4gIC8vICAgfVxuICAvLyB9XG4gIHNjcm9sbFRvVG9wKHNlbGVjdG9yOiBzdHJpbmcpIHtcbiAgICBpZiAoZG9jdW1lbnQpIHtcbiAgICAgIGxldCBlbGVtZW50ID0gPEhUTUxFbGVtZW50PmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgIH1cbiAgfVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5tb2R1bGVMb2FkZXJTdWIpIHtcbiAgICAgIHRoaXMubW9kdWxlTG9hZGVyU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmxheW91dENvbmZTdWIpIHtcbiAgICAgIHRoaXMubGF5b3V0Q29uZlN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yb3V0ZXJFdmVudFN1Yikge1xuICAgICAgdGhpcy5yb3V0ZXJFdmVudFN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdWIpIHtcbiAgICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG4gIGNsb3NlU2lkZWJhcigpIHtcbiAgICB0aGlzLmxheW91dC5wdWJsaXNoTGF5b3V0Q2hhbmdlKHtcbiAgICAgIHNpZGViYXJTdHlsZTogXCJjbG9zZWRcIlxuICAgIH0pO1xuICB9XG5cbiAgc3RhcnRUaW1lcigpIHtcbiAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy50b3RhbExvYWRpbmdUaW1lKys7XG4gICAgfSwgMTAwMClcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFwcC1hZG1pbi13cmFwXCIgW2Rpcl09J2xheW91dENvbmYuZGlyJz5cbiAgPCEtLSBIZWFkZXIgZm9yIHRvcCBuYXZpZ2F0aW9uIGxheW91dCAtLT5cbiAgPCEtLSBPTkxZIFJFUVVJUkVEIEZPUiAqKlRPUCoqIE5BVklHQVRJT04gTEFZT1VUIC0tPlxuICA8YXBwLWhlYWRlci10b3AgKm5nSWY9XCJsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICd0b3AnXCIgW25vdGlmaWNQYW5lbF09XCJzaWRlbmF2XCI+XG4gIDwvYXBwLWhlYWRlci10b3A+XG4gIDxuZ3gtdWktbG9hZGVyIGZnc1NpemU9XCIxODBcIiBbZmdzVHlwZV09XCJzcGlubmVyVHlwZVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvbmd4LXVpLWxvYWRlcj5cbiAgPCEtLSBNYWluIENvbnRhaW5lciAtLT5cbiAgPG1hdC1zaWRlbmF2LWNvbnRhaW5lciBbZGlyXT0nbGF5b3V0Q29uZi5kaXInIGNsYXNzPVwiYXBwLWFkbWluLWNvbnRhaW5lciBhcHAtc2lkZS1uYXYtY29udGFpbmVyIG1hdC1kcmF3ZXItdHJhbnNpdGlvblwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICduYXZpZ2F0aW9uLXRvcCc6IGxheW91dENvbmYubmF2aWdhdGlvblBvcyA9PT0gJ3RvcCcsXG4gICAgJ3NpZGViYXItZnVsbCc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlID09PSAnZnVsbCcsXG4gICAgJ3NpZGViYXItY29tcGFjdCc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlID09PSAnY29tcGFjdCcgJiYgbGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAnc2lkZScsXG4gICAgJ3NpZGViYXItY29tcGFjdC1iaWcnOiBsYXlvdXRDb25mLnNpZGViYXJTdHlsZSA9PT0gJ2NvbXBhY3QtYmlnJyAmJiBsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICdzaWRlJyxcbiAgICAnbGF5b3V0LWludHJhbnNpdGlvbic6IGxheW91dENvbmYubGF5b3V0SW5UcmFuc2l0aW9uLFxuICAgICdzaWRlYmFyLW9wZW5lZCc6IGxheW91dENvbmYuc2lkZWJhclN0eWxlICE9PSAnY2xvc2VkJyAmJiBsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICdzaWRlJyxcbiAgICAnc2lkZWJhci1jbG9zZWQnOiBsYXlvdXRDb25mLnNpZGViYXJTdHlsZSA9PT0gJ2Nsb3NlZCcsXG4gICAgJ2ZpeGVkLXRvcGJhcic6IGxheW91dENvbmYudG9wYmFyRml4ZWQgJiYgbGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAnc2lkZSdcbiAgfVwiPlxuICAgIDwhLS0gU0lERUJBUiAtLT5cbiAgICA8IS0tIE9OTFkgUkVRVUlSRUQgRk9SICoqU0lERSoqIE5BVklHQVRJT04gTEFZT1VUIC0tPlxuICAgIDwhLS0gPGFwcC1zaWRlYmFyLXNpZGUgKm5nSWY9XCJsYXlvdXRDb25mLm5hdmlnYXRpb25Qb3MgPT09ICdzaWRlJ1wiPjwvYXBwLXNpZGViYXItc2lkZT4gLS0+XG5cbiAgICA8IS0tIFRvcCBuYXZpZ2F0aW9uIGxheW91dCAobmF2aWdhdGlvbiBmb3IgbW9iaWxlIHNjcmVlbikgLS0+XG4gICAgPCEtLSBPTkxZIFJFUVVJUkVEIEZPUiAqKlRPUCoqIE5BVklHQVRJT04gTU9CSUxFIExBWU9VVCAtLT5cbiAgICA8YXBwLXNpZGViYXItdG9wICpuZ0lmPVwibGF5b3V0Q29uZi5uYXZpZ2F0aW9uUG9zID09PSAndG9wJyAmJiBsYXlvdXRDb25mLmlzTW9iaWxlXCI+PC9hcHAtc2lkZWJhci10b3A+XG5cbiAgICA8IS0tIEFwcCBjb250ZW50IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnQtd3JhcFwiIFtwZXJmZWN0U2Nyb2xsYmFyXT1cInNjcm9sbENvbmZpZ1wiIFtkaXNhYmxlZF09XCJsYXlvdXRDb25mLnRvcGJhckZpeGVkXCI+XG4gICAgICA8IS0tIEhlYWRlciBmb3Igc2lkZSBuYXZpZ2F0aW9uIGxheW91dCAtLT5cbiAgICAgIDwhLS0gT05MWSBSRVFVSVJFRCBGT1IgKipTSURFKiogTkFWSUdBVElPTiBMQVlPVVQgLS0+XG4gICAgICA8YXBwLWhlYWRlci1zaWRlIGNsYXNzPVwie3tsYXlvdXRDb25mLmlzTW9iaWxlID8gJ2N1c3RvbS1hcHAtaGVhZGVyLW1vYmlsZScgOiAnY3VzdG9tLWFwcC1oZWFkZXInfX1cIiAob3BlbmVkKT1cIk9wZW5lZCgkZXZlbnQpXCIgW25vdGlmaWNQYW5lbF09XCJzaWRlbmF2XCI+XG4gICAgICA8L2FwcC1oZWFkZXItc2lkZT5cblxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXItMVwiICpuZ0lmPVwiIWRhc2hib2FyZFBhZ2VcIj5cbiAgICAgICAgPGdjLXVzZXJzdG9yeS1zdW1tYXJ5ICpuZ0lmPVwidXNlclN0b3J5XCIgc3R5bGU9XCJ3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtiYWNrZ3JvdW5kLWNvbG9yOiBiZWlnZTtcIlxuICAgICAgICAgIFt1c2VyU3RvcnldPVwidXNlclN0b3J5XCIgW2lzU3ViVGFza3NQYWdlXT1mYWxzZSBbaXNMb2FkaW5nXT1cIihhbnlPcGVyYXRpb25JblByb2dyZXNzRm9yQXV0b0xvZ2dpbmckfGFzeW5jKVwiXG4gICAgICAgICAgW2lzVXNlclN0b3JpZXNQYWdlXT1mYWxzZSAodXBkYXRlQXV0b0xvZyk9XCJMb2dBY3Rpb24oJGV2ZW50KVwiPlxuICAgICAgICA8L2djLXVzZXJzdG9yeS1zdW1tYXJ5PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXVzZXJTdG9yeVwiPlxuICAgICAgICAgIFlvdSBhcmUgbm90IHN0YXJ0ZWQgYW55IHVzZXJzdG9yeSB5ZXQhIFBsZWFzZSBzdGFydCB3b3JrISFcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtbC0wNVwiPlxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwiY2FyZXQtc2l6ZVwiIHN0eWxlPVwiY29sb3I6IzNkYThiNVwiIGljb249XCJjYXJldC1kb3duXCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwicmVjZW50VXNlclN0b3J5XCJcbiAgICAgICAgICAgICAoY2xpY2spPVwicmVjZW50VXNlclN0b3J5LnRvZ2dsZSgpXCI+PC9mYS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNhdC1wb3BvdmVyICNyZWNlbnRVc2VyU3RvcnkgaGFzQmFja2Ryb3AgIGJhY2tkcm9wQ2xhc3M9XCJ1cy1wb3BvdmVyXCI+IFxuICAgICAgICAgICAgPG1hdC1jYXJkPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHVzZXJTdG9yeSBvZiAodXNlclN0b3JpZXMkIHwgYXN5bmMgfCBzbGljZTowOjUpXCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwMDBweDtcIiBjbGFzcz1cInZpZXctdXNcIj5cbiAgICAgICAgICAgIDxnYy11c2Vyc3Rvcnktc3VtbWFyeSBzdHlsZT1cIndpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO2JhY2tncm91bmQtY29sb3I6IGJlaWdlO1wiXG4gICAgICAgICAgICAgIFt1c2VyU3RvcnldPVwidXNlclN0b3J5XCIgW2lzU3ViVGFza3NQYWdlXT1mYWxzZSBbaXNMb2FkaW5nXT1cIihhbnlPcGVyYXRpb25JblByb2dyZXNzRm9yQXV0b0xvZ2dpbmckfGFzeW5jKVwiXG4gICAgICAgICAgICAgIFtpc1VzZXJTdG9yaWVzUGFnZV09dHJ1ZSAodXBkYXRlQXV0b0xvZyk9XCJMb2dBY3Rpb24oJGV2ZW50KVwiIFtpc1Nob3ddPVwiZmFsc2VcIiAoY2xvc2UpPVwicmVjZW50VXNlclN0b3J5LmNsb3NlKClcIj5cbiAgICAgICAgICAgIDwvZ2MtdXNlcnN0b3J5LXN1bW1hcnk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgIDwvc2F0LXBvcG92ZXI+XG4gICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodHNpZGUtY29udGVudC1ob2xkXCIgW3BlcmZlY3RTY3JvbGxiYXJdPVwic2Nyb2xsQ29uZmlnXCIgW2Rpc2FibGVkXT1cIiFsYXlvdXRDb25mLnRvcGJhckZpeGVkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieydibHVyLW9uLW9wZW5lZCc6IGRpc3BsYXl9XCIgW25nQ2xhc3NdPVwieydzaG93LWluLWRhc2hib2FyZCc6ZGFzaGJvYXJkUGFnZX1cIj5cbiAgICAgICAgPCEtLSA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBjbGFzcz1cIm1yLTFcIiAqbmdJZj1cIiFkYXNoYm9hcmRQYWdlXCIgW25nU3R5bGVdPVwieydtYXJnaW4tbGVmdCc6ICc5MHB4J31cIiBcbiAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IHVzZXJTdG9yeSA/ICdiZWlnZScgOiAnbm9uZScgfVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjkwcHggIWltcG9ydGFudFwiPlxuICAgICAgICA8Z2MtdXNlcnN0b3J5LXN1bW1hcnkgZnhGbGV4PVwiOTBcIiAqbmdJZj1cInVzZXJTdG9yeVwiIHN0eWxlPVwid2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7YmFja2dyb3VuZC1jb2xvcjogYmVpZ2U7XCJcbiAgICAgICAgICBbdXNlclN0b3J5XT1cInVzZXJTdG9yeVwiIFtpc1N1YlRhc2tzUGFnZV09ZmFsc2UgW2lzTG9hZGluZ109XCIoYW55T3BlcmF0aW9uSW5Qcm9ncmVzc0ZvckF1dG9Mb2dnaW5nJHxhc3luYylcIlxuICAgICAgICAgIFtpc1VzZXJTdG9yaWVzUGFnZV09ZmFsc2UgKHVwZGF0ZUF1dG9Mb2cpPVwiTG9nQWN0aW9uKCRldmVudClcIj5cbiAgICAgICAgPC9nYy11c2Vyc3Rvcnktc3VtbWFyeT5cbiAgICAgICAgPG1hdC1jYXJkICpuZ0lmPVwiIXVzZXJTdG9yeVwiIHN0eWxlPVwicGFkZGluZzogMTBweDtsZWZ0OiAtNzVweDtcIj5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAgWW91IGFyZSBub3Qgc3RhcnRlZCBhbnkge3sgdXNlcnN0b3J5IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX0geWV0ISBQbGVhc2Ugc3RhcnQgd29yayEhXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0wNVwiPlxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwiY2FyZXQtc2l6ZVwiIHN0eWxlPVwiY29sb3I6IzNkYThiNVwiIGljb249XCJjYXJldC1kb3duXCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwicmVjZW50VXNlclN0b3J5XCJcbiAgICAgICAgICAgICAoY2xpY2spPVwicmVjZW50VXNlclN0b3J5LnRvZ2dsZSgpXCI+PC9mYS1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBjb2xvcj1cInByaW1hcnlcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiYW55T3BlcmF0aW9uSW5Qcm9ncmVzc0ZvckF1dG9Mb2dnaW5nJHxhc3luY1wiPlxuICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+IC0tPlxuICAgICAgICA8IS0tIDxkaXYgZnhGbGV4IGNsYXNzPVwibWwtMDVcIiAqbmdJZj1cInVzZXJTdG9yeVwiPlxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwiY2FyZXQtc2l6ZVwiIHN0eWxlPVwiY29sb3I6IzNkYThiNVwiIGljb249XCJjYXJldC1kb3duXCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwicmVjZW50VXNlclN0b3J5XCJcbiAgICAgICAgICAgICAoY2xpY2spPVwicmVjZW50VXNlclN0b3J5LnRvZ2dsZSgpXCI+PC9mYS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNhdC1wb3BvdmVyICNyZWNlbnRVc2VyU3RvcnkgaGFzQmFja2Ryb3AgIGJhY2tkcm9wQ2xhc3M9XCJ1cy1wb3BvdmVyXCI+IFxuICAgICAgICAgICAgPG1hdC1jYXJkPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHVzZXJTdG9yeSBvZiAodXNlclN0b3JpZXMkIHwgYXN5bmMgfCBzbGljZTowOjUpXCIgc3R5bGU9XCJtaW4td2lkdGg6IDEwMDBweDtcIiBjbGFzcz1cInZpZXctdXNcIj5cbiAgICAgICAgICAgIDxnYy11c2Vyc3Rvcnktc3VtbWFyeSBzdHlsZT1cIndpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO2JhY2tncm91bmQtY29sb3I6IGJlaWdlO1wiXG4gICAgICAgICAgICAgIFt1c2VyU3RvcnldPVwidXNlclN0b3J5XCIgW2lzU3ViVGFza3NQYWdlXT1mYWxzZSBbaXNMb2FkaW5nXT1cIihhbnlPcGVyYXRpb25JblByb2dyZXNzRm9yQXV0b0xvZ2dpbmckfGFzeW5jKVwiXG4gICAgICAgICAgICAgIFtpc1VzZXJTdG9yaWVzUGFnZV09dHJ1ZSAodXBkYXRlQXV0b0xvZyk9XCJMb2dBY3Rpb24oJGV2ZW50KVwiIFtpc1Nob3ddPVwiZmFsc2VcIiAoY2xvc2UpPVwicmVjZW50VXNlclN0b3J5LmNsb3NlKClcIj5cbiAgICAgICAgICAgIDwvZ2MtdXNlcnN0b3J5LXN1bW1hcnk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgIDwvc2F0LXBvcG92ZXI+XG4gICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwhLS0gVmlldyBMb2FkZXIgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3LWxvYWRlclwiICpuZ0lmPVwiaXNNb2R1bGVMb2FkaW5nXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3VibGUtYm91bmNlMSBtYXQtYmctYWNjZW50XCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG91YmxlLWJvdW5jZTIgbWF0LWJnLXByaW1hcnlcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gVmlldyBvdXRsZXQgLS0+XG4gICAgICAgIDxkaXYgaWQ9XCJidHJhay1wcmVsb2FkZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInByZWxvYWRpbmctdGV4dFwiPlxuICAgICAgICAgICAge3sgJ0xPQURJTkdQTEVBU0VXQUlUJyB8IHRyYW5zbGF0ZSB9fSAoe3t0b3RhbExvYWRpbmdUaW1lfX0ge3sgJ1NFQ09ORFMnIHwgdHJhbnNsYXRlIH19KVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGlkPVwiYnRyYWstbG9hZGVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBWaWV3IG92ZXJsYXkgZm9yIG1vYmlsZSBuYXZpZ2F0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLWJhY2tkcm9wXCIgW25nQ2xhc3NdPVwieyd2aXNpYmxlJzogbGF5b3V0Q29uZi5zaWRlYmFyU3R5bGUgIT09ICdjbG9zZWQnICYmIGxheW91dENvbmYuaXNNb2JpbGV9XCJcbiAgICAgIChjbGljayk9XCJjbG9zZVNpZGViYXIoKVwiPjwvZGl2PlxuXG4gICAgPCEtLSBOb3RpZmljYWF0aW9uIGJhciAtLT5cbiAgICA8bWF0LXNpZGVuYXYgI3NpZGVuYXYgbW9kZT1cInNpZGVcIiBvcGVuZWQgY2xhc3M9XCJleGFtcGxlLXNpZGVuYXZcIiBbZml4ZWRJblZpZXdwb3J0XT1cInRydWVcIiBbZml4ZWRUb3BHYXBdPVwibGF5b3V0Q29uZi5pc01vYmlsZSA/IDQ1IDogODhcIlxuICAgICAgW2ZpeGVkQm90dG9tR2FwXT1cIjBcIiBjbGFzcz1cInNpZGUtbmF2LWNvbG9yIGN1c3RvbS1hcHAtbmF2XCIgaWQ9XCJzdHlsZS0xXCI+XG4gICAgICA8YXBwLXNpZGViYXI+PC9hcHAtc2lkZWJhcj5cbiAgICA8L21hdC1zaWRlbmF2PlxuICA8L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cbjwvZGl2PiJdfQ==
|