@thetradeengineorg1/snova-shell-module 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js +5926 -774
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
- package/esm2015/lib/globaldependencies/components/componentbase.js +9 -9
- package/esm2015/lib/globaldependencies/helpers/moment-utc-date-adapter.js +11 -11
- package/esm2015/lib/globaldependencies/intercepter/jwt.interceptor.js +6 -6
- package/esm2015/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/highLightText.pipe.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/orderby-pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/sanitize.pipe.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/softlabels.pipes.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/utctolocaltime.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/workflowstatus.pipes.js +11 -11
- package/esm2015/lib/shell-components/components/Payments/account.component.js +91 -20
- package/esm2015/lib/shell-components/components/Payments/company-information.js +322 -26
- package/esm2015/lib/shell-components/components/Payments/company-plans.component.js +509 -11
- package/esm2015/lib/shell-components/components/Payments/document.component.js +90 -18
- package/esm2015/lib/shell-components/components/Payments/payment-method.component.js +76 -18
- package/esm2015/lib/shell-components/components/Payments/product-service.component.js +317 -22
- package/esm2015/lib/shell-components/components/Payments/purchase-more-licenses.js +119 -22
- package/esm2015/lib/shell-components/components/Payments/transactions.component.js +132 -20
- package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +119 -20
- package/esm2015/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.js +29 -16
- package/esm2015/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.js +55 -19
- package/esm2015/lib/shell-components/components/export-import-configuration/export-configuration.component.js +174 -29
- package/esm2015/lib/shell-components/components/feed-time/feed-time-dialog.component.js +29 -16
- package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +20 -16
- package/esm2015/lib/shell-components/components/header-side/header-side.component.js +763 -73
- package/esm2015/lib/shell-components/components/header-top/header-top.component.js +417 -21
- package/esm2015/lib/shell-components/components/lives/lives-welcome-page.js +39 -10
- package/esm2015/lib/shell-components/components/menu/menu.component.js +962 -74
- package/esm2015/lib/shell-components/components/notifications/announcement-dialog.component.js +57 -20
- package/esm2015/lib/shell-components/components/notifications/notifications.component.js +99 -14
- package/esm2015/lib/shell-components/components/sidebar-top/sidebar-top.component.js +19 -13
- package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +80 -13
- package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +419 -23
- package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +17 -13
- package/esm2015/lib/shell-components/services/authentication.service.js +7 -7
- package/esm2015/lib/shell-components/services/chat.service.js +9 -9
- package/esm2015/lib/shell-components/services/common-used.service.js +7 -7
- package/esm2015/lib/shell-components/services/feature.service.js +7 -7
- package/esm2015/lib/shell-components/services/google-analytics.service.js +6 -6
- package/esm2015/lib/shell-components/services/layout.service.js +6 -6
- package/esm2015/lib/shell-components/services/payment.service.js +7 -7
- package/esm2015/lib/shell-components/services/recentSearch.service.js +9 -9
- package/esm2015/lib/shell-components/services/shell.modules.service.js +11 -11
- package/esm2015/lib/shell-components/services/signalr.service.js +9 -9
- package/esm2015/lib/shell-components/services/theme.service.js +6 -6
- package/esm2015/lib/shell-components/shell.module.js +185 -181
- package/esm2015/lib/shell-components/store/effects/authentication.effects.js +9 -9
- package/esm2015/lib/shell-components/store/effects/chat.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/menuitems.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/notification-validator.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/notifications.effects.js +6 -6
- package/fesm2015/thetradeengineorg1-snova-shell-module.js +5322 -911
- package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
- package/lib/globaldependencies/components/componentbase.d.ts +1 -0
- package/lib/globaldependencies/components/componentbase.d.ts.map +1 -0
- package/lib/globaldependencies/constants/feature-ids.d.ts +1 -0
- package/lib/globaldependencies/constants/feature-ids.d.ts.map +1 -0
- package/lib/globaldependencies/constants/localstorage-properties.d.ts +1 -0
- package/lib/globaldependencies/constants/localstorage-properties.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/dom.helper.d.ts +1 -0
- package/lib/globaldependencies/helpers/dom.helper.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/fontawesome-icons.d.ts +1 -0
- package/lib/globaldependencies/helpers/fontawesome-icons.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts +1 -0
- package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts.map +1 -0
- package/lib/globaldependencies/helpers/window.helper.d.ts +1 -0
- package/lib/globaldependencies/helpers/window.helper.d.ts.map +1 -0
- package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts +1 -0
- package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/highLightText.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/highLightText.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/orderby-pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/orderby-pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/sanitize.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/sanitize.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/softlabels.pipes.d.ts +1 -0
- package/lib/globaldependencies/pipes/softlabels.pipes.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts +1 -0
- package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts.map +1 -0
- package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts +1 -0
- package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/account.component.d.ts +1 -0
- package/lib/shell-components/components/Payments/account.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/company-information.d.ts +1 -0
- package/lib/shell-components/components/Payments/company-information.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/company-plans.component.d.ts +1 -0
- package/lib/shell-components/components/Payments/company-plans.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/document.component.d.ts +2 -1
- package/lib/shell-components/components/Payments/document.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/payment-method.component.d.ts +1 -0
- package/lib/shell-components/components/Payments/payment-method.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/product-service.component.d.ts +1 -0
- package/lib/shell-components/components/Payments/product-service.component.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts +1 -0
- package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts.map +1 -0
- package/lib/shell-components/components/Payments/transactions.component.d.ts +1 -0
- package/lib/shell-components/components/Payments/transactions.component.d.ts.map +1 -0
- package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts +1 -0
- package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts.map +1 -0
- package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts +1 -0
- package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts.map +1 -0
- package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts +1 -0
- package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
- package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts +1 -0
- package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts.map +1 -0
- package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts +1 -0
- package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts.map +1 -0
- package/lib/shell-components/components/feed-time/feed-time.component.d.ts +1 -0
- package/lib/shell-components/components/feed-time/feed-time.component.d.ts.map +1 -0
- package/lib/shell-components/components/header-side/header-side.component.d.ts +2 -1
- package/lib/shell-components/components/header-side/header-side.component.d.ts.map +1 -0
- package/lib/shell-components/components/header-top/header-top.component.d.ts +1 -0
- package/lib/shell-components/components/header-top/header-top.component.d.ts.map +1 -0
- package/lib/shell-components/components/lives/lives-welcome-page.d.ts +1 -0
- package/lib/shell-components/components/lives/lives-welcome-page.d.ts.map +1 -0
- package/lib/shell-components/components/menu/menu.component.d.ts +1 -0
- package/lib/shell-components/components/menu/menu.component.d.ts.map +1 -0
- package/lib/shell-components/components/menu/searchTask.enum.d.ts +1 -0
- package/lib/shell-components/components/menu/searchTask.enum.d.ts.map +1 -0
- package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts +1 -0
- package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts.map +1 -0
- package/lib/shell-components/components/notifications/notifications.component.d.ts +1 -0
- package/lib/shell-components/components/notifications/notifications.component.d.ts.map +1 -0
- package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts +1 -0
- package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts.map +1 -0
- package/lib/shell-components/components/sidenav/side-bar.component.d.ts +1 -0
- package/lib/shell-components/components/sidenav/side-bar.component.d.ts.map +1 -0
- package/lib/shell-components/components/sidenav/sidenav.component.d.ts +1 -0
- package/lib/shell-components/components/sidenav/sidenav.component.d.ts.map +1 -0
- package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts +1 -0
- package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts.map +1 -0
- package/lib/shell-components/constants/api-urls.d.ts +1 -0
- package/lib/shell-components/constants/api-urls.d.ts.map +1 -0
- package/lib/shell-components/constants/available-languages.d.ts +1 -0
- package/lib/shell-components/constants/available-languages.d.ts.map +1 -0
- package/lib/shell-components/constants/channel-names.d.ts +1 -0
- package/lib/shell-components/constants/channel-names.d.ts.map +1 -0
- package/lib/shell-components/constants/menu-categories.d.ts +1 -0
- package/lib/shell-components/constants/menu-categories.d.ts.map +1 -0
- package/lib/shell-components/constants/notification-routes.d.ts +1 -0
- package/lib/shell-components/constants/notification-routes.d.ts.map +1 -0
- package/lib/shell-components/constants/notification-type-ids.d.ts +1 -0
- package/lib/shell-components/constants/notification-type-ids.d.ts.map +1 -0
- package/lib/shell-components/enum/recentSearchType.enum.d.ts +1 -0
- package/lib/shell-components/enum/recentSearchType.enum.d.ts.map +1 -0
- package/lib/shell-components/models/AppMenuItemModel.d.ts +1 -0
- package/lib/shell-components/models/AppMenuItemModel.d.ts.map +1 -0
- package/lib/shell-components/models/AppNotification.d.ts +1 -0
- package/lib/shell-components/models/AppNotification.d.ts.map +1 -0
- package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/ChannelUpdateModel.d.ts +1 -0
- package/lib/shell-components/models/ChannelUpdateModel.d.ts.map +1 -0
- package/lib/shell-components/models/EmployeeStatusModel.d.ts +1 -0
- package/lib/shell-components/models/EmployeeStatusModel.d.ts.map +1 -0
- package/lib/shell-components/models/IAdjust-screen-options.d.ts +1 -0
- package/lib/shell-components/models/IAdjust-screen-options.d.ts.map +1 -0
- package/lib/shell-components/models/IBadge.d.ts +1 -0
- package/lib/shell-components/models/IBadge.d.ts.map +1 -0
- package/lib/shell-components/models/IChildItem.d.ts +1 -0
- package/lib/shell-components/models/IChildItem.d.ts.map +1 -0
- package/lib/shell-components/models/ILayout-change-options.d.ts +1 -0
- package/lib/shell-components/models/ILayout-change-options.d.ts.map +1 -0
- package/lib/shell-components/models/IMenuItem.d.ts +1 -0
- package/lib/shell-components/models/IMenuItem.d.ts.map +1 -0
- package/lib/shell-components/models/IlayoutConf.d.ts +1 -0
- package/lib/shell-components/models/IlayoutConf.d.ts.map +1 -0
- package/lib/shell-components/models/IntroModel.d.ts +1 -0
- package/lib/shell-components/models/IntroModel.d.ts.map +1 -0
- package/lib/shell-components/models/MessageDetails.d.ts +1 -0
- package/lib/shell-components/models/MessageDetails.d.ts.map +1 -0
- package/lib/shell-components/models/MessageTypingDetails.d.ts +1 -0
- package/lib/shell-components/models/MessageTypingDetails.d.ts.map +1 -0
- package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/NotificationsOutPutModel.d.ts +1 -0
- package/lib/shell-components/models/NotificationsOutPutModel.d.ts.map +1 -0
- package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts +1 -0
- package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts.map +1 -0
- package/lib/shell-components/models/RecentSearchModel.d.ts +1 -0
- package/lib/shell-components/models/RecentSearchModel.d.ts.map +1 -0
- package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts +1 -0
- package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/ReportSubmittedNotification.d.ts +1 -0
- package/lib/shell-components/models/ReportSubmittedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/RoleUpdatedNotification.d.ts +1 -0
- package/lib/shell-components/models/RoleUpdatedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/UserStoryAssignedNotification.d.ts +1 -0
- package/lib/shell-components/models/UserStoryAssignedNotification.d.ts.map +1 -0
- package/lib/shell-components/models/archiveUserStoryModel.d.ts +1 -0
- package/lib/shell-components/models/archiveUserStoryModel.d.ts.map +1 -0
- package/lib/shell-components/models/companieslist.model.d.ts +1 -0
- package/lib/shell-components/models/companieslist.model.d.ts.map +1 -0
- package/lib/shell-components/models/company-model.d.ts +1 -0
- package/lib/shell-components/models/company-model.d.ts.map +1 -0
- package/lib/shell-components/models/company-payment-model.d.ts +1 -0
- package/lib/shell-components/models/company-payment-model.d.ts.map +1 -0
- package/lib/shell-components/models/dragedWidget.d.ts +1 -0
- package/lib/shell-components/models/dragedWidget.d.ts.map +1 -0
- package/lib/shell-components/models/employee-List.d.ts +1 -0
- package/lib/shell-components/models/employee-List.d.ts.map +1 -0
- package/lib/shell-components/models/employee.d.ts +1 -0
- package/lib/shell-components/models/employee.d.ts.map +1 -0
- package/lib/shell-components/models/entityRoleFeature.d.ts +1 -0
- package/lib/shell-components/models/entityRoleFeature.d.ts.map +1 -0
- package/lib/shell-components/models/export-configuration-model.d.ts +1 -0
- package/lib/shell-components/models/export-configuration-model.d.ts.map +1 -0
- package/lib/shell-components/models/export-data.module.d.ts +1 -0
- package/lib/shell-components/models/export-data.module.d.ts.map +1 -0
- package/lib/shell-components/models/goalApprovedNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/goalApprovedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/import-configuration-model.d.ts +1 -0
- package/lib/shell-components/models/import-configuration-model.d.ts.map +1 -0
- package/lib/shell-components/models/initialStatusofUsers.d.ts +1 -0
- package/lib/shell-components/models/initialStatusofUsers.d.ts.map +1 -0
- package/lib/shell-components/models/invoiceOutput-model.d.ts +1 -0
- package/lib/shell-components/models/invoiceOutput-model.d.ts.map +1 -0
- package/lib/shell-components/models/leaveApplicationNotifiction.d.ts +1 -0
- package/lib/shell-components/models/leaveApplicationNotifiction.d.ts.map +1 -0
- package/lib/shell-components/models/multiChartsScheduling.d.ts +1 -0
- package/lib/shell-components/models/multiChartsScheduling.d.ts.map +1 -0
- package/lib/shell-components/models/parkUserStoryInputModel.d.ts +1 -0
- package/lib/shell-components/models/parkUserStoryInputModel.d.ts.map +1 -0
- package/lib/shell-components/models/project.d.ts +1 -0
- package/lib/shell-components/models/project.d.ts.map +1 -0
- package/lib/shell-components/models/recentSearchApiModel.d.ts +1 -0
- package/lib/shell-components/models/recentSearchApiModel.d.ts.map +1 -0
- package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts +1 -0
- package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts.map +1 -0
- package/lib/shell-components/models/shellModulesInfo.d.ts +1 -0
- package/lib/shell-components/models/shellModulesInfo.d.ts.map +1 -0
- package/lib/shell-components/models/softlabels-model.d.ts +1 -0
- package/lib/shell-components/models/softlabels-model.d.ts.map +1 -0
- package/lib/shell-components/models/sprintReplanRequestedModel.d.ts +1 -0
- package/lib/shell-components/models/sprintReplanRequestedModel.d.ts.map +1 -0
- package/lib/shell-components/models/sprintStartedNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/sprintStartedNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/store-model.d.ts +1 -0
- package/lib/shell-components/models/store-model.d.ts.map +1 -0
- package/lib/shell-components/models/store-search-model.d.ts +1 -0
- package/lib/shell-components/models/store-search-model.d.ts.map +1 -0
- package/lib/shell-components/models/themes.model.d.ts +1 -0
- package/lib/shell-components/models/themes.model.d.ts.map +1 -0
- package/lib/shell-components/models/timesheetenabledisable.d.ts +1 -0
- package/lib/shell-components/models/timesheetenabledisable.d.ts.map +1 -0
- package/lib/shell-components/models/user.d.ts +1 -0
- package/lib/shell-components/models/user.d.ts.map +1 -0
- package/lib/shell-components/models/userStory.d.ts +1 -0
- package/lib/shell-components/models/userStory.d.ts.map +1 -0
- package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts +1 -0
- package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts.map +1 -0
- package/lib/shell-components/models/userstory-custom-fields.model.d.ts +1 -0
- package/lib/shell-components/models/userstory-custom-fields.model.d.ts.map +1 -0
- package/lib/shell-components/models/validation.model.d.ts +1 -0
- package/lib/shell-components/models/validation.model.d.ts.map +1 -0
- package/lib/shell-components/models/widgetlist.d.ts +1 -0
- package/lib/shell-components/models/widgetlist.d.ts.map +1 -0
- package/lib/shell-components/models/workspaceList.d.ts +1 -0
- package/lib/shell-components/models/workspaceList.d.ts.map +1 -0
- package/lib/shell-components/services/authentication.service.d.ts +1 -0
- package/lib/shell-components/services/authentication.service.d.ts.map +1 -0
- package/lib/shell-components/services/chat.service.d.ts +1 -0
- package/lib/shell-components/services/chat.service.d.ts.map +1 -0
- package/lib/shell-components/services/common-used.service.d.ts +1 -0
- package/lib/shell-components/services/common-used.service.d.ts.map +1 -0
- package/lib/shell-components/services/feature.service.d.ts +1 -0
- package/lib/shell-components/services/feature.service.d.ts.map +1 -0
- package/lib/shell-components/services/google-analytics.service.d.ts +1 -0
- package/lib/shell-components/services/google-analytics.service.d.ts.map +1 -0
- package/lib/shell-components/services/layout.service.d.ts +1 -0
- package/lib/shell-components/services/layout.service.d.ts.map +1 -0
- package/lib/shell-components/services/payment.service.d.ts +1 -0
- package/lib/shell-components/services/payment.service.d.ts.map +1 -0
- package/lib/shell-components/services/recentSearch.service.d.ts +1 -0
- package/lib/shell-components/services/recentSearch.service.d.ts.map +1 -0
- package/lib/shell-components/services/shell.modules.service.d.ts +1 -0
- package/lib/shell-components/services/shell.modules.service.d.ts.map +1 -0
- package/lib/shell-components/services/signalr.service.d.ts +1 -0
- package/lib/shell-components/services/signalr.service.d.ts.map +1 -0
- package/lib/shell-components/services/theme.service.d.ts +1 -0
- package/lib/shell-components/services/theme.service.d.ts.map +1 -0
- package/lib/shell-components/shell.module.d.ts +2 -1
- package/lib/shell-components/shell.module.d.ts.map +1 -0
- package/lib/shell-components/shell.routing.d.ts +1 -0
- package/lib/shell-components/shell.routing.d.ts.map +1 -0
- package/lib/shell-components/store/actions/authentication.actions.d.ts +1 -0
- package/lib/shell-components/store/actions/authentication.actions.d.ts.map +1 -0
- package/lib/shell-components/store/actions/chat.actions.d.ts +1 -0
- package/lib/shell-components/store/actions/chat.actions.d.ts.map +1 -0
- package/lib/shell-components/store/actions/menuitems.actions.d.ts +1 -0
- package/lib/shell-components/store/actions/menuitems.actions.d.ts.map +1 -0
- package/lib/shell-components/store/actions/notification-validator.action.d.ts +1 -0
- package/lib/shell-components/store/actions/notification-validator.action.d.ts.map +1 -0
- package/lib/shell-components/store/actions/notifications.actions.d.ts +1 -0
- package/lib/shell-components/store/actions/notifications.actions.d.ts.map +1 -0
- package/lib/shell-components/store/effects/authentication.effects.d.ts +1 -0
- package/lib/shell-components/store/effects/authentication.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/chat.effects.d.ts +1 -0
- package/lib/shell-components/store/effects/chat.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/index.d.ts +1 -0
- package/lib/shell-components/store/effects/index.d.ts.map +1 -0
- package/lib/shell-components/store/effects/menuitems.effects.d.ts +1 -0
- package/lib/shell-components/store/effects/menuitems.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/notification-validator.effects.d.ts +1 -0
- package/lib/shell-components/store/effects/notification-validator.effects.d.ts.map +1 -0
- package/lib/shell-components/store/effects/notifications.effects.d.ts +1 -0
- package/lib/shell-components/store/effects/notifications.effects.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/authentication.reducers.d.ts +1 -0
- package/lib/shell-components/store/reducers/authentication.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/chat.reducers.d.ts +1 -0
- package/lib/shell-components/store/reducers/chat.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/index.d.ts +1 -0
- package/lib/shell-components/store/reducers/index.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/menuitems.reducers.d.ts +1 -0
- package/lib/shell-components/store/reducers/menuitems.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts +1 -0
- package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts.map +1 -0
- package/lib/shell-components/store/reducers/notifications.reducers.d.ts +1 -0
- package/lib/shell-components/store/reducers/notifications.reducers.d.ts.map +1 -0
- package/package.json +5 -5
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -0
- package/store/reducers/index.d.ts +1 -0
- package/store/reducers/index.d.ts.map +1 -0
- package/thetradeengineorg1-snova-shell-module.d.ts +1 -0
- package/thetradeengineorg1-snova-shell-module.d.ts.map +1 -0
|
@@ -36,27 +36,590 @@ import * as i11 from "@ngrx/effects";
|
|
|
36
36
|
import * as i12 from "../../services/google-analytics.service";
|
|
37
37
|
import * as i13 from "../../services/common-used.service";
|
|
38
38
|
import * as i14 from "@angular/material/button";
|
|
39
|
-
import * as i15 from "@angular/
|
|
39
|
+
import * as i15 from "@angular/flex-layout/extended";
|
|
40
40
|
import * as i16 from "@angular/material/menu";
|
|
41
|
-
import * as i17 from "@
|
|
42
|
-
import * as i18 from "@angular/
|
|
43
|
-
import * as i19 from "@
|
|
41
|
+
import * as i17 from "@angular/material/icon";
|
|
42
|
+
import * as i18 from "@angular/flex-layout/flex";
|
|
43
|
+
import * as i19 from "@angular/forms";
|
|
44
44
|
import * as i20 from "@ncstate/sat-popover";
|
|
45
45
|
import * as i21 from "@angular/material/card";
|
|
46
46
|
import * as i22 from "@angular/material/form-field";
|
|
47
|
-
import * as i23 from "@angular/material/
|
|
48
|
-
import * as i24 from "@angular/material/
|
|
49
|
-
import * as i25 from "@angular/material/
|
|
50
|
-
import * as i26 from "@angular
|
|
51
|
-
import * as i27 from "@angular/
|
|
52
|
-
import * as i28 from "@angular/material/
|
|
53
|
-
import * as i29 from "@
|
|
54
|
-
import * as i30 from "@angular/material/
|
|
47
|
+
import * as i23 from "@angular/material/input";
|
|
48
|
+
import * as i24 from "@angular/material/select";
|
|
49
|
+
import * as i25 from "@angular/material/core";
|
|
50
|
+
import * as i26 from "@fortawesome/angular-fontawesome";
|
|
51
|
+
import * as i27 from "@angular/material/tooltip";
|
|
52
|
+
import * as i28 from "@angular/material/progress-bar";
|
|
53
|
+
import * as i29 from "@thetradeengineorg1/snova-avatar";
|
|
54
|
+
import * as i30 from "@angular/material/progress-spinner";
|
|
55
55
|
import * as i31 from "../../../globaldependencies/pipes/softlabels.pipes";
|
|
56
56
|
import * as i32 from "../../../globaldependencies/pipes/highLightText.pipe";
|
|
57
57
|
import * as i33 from "../../../globaldependencies/pipes/removeSpecialCharacters.pipe";
|
|
58
58
|
import * as i34 from "../../../globaldependencies/pipes/fetchSizedAndCachedImage.pipe";
|
|
59
59
|
import * as i35 from "ngx-timeago";
|
|
60
|
+
const _c0 = ["menuTrigger"];
|
|
61
|
+
const _c1 = ["element"];
|
|
62
|
+
const _c2 = ["workspaceElement"];
|
|
63
|
+
const _c3 = ["menuElement"];
|
|
64
|
+
const _c4 = ["addWorkspace"];
|
|
65
|
+
const _c5 = ["allSelected"];
|
|
66
|
+
const _c6 = ["allEditSelected"];
|
|
67
|
+
const _c7 = ["allDeleteSelected"];
|
|
68
|
+
const _c8 = ["infoPopOver"];
|
|
69
|
+
const _c9 = ["openMenuPopUp"];
|
|
70
|
+
function MenuComponent_div_9_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
72
|
+
i0.ɵɵelementStart(0, "div");
|
|
73
|
+
i0.ɵɵelementStart(1, "button", 55);
|
|
74
|
+
i0.ɵɵlistener("click", function MenuComponent_div_9_div_1_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r36); const item_r32 = i0.ɵɵnextContext().$implicit; const ctx_r34 = i0.ɵɵnextContext(); return ctx_r34.selectMenu(item_r32, $event); });
|
|
75
|
+
i0.ɵɵelementStart(2, "mat-icon");
|
|
76
|
+
i0.ɵɵtext(3);
|
|
77
|
+
i0.ɵɵelementEnd();
|
|
78
|
+
i0.ɵɵtext(4);
|
|
79
|
+
i0.ɵɵpipe(5, "softLabelsPipe");
|
|
80
|
+
i0.ɵɵelementEnd();
|
|
81
|
+
i0.ɵɵelementEnd();
|
|
82
|
+
} if (rf & 2) {
|
|
83
|
+
const item_r32 = i0.ɵɵnextContext().$implicit;
|
|
84
|
+
const ctx_r33 = i0.ɵɵnextContext();
|
|
85
|
+
i0.ɵɵadvance(1);
|
|
86
|
+
i0.ɵɵpropertyInterpolate1("routerLink", "/", item_r32.state, "");
|
|
87
|
+
i0.ɵɵadvance(2);
|
|
88
|
+
i0.ɵɵtextInterpolate(item_r32.icon);
|
|
89
|
+
i0.ɵɵadvance(1);
|
|
90
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(5, 3, item_r32.menu, ctx_r33.softLabels), " ");
|
|
91
|
+
} }
|
|
92
|
+
function MenuComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
93
|
+
i0.ɵɵelementStart(0, "div");
|
|
94
|
+
i0.ɵɵtemplate(1, MenuComponent_div_9_div_1_Template, 6, 6, "div", 16);
|
|
95
|
+
i0.ɵɵelementEnd();
|
|
96
|
+
} if (rf & 2) {
|
|
97
|
+
const item_r32 = ctx.$implicit;
|
|
98
|
+
i0.ɵɵadvance(1);
|
|
99
|
+
i0.ɵɵproperty("ngIf", item_r32.type == "link" || item_r32.type == "applicationlink");
|
|
100
|
+
} }
|
|
101
|
+
function MenuComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
+
const _r39 = i0.ɵɵgetCurrentView();
|
|
103
|
+
i0.ɵɵelementStart(0, "div", 56);
|
|
104
|
+
i0.ɵɵelementStart(1, "fa-icon", 57);
|
|
105
|
+
i0.ɵɵlistener("click", function MenuComponent_div_10_Template_fa_icon_click_1_listener() { i0.ɵɵrestoreView(_r39); const ctx_r38 = i0.ɵɵnextContext(); return ctx_r38.openApps(); });
|
|
106
|
+
i0.ɵɵpipe(2, "translate");
|
|
107
|
+
i0.ɵɵelementEnd();
|
|
108
|
+
i0.ɵɵelementEnd();
|
|
109
|
+
} if (rf & 2) {
|
|
110
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
111
|
+
i0.ɵɵproperty("ngClass", ctx_r2.routes.url.includes("/app-store/widgets") ? "icon_active_class" : "");
|
|
112
|
+
i0.ɵɵadvance(1);
|
|
113
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(2, 2, "APP.APPSTORE"));
|
|
114
|
+
} }
|
|
115
|
+
function MenuComponent_span_12_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
+
i0.ɵɵelementStart(0, "span", 58);
|
|
117
|
+
i0.ɵɵtext(1, "@ \u00A0");
|
|
118
|
+
i0.ɵɵelementEnd();
|
|
119
|
+
} }
|
|
120
|
+
function MenuComponent_span_13_Template(rf, ctx) { if (rf & 1) {
|
|
121
|
+
i0.ɵɵelementStart(0, "span", 58);
|
|
122
|
+
i0.ɵɵtext(1, "# \u00A0");
|
|
123
|
+
i0.ɵɵelementEnd();
|
|
124
|
+
} }
|
|
125
|
+
function MenuComponent_span_19_Template(rf, ctx) { if (rf & 1) {
|
|
126
|
+
i0.ɵɵelement(0, "span");
|
|
127
|
+
} }
|
|
128
|
+
function MenuComponent_mat_icon_20_Template(rf, ctx) { if (rf & 1) {
|
|
129
|
+
const _r41 = i0.ɵɵgetCurrentView();
|
|
130
|
+
i0.ɵɵelementStart(0, "mat-icon", 59);
|
|
131
|
+
i0.ɵɵlistener("click", function MenuComponent_mat_icon_20_Template_mat_icon_click_0_listener($event) { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(); return ctx_r40.closeSearch($event); });
|
|
132
|
+
i0.ɵɵtext(1, " close");
|
|
133
|
+
i0.ɵɵelementEnd();
|
|
134
|
+
} }
|
|
135
|
+
function MenuComponent_mat_progress_bar_27_Template(rf, ctx) { if (rf & 1) {
|
|
136
|
+
i0.ɵɵelement(0, "mat-progress-bar", 60);
|
|
137
|
+
} }
|
|
138
|
+
const _c10 = function () { return { exact: true }; };
|
|
139
|
+
function MenuComponent_div_29_ng_container_5_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
140
|
+
const _r49 = i0.ɵɵgetCurrentView();
|
|
141
|
+
i0.ɵɵelementStart(0, "div");
|
|
142
|
+
i0.ɵɵelementStart(1, "button", 65);
|
|
143
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_29_ng_container_5_div_1_div_1_Template_button_mousedown_1_listener($event) { i0.ɵɵrestoreView(_r49); const item_r44 = i0.ɵɵnextContext().$implicit; const ctx_r47 = i0.ɵɵnextContext(3); return ctx_r47.selectAdimnTool(item_r44.state, $event, item_r44); });
|
|
144
|
+
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
145
|
+
i0.ɵɵelementStart(3, "mat-icon", 66);
|
|
146
|
+
i0.ɵɵtext(4);
|
|
147
|
+
i0.ɵɵelementEnd();
|
|
148
|
+
i0.ɵɵelement(5, "span", 67);
|
|
149
|
+
i0.ɵɵpipe(6, "highLightText");
|
|
150
|
+
i0.ɵɵpipe(7, "softLabelsPipe");
|
|
151
|
+
i0.ɵɵelementEnd();
|
|
152
|
+
i0.ɵɵelementEnd();
|
|
153
|
+
} if (rf & 2) {
|
|
154
|
+
const ctx_r50 = i0.ɵɵnextContext();
|
|
155
|
+
const item_r44 = ctx_r50.$implicit;
|
|
156
|
+
const i_r45 = ctx_r50.index;
|
|
157
|
+
const ctx_r46 = i0.ɵɵnextContext(3);
|
|
158
|
+
i0.ɵɵadvance(1);
|
|
159
|
+
i0.ɵɵpropertyInterpolate1("routerLink", "/", item_r44.state, "");
|
|
160
|
+
i0.ɵɵpropertyInterpolate("matTooltip", ctx_r46.translateapplicationname(i0.ɵɵpipeBind2(2, 7, item_r44.menu, ctx_r46.softLabels)));
|
|
161
|
+
i0.ɵɵproperty("ngClass", ctx_r46.selectedRowIndex == i_r45 ? "color-text" : "color-text1")("routerLinkActiveOptions", i0.ɵɵpureFunction0(16, _c10));
|
|
162
|
+
i0.ɵɵadvance(2);
|
|
163
|
+
i0.ɵɵproperty("ngClass", ctx_r46.selectedRowIndex == i_r45 ? "color-text" : "color-text1");
|
|
164
|
+
i0.ɵɵadvance(1);
|
|
165
|
+
i0.ɵɵtextInterpolate1(" ", item_r44.icon, "");
|
|
166
|
+
i0.ɵɵadvance(1);
|
|
167
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(6, 10, i0.ɵɵpipeBind2(7, 13, ctx_r46.translateapplicationname(item_r44.menu), ctx_r46.softLabels), ctx_r46.searchText), i0.ɵɵsanitizeHtml);
|
|
168
|
+
} }
|
|
169
|
+
function MenuComponent_div_29_ng_container_5_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
170
|
+
i0.ɵɵelementStart(0, "div");
|
|
171
|
+
i0.ɵɵtemplate(1, MenuComponent_div_29_ng_container_5_div_1_div_1_Template, 8, 17, "div", 16);
|
|
172
|
+
i0.ɵɵelementEnd();
|
|
173
|
+
} if (rf & 2) {
|
|
174
|
+
const item_r44 = ctx.$implicit;
|
|
175
|
+
const i_r45 = ctx.index;
|
|
176
|
+
const ctx_r43 = i0.ɵɵnextContext(3);
|
|
177
|
+
i0.ɵɵstyleProp("background-color", ctx_r43.selectedRowIndex == i_r45 ? ctx_r43.themeBaseColor : "white");
|
|
178
|
+
i0.ɵɵadvance(1);
|
|
179
|
+
i0.ɵɵproperty("ngIf", item_r44.type == "link" || item_r44.type == "applicationlink");
|
|
180
|
+
} }
|
|
181
|
+
function MenuComponent_div_29_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
+
i0.ɵɵelementContainerStart(0);
|
|
183
|
+
i0.ɵɵtemplate(1, MenuComponent_div_29_ng_container_5_div_1_Template, 2, 3, "div", 64);
|
|
184
|
+
i0.ɵɵelementContainerEnd();
|
|
185
|
+
} if (rf & 2) {
|
|
186
|
+
const ctx_r42 = i0.ɵɵnextContext(2);
|
|
187
|
+
i0.ɵɵadvance(1);
|
|
188
|
+
i0.ɵɵproperty("ngForOf", ctx_r42.items);
|
|
189
|
+
} }
|
|
190
|
+
function MenuComponent_div_29_Template(rf, ctx) { if (rf & 1) {
|
|
191
|
+
i0.ɵɵelementStart(0, "div", 61);
|
|
192
|
+
i0.ɵɵelementStart(1, "div", 62);
|
|
193
|
+
i0.ɵɵtext(2);
|
|
194
|
+
i0.ɵɵpipe(3, "translate");
|
|
195
|
+
i0.ɵɵelementEnd();
|
|
196
|
+
i0.ɵɵelementStart(4, "div", 63);
|
|
197
|
+
i0.ɵɵtemplate(5, MenuComponent_div_29_ng_container_5_Template, 2, 1, "ng-container", 16);
|
|
198
|
+
i0.ɵɵelementEnd();
|
|
199
|
+
i0.ɵɵelementEnd();
|
|
200
|
+
} if (rf & 2) {
|
|
201
|
+
const ctx_r10 = i0.ɵɵnextContext();
|
|
202
|
+
i0.ɵɵadvance(2);
|
|
203
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "SHELL.APPLICATIONS"));
|
|
204
|
+
i0.ɵɵadvance(3);
|
|
205
|
+
i0.ɵɵproperty("ngIf", ctx_r10.items && ctx_r10.items.length > 0);
|
|
206
|
+
} }
|
|
207
|
+
function MenuComponent_div_30_div_1_fa_icon_4_Template(rf, ctx) { if (rf & 1) {
|
|
208
|
+
const _r55 = i0.ɵɵgetCurrentView();
|
|
209
|
+
i0.ɵɵelementStart(0, "fa-icon", 72);
|
|
210
|
+
i0.ɵɵlistener("click", function MenuComponent_div_30_div_1_fa_icon_4_Template_fa_icon_click_0_listener() { i0.ɵɵrestoreView(_r55); const ctx_r54 = i0.ɵɵnextContext(3); ctx_r54.initializeWorkspaceForm(); return ctx_r54.openWorkspaceForm(); });
|
|
211
|
+
i0.ɵɵpipe(1, "translate");
|
|
212
|
+
i0.ɵɵelementEnd();
|
|
213
|
+
} if (rf & 2) {
|
|
214
|
+
i0.ɵɵnextContext(3);
|
|
215
|
+
const _r18 = i0.ɵɵreference(38);
|
|
216
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(1, 2, "APP.ADDDASHBOARD"));
|
|
217
|
+
i0.ɵɵproperty("satPopoverAnchorFor", _r18);
|
|
218
|
+
} }
|
|
219
|
+
function MenuComponent_div_30_div_1_ng_container_6_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
220
|
+
const _r61 = i0.ɵɵgetCurrentView();
|
|
221
|
+
i0.ɵɵelementStart(0, "div", 74, 75);
|
|
222
|
+
i0.ɵɵelementStart(2, "button", 76);
|
|
223
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_30_div_1_ng_container_6_div_1_Template_button_mousedown_2_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r61); const wc_r57 = restoredCtx.$implicit; const ctx_r60 = i0.ɵɵnextContext(4); return ctx_r60.selectMenu(wc_r57, $event); })("click", function MenuComponent_div_30_div_1_ng_container_6_div_1_Template_button_click_2_listener() { const restoredCtx = i0.ɵɵrestoreView(_r61); const wc_r57 = restoredCtx.$implicit; const ctx_r62 = i0.ɵɵnextContext(4); return ctx_r62.navigateToUrl(wc_r57.workspaceId); });
|
|
224
|
+
i0.ɵɵelement(3, "span", 67);
|
|
225
|
+
i0.ɵɵpipe(4, "highLightText");
|
|
226
|
+
i0.ɵɵelementEnd();
|
|
227
|
+
i0.ɵɵelementEnd();
|
|
228
|
+
} if (rf & 2) {
|
|
229
|
+
const wc_r57 = ctx.$implicit;
|
|
230
|
+
const i_r58 = ctx.index;
|
|
231
|
+
const ctx_r56 = i0.ɵɵnextContext(4);
|
|
232
|
+
i0.ɵɵstyleProp("background-color", ctx_r56.ws == i_r58 ? ctx_r56.themeBaseColor : "white");
|
|
233
|
+
i0.ɵɵadvance(2);
|
|
234
|
+
i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard-management/dashboard/", wc_r57.workspaceId, "");
|
|
235
|
+
i0.ɵɵpropertyInterpolate("matTooltip", wc_r57.workspaceName);
|
|
236
|
+
i0.ɵɵproperty("ngClass", ctx_r56.ws == i_r58 ? "color-text" : "color-text1");
|
|
237
|
+
i0.ɵɵadvance(1);
|
|
238
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 6, wc_r57.workspaceName, ctx_r56.searchText), i0.ɵɵsanitizeHtml);
|
|
239
|
+
} }
|
|
240
|
+
function MenuComponent_div_30_div_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
241
|
+
i0.ɵɵelementContainerStart(0);
|
|
242
|
+
i0.ɵɵtemplate(1, MenuComponent_div_30_div_1_ng_container_6_div_1_Template, 5, 9, "div", 73);
|
|
243
|
+
i0.ɵɵelementContainerEnd();
|
|
244
|
+
} if (rf & 2) {
|
|
245
|
+
const ctx_r53 = i0.ɵɵnextContext(3);
|
|
246
|
+
i0.ɵɵadvance(1);
|
|
247
|
+
i0.ɵɵproperty("ngForOf", ctx_r53.workspaces);
|
|
248
|
+
} }
|
|
249
|
+
function MenuComponent_div_30_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
250
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
251
|
+
i0.ɵɵelementStart(1, "div", 62);
|
|
252
|
+
i0.ɵɵtext(2);
|
|
253
|
+
i0.ɵɵpipe(3, "translate");
|
|
254
|
+
i0.ɵɵtemplate(4, MenuComponent_div_30_div_1_fa_icon_4_Template, 2, 4, "fa-icon", 70);
|
|
255
|
+
i0.ɵɵelementEnd();
|
|
256
|
+
i0.ɵɵelementStart(5, "div", 71);
|
|
257
|
+
i0.ɵɵtemplate(6, MenuComponent_div_30_div_1_ng_container_6_Template, 2, 1, "ng-container", 16);
|
|
258
|
+
i0.ɵɵelementEnd();
|
|
259
|
+
i0.ɵɵelementEnd();
|
|
260
|
+
} if (rf & 2) {
|
|
261
|
+
const ctx_r51 = i0.ɵɵnextContext(2);
|
|
262
|
+
i0.ɵɵadvance(2);
|
|
263
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(3, 3, "SHELL.DASHBOARDS"), " ");
|
|
264
|
+
i0.ɵɵadvance(2);
|
|
265
|
+
i0.ɵɵproperty("ngIf", ctx_r51.canAccess_feature_AddDashboard);
|
|
266
|
+
i0.ɵɵadvance(2);
|
|
267
|
+
i0.ɵɵproperty("ngIf", ctx_r51.workspaces && ctx_r51.workspaces.length > 0);
|
|
268
|
+
} }
|
|
269
|
+
function MenuComponent_div_30_Template(rf, ctx) { if (rf & 1) {
|
|
270
|
+
i0.ɵɵelementStart(0, "div", 68);
|
|
271
|
+
i0.ɵɵtemplate(1, MenuComponent_div_30_div_1_Template, 7, 5, "div", 27);
|
|
272
|
+
i0.ɵɵelementEnd();
|
|
273
|
+
} if (rf & 2) {
|
|
274
|
+
const ctx_r11 = i0.ɵɵnextContext();
|
|
275
|
+
i0.ɵɵadvance(1);
|
|
276
|
+
i0.ɵɵproperty("ngIf", ctx_r11.workspaces && ctx_r11.workspaces.length > 0);
|
|
277
|
+
} }
|
|
278
|
+
function MenuComponent_div_31_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
279
|
+
const _r67 = i0.ɵɵgetCurrentView();
|
|
280
|
+
i0.ɵɵelementStart(0, "div");
|
|
281
|
+
i0.ɵɵelementStart(1, "button", 79);
|
|
282
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_31_div_5_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r67); const widget_r64 = restoredCtx.$implicit; const ctx_r66 = i0.ɵɵnextContext(2); return ctx_r66.OnSelect(widget_r64, $event); });
|
|
283
|
+
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
284
|
+
i0.ɵɵelement(3, "span", 67);
|
|
285
|
+
i0.ɵɵpipe(4, "highLightText");
|
|
286
|
+
i0.ɵɵpipe(5, "softLabelsPipe");
|
|
287
|
+
i0.ɵɵelementEnd();
|
|
288
|
+
i0.ɵɵelementEnd();
|
|
289
|
+
} if (rf & 2) {
|
|
290
|
+
const widget_r64 = ctx.$implicit;
|
|
291
|
+
const i_r65 = ctx.index;
|
|
292
|
+
const ctx_r63 = i0.ɵɵnextContext(2);
|
|
293
|
+
i0.ɵɵstyleProp("background-color", ctx_r63.wd == i_r65 ? ctx_r63.themeBaseColor : "white");
|
|
294
|
+
i0.ɵɵadvance(1);
|
|
295
|
+
i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard-management/widgets/", widget_r64.widgetId, "");
|
|
296
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 7, widget_r64.widgetName, ctx_r63.softLabels));
|
|
297
|
+
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(16, _c10))("ngClass", ctx_r63.wd == i_r65 ? "color-text" : "color-text1");
|
|
298
|
+
i0.ɵɵadvance(2);
|
|
299
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 10, i0.ɵɵpipeBind2(5, 13, widget_r64.widgetName, ctx_r63.softLabels), ctx_r63.searchText), i0.ɵɵsanitizeHtml);
|
|
300
|
+
} }
|
|
301
|
+
function MenuComponent_div_31_Template(rf, ctx) { if (rf & 1) {
|
|
302
|
+
i0.ɵɵelementStart(0, "div", 77);
|
|
303
|
+
i0.ɵɵelementStart(1, "div", 62);
|
|
304
|
+
i0.ɵɵtext(2);
|
|
305
|
+
i0.ɵɵpipe(3, "translate");
|
|
306
|
+
i0.ɵɵelementEnd();
|
|
307
|
+
i0.ɵɵelementStart(4, "div", 78);
|
|
308
|
+
i0.ɵɵtemplate(5, MenuComponent_div_31_div_5_Template, 6, 17, "div", 64);
|
|
309
|
+
i0.ɵɵelementEnd();
|
|
310
|
+
i0.ɵɵelementEnd();
|
|
311
|
+
} if (rf & 2) {
|
|
312
|
+
const ctx_r12 = i0.ɵɵnextContext();
|
|
313
|
+
i0.ɵɵadvance(2);
|
|
314
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "SHELL.FAVOURITEAPPS"));
|
|
315
|
+
i0.ɵɵadvance(3);
|
|
316
|
+
i0.ɵɵproperty("ngForOf", ctx_r12.widgets);
|
|
317
|
+
} }
|
|
318
|
+
function MenuComponent_div_32_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
319
|
+
const _r72 = i0.ɵɵgetCurrentView();
|
|
320
|
+
i0.ɵɵelementStart(0, "div");
|
|
321
|
+
i0.ɵɵelementStart(1, "button", 81);
|
|
322
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_32_div_4_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r72); const project_r69 = restoredCtx.$implicit; const ctx_r71 = i0.ɵɵnextContext(2); return ctx_r71.onProjectSelect(project_r69, $event); });
|
|
323
|
+
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
324
|
+
i0.ɵɵelement(3, "span", 67);
|
|
325
|
+
i0.ɵɵpipe(4, "highLightText");
|
|
326
|
+
i0.ɵɵpipe(5, "softLabelsPipe");
|
|
327
|
+
i0.ɵɵelementEnd();
|
|
328
|
+
i0.ɵɵelementEnd();
|
|
329
|
+
} if (rf & 2) {
|
|
330
|
+
const project_r69 = ctx.$implicit;
|
|
331
|
+
const i_r70 = ctx.index;
|
|
332
|
+
const ctx_r68 = i0.ɵɵnextContext(2);
|
|
333
|
+
i0.ɵɵstyleProp("background-color", ctx_r68.projectIndex == i_r70 ? ctx_r68.themeBaseColor : "white");
|
|
334
|
+
i0.ɵɵadvance(1);
|
|
335
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6, project_r69.itemName, ctx_r68.softLabels));
|
|
336
|
+
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass", ctx_r68.projectIndex == i_r70 ? "color-text" : "color-text1");
|
|
337
|
+
i0.ɵɵadvance(2);
|
|
338
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12, project_r69.itemName, ctx_r68.softLabels), ctx_r68.searchText), i0.ɵɵsanitizeHtml);
|
|
339
|
+
} }
|
|
340
|
+
function MenuComponent_div_32_Template(rf, ctx) { if (rf & 1) {
|
|
341
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
342
|
+
i0.ɵɵelementStart(1, "div", 62);
|
|
343
|
+
i0.ɵɵtext(2, "Projects");
|
|
344
|
+
i0.ɵɵelementEnd();
|
|
345
|
+
i0.ɵɵelementStart(3, "div", 80);
|
|
346
|
+
i0.ɵɵtemplate(4, MenuComponent_div_32_div_4_Template, 6, 16, "div", 64);
|
|
347
|
+
i0.ɵɵelementEnd();
|
|
348
|
+
i0.ɵɵelementEnd();
|
|
349
|
+
} if (rf & 2) {
|
|
350
|
+
const ctx_r13 = i0.ɵɵnextContext();
|
|
351
|
+
i0.ɵɵadvance(4);
|
|
352
|
+
i0.ɵɵproperty("ngForOf", ctx_r13.projectList);
|
|
353
|
+
} }
|
|
354
|
+
function MenuComponent_div_33_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
355
|
+
i0.ɵɵelementStart(0, "div", 62);
|
|
356
|
+
i0.ɵɵtext(1);
|
|
357
|
+
i0.ɵɵpipe(2, "translate");
|
|
358
|
+
i0.ɵɵelementEnd();
|
|
359
|
+
} if (rf & 2) {
|
|
360
|
+
i0.ɵɵadvance(1);
|
|
361
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "SHELL.WIBUG"));
|
|
362
|
+
} }
|
|
363
|
+
function MenuComponent_div_33_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
364
|
+
i0.ɵɵelementStart(0, "div", 62);
|
|
365
|
+
i0.ɵɵtext(1);
|
|
366
|
+
i0.ɵɵpipe(2, "translate");
|
|
367
|
+
i0.ɵɵelementEnd();
|
|
368
|
+
} if (rf & 2) {
|
|
369
|
+
i0.ɵɵadvance(1);
|
|
370
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "SHELL.WI"));
|
|
371
|
+
} }
|
|
372
|
+
function MenuComponent_div_33_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
373
|
+
const _r79 = i0.ɵɵgetCurrentView();
|
|
374
|
+
i0.ɵɵelementStart(0, "div");
|
|
375
|
+
i0.ɵɵelementStart(1, "button", 81);
|
|
376
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_33_div_4_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r79); const userStory_r76 = restoredCtx.$implicit; const ctx_r78 = i0.ɵɵnextContext(2); return ctx_r78.OnUserStorySelect(userStory_r76, $event); });
|
|
377
|
+
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
378
|
+
i0.ɵɵelement(3, "span", 67);
|
|
379
|
+
i0.ɵɵpipe(4, "highLightText");
|
|
380
|
+
i0.ɵɵpipe(5, "softLabelsPipe");
|
|
381
|
+
i0.ɵɵelementEnd();
|
|
382
|
+
i0.ɵɵelementEnd();
|
|
383
|
+
} if (rf & 2) {
|
|
384
|
+
const userStory_r76 = ctx.$implicit;
|
|
385
|
+
const i_r77 = ctx.index;
|
|
386
|
+
const ctx_r75 = i0.ɵɵnextContext(2);
|
|
387
|
+
i0.ɵɵstyleProp("background-color", ctx_r75.users == i_r77 ? ctx_r75.themeBaseColor : "white");
|
|
388
|
+
i0.ɵɵadvance(1);
|
|
389
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6, userStory_r76.itemName, ctx_r75.softLabels));
|
|
390
|
+
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass", ctx_r75.users == i_r77 ? "color-text" : "color-text1");
|
|
391
|
+
i0.ɵɵadvance(2);
|
|
392
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12, userStory_r76.itemName, ctx_r75.softLabels), ctx_r75.searchText), i0.ɵɵsanitizeHtml);
|
|
393
|
+
} }
|
|
394
|
+
function MenuComponent_div_33_Template(rf, ctx) { if (rf & 1) {
|
|
395
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
396
|
+
i0.ɵɵtemplate(1, MenuComponent_div_33_div_1_Template, 3, 3, "div", 82);
|
|
397
|
+
i0.ɵɵtemplate(2, MenuComponent_div_33_div_2_Template, 3, 3, "div", 82);
|
|
398
|
+
i0.ɵɵelementStart(3, "div", 83);
|
|
399
|
+
i0.ɵɵtemplate(4, MenuComponent_div_33_div_4_Template, 6, 16, "div", 64);
|
|
400
|
+
i0.ɵɵelementEnd();
|
|
401
|
+
i0.ɵɵelementEnd();
|
|
402
|
+
} if (rf & 2) {
|
|
403
|
+
const ctx_r14 = i0.ɵɵnextContext();
|
|
404
|
+
i0.ɵɵadvance(1);
|
|
405
|
+
i0.ɵɵproperty("ngIf", ctx_r14.isEnableBugBoard);
|
|
406
|
+
i0.ɵɵadvance(1);
|
|
407
|
+
i0.ɵɵproperty("ngIf", !ctx_r14.isEnableBugBoard);
|
|
408
|
+
i0.ɵɵadvance(2);
|
|
409
|
+
i0.ɵɵproperty("ngForOf", ctx_r14.userStorySearchList);
|
|
410
|
+
} }
|
|
411
|
+
function MenuComponent_div_34_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
412
|
+
const _r84 = i0.ɵɵgetCurrentView();
|
|
413
|
+
i0.ɵɵelementStart(0, "div");
|
|
414
|
+
i0.ɵɵelementStart(1, "button", 81);
|
|
415
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_34_div_5_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r84); const goal_r81 = restoredCtx.$implicit; const ctx_r83 = i0.ɵɵnextContext(2); return ctx_r83.OnGoalSelect(goal_r81, $event); });
|
|
416
|
+
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
417
|
+
i0.ɵɵelement(3, "span", 67);
|
|
418
|
+
i0.ɵɵpipe(4, "highLightText");
|
|
419
|
+
i0.ɵɵpipe(5, "softLabelsPipe");
|
|
420
|
+
i0.ɵɵelementEnd();
|
|
421
|
+
i0.ɵɵelementEnd();
|
|
422
|
+
} if (rf & 2) {
|
|
423
|
+
const goal_r81 = ctx.$implicit;
|
|
424
|
+
const i_r82 = ctx.index;
|
|
425
|
+
const ctx_r80 = i0.ɵɵnextContext(2);
|
|
426
|
+
i0.ɵɵstyleProp("background-color", ctx_r80.goalIndex == i_r82 ? ctx_r80.themeBaseColor : "white");
|
|
427
|
+
i0.ɵɵadvance(1);
|
|
428
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6, goal_r81.itemName, ctx_r80.softLabels));
|
|
429
|
+
i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass", ctx_r80.goalIndex == i_r82 ? "color-text" : "color-text1");
|
|
430
|
+
i0.ɵɵadvance(2);
|
|
431
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12, goal_r81.itemName, ctx_r80.softLabels), ctx_r80.searchText), i0.ɵɵsanitizeHtml);
|
|
432
|
+
} }
|
|
433
|
+
function MenuComponent_div_34_Template(rf, ctx) { if (rf & 1) {
|
|
434
|
+
i0.ɵɵelementStart(0, "div", 69);
|
|
435
|
+
i0.ɵɵelementStart(1, "div", 62);
|
|
436
|
+
i0.ɵɵtext(2);
|
|
437
|
+
i0.ɵɵpipe(3, "translate");
|
|
438
|
+
i0.ɵɵelementEnd();
|
|
439
|
+
i0.ɵɵelementStart(4, "div", 84);
|
|
440
|
+
i0.ɵɵtemplate(5, MenuComponent_div_34_div_5_Template, 6, 16, "div", 64);
|
|
441
|
+
i0.ɵɵelementEnd();
|
|
442
|
+
i0.ɵɵelementEnd();
|
|
443
|
+
} if (rf & 2) {
|
|
444
|
+
const ctx_r15 = i0.ɵɵnextContext();
|
|
445
|
+
i0.ɵɵadvance(2);
|
|
446
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "SHELL.GOALSPRINT"));
|
|
447
|
+
i0.ɵɵadvance(3);
|
|
448
|
+
i0.ɵɵproperty("ngForOf", ctx_r15.goalSearchList);
|
|
449
|
+
} }
|
|
450
|
+
function MenuComponent_div_35_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
451
|
+
const _r90 = i0.ɵɵgetCurrentView();
|
|
452
|
+
i0.ɵɵelementStart(0, "div", 87, 75);
|
|
453
|
+
i0.ɵɵelementStart(2, "button", 88);
|
|
454
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_35_div_4_Template_button_mousedown_2_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r90); const employee_r86 = restoredCtx.$implicit; const ctx_r89 = i0.ɵɵnextContext(2); return ctx_r89.selectEmployee(employee_r86, $event); });
|
|
455
|
+
i0.ɵɵelementStart(3, "div", 89);
|
|
456
|
+
i0.ɵɵelementStart(4, "app-avatar", 90);
|
|
457
|
+
i0.ɵɵlistener("click", function MenuComponent_div_35_div_4_Template_app_avatar_click_4_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r90); const employee_r86 = restoredCtx.$implicit; const ctx_r91 = i0.ɵɵnextContext(2); ctx_r91.profilePage(employee_r86.userId); return $event.stopPropagation(); });
|
|
458
|
+
i0.ɵɵpipe(5, "removeSpecialCharacters");
|
|
459
|
+
i0.ɵɵpipe(6, "fetchSizedAndCachedImage");
|
|
460
|
+
i0.ɵɵelementEnd();
|
|
461
|
+
i0.ɵɵelementStart(7, "div", 91);
|
|
462
|
+
i0.ɵɵelement(8, "span", 67);
|
|
463
|
+
i0.ɵɵpipe(9, "highLightText");
|
|
464
|
+
i0.ɵɵelementEnd();
|
|
465
|
+
i0.ɵɵelementEnd();
|
|
466
|
+
i0.ɵɵelementEnd();
|
|
467
|
+
i0.ɵɵelementEnd();
|
|
468
|
+
} if (rf & 2) {
|
|
469
|
+
const employee_r86 = ctx.$implicit;
|
|
470
|
+
const i_r87 = ctx.index;
|
|
471
|
+
const ctx_r85 = i0.ɵɵnextContext(2);
|
|
472
|
+
i0.ɵɵstyleProp("background-color", ctx_r85.selectedEmployeeIndex == i_r87 ? ctx_r85.themeBaseColor : "white");
|
|
473
|
+
i0.ɵɵadvance(2);
|
|
474
|
+
i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard/profile/", employee_r86.itemId, "/overview");
|
|
475
|
+
i0.ɵɵpropertyInterpolate("matTooltip", employee_r86.itemName);
|
|
476
|
+
i0.ɵɵproperty("ngClass", ctx_r85.selectedEmployeeIndex == i_r87 ? "color-text" : "color-text1");
|
|
477
|
+
i0.ɵɵadvance(2);
|
|
478
|
+
i0.ɵɵpropertyInterpolate("matTooltip", employee_r86.itemName);
|
|
479
|
+
i0.ɵɵproperty("name", i0.ɵɵpipeBind1(5, 10, employee_r86.itemName))("src", i0.ɵɵpipeBind3(6, 12, employee_r86.profileImage, "20", ""))("isRound", true);
|
|
480
|
+
i0.ɵɵadvance(4);
|
|
481
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(9, 16, employee_r86.itemName, ctx_r85.searchText), i0.ɵɵsanitizeHtml);
|
|
482
|
+
} }
|
|
483
|
+
function MenuComponent_div_35_Template(rf, ctx) { if (rf & 1) {
|
|
484
|
+
i0.ɵɵelementStart(0, "div", 77);
|
|
485
|
+
i0.ɵɵelementStart(1, "div", 62);
|
|
486
|
+
i0.ɵɵtext(2, "Employees");
|
|
487
|
+
i0.ɵɵelementEnd();
|
|
488
|
+
i0.ɵɵelementStart(3, "div", 85);
|
|
489
|
+
i0.ɵɵtemplate(4, MenuComponent_div_35_div_4_Template, 10, 19, "div", 86);
|
|
490
|
+
i0.ɵɵelementEnd();
|
|
491
|
+
i0.ɵɵelementEnd();
|
|
492
|
+
} if (rf & 2) {
|
|
493
|
+
const ctx_r16 = i0.ɵɵnextContext();
|
|
494
|
+
i0.ɵɵadvance(4);
|
|
495
|
+
i0.ɵɵproperty("ngForOf", ctx_r16.employeeList);
|
|
496
|
+
} }
|
|
497
|
+
function MenuComponent_div_36_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
498
|
+
const _r96 = i0.ɵɵgetCurrentView();
|
|
499
|
+
i0.ɵɵelementStart(0, "div");
|
|
500
|
+
i0.ɵɵelementStart(1, "button", 93);
|
|
501
|
+
i0.ɵɵlistener("mousedown", function MenuComponent_div_36_div_5_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r96); const search_r93 = restoredCtx.$implicit; const ctx_r95 = i0.ɵɵnextContext(2); ctx_r95.searchText = search_r93.recentSearch; return ctx_r95.SearchRecentItem(search_r93, $event); });
|
|
502
|
+
i0.ɵɵpipe(2, "softLabelsPipe");
|
|
503
|
+
i0.ɵɵpipe(3, "timeago");
|
|
504
|
+
i0.ɵɵelement(4, "span", 67);
|
|
505
|
+
i0.ɵɵpipe(5, "highLightText");
|
|
506
|
+
i0.ɵɵpipe(6, "softLabelsPipe");
|
|
507
|
+
i0.ɵɵtext(7);
|
|
508
|
+
i0.ɵɵpipe(8, "timeago");
|
|
509
|
+
i0.ɵɵelementEnd();
|
|
510
|
+
i0.ɵɵelementEnd();
|
|
511
|
+
} if (rf & 2) {
|
|
512
|
+
const search_r93 = ctx.$implicit;
|
|
513
|
+
const i_r94 = ctx.index;
|
|
514
|
+
const ctx_r92 = i0.ɵɵnextContext(2);
|
|
515
|
+
i0.ɵɵstyleProp("background-color", ctx_r92.rs == i_r94 ? ctx_r92.themeBaseColor : "white");
|
|
516
|
+
i0.ɵɵadvance(1);
|
|
517
|
+
i0.ɵɵpropertyInterpolate2("matTooltip", "", i0.ɵɵpipeBind2(2, 7, search_r93.recentSearch, ctx_r92.softLabels), " \n (", i0.ɵɵpipeBind1(3, 10, ctx_r92.convertToLocalTime(search_r93.createdDateTime)), ")");
|
|
518
|
+
i0.ɵɵproperty("ngClass", ctx_r92.rs == i_r94 ? "color-text" : "color-text1");
|
|
519
|
+
i0.ɵɵadvance(3);
|
|
520
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 12, i0.ɵɵpipeBind2(6, 15, search_r93.recentSearch, ctx_r92.softLabels), ctx_r92.searchText), i0.ɵɵsanitizeHtml);
|
|
521
|
+
i0.ɵɵadvance(3);
|
|
522
|
+
i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(8, 18, ctx_r92.convertToLocalTime(search_r93.createdDateTime)), ") ");
|
|
523
|
+
} }
|
|
524
|
+
function MenuComponent_div_36_Template(rf, ctx) { if (rf & 1) {
|
|
525
|
+
i0.ɵɵelementStart(0, "div", 77);
|
|
526
|
+
i0.ɵɵelementStart(1, "div", 62);
|
|
527
|
+
i0.ɵɵtext(2);
|
|
528
|
+
i0.ɵɵpipe(3, "translate");
|
|
529
|
+
i0.ɵɵelementEnd();
|
|
530
|
+
i0.ɵɵelementStart(4, "div", 92);
|
|
531
|
+
i0.ɵɵtemplate(5, MenuComponent_div_36_div_5_Template, 9, 20, "div", 64);
|
|
532
|
+
i0.ɵɵpipe(6, "slice");
|
|
533
|
+
i0.ɵɵelementEnd();
|
|
534
|
+
i0.ɵɵelementEnd();
|
|
535
|
+
} if (rf & 2) {
|
|
536
|
+
const ctx_r17 = i0.ɵɵnextContext();
|
|
537
|
+
i0.ɵɵadvance(2);
|
|
538
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "SHELL.RECENTSEARCHS"));
|
|
539
|
+
i0.ɵɵadvance(3);
|
|
540
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind3(6, 4, ctx_r17.recentSearches, 0, 9));
|
|
541
|
+
} }
|
|
542
|
+
function MenuComponent_mat_error_50_Template(rf, ctx) { if (rf & 1) {
|
|
543
|
+
i0.ɵɵelementStart(0, "mat-error");
|
|
544
|
+
i0.ɵɵtext(1);
|
|
545
|
+
i0.ɵɵpipe(2, "translate");
|
|
546
|
+
i0.ɵɵelementEnd();
|
|
547
|
+
} if (rf & 2) {
|
|
548
|
+
i0.ɵɵadvance(1);
|
|
549
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.DASHBOARDNAMEREQUIRED"), " ");
|
|
550
|
+
} }
|
|
551
|
+
function MenuComponent_mat_error_51_Template(rf, ctx) { if (rf & 1) {
|
|
552
|
+
i0.ɵɵelementStart(0, "mat-error");
|
|
553
|
+
i0.ɵɵtext(1);
|
|
554
|
+
i0.ɵɵpipe(2, "translate");
|
|
555
|
+
i0.ɵɵelementEnd();
|
|
556
|
+
} if (rf & 2) {
|
|
557
|
+
i0.ɵɵadvance(1);
|
|
558
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.DASHBOARDNAMELENGTHEXCEED"), " ");
|
|
559
|
+
} }
|
|
560
|
+
function MenuComponent_mat_error_55_Template(rf, ctx) { if (rf & 1) {
|
|
561
|
+
i0.ɵɵelementStart(0, "mat-error");
|
|
562
|
+
i0.ɵɵtext(1);
|
|
563
|
+
i0.ɵɵpipe(2, "translate");
|
|
564
|
+
i0.ɵɵelementEnd();
|
|
565
|
+
} if (rf & 2) {
|
|
566
|
+
i0.ɵɵadvance(1);
|
|
567
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.CUSTOMAPPDESCRIPTIONMAXLENGTHERROR"), " ");
|
|
568
|
+
} }
|
|
569
|
+
function MenuComponent_mat_option_63_Template(rf, ctx) { if (rf & 1) {
|
|
570
|
+
const _r100 = i0.ɵɵgetCurrentView();
|
|
571
|
+
i0.ɵɵelementStart(0, "mat-option", 40, 41);
|
|
572
|
+
i0.ɵɵlistener("click", function MenuComponent_mat_option_63_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r100); const _r98 = i0.ɵɵreference(1); const ctx_r99 = i0.ɵɵnextContext(); return ctx_r99.toggleRolesPerOne(_r98.value); });
|
|
573
|
+
i0.ɵɵtext(2);
|
|
574
|
+
i0.ɵɵelementEnd();
|
|
575
|
+
} if (rf & 2) {
|
|
576
|
+
const roles_r97 = ctx.$implicit;
|
|
577
|
+
i0.ɵɵproperty("value", roles_r97.roleId);
|
|
578
|
+
i0.ɵɵadvance(2);
|
|
579
|
+
i0.ɵɵtextInterpolate1(" ", roles_r97.roleName, " ");
|
|
580
|
+
} }
|
|
581
|
+
function MenuComponent_mat_error_64_Template(rf, ctx) { if (rf & 1) {
|
|
582
|
+
i0.ɵɵelementStart(0, "mat-error");
|
|
583
|
+
i0.ɵɵtext(1);
|
|
584
|
+
i0.ɵɵpipe(2, "translate");
|
|
585
|
+
i0.ɵɵelementEnd();
|
|
586
|
+
} if (rf & 2) {
|
|
587
|
+
i0.ɵɵadvance(1);
|
|
588
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.SELECTANYROLE"), " ");
|
|
589
|
+
} }
|
|
590
|
+
function MenuComponent_mat_option_72_Template(rf, ctx) { if (rf & 1) {
|
|
591
|
+
const _r104 = i0.ɵɵgetCurrentView();
|
|
592
|
+
i0.ɵɵelementStart(0, "mat-option", 40, 44);
|
|
593
|
+
i0.ɵɵlistener("click", function MenuComponent_mat_option_72_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r104); const ctx_r103 = i0.ɵɵnextContext(); return ctx_r103.toggleEditRolesPerOne(); });
|
|
594
|
+
i0.ɵɵtext(2);
|
|
595
|
+
i0.ɵɵelementEnd();
|
|
596
|
+
} if (rf & 2) {
|
|
597
|
+
const role_r101 = ctx.$implicit;
|
|
598
|
+
i0.ɵɵproperty("value", role_r101.roleId);
|
|
599
|
+
i0.ɵɵadvance(2);
|
|
600
|
+
i0.ɵɵtextInterpolate1(" ", role_r101.roleName, " ");
|
|
601
|
+
} }
|
|
602
|
+
function MenuComponent_mat_option_80_Template(rf, ctx) { if (rf & 1) {
|
|
603
|
+
const _r108 = i0.ɵɵgetCurrentView();
|
|
604
|
+
i0.ɵɵelementStart(0, "mat-option", 40, 46);
|
|
605
|
+
i0.ɵɵlistener("click", function MenuComponent_mat_option_80_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r108); const ctx_r107 = i0.ɵɵnextContext(); return ctx_r107.toggleDeleteRolesPerOne(); });
|
|
606
|
+
i0.ɵɵtext(2);
|
|
607
|
+
i0.ɵɵelementEnd();
|
|
608
|
+
} if (rf & 2) {
|
|
609
|
+
const role_r105 = ctx.$implicit;
|
|
610
|
+
i0.ɵɵproperty("value", role_r105.roleId);
|
|
611
|
+
i0.ɵɵadvance(2);
|
|
612
|
+
i0.ɵɵtextInterpolate1(" ", role_r105.roleName, " ");
|
|
613
|
+
} }
|
|
614
|
+
function MenuComponent_mat_progress_bar_83_Template(rf, ctx) { if (rf & 1) {
|
|
615
|
+
i0.ɵɵelement(0, "mat-progress-bar", 60);
|
|
616
|
+
} }
|
|
617
|
+
function MenuComponent_mat_spinner_127_Template(rf, ctx) { if (rf & 1) {
|
|
618
|
+
i0.ɵɵelement(0, "mat-spinner", 94);
|
|
619
|
+
} if (rf & 2) {
|
|
620
|
+
i0.ɵɵproperty("diameter", 100);
|
|
621
|
+
} }
|
|
622
|
+
const _c11 = function (a0, a1) { return { "d-block": a0, "d-none": a1 }; };
|
|
60
623
|
/** @dynamic */
|
|
61
624
|
export class MenuComponent extends CustomAppBaseComponent {
|
|
62
625
|
constructor(store, cookieService, routes, toastr, translateService, authenticationService, route, dialog, rss, location, themeService, actionUpdates$, cdRef, window, googleAnalyticsService, commonService) {
|
|
@@ -2414,65 +2977,390 @@ export class MenuComponent extends CustomAppBaseComponent {
|
|
|
2414
2977
|
toggleDeleteAllRolesSelected() { }
|
|
2415
2978
|
closeAddWorkspaceDialog() { }
|
|
2416
2979
|
}
|
|
2417
|
-
MenuComponent.ɵfac =
|
|
2418
|
-
MenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: MenuComponent, selector: "app-menu", inputs: { reloadAll: ["reload", "reloadAll"] }, outputs: { isOpened: "isOpened", openNewDashboard: "openNewDashboard" }, host: { listeners: { "document:keydown.control.q": "keyOpenEvent()", "document:keydown.control.m": "keyCloseEvent()", "document:keydown.control.b": "remoteSearchByText()", "document:keydown.control.y": "remoteSearchById()" } }, viewQueries: [{ propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }, { propertyName: "element", first: true, predicate: ["element"], descendants: true }, { propertyName: "workspaceElement", first: true, predicate: ["workspaceElement"], descendants: true }, { propertyName: "menuElement", first: true, predicate: ["menuElement"], descendants: true }, { propertyName: "addWorkSpacePopOver", first: true, predicate: ["addWorkspace"], descendants: true }, { propertyName: "allSelected", first: true, predicate: ["allSelected"], descendants: true }, { propertyName: "allEditSelected", first: true, predicate: ["allEditSelected"], descendants: true }, { propertyName: "allDeleteSelected", first: true, predicate: ["allDeleteSelected"], descendants: true }, { propertyName: "infoPopOver", first: true, predicate: ["infoPopOver"], descendants: true }, { propertyName: "openMenuPopOver", predicate: ["openMenuPopUp"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<button type=\"submit\" class=\"visibles\" mat-icon-button [matMenuTriggerFor]=\"menus\" fxHide.gt-xs fxShow>\r\n <mat-icon class=\"newMenu\">menu</mat-icon>\r\n</button>\r\n<div fxFlex class=\"newLogo default-bg top-logo-bg newminilogo zoom-image-hover\" fxHide.gt-xs fxShow>\r\n <img src=\"{{companyMiniLogo}}\" alt=\"\" id=\"mini-logo-topbar\" style=\"width:30px; height:30px;\"\r\n (click)=\"getAllMenuItems()\" />\r\n</div>\r\n<div fxFlex class=\"newLogo top-logo-bg apps-button zoom-image-hover\" style=\"left: 0px;\" fxHide fxShow.gt-xs>\r\n <img src=\"{{companyMainLogo}}\" style=\"cursor: pointer;left: 20px;left: 20px;position: relative;\" id=\"main-logo-topbar\"\r\n class=\"img-height-main-logo-topbar\" (click)=\"getAllMenuItems()\" />\r\n</div>\r\n\r\n<!-- \r\n<mat-menu #menus=\"matMenu\" class=\"filter-panel\" (click)=\"$event.stopPropagation()\">\r\n <div *ngFor=\"let item of(menuItems$ | async)\">\r\n <div *ngIf=\"item.type === 'dropDown'\">\r\n <button mat-menu-item [matMenuTriggerFor]=\"levelTwoMenu\" (mouseover)=\"openLevel2Menu(item.state,item.sub)\">\r\n <mat-icon>{{ item.icon }}</mat-icon>{{ item.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n <div *ngIf=\"item.type == 'link'\">\r\n <button mat-menu-item routerLink=\"/{{ item.state }}\">\r\n <mat-icon>{{ item.icon }}</mat-icon>{{ item.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n<mat-menu #levelTwoMenu=\"matMenu\">\r\n <div *ngFor=\"let itemLvl2 of subLevels\">\r\n <div *ngIf=\"itemLvl2.type === 'dropDown'\">\r\n <button mat-menu-item [matMenuTriggerFor]=\"levelThreeMenu\"\r\n (mouseover)=\"openLevel3Menu(stateLvl1,itemLvl2.state,item.sub)\">\r\n {{ itemLvl2.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n <div *ngIf=\"itemLvl2.type == 'applicationlink'\">\r\n <button mat-menu-item routerLink=\"/{{ itemLvl2.state }}\">\r\n {{ itemLvl2.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n <div *ngIf=\"itemLvl2.type == 'link'\">\r\n <button mat-menu-item routerLink=\"/{{stateLvl1}}/{{ itemLvl2.state }}\">\r\n {{ itemLvl2.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n<mat-menu #levelThreeMenu=\"matMenu\">\r\n <div *ngFor=\"let itemLvl3 of subLevelsForLevel2\">\r\n <button mat-menu-item routerLink=\"/{{ level3Link1 }}/{{ level3Link2 }}/{{itemLvl3.state}}\">\r\n {{ itemLvl3.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n</mat-menu> -->\r\n\r\n<mat-menu #menus=\"matMenu\" yPosition=\"below\" class=\"filter-panel\" (click)=\"$event.stopPropagation()\"\r\n style=\"height:auto\">\r\n <div *ngFor=\"let item of items\">\r\n <div *ngIf=\"item.type == 'link' || item.type == 'applicationlink'\">\r\n <button mat-menu-item routerLink=\"/{{ item.state }}\" (click)=\"selectMenu(item,$event)\"\r\n routerLinkActive=\"item-active\">\r\n <mat-icon>{{ item.icon }}</mat-icon>{{ item.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n\r\n<div style=\"position: relative;\r\nleft: 90%\" class=\"store-icom mat-icon-button\" *ngIf=\"canAccess_feature_DragApps\"\r\n [ngClass]=\"this.routes.url.includes('/app-store/widgets') ? 'icon_active_class' : ''\">\r\n <fa-icon icon=\"store\" style=\"font-size: 20px !important;\" matTooltipClass=\"tooltipClass-mat\"\r\n matTooltip=\"{{ 'APP.APPSTORE' | translate}}\" (click)=\"openApps()\"\r\n class=\"mat-color-accent cursor-pointer theme-navbar-icon-color\"></fa-icon>\r\n</div>\r\n\r\n<div class=\"SearchBox dropdown\" style=\"position: absolute !important;\">\r\n <span class=\"mat-color-accent input-group-addon\" *ngIf=\"searchByText\">@ </span>\r\n <span class=\"mat-color-accent input-group-addon\" *ngIf=\"searchById\"># </span>\r\n <input type=\"text\" class=\"SearchBox-input dropbtn\" placeholder=\"{{ 'APP.STARTHEREORCLICKCONTROL+Q' | translate}}\"\r\n [class.hide-placeholder]=\"searchByText || searchById\" autocomplete=\"off\" #element [(ngModel)]=\"searchText\"\r\n (input)=\"SearchItem($event)\" (click)=\"SearchItem($event)\" (focus)=\"onFocus()\" (blur)=\"Set();\"\r\n (keydown.enter)=\"navigate($event, itemClicked)\" (keydown.arrowdown)=\"arrowDownEvent()\"\r\n (keydown.arrowup)=\"arrowUpEvent()\" (keydown.arrowleft)=\"arrowLeftEvent()\" (keydown.arrowright)=\"arrowRightEvent()\">\r\n\r\n <button class=\"SearchBox-button\">\r\n <span class=\"close_icon_search\">\r\n <span *ngIf=\"!searchText\"></span>\r\n <mat-icon *ngIf=\"searchText\" class=\"icon-button mr-05\" aria-hidden=\"false\" (click)=\"closeSearch($event)\"\r\n style=\"cursor:pointer\">\r\n close</mat-icon>\r\n </span>\r\n <mat-icon class=\"SearchBox-icon icon-color mt-lg-n2 mr-05 info-class\" [satPopoverAnchorFor]=\"p\"\r\n #infoPopOver=\"satPopoverAnchor\" color=\"primary\" (click)=\"openInfo(infoPopOver)\">info</mat-icon>\r\n <mat-icon class=\"SearchBox-icon icon-color mt-lg-n2\" color=\"primary\">search</mat-icon>\r\n </button>\r\n <div class=\"dropdown-content\" [ngClass]=\"{'d-block' : display, 'd-none' : !display}\">\r\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"\r\n *ngIf=\"loadingSearchMenuData || recentSearchesfetchInProgress || widgetsfetchInProgress\">\r\n </mat-progress-bar>\r\n <div class=\"row rowselect\">\r\n <div class=\"column columnselect-next pl-05\" *ngIf=\"items && (items.length>0) && !(searchById || searchByText)\">\r\n <div class=\"in-header\">{{ 'SHELL.APPLICATIONS' | translate}}</div>\r\n <div id=\"style-1\" style=\"background-color: white !important; height: 445px !important; overflow: auto;\">\r\n <ng-container *ngIf=\"items && items.length>0\">\r\n <div *ngFor=\"let item of items; let i = index;\"\r\n [style.background-color]=\"selectedRowIndex == i ? themeBaseColor : 'white'\">\r\n <div *ngIf=\"item.type == 'link' || item.type == 'applicationlink'\">\r\n <button mat-menu-item routerLink=\"/{{ item.state }}\"\r\n [ngClass]=\"selectedRowIndex == i ? 'color-text' : 'color-text1'\"\r\n (mousedown)=\"selectAdimnTool(item.state, $event, item)\" routerLinkActive=\"item-active\"\r\n [routerLinkActiveOptions]=\"{exact:\r\n true}\" matTooltipClass=\"tooltipClass-mat\"\r\n matTooltip=\"{{ translateapplicationname(item.menu | softLabelsPipe : softLabels)}}\">\r\n <mat-icon class=\"icon-color\" [ngClass]=\"selectedRowIndex == i ? 'color-text' : 'color-text1'\">\r\n {{ item.icon }}</mat-icon><span\r\n [innerHTML]=\"translateapplicationname(item.menu) | softLabelsPipe : softLabels | highLightText : searchText\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column pl-05\" *ngIf=\"!(searchById || searchByText)\">\r\n\r\n <div class=\"columnselect-next ml-0\" *ngIf=\"workspaces && (workspaces.length>0)\">\r\n <div class=\"in-header\">{{ 'SHELL.DASHBOARDS' | translate}}\r\n <fa-icon icon=\"plus-square\"\r\n *ngIf=\"canAccess_feature_AddDashboard\" matTooltip=\"{{ 'APP.ADDDASHBOARD' | translate}}\"\r\n (click)=\"initializeWorkspaceForm();openWorkspaceForm();\" class=\"mat-color-accent cursor-pointer\"\r\n [satPopoverAnchorFor]=\"addWorkspace\">\r\n </fa-icon> \r\n </div>\r\n <div id=\"style-2\" style=\"background-color: white !important; height: 445px !important; overflow: auto;\">\r\n <ng-container *ngIf=\"workspaces && workspaces.length>0\">\r\n <div *ngFor=\"let wc of workspaces; let i = index\"\r\n [style.background-color]=\"ws == i ? themeBaseColor : 'white'\" class=\"scroll\" #workspaceElement>\r\n <button mat-menu-item (mousedown)=\"selectMenu(wc,$event)\"\r\n [ngClass]=\"ws == i ? 'color-text' : 'color-text1'\" (click)=\"navigateToUrl(wc.workspaceId)\"\r\n routerLink=\"/dashboard-management/dashboard/{{ wc.workspaceId }}\" routerLinkActive=\"item-active\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{wc.workspaceName}}\">\r\n <span [innerHTML]=\"wc.workspaceName | highLightText : searchText \"></span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column columnselect-apps ml-0\" *ngIf=\"widgets && widgets.length>0 && !(searchById || searchByText)\">\r\n <div class=\"in-header\">{{ 'SHELL.FAVOURITEAPPS' | translate}}</div>\r\n <div style=\"background-color: white !important; height: 445px !important; overflow: auto;\" id=\"style-3\">\r\n <div *ngFor=\"let widget of widgets; let i = index\"\r\n [style.background-color]=\"wd == i ? themeBaseColor : 'white'\">\r\n <button mat-menu-item routerLinkActive=\"item-active\" [routerLinkActiveOptions]=\"{exact:\r\n true}\" routerLink=\"/dashboard-management/widgets/{{ widget.widgetId }}\"\r\n [ngClass]=\"wd == i ? 'color-text' : 'color-text1'\" (mousedown)=\"OnSelect(widget,$event)\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{widget.widgetName | softLabelsPipe : softLabels}}\">\r\n <span [innerHTML]=\"widget.widgetName | softLabelsPipe : softLabels | highLightText : searchText\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"columnselect-next ml-0\" *ngIf=\"projectList && projectList.length>0 && searchText && searchByText\">\r\n <div class=\"in-header\">Projects</div>\r\n <div class=\"scroll\" id=\"style-7\"\r\n style=\"background-color: white !important; height: 445px !important; overflow: auto;\">\r\n <div *ngFor=\"let project of projectList; let i = index\"\r\n [style.background-color]=\"projectIndex == i ? themeBaseColor : 'white'\">\r\n <button mat-menu-item routerLinkActive=\"item-active\" [routerLinkActiveOptions]=\"{exact:\r\n true}\" [ngClass]=\"projectIndex == i ? 'color-text' : 'color-text1'\"\r\n (mousedown)=\"onProjectSelect(project,$event)\" matTooltipClass=\"tooltipClass-mat\"\r\n matTooltip=\"{{project.itemName | softLabelsPipe : softLabels}}\">\r\n <span [innerHTML]=\"project.itemName | softLabelsPipe : softLabels | highLightText : searchText\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"columnselect-next ml-0\"\r\n *ngIf=\"userStorySearchList && userStorySearchList.length>0 && searchText && searchByText\">\r\n <div class=\"in-header\" *ngIf=\"isEnableBugBoard\">{{ 'SHELL.WIBUG' | translate}}</div>\r\n <div class=\"in-header\" *ngIf=\"!isEnableBugBoard\">{{ 'SHELL.WI'| translate}}</div>\r\n <div class=\"scroll\" id=\"style-5\"\r\n style=\"background-color: white !important; height: 445px !important; overflow: auto;\">\r\n <div *ngFor=\"let userStory of userStorySearchList; let i = index\"\r\n [style.background-color]=\"users == i ? themeBaseColor : 'white'\">\r\n <button mat-menu-item routerLinkActive=\"item-active\" [routerLinkActiveOptions]=\"{exact:\r\n true}\" [ngClass]=\"users == i ? 'color-text' : 'color-text1'\" (mousedown)=\"OnUserStorySelect(userStory,$event)\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{userStory.itemName | softLabelsPipe : softLabels}}\">\r\n <span [innerHTML]=\"userStory.itemName | softLabelsPipe : softLabels | highLightText : searchText\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"columnselect-next ml-0\"\r\n *ngIf=\"goalSearchList && goalSearchList.length>0 && searchText && searchByText\">\r\n <div class=\"in-header\">{{ 'SHELL.GOALSPRINT' | translate }}</div>\r\n <div class=\"scroll\" id=\"style-6\"\r\n style=\"background-color: white !important; height: 445px !important; overflow: auto;\">\r\n <div *ngFor=\"let goal of goalSearchList; let i = index\"\r\n [style.background-color]=\"goalIndex == i ? themeBaseColor : 'white'\">\r\n <button mat-menu-item routerLinkActive=\"item-active\" [routerLinkActiveOptions]=\"{exact:\r\n true}\" [ngClass]=\"goalIndex == i ? 'color-text' : 'color-text1'\" (mousedown)=\"OnGoalSelect(goal,$event)\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{goal.itemName | softLabelsPipe : softLabels}}\">\r\n <span [innerHTML]=\"goal.itemName | softLabelsPipe : softLabels | highLightText : searchText\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column columnselect-apps ml-0\"\r\n *ngIf=\"(employeeList && employeeList.length > 0) && searchText && searchByText\">\r\n <div class=\"in-header\">Employees</div>\r\n <div id=\"style-4\" style=\"background-color: white !important; height: 445px !important; overflow: auto;\">\r\n <div *ngFor=\"let employee of employeeList; let i = index\" style=\"background-color: white;\"\r\n [style.background-color]=\"selectedEmployeeIndex == i ? themeBaseColor : 'white'\" #workspaceElement>\r\n <button mat-menu-item (mousedown)=\"selectEmployee(employee,$event)\"\r\n [ngClass]=\"selectedEmployeeIndex == i ? 'color-text' : 'color-text1'\"\r\n routerLink=\"/dashboard/profile/{{ employee.itemId }}/overview\" routerLinkActive=\"item-active\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{employee.itemName}}\">\r\n <div fxLayout=\"row\">\r\n <app-avatar [name]=\"employee.itemName | removeSpecialCharacters\" fxLayoutAlign=\"start center\"\r\n matTooltip=\"{{ employee.itemName }}\" [src]=\"employee.profileImage | fetchSizedAndCachedImage: '20':''\"\r\n [isRound]=\"true\" size=\"20\" (click)=\"profilePage(employee.userId);$event.stopPropagation();\">\r\n </app-avatar> \r\n <div class=\"ml-05\">\r\n <span [innerHTML]=\"employee.itemName | highLightText : searchText\"></span>\r\n \r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column columnselect-apps ml-0\"\r\n *ngIf=\"recentSearches && (recentSearches.length>0) && !(searchById || searchByText)\">\r\n <div class=\"in-header\">{{ 'SHELL.RECENTSEARCHS' | translate}}</div>\r\n <div style=\"background-color: white !important; height: 445px !important\">\r\n <div *ngFor=\"let search of recentSearches | slice:0:9 let i = index\"\r\n [style.background-color]=\"rs == i ? themeBaseColor : 'white'\">\r\n <button mat-menu-item [ngClass]=\"rs == i ? 'color-text' : 'color-text1'\"\r\n (mousedown)=\"searchText=search.recentSearch;SearchRecentItem(search,$event)\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{search.recentSearch | softLabelsPipe : softLabels}} \r\n ({{ convertToLocalTime(search.createdDateTime) | timeago }})\">\r\n <span [innerHTML]=\"search.recentSearch | softLabelsPipe : softLabels | highLightText : searchText\"></span>\r\n ({{ convertToLocalTime(search.createdDateTime) | timeago }})\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- <div class=\"text-center in-header \" *ngIf=\"!searchText && searchById\">\r\n Please enter unique id and click enter for navigating to corresping page\r\n </div>\r\n \r\n <div class=\"text-center in-header \" *ngIf=\"!searchText && searchByText\" >\r\n Please enter text to retreive data by filtering\r\n </div> -->\r\n \r\n\r\n <sat-popover backdropClass=\"backdrop-color\" hasBackdrop #addWorkspace verticalAlign=\"below\" horizontalAlign=\"end\"\r\n [interactiveClose]=\"false\">\r\n <mat-card class=\"filter-data p-0\">\r\n <mat-card-title class=\"text-center\">\r\n <div class=\"card-title-text mat-bg-primary p-05 mb-1\">\r\n {{ 'APP.ADDDASHBOARDTITLE' | translate }}\r\n </div>\r\n </mat-card-title>\r\n <mat-card-content>\r\n <form [formGroup]=\"workspaceForm\" novalidate (submit)=\"workspaceForm.valid && upsertWorkspace()\">\r\n <div class=\"card-content\">\r\n <mat-form-field class=\"full-width\">\r\n <input matInput placeholder=\"{{ 'HRMANAGAMENT.NAME' | translate}}*\" formControlName=\"workspaceName\" />\r\n <mat-error\r\n *ngIf=\"workspaceForm.get('workspaceName').hasError('required') && workspaceForm.get('workspaceName').touched \">\r\n {{ 'APP.DASHBOARDNAMEREQUIRED' | translate }}\r\n </mat-error>\r\n <mat-error *ngIf=\"workspaceForm.get('workspaceName').hasError('maxlength')\">\r\n {{ 'APP.DASHBOARDNAMELENGTHEXCEED' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field class=\"full-width\">\r\n <textarea matInput formControlName=\"description\" rows=\"2\"\r\n placeholder=\"{{ 'COMPANYSETTINGS.DESCRIPTION' | translate }}\"></textarea>\r\n <mat-error\r\n *ngIf=\"workspaceForm.get('description').hasError('maxlength') && workspaceForm.get('description').touched\">\r\n {{ 'APP.CUSTOMAPPDESCRIPTIONMAXLENGTHERROR' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field class=\"full-width\" (click)=\"$event.stopPropagation();\">\r\n <mat-select formControlName=\"selectedRoles\" [compareWith]=\"compareSelectedRolesFn\"\r\n placeholder=\"{{ 'WIDGETS.VIEWROLES' | translate }}\" multiple required>\r\n <mat-option #allSelected (click)=\"toggleAllRolesSelected()\" [value]=\"0\">\r\n {{ 'PERMISSIONMANAGEMENT.SELECTALL' | translate }}</mat-option>\r\n <mat-option [value]=\"roles.roleId\" *ngFor=\"let roles of rolesDropDown\" #allSelected\r\n (click)=\"toggleRolesPerOne(allSelected.value)\">\r\n {{ roles.roleName }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"workspaceForm.get('selectedRoles').hasError('required') && workspaceForm.get('selectedRoles').touched\">\r\n {{ 'APP.SELECTANYROLE' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field class=\"full-width\">\r\n <mat-select formControlName=\"editRoleIds\" [compareWith]=\"compareEditSelectedRolesFn\"\r\n placeholder=\"{{ 'WIDGETS.EDITROLES' | translate }}\" multiple>\r\n <mat-option #allEditSelected (click)=\"toggleEditAllRolesSelected()\" [value]=\"0\">\r\n {{ 'PERMISSIONMANAGEMENT.SELECTALL' | translate }}</mat-option>\r\n <mat-option [value]=\"role.roleId\" *ngFor=\"let role of rolesDropDown\" #allEditSelected\r\n (click)=\"toggleEditRolesPerOne()\">\r\n {{ role.roleName }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field class=\"full-width\">\r\n <mat-select formControlName=\"deleteRoleIds\" [compareWith]=\"compareDeleteSelectedRolesFn\"\r\n placeholder=\"{{ 'WIDGETS.DELETEROLES' | translate }}\" multiple>\r\n <mat-option #allDeleteSelected (click)=\"toggleDeleteAllRolesSelected()\" [value]=\"0\">\r\n {{ 'PERMISSIONMANAGEMENT.SELECTALL' | translate }}</mat-option>\r\n <mat-option [value]=\"role.roleId\" *ngFor=\"let role of rolesDropDown\" #allDeleteSelected\r\n (click)=\"toggleDeleteRolesPerOne()\">\r\n {{ role.roleName }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"text-center\">\r\n <button class=\"mr-1\" mat-button mat-raised-button color=\"primary\" type=\"button\" (click)=\"upsertWorkspace()\"\r\n [disabled]=\"!workspaceForm.valid\">\r\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\" *ngIf=\"dashboardUpdateInProgress\">\r\n </mat-progress-bar>\r\n <fa-icon class=\"mr-05\" icon=\"plus\"></fa-icon> {{ 'SAVE' | translate }}\r\n </button>\r\n <button mat-button mat-raised-button type=\"button\" (click)=\"closeAddWorkspaceDialog()\">\r\n <fa-icon class=\"mr-05\" icon=\"times\"></fa-icon> {{ 'CANCEL' | translate }}\r\n </button>\r\n </div>\r\n </form>\r\n </mat-card-content>\r\n </mat-card>\r\n </sat-popover>\r\n\r\n\r\n <sat-popover #p hasBackdrop [interactiveClose]=\"true\" verticalAlign=\"above\">\r\n <div class=\"tooltip-wrapper\">\r\n <table>\r\n <tr>\r\n <td>Ctrl + Q: </td>\r\n <td> </td>\r\n <td> {{ 'SHELL.TOOPENSEARCHMENU' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>Ctrl + B: </td>\r\n <td> </td>\r\n <td> {{ 'SHELL.TOOPENGOALSANDUSERS' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>Ctrl + Y: </td>\r\n <td> </td>\r\n <td> {{ 'SHELL.TOSEARCHBYID' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>Ctrl + M: </td>\r\n <td> </td>\r\n <td> {{ 'SHELL.TOCLOSEMENU' | translate}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n </sat-popover>\r\n\r\n <mat-spinner *ngIf=\"searchByTextLoading && display\" class=\"spinner-class\" [diameter]=\"100\"></mat-spinner>", components: [{ type: i14.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i15.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i16.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i16.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i17.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "listItem", "rotate", "fixedWidth", "transform"] }, { type: i18.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i19.SnovasysAvatarComponent, selector: "app-avatar", inputs: ["name", "src", "isRound", "size", "avatarClass"] }, { type: i20.SatPopover, selector: "sat-popover", inputs: ["backdropClass", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { type: i21.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i22.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i23.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i24.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i25.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i26.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i16.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i27.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["routerLink", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i26.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i28.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i29.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i29.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i29.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i20.SatPopoverAnchor, selector: "[satPopoverAnchorFor]", inputs: ["satPopoverAnchorFor"], outputs: ["popoverOpened", "popoverClosed"], exportAs: ["satPopoverAnchor"] }, { type: i27.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i27.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i21.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i21.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i29.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i29.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i29.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i30.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i29.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i22.MatError, selector: "mat-error", inputs: ["id"] }, { type: i29.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], pipes: { "softLabelsPipe": i31.SoftLabelPipe, "translate": i5.TranslatePipe, "highLightText": i32.HighLightTextPipe, "removeSpecialCharacters": i33.RemoveSpecialCharactersPipe, "fetchSizedAndCachedImage": i34.FetchSizedAndCachedImagePipe, "slice": i9.SlicePipe, "timeago": i35.TimeagoPipe } });
|
|
2419
|
-
i0.ɵɵ
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXNCLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFLLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFtQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJakYsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU14RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUdqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENB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QVU7b0JBQ3BCLFdBQVcsRUFBRSx1QkFBdUI7aUJBQ3JDOytaQWtJbUMsTUFBTTswQkFBckMsTUFBTTsyQkFBQyxNQUFNOytHQTdIZSxlQUFlO3NCQUE3QyxZQUFZO3VCQUFDLGVBQWU7Z0JBQ0gsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNGLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDVyxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNILFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDRyxtQkFBbUI7c0JBQTdDLFNBQVM7dUJBQUMsY0FBYztnQkFDUyxXQUFXO3NCQUE1QyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2MsZUFBZTtzQkFBcEQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ1ksaUJBQWlCO3NCQUF4RCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDSixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2QsUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBd0VILFNBQVM7c0JBRFosS0FBSzt1QkFBQyxRQUFRO2dCQThLZixZQUFZO3NCQURYLFlBQVk7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRTtnQkFXOUMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLDRCQUE0QixFQUFFLEVBQUU7Z0JBVzlDLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFO2dCQVU5QyxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGRyZW4sIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIENoYW5nZURldGVjdG9yUmVmLCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFN0b3JlLCBzZWxlY3QgfSBmcm9tIFwiQG5ncngvc3RvcmVcIjtcclxuLy8gaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiYXBwL3NoYXJlZC9zdG9yZS9yZWR1Y2Vycy9tZW51aXRlbXMucmVkdWNlcnNcIjtcclxuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcclxuaW1wb3J0ICogYXMgc2hhcmVkTW9kdWxlUmVkdWNlcnMgZnJvbSBcIi4vLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL21lbnVpdGVtcy5hY3Rpb25zXCI7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gXCJuZ3gtY29va2llLXNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgTmF2aWdhdGlvbkVuZCB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyXCI7XHJcbmltcG9ydCB7IFJlY2VudFNlYXJjaFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcmVjZW50U2VhcmNoLnNlcnZpY2VcIjtcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcywgR2V0Q29tcGFueVRoZW1lVHJpZ2dlcmVkIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvYXV0aGVudGljYXRpb24uYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBvZlR5cGUsIEFjdGlvbnMgfSBmcm9tIFwiQG5ncngvZWZmZWN0c1wiO1xyXG5pbXBvcnQgeyBTZWFyY2hUYXNrVHlwZSB9IGZyb20gXCIuL3NlYXJjaFRhc2suZW51bVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTYXRQb3BvdmVyIH0gZnJvbSAnQG5jc3RhdGUvc2F0LXBvcG92ZXInO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLXVzZWQuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29uc3RhbnRzL2xvY2Fsc3RvcmFnZS1wcm9wZXJ0aWVzJztcclxuaW1wb3J0IHsgRW1wbG95ZWVMaXN0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW1wbG95ZWUnO1xyXG5pbXBvcnQgeyBFbXBsb3llZUxpc3RJbnB1dCB9IGZyb20gJy4uLy4uL21vZGVscy9lbXBsb3llZS1MaXN0JztcclxuaW1wb3J0IHsgQ3VzdG9tQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb21wb25lbnRzL2NvbXBvbmVudGJhc2UnO1xyXG5pbXBvcnQgeyBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc29mdGxhYmVscy1tb2RlbCc7XHJcbmltcG9ydCB7IElNZW51SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9JTWVudUl0ZW0nO1xyXG5pbXBvcnQgeyBVc2VyU3RvcnkgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlclN0b3J5JztcclxuaW1wb3J0IHsgV2lkZ2V0TGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy93aWRnZXRsaXN0JztcclxuaW1wb3J0IHsgRHJhZ2VkV2lkZ2V0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RyYWdlZFdpZGdldCc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZUxpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvd29ya3NwYWNlTGlzdCc7XHJcbmltcG9ydCB7IFJlY2VudFNlYXJjaE1vZGVsLCBTZWFyY2hUYXNrVHlwZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1JlY2VudFNlYXJjaE1vZGVsJztcclxuaW1wb3J0IHsgVGhlbWVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy90aGVtZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBXSU5ET1cgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy93aW5kb3cuaGVscGVyJztcclxuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IEdvb2dsZUFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nb29nbGUtYW5hbHl0aWNzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9qZWN0U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1Byb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwnO1xyXG5pbXBvcnQgeyBNZW51Q2F0ZWdvcmllcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9tZW51LWNhdGVnb3JpZXMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlSWRzIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbnN0YW50cy9mZWF0dXJlLWlkcyc7XHJcbmltcG9ydCAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2hlbHBlcnMvZm9udGF3ZXNvbWUtaWNvbnMnO1xyXG5pbXBvcnQgeyBSZWNlbnRTZWFyY2hUeXBlIH0gZnJvbSAnLi4vLi4vZW51bS9yZWNlbnRTZWFyY2hUeXBlLmVudW0nO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHsgdHJpZ2dlciwgc3R5bGUsIGFuaW1hdGUsIHRyYW5zaXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlXCI7XHJcblxyXG4vKiogQGR5bmFtaWMgKi9cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC1tZW51XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9tZW51LmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgW3g6IHN0cmluZ106IGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihcIm9wZW5NZW51UG9wVXBcIikgb3Blbk1lbnVQb3BPdmVyO1xyXG4gIEBWaWV3Q2hpbGQoXCJtZW51VHJpZ2dlclwiKSBtZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XHJcbiAgQFZpZXdDaGlsZChcImVsZW1lbnRcIikgZWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwid29ya3NwYWNlRWxlbWVudFwiKSB3b3Jrc3BhY2VFbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJtZW51RWxlbWVudFwiKSBtZW51RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiYWRkV29ya3NwYWNlXCIpIGFkZFdvcmtTcGFjZVBvcE92ZXI6IFNhdFBvcG92ZXI7XHJcbiAgQFZpZXdDaGlsZChcImFsbFNlbGVjdGVkXCIpIHByaXZhdGUgYWxsU2VsZWN0ZWQ6IE1hdE9wdGlvbjtcclxuICBAVmlld0NoaWxkKFwiYWxsRWRpdFNlbGVjdGVkXCIpIHByaXZhdGUgYWxsRWRpdFNlbGVjdGVkOiBNYXRPcHRpb247XHJcbiAgQFZpZXdDaGlsZChcImFsbERlbGV0ZVNlbGVjdGVkXCIpIHByaXZhdGUgYWxsRGVsZXRlU2VsZWN0ZWQ6IE1hdE9wdGlvbjtcclxuICBAVmlld0NoaWxkKCdpbmZvUG9wT3ZlcicpIGluZm9Qb3BPdmVyOiBUZW1wbGF0ZVJlZjxhbnk+XHJcbiAgQE91dHB1dCgpIGlzT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9wZW5OZXdEYXNoYm9hcmQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBlOiBFbGVtZW50O1xyXG4gIHNlYXJjaFRleHQ6IHN0cmluZztcclxuICBmb2N1czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNvZnRMYWJlbHM6IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbFtdO1xyXG4gIHB1YmxpYyBtZW51SXRlbXMkOiBPYnNlcnZhYmxlPElNZW51SXRlbVtdPjtcclxuICB1c2VyU3Rvcmllc0xpc3QkOiBPYnNlcnZhYmxlPFVzZXJTdG9yeVtdPjtcclxuICBtZW51SXRlbTogSU1lbnVJdGVtW107XHJcbiAgaXRlbXMgPSBbXTtcclxuICBtZW51SXRlbU5hbWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgd2lkZ2V0czogV2lkZ2V0TGlzdFtdO1xyXG4gIG9yaWdpbmFsV2lkZ2V0czogV2lkZ2V0TGlzdFtdO1xyXG4gIHNlbGVjdGVkTGlzdDogRHJhZ2VkV2lkZ2V0W107XHJcbiAgd2lkZ2V0OiBXaWRnZXRMaXN0O1xyXG4gIHNlbGVjdGVkQXBwczogYW55O1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIHNlbGVjdGVkRGFzaGJvYXJkOiBhbnk7XHJcbiAgZGVmYXVsdERhc2hib2FyZDogYW55O1xyXG4gIHN1YkxldmVsczogc3RyaW5nW10gPSBbXTtcclxuICBzdGF0ZUx2bDE6IHN0cmluZztcclxuICBsZXZlbDNMaW5rMTogc3RyaW5nO1xyXG4gIGxldmVsM0xpbmsyOiBzdHJpbmc7XHJcbiAgc3ViTGV2ZWxzRm9yTGV2ZWwyOiBzdHJpbmc7XHJcbiAgY29tcGFueU1haW5Mb2dvOiBzdHJpbmc7XHJcbiAgY29tcGFueU1pbmlMb2dvOiBzdHJpbmc7XHJcbiAgcm9sZXNEcm9wRG93bjogYW55W107XHJcbiAgd29ya3NwYWNlc0xpc3QkOiBPYnNlcnZhYmxlPFdvcmtzcGFjZUxpc3RbXT47XHJcbiAgd29ya3NwYWNlczogV29ya3NwYWNlTGlzdFtdO1xyXG4gIHdvcmtzcGFjZXNGb3JMb29wOiBhbnk7XHJcbiAgZGlzcGxheTogYm9vbGVhbjtcclxuICBhZG1pblRvb2xzOiBhbnkgPSBbXTtcclxuICB0b29sczogYW55O1xyXG4gIHNlbGVjdGVkUm93SW5kZXg6IGFueTtcclxuICBpdGVtQ2xpY2tlZDogYW55O1xyXG4gIHQ6IGFueTtcclxuICB3ZDogYW55O1xyXG4gIHdzOiBhbnk7XHJcbiAgcnM6IGFueTtcclxuICBhbGxzZWFyY2hlczogUmVjZW50U2VhcmNoTW9kZWxbXSA9IFtdO1xyXG4gIHJlY2VudFNlYXJjaGVzOiBSZWNlbnRTZWFyY2hNb2RlbFtdID0gW107XHJcbiAgcHJvamVjdFJvbGVUZXh0OiBzdHJpbmcgPSBcIlByb2plY3Qgcm9sZSBjb25maWd1cmF0aW9uXCI7XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnM6IEJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtOiBCb29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtczogQm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zOiBCb29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlczogQm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyQ6IE9ic2VydmFibGU8Qm9vbGVhbj47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtJDogT2JzZXJ2YWJsZTxCb29sZWFuPjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9ucyQ6IE9ic2VydmFibGU8Qm9vbGVhbj5cclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+O1xyXG4gIGNvbXBhbnlTZXR0aW5nc01PZGVsJDogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgZGlzYWJsZVdvcmtzcGFjZSA9IGZhbHNlO1xyXG4gIGRpc2FibGVXb3Jrc3BhY2VEZWxldGUgPSBmYWxzZTtcclxuICBkaXNhYmxlV29ya3NwYWNlaGlkZSA9IGZhbHNlO1xyXG4gIGZvcm1zOiBhbnk7XHJcbiAgY3VzdGFwcDogYW55O1xyXG4gIHByb2plY3RSb2xlQ29uZmlndXJhdGlvbjogYW55O1xyXG4gIHJvbGVDb25maWd1cmF0aW9uOiBhbnk7XHJcbiAgdGhlbWVNb2RlbDogVGhlbWVNb2RlbDtcclxuICBlbXBsb3llZUxpc3Q6IGFueVtdID0gW107XHJcbiAgdGhlbWVNb2RlbCQ6IE9ic2VydmFibGU8VGhlbWVNb2RlbD47XHJcbiAgdGhlbWVCYXNlQ29sb3I6IHN0cmluZztcclxuICBzZWxlY3RlZEVtcGxveWVlOiBzdHJpbmc7XHJcbiAgbG9hZGVkRW1wbG95ZWVMaXN0OiBFbXBsb3llZUxpc3RNb2RlbFtdID0gW107XHJcbiAgc2VsZWN0ZWRFbXBsb3llZUluZGV4OiBudW1iZXIgPSBudWxsO1xyXG4gIHZpZXdFbXBsb3llZVBlcm1pc3Npb246IGJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzOiBCb29sZWFuO1xyXG4gIHByb2plY3RMaXN0OiBhbnkgPSBbXTtcclxuICBwcm9qZWN0SW5kZXg6IGFueTtcclxuICBzZWFyY2hCeVRleHRMb2FkaW5nOiBib29sZWFuO1xyXG4gIEBJbnB1dChcInJlbG9hZFwiKVxyXG4gIHNldCByZWxvYWRBbGwoZGF0YTogYm9vbGVhbikge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgdGhpcy5hZG1pblRvb2xzID0gW107XHJcbiAgICAgIHRoaXMudG9vbHMgPSBbXTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgbmdEZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcclxuICB1c2VyU3RvcnlMaXN0OiBhbnkgPSBbXTtcclxuICB1c2VyU3RvcnlTZWFyY2hMaXN0OiBhbnkgPSBbXTtcclxuICBnb2FsU2VhcmNoTGlzdDogYW55ID0gW107XHJcbiAgaXNFbmFibGVCdWdCb2FyZDogYm9vbGVhbjtcclxuICBzZWxlY3RlZFJvbGVJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgZGFzaGJvYXJkVXBkYXRlSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICB1c2VyczogYW55O1xyXG4gIGdvYWxJbmRleDogYW55O1xyXG4gIHdvcmtzcGFjZUZvcm06IEZvcm1Hcm91cDtcclxuICBwcm9qZWN0U2VhcmNoUmVzdWx0czogYW55O1xyXG4gIGRlbGF5VGltZUlucHV0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gIG1lbnVzZmV0Y2hJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHdvcmtzcGFjZXNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgd2lkZ2V0c2ZldGNoSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICByZWNlbnRTZWFyY2hlc2ZldGNoSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICBzZWFyY2hUYXNrczogU2VhcmNoVGFza1R5cGVNb2RlbDtcclxuICBsb2FkaW5nU2VhcmNoTWVudURhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkZWZhdWx0RGFzaGJvYXJkSWQ6IHN0cmluZztcclxuICBzZWFyY2hCeUlkOiBib29sZWFuO1xyXG4gIHNlYXJjaEJ5VGV4dDogYm9vbGVhbjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPFN0YXRlPixcclxuICAgIHByaXZhdGUgY29va2llU2VydmljZTogQ29va2llU2VydmljZSxcclxuICAgIHB1YmxpYyByb3V0ZXM6IFJvdXRlcixcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHJzczogUmVjZW50U2VhcmNoU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aW9uVXBkYXRlcyQ6IEFjdGlvbnMsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoV0lORE9XKSBwcml2YXRlIHdpbmRvdzogV2luZG93LFxyXG4gICAgcHJpdmF0ZSBnb29nbGVBbmFseXRpY3NTZXJ2aWNlOiBHb29nbGVBbmFseXRpY3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgLy90aGlzLm9uRm9jdXMoKTtcclxuXHJcbiAgICAvLyBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIC8vIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5TZWFyY2hDbGljaywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyB9KSk7XHJcbiAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzID0gcmVzdWx0O1xyXG4gICAgfSlcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVdvcmtzcGFjZUZvcm0oKTtcclxuICAgIHRoaXMucm91dGVzLmV2ZW50cy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgaWYgKHRoaXMubG9jYXRpb24ucGF0aCgpICE9IFwiXCIpIHtcclxuICAgICAgICB0aGlzLnVybCA9IHRoaXMubG9jYXRpb24ucGF0aCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMud2lkZ2V0U2VydmljZS5zZWxlY3RlZFdvcmtzcGFjZS5zdWJzY3JpYmUoaWQgPT4ge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRGFzaGJvYXJkID0gaWQ7XHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgIC8vICAgLnBpcGUoXHJcbiAgICAvLyAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgIC8vICAgICBvZlR5cGUoQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcy5HZXRDb21wYW55VGhlbWVDb21wbGV0ZWQpLFxyXG4gICAgLy8gICAgIHRhcCgoKSA9PiB7XHJcbiAgICAvL3RoaXMudGhlbWVNb2RlbCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldFRoZW1lTW9kZWwpKTtcclxuICAgIC8vdGhpcy50aGVtZU1vZGVsJC5zdWJzY3JpYmUoeCA9PiB0aGlzLnRoZW1lTW9kZWwgPSB4KTtcclxuICAgIC8vIHRoaXMuZ2V0VGhlbWUoKTtcclxuICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgdGhpcy50aGVtZU1vZGVsID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKCdDb21wYW55VGhlbWUnKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlUaGVtZVwiKSkgOiBudWxsO1xyXG4gICAgdGhpcy50aGVtZVNlcnZpY2UuY2hhbmdlVGhlbWUodGhpcy50aGVtZU1vZGVsKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy50aGVtZU1vZGVsID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKCdDb21wYW55VGhlbWUnKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlUaGVtZVwiKSkgOiBudWxsO1xyXG5cclxuICAgIHZhciBjb21wYW55U2V0dGluZ3NNb2RlbCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpKTtcclxuXHJcbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG5cclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvcnRjdXQtZmF2LWljb25cIikuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvKTtcclxuICAgIHRoaXMudGhlbWVCYXNlQ29sb3IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWVDb2xvcicpO1xyXG4gICAgLy8gLy8gdGhpcy50aGVtZU1vZGVsID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKCdDb21wYW55VGhlbWUnKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlUaGVtZVwiKSkgOiBudWxsO1xyXG4gICAgLy8gLy8gaWYgKHRoaXMudGhlbWVNb2RlbCAmJiB0aGlzLnRoZW1lTW9kZWwuY29tcGFueVRoZW1lSWQgIT09IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIpIHtcclxuICAgIC8vIC8vICAgdGhpcy50aGVtZVNlcnZpY2UuY2hhbmdlVGhlbWUodGhpcy50aGVtZU1vZGVsKTtcclxuICAgIC8vIC8vICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNYWluTG9nbywgbnVsbCk7XHJcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwpO1xyXG4gICAgLy8gLy8gfVxyXG4gICAgLy8gLy8gZWxzZSB7XHJcbiAgICAvLyAvLyAgIHZhciB0aGVtZU1vZGVsID0gbmV3IFRoZW1lTW9kZWwoKVxyXG4gICAgLy8gLy8gICB0aGVtZU1vZGVsLmNvbXBhbnlUaGVtZUlkID0gXCIwOTI5RDM1QS0zNTczLTRCMDYtOTNGQi1DN0Q0NkFBRkE5MThcIjtcclxuICAgIC8vIC8vICAgLy8gdGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28gPSBcImFzc2V0cy9pbWFnZXMvTG9nby1mYXZpY29uLnBuZ1wiO1xyXG4gICAgLy8gLy8gICAvLyB0aGVtZU1vZGVsLmNvbXBhbnlNYWluTG9nbyA9IFwiYXNzZXRzL2ltYWdlcy9NYWluLUxvZ28ucG5nXCI7XHJcbiAgICAvLyAvLyAgIHRoaXMudGhlbWVNb2RlbCA9IHRoZW1lTW9kZWw7XHJcbiAgICAvLyAvLyAgIHRoaXMudGhlbWVTZXJ2aWNlLmNoYW5nZVRoZW1lKHRoZW1lTW9kZWwpO1xyXG4gICAgLy8gLy8gICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1haW5Mb2dvLCBudWxsKTtcclxuICAgIC8vIC8vICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbywgbnVsbCk7XHJcbiAgICAvLyAvLyB9XHJcbiAgICAvLyAvLyB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28pO1xyXG4gICAgLy8gLy8gdGhpcy5jb21wYW55TWluaUxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvKTtcclxuICAgIC8vIC8vIC8vdGhpcy5jaGFuZ2VGYXZJY29uKCk7XHJcbiAgICAvLyAvLyB0aGlzLnRoZW1lQmFzZUNvbG9yID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29sb3InKTtcclxuICAgIC8vdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyApXHJcbiAgICAvLyAuc3Vic2NyaWJlKCk7XHJcblxyXG5cclxuICAgIC8vIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgIC8vICAgLnBpcGUoXHJcbiAgICAvLyAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgIC8vICAgICBvZlR5cGUoV29ya3NwYWNlc0FjdGlvblR5cGVzLkxvYWRXb3Jrc3BhY2VCeUlkQ29tcGxldGVkKSxcclxuICAgIC8vICAgICB0YXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgLy8gICAgICAgdmFyIHdvcmtzcGFjZXNMaXN0ID0gZGF0YS5zZWFyY2hXb3Jrc3BhY2VzU3VjY2VzcztcclxuICAgIC8vICAgICAgIHRoaXMuZGFzaGJvYXJkVXBkYXRlSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgLy8gICAgICAgLy8gdGhpcy5jbG9zZUFkZFdvcmtzcGFjZURpYWxvZygpO1xyXG4gICAgLy8gICAgICAgdGhpcy5kaXNhYmxlV29ya3NwYWNlID0gZmFsc2U7XHJcbiAgICAvLyAgICAgICBpZiAod29ya3NwYWNlc0xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICAgICAgICB0aGlzLndvcmtzcGFjZXMucHVzaCh3b3Jrc3BhY2VzTGlzdFswXSk7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgLy8gICAgICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgIC8vICAgICAgICAgdGhpcy5vcGVuTmV3RGFzaGJvYXJkLmVtaXQod29ya3NwYWNlc0xpc3RbMF0ud29ya3NwYWNlSWQpXHJcbiAgICAvLyAgICAgICB9XHJcblxyXG4gICAgLy8gICAgIH0pXHJcbiAgICAvLyAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgLy90aGlzLmdldEFsbFByb2plY3RzKCk7XHJcblxyXG4gICAgdGhpcy5kZWxheVRpbWVJbnB1dC5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwMCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgIHRoaXMuU2VhcmNoSXRlbSh2YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGdldFRoZW1lKCkge1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0VGhlbWVzKCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldCgnQ29tcGFueVRoZW1lJywgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgdGhpcy50aGVtZU1vZGVsID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKCdDb21wYW55VGhlbWUnKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlUaGVtZVwiKSkgOiBudWxsO1xyXG4gICAgICAgIHRoaXMudGhlbWVTZXJ2aWNlLmNoYW5nZVRoZW1lKHRoaXMudGhlbWVNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNYWluTG9nbywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgIHRoaXMuc2l0ZVVybCA9IHJlc3BvbnNlLmRhdGEucmVnaXN0cmVyU2l0ZUFkZHJlc3M7XHJcbiAgICAgICAgdGhpcy50aGVtZU1vZGVsID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKCdDb21wYW55VGhlbWUnKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlUaGVtZVwiKSkgOiBudWxsO1xyXG5cclxuICAgICAgICB2YXIgY29tcGFueVNldHRpbmdzTW9kZWwgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKSk7XHJcblxyXG4gICAgICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1haW5Mb2dvO1xyXG4gICAgICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb21wYW55TWFpbkxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSByZXNwb25zZS5kYXRhLmNvbXBhbnlNYWluTG9nbztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGFueU1pbmlMb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gcmVzcG9uc2UuZGF0YS5jb21wYW55TWluaUxvZ287XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvcnRjdXQtZmF2LWljb25cIikuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvKTtcclxuICAgICAgICB0aGlzLnRoZW1lQmFzZUNvbG9yID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29sb3InKTtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wucScsIFtdKVxyXG4gIGtleU9wZW5FdmVudCgpIHtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWFyY2hCeVRleHQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICB0aGlzLm9uRm9jdXMoKVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLm0nLCBbXSlcclxuICBrZXlDbG9zZUV2ZW50KCkge1xyXG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLmInLCBbXSlcclxuICByZW1vdGVTZWFyY2hCeVRleHQoKSB7XHJcbiAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gdHJ1ZVxyXG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIC8vdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLnknLCBbXSlcclxuICByZW1vdGVTZWFyY2hCeUlkKCkge1xyXG4gICAgdGhpcy5zZWFyY2hCeVRleHQgPSBmYWxzZVxyXG4gICAgdGhpcy5zZWFyY2hCeUlkID0gdHJ1ZTtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAvL3RoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb0xvY2FsVGltZSh0aW1lKSB7XHJcbiAgICB2YXIgdXRjRGF0ZSA9IG1vbWVudC51dGModGltZSkuZm9ybWF0KCk7XHJcbiAgICB2YXIgbG9jYWxEYXRlID0gbW9tZW50LnV0Yyh1dGNEYXRlKS5sb2NhbCgpLmZvcm1hdCgpO1xyXG4gICAgcmV0dXJuIGxvY2FsRGF0ZTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVXb3Jrc3BhY2VGb3JtKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvbGVJZHMgPSBudWxsO1xyXG4gICAgdGhpcy5kaXNhYmxlV29ya3NwYWNlID0gZmFsc2U7XHJcbiAgICB0aGlzLmRpc2FibGVXb3Jrc3BhY2VoaWRlID0gZmFsc2U7XHJcbiAgICB0aGlzLndvcmtzcGFjZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgICAgd29ya3NwYWNlTmFtZTogbmV3IEZvcm1Db250cm9sKG51bGwsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MClcclxuICAgICAgICBdKVxyXG4gICAgICApLFxyXG4gICAgICBzZWxlY3RlZFJvbGVzOiBuZXcgRm9ybUNvbnRyb2wobnVsbCxcclxuICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxyXG4gICAgICAgIF0pXHJcbiAgICAgICksXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2wobnVsbCxcclxuICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwMClcclxuICAgICAgICBdKVxyXG4gICAgICApLFxyXG4gICAgICBlZGl0Um9sZUlkczogbmV3IEZvcm1Db250cm9sKG51bGwsIFtdKSxcclxuICAgICAgZGVsZXRlUm9sZUlkczogbmV3IEZvcm1Db250cm9sKG51bGwsIFtdKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpKSA6IG51bGw7O1xyXG5cclxuICAgIC8vdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0Q29tcGFueVRoZW1lVHJpZ2dlcmVkKCkpO1xyXG4gICAgdGhpcy5hZG1pblRvb2xzID0gW107XHJcbiAgICAvLyB2YXIgZGFzaGJvYXJkcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzKSk7XHJcbiAgICAvLyBpZiAoZGFzaGJvYXJkcyAmJiBkYXNoYm9hcmRzICE9IFwibnVsbFwiKSB7XHJcbiAgICAvLyAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSBkYXNoYm9hcmRzO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gdmFyIG1lbnVJdGVtcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5NZW51SXRlbXMpKVxyXG4gICAgLy8gaWYgKG1lbnVJdGVtcyAmJiBtZW51SXRlbXMgIT0gXCJudWxsXCIpIHtcclxuICAgIC8vICAgdGhpcy5tZW51SXRlbSA9IG1lbnVJdGVtcztcclxuICAgIC8vICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW0uZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIik7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gdmFyIHdpZGdldHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRmF2b3VyaXRlV2lkZ2V0cykpO1xyXG4gICAgLy8gaWYgKHdpZGdldHMgJiYgd2lkZ2V0cyAhPSBcIm51bGxcIikge1xyXG4gICAgLy8gICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHdpZGdldHM7XHJcbiAgICAvLyB9XHJcbiAgICAvLyB2YXIgcmVjZW50U2VhcmNoZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMpKTtcclxuICAgIC8vIGlmIChyZWNlbnRTZWFyY2hlcyAmJiByZWNlbnRTZWFyY2hlcyAhPSBcIm51bGxcIikge1xyXG4gICAgLy8gICB0aGlzLmFsbHNlYXJjaGVzID0gdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHJlY2VudFNlYXJjaGVzO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5sb2FkV2lkZ2V0c0xpc3QoKTtcclxuICAgIC8vICB0aGlzLmxvYWRXb3Jrc3BhY2VzTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRTb2Z0TGFiZWxDb25maWd1cmF0aW9ucygpO1xyXG4gICAgdGhpcy5nZXRDb21wYW55U2V0dGluZ3MoKTtcclxuICAgIHRoaXMubWVudUl0ZW1zJCA9IHRoaXMuc3RvcmUucGlwZShcclxuICAgICAgc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldEN1cnJlbnRBY3RpdmVNZW51Q2F0ZWdvcnlNZW51SXRlbXMpLFxyXG4gICAgICB0YXAobWVudUxpc3QgPT4gY29uc29sZS5sb2cobWVudUxpc3QpKVxyXG4gICAgKTtcclxuICAgIC8vIHRoaXMubWVudUl0ZW1zJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAvLyAgIHZhciBhID0geDtcclxuICAgIC8vICAgdmFyIGIgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG5cclxuICAgIC8vICAgLy90aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIC8vICAgLy90aGlzLm1lbnVzZmV0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICAvLyB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBHZXRBbGxNZW51SXRlbXNUcmlnZ2VyZWQoTWVudUNhdGVnb3JpZXMuTWFpbikpO1xyXG5cclxuICAgIHZhciBjb21wYW55U2V0dGluZ3NNb2RlbCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpKTtcclxuXHJcbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb21wYW55TWluaUxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMuY29tcGFueU1pbmlMb2dvKTtcclxuICAgIH1cclxuICAgIC8vdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xyXG4gICAgdGhpcy5zZWxlY3RlZExpc3QgPSBbXTtcclxuXHJcbiAgICAvLyB0aGlzLmN1c3RhcHAgPSB7XHJcbiAgICAvLyAgIG5hbWU6IFwiQ3VzdG9tIGFwcGxpY2F0aW9uc1wiLFxyXG4gICAgLy8gICBsaW5rOiBcIi9hcHBsaWNhdGlvbnMvY3VzdG9tLWFwcGxpY2F0aW9uc1wiLFxyXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zJFxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5mb3JtcyA9IHtcclxuICAgIC8vICAgbmFtZTogXCJGb3Jtc1wiLFxyXG4gICAgLy8gICBsaW5rOiBcIi9hcHBsaWNhdGlvbnMvdmlldy1mb3Jtc1wiLFxyXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcyRcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMucHJvamVjdFJvbGVDb25maWd1cmF0aW9uID0ge1xyXG4gICAgLy8gICBuYW1lOiBcIlByb2plY3Qgcm9sZSBjb25maWd1cmF0aW9uXCIsXHJcbiAgICAvLyAgIGxpbms6IFwiL3JvbGVtYW5hZ2VtZW50L2VudGl0eXJvbGVtYW5hZ2VtZW50XCIsXHJcbiAgICAvLyAgIHBlcm1pc3Npb246IHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9ucyRcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMucm9sZUNvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAvLyAgIG5hbWU6IFwiUm9sZSBjb25maWd1cmF0aW9uXCIsXHJcbiAgICAvLyAgIGxpbms6IFwiL3JvbGVtYW5hZ2VtZW50L3JvbGVtYW5hZ2VtZW50XCIsXHJcbiAgICAvLyAgIHBlcm1pc3Npb246IHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzJFxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMgfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgIC8vICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyA9IHJlc3VsdDtcclxuICAgIC8vICAgaWYgKHJlc3VsdCkge1xyXG4gICAgLy8gICAgIHRoaXMuYWRtaW5Ub29scy5zb21lKChmbG93KSA9PiBmbG93Lm5hbWUgPT0gJ0N1c3RvbSBhcHBsaWNhdGlvbnMnKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLmN1c3RhcHApO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KVxyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0kID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0FkZE9yVXBkYXRlRm9ybSB9KSk7XHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlRm9ybSQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgIC8vICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0gPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdGb3JtcycpID8gbnVsbCA6IHRoaXMuYWRtaW5Ub29scy5wdXNoKHRoaXMuZm9ybXMpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KVxyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX1ZpZXdGb3JtcyB9KSk7ICAgIC8vIC8vdGhpcy5yb3V0ZS51cmwuc3Vic2NyaWJlKCh1cmwpID0+IHRoaXMudXJsID0gdXJsLnRvU3RyaW5nKCkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnRm9ybXMnKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLmZvcm1zKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9ucyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9ucyB9KSk7XHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9ucyA9IHJlc3VsdDtcclxuICAgIC8vICAgaWYgKHJlc3VsdCkge1xyXG4gICAgLy8gICAgIHRoaXMuYWRtaW5Ub29scy5zb21lKChmbG93KSA9PiBmbG93Lm5hbWUgPT0gJ1Byb2plY3Qgcm9sZSBjb25maWd1cmF0aW9uJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5wcm9qZWN0Um9sZUNvbmZpZ3VyYXRpb24pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KVxyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX1ZpZXdSb2xlcyB9KSk7XHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgIC8vICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdSb2xlIGNvbmZpZ3VyYXRpb24nKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLnJvbGVDb25maWd1cmF0aW9uKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyA9IHJlc3VsdDtcclxuICAgIC8vICAgaWYgKHJlc3VsdCkge1xyXG4gICAgLy8gICAgLy8gdGhpcy5nZXRBbGxFbXBsb3llZXMoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIHRoaXMudG9vbHMgPSB0aGlzLmFkbWluVG9vbHM7XHJcbiAgICAvL3RoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAvL3RoaXMuZ2V0QWxsRW1wbG95ZWVzKCk7XHJcbiAgICAvLyB0aGlzLmxvYWRXaWRnZXRzTGlzdChudWxsKTtcclxuICAgIC8vIHRoaXMubG9hZFdvcmtzcGFjZXNMaXN0KCk7XHJcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgIC8vIGlmKHRoaXMuaXRlbXMubGVuZ3RoPjApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDsgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAvLyB9IGVsc2UgaWYodGhpcy50b29scy5sZW5ndGg+MCkge1xyXG4gICAgLy8gICB0aGlzLnQ9MDsgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudG9vbHNbMF07XHJcbiAgICAvLyB9IGVsc2UgaWYodGhpcy53b3Jrc3BhY2VzLmxlbmd0aD4wKSB7XHJcbiAgICAvLyAgIHRoaXMud3MgPSAwOyB0aGlzLml0ZW1DbGlja2VkID10aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICAvLyB9ICBcclxuXHJcbiAgICB0aGlzLlNlYXJjaEl0ZW0gPSBfLmRlYm91bmNlKHRoaXMuU2VhcmNoSXRlbSwgMTAwMCk7XHJcbiAgICB0aGlzLnJvdXRlcy5ldmVudHNcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlckFjdGl2ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlbkluZm8oaW5mb1BvcE92ZXIpIHtcclxuICAgIGluZm9Qb3BPdmVyLm9wZW5Qb3BvdmVyKCk7XHJcbiAgfVxyXG5cclxuICAvLyBnZXRBbGxQcm9qZWN0cygpIHtcclxuICAvLyAgIGNvbnN0IHByb2plY3RTZWFyY2hSZXN1bHQgPSBuZXcgUHJvamVjdFNlYXJjaENyaXRlcmlhSW5wdXRNb2RlbCgpO1xyXG4gIC8vICAgcHJvamVjdFNlYXJjaFJlc3VsdC5pc0FyY2hpdmVkID0gZmFsc2U7XHJcbiAgLy8gICB0aGlzLmNvbW1vblNlcnZpY2Uuc2VhcmNoUHJvamVjdHMocHJvamVjdFNlYXJjaFJlc3VsdCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgLy8gICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09IHRydWUpIHtcclxuICAvLyAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xyXG4gIC8vICAgICAgICAgdGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cyA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGVsc2Uge1xyXG4gIC8vICAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSByZXNwb25zZS5hcGlSZXNwb25zZU1lc3NhZ2VzWzBdLm1lc3NhZ2U7XHJcbiAgLy8gICAgICAgdGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cyA9IFtdO1xyXG4gIC8vICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcbiAgZ2V0Q29tcGFueVNldHRpbmdzKCkge1xyXG4gICAgbGV0IGNvbXBhbnlTZXR0aW5nc01vZGVsID0gW107XHJcbiAgICB0aGlzLmNvbXBhbnlTZXR0aW5nc01PZGVsJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Q29tcGFueVNldHRpbmdzKSk7XHJcbiAgICB0aGlzLmNvbXBhbnlTZXR0aW5nc01PZGVsJC5zdWJzY3JpYmUoKHgpID0+IGNvbXBhbnlTZXR0aW5nc01vZGVsID0geCk7XHJcbiAgICBsZXQgYnVnQm9hcmRSZXN1bHQgPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maWx0ZXIoaXRlbSA9PiBpdGVtLmtleS50cmltKCkgPT0gXCJFbmFibGVCdWdCb2FyZFwiKTtcclxuICAgIGlmIChidWdCb2FyZFJlc3VsdCAmJiBidWdCb2FyZFJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaXNFbmFibGVCdWdCb2FyZCA9IGJ1Z0JvYXJkUmVzdWx0WzBdLnZhbHVlID09IFwiMVwiID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1haW5Mb2dvO1xyXG4gICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWluaUxvZ287XHJcblxyXG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy5jb21wYW55TWluaUxvZ28pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZFNlYXJjaERhdGEoKSB7XHJcbiAgICB2YXIgbWVudUl0ZW1zID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLk1lbnVJdGVtcykpXHJcbiAgICBpZiAobWVudUl0ZW1zICYmIG1lbnVJdGVtcyAhPSBcIm51bGxcIikge1xyXG4gICAgICB0aGlzLm1lbnVJdGVtID0gbWVudUl0ZW1zO1xyXG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgICB2YXIgd2lkZ2V0cyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5GYXZvdXJpdGVXaWRnZXRzKSk7XHJcbiAgICBpZiAod2lkZ2V0cyAmJiB3aWRnZXRzICE9IFwibnVsbFwiKSB7XHJcbiAgICAgIHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzID0gd2lkZ2V0cztcclxuICAgIH1cclxuICAgIHZhciByZWNlbnRTZWFyY2hlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcykpO1xyXG4gICAgaWYgKHJlY2VudFNlYXJjaGVzICYmIHJlY2VudFNlYXJjaGVzICE9IFwibnVsbFwiKSB7XHJcbiAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPSB0aGlzLnJlY2VudFNlYXJjaGVzID0gcmVjZW50U2VhcmNoZXM7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHRyYW5zbGF0ZWFwcGxpY2F0aW9ubmFtZShpdGVtKSB7XHJcbiAgICBpZiAoaXRlbSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmFyIGxvY2FsdmFyaWFibGUgPSBpdGVtLnRyaW0oKTtcclxuICAgIHZhciBuYW1lID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJBUFAuXCIgKyBsb2NhbHZhcmlhYmxlKTtcclxuICAgIGlmIChuYW1lLmluZGV4T2YoXCJBUFAuXCIpICE9IC0xKSB7XHJcbiAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Gb2N1cygpIHtcclxuICAgIGlmICghdGhpcy5zZWFyY2hCeUlkICYmICF0aGlzLnNlYXJjaEJ5VGV4dCkge1xyXG4gICAgICB2YXIgcmV0cmlldmVEYXNoYm9hcmRzOiBib29sZWFuID0gdHJ1ZTtcclxuICAgICAgdmFyIGRhc2hib2FyZHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRhc2hib2FyZHMpO1xyXG4gICAgICBpZiAoZGFzaGJvYXJkcyAmJiBkYXNoYm9hcmRzICE9IFwibnVsbFwiKSB7XHJcbiAgICAgICAgcmV0cmlldmVEYXNoYm9hcmRzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzRm9yTG9vcCA9IEpTT04ucGFyc2UoZGFzaGJvYXJkcyk7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dCkge1xyXG4gICAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcC5maWx0ZXIoXHJcbiAgICAgICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgICAgICBpdGVtLndvcmtzcGFjZU5hbWVcclxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgICAuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpICE9PVxyXG4gICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoISh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5TZWFyY2hDbGljaykgJiYgSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2spKSA9PSB0cnVlKSkge1xyXG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5TZWFyY2hDbGljaywgSlNPTi5zdHJpbmdpZnkodHJ1ZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkV2lkZ2V0c0xpc3QobnVsbCk7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkV29ya3NwYWNlc0xpc3QoKTtcclxuICAgICAgICAvLyB0aGlzLmdldEFsbE1lbnVJdGVtcygpO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWRpbmdTZWFyY2hNZW51RGF0YSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yc3Muc2VhcmNoTWVudURhdGEocmV0cmlldmVEYXNoYm9hcmRzKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzICYmIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLndvcmtzcGFjZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud29ya3NwYWNlcyA9IHJlcy5kYXRhLndvcmtzcGFjZXM7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRhc2hib2FyZHMsIEpTT04uc3RyaW5naWZ5KHRoaXMud29ya3NwYWNlcykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53b3Jrc3BhY2VzRm9yTG9vcCA9IHRoaXMud29ya3NwYWNlcztcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5kZWZhdWx0RGFzaGJvYXJkID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaSA9PiBpLmlzRGVmYXVsdCA9PSB0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLndpZGdldHMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxXaWRnZXRzID0gcmVzLmRhdGEud2lkZ2V0cy5zb3J0KChhLCBiKSA9PlxyXG4gICAgICAgICAgICAgICAgICBhLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA+IGIud2lkZ2V0TmFtZS50b0xvd2VyQ2FzZSgpID8gMSA6IC0xXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHM7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KHRoaXMud2lkZ2V0cykpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLmRhdGEubWVudUl0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB2YXIgYXBwbGljYXRpb25zID0gcmVzLmRhdGEubWVudUl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgICAgICAgICAgLy8gICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgLy8gICAgIHgubWVudUNhdGVnb3J5ICYmXHJcbiAgICAgICAgICAgICAgICAvLyAgICAgTWVudUNhdGVnb3JpZXMuTWFpbiAmJlxyXG4gICAgICAgICAgICAgICAgLy8gICAgIHgubWVudUNhdGVnb3J5LnRvTG93ZXJDYXNlKCkgPT09IE1lbnVDYXRlZ29yaWVzLk1haW4udG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgLy8gICApO1xyXG4gICAgICAgICAgICAgICAgLy8gfSlcclxuICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW0gPSByZXMuZGF0YS5tZW51SXRlbXM7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLk1lbnVJdGVtcywgSlNPTi5zdHJpbmdpZnkodGhpcy5tZW51SXRlbSkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW0uZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIik7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLmRhdGEucmVjZW50U2VhcmNoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbHNlYXJjaGVzID0gcmVzLmRhdGEucmVjZW50U2VhcmNoO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHRoaXMuYWxsc2VhcmNoZXM7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeSh0aGlzLmFsbHNlYXJjaGVzKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkUmVjZW50U2VhcmNoZXMsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlckFjdGl2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1NlYXJjaE1lbnVEYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRTZWFyY2hEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gZWxzZSB7XHJcbiAgICAgIC8vICAgaWYgKCEodGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZEZhdm91cml0ZVdpZGdldHMpICYmIEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRGYXZvdXJpdGVXaWRnZXRzKSkgPT0gZmFsc2UpKSB7XHJcbiAgICAgIC8vICAgICB0aGlzLmxvYWRXaWRnZXRzTGlzdChudWxsLCB0cnVlKTtcclxuICAgICAgLy8gICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAvLyAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRGYXZvdXJpdGVXaWRnZXRzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIGlmICghKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRSZWNlbnRTZWFyY2hlcykgJiYgSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzKSkgPT0gZmFsc2UpKSB7XHJcbiAgICAgIC8vICAgICB0aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XHJcbiAgICAgIC8vICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgLy8gICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkUmVjZW50U2VhcmNoZXMsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgICAgLy8gfVxyXG4gICAgICB0aGlzLnJvdXRlckFjdGl2ZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuXHJcbiAgcm91dGVyQWN0aXZlKCkge1xyXG4gICAgaWYgKHRoaXMucm91dGVzLnVybC5pbmNsdWRlcyhcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZFwiKSAmJiB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdKSB7XHJcbiAgICAgIHZhciBkYXNoYm9hcmRJZCA9IHRoaXMucm91dGVzLnVybC5zcGxpdChcIi9cIilbM107XHJcbiAgICAgIGlmIChkYXNoYm9hcmRJZCAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHZhciBpbmRleCA9IHRoaXMud29ya3NwYWNlcy5maW5kSW5kZXgoaSA9PiBpLndvcmtzcGFjZUlkID09IGRhc2hib2FyZElkKTtcclxuICAgICAgICB0aGlzLndzID0gaW5kZXg7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5yb3V0ZXMudXJsLmluY2x1ZGVzKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvd2lkZ2V0c1wiKSAmJiB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdKSB7XHJcbiAgICAgIHZhciB3aWRnZXRJZCA9IHRoaXMucm91dGVzLnVybC5zcGxpdChcIi9cIilbM107XHJcbiAgICAgIGlmICh3aWRnZXRJZCAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHZhciBpbmRleCA9IHRoaXMud2lkZ2V0cy5maW5kSW5kZXgoaSA9PiBpLndpZGdldElkID09IHdpZGdldElkKTtcclxuICAgICAgICBpZiAoaW5kZXggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLndkID0gaW5kZXg7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndzID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHZhciBpbmRleFJzID0gdGhpcy5yZWNlbnRTZWFyY2hlcy5maW5kSW5kZXgoaSA9PiBpLml0ZW1JZCA9PSB3aWRnZXRJZClcclxuICAgICAgICAgIHRoaXMucnMgPSBpbmRleFJzO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB2YXIgaW5kZXggPSB0aGlzLml0ZW1zLmZpbmRJbmRleChpID0+IHRoaXMucm91dGVzLnVybCA9PSBcIi9cIiArIGkuc3RhdGUpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBpbmRleDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkV29ya3NwYWNlc0xpc3QoKSB7XHJcbiAgICB0aGlzLndvcmtzcGFjZXNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdmFyIHdvcmtzcGFjZWxpc3QgPSBuZXcgV29ya3NwYWNlTGlzdCgpO1xyXG4gICAgd29ya3NwYWNlbGlzdC53b3Jrc3BhY2VJZCA9IFwibnVsbFwiO1xyXG4gICAgd29ya3NwYWNlbGlzdC5pc0hpZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLkdldFdvcmtzcGFjZUxpc3Qod29ya3NwYWNlbGlzdCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgPSByZXN1bHQuZGF0YTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzLCBKU09OLnN0cmluZ2lmeShyZXN1bHQuZGF0YSkpO1xyXG4gICAgICB0aGlzLndvcmtzcGFjZXNGb3JMb29wID0gdGhpcy53b3Jrc3BhY2VzO1xyXG4gICAgICB0aGlzLmRlZmF1bHREYXNoYm9hcmQgPSB0aGlzLndvcmtzcGFjZXMuZmluZChpID0+IGkuaXNEZWZhdWx0ID09IHRydWUpO1xyXG4gICAgICB0aGlzLndvcmtzcGFjZXNmZXRjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgLy8gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgTG9hZFdvcmtzcGFjZXNMaXN0VHJpZ2dlcmVkKHRoaXMud29ya3NwYWNlbGlzdCkpO1xyXG4gIH07XHJcblxyXG4gIG9wZW5BcHBzKCkge1xyXG4gICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wiYXBwLXN0b3JlL3dpZGdldHNcIl0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFdpZGdldHNMaXN0KHNlYXJjaFRleHQsIHN0b3JlID0gZmFsc2UpIHtcclxuICAgIHRoaXMud2lkZ2V0c2ZldGNoSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICB0aGlzLndpZGdldCA9IG5ldyBXaWRnZXRMaXN0KCk7XHJcbiAgICB0aGlzLndpZGdldC53aWRnZXRJZCA9IFwibnVsbFwiO1xyXG4gICAgdGhpcy53aWRnZXQuaXNBcmNoaXZlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy53aWRnZXQucGFnZU51bWJlciA9IG51bGw7XHJcbiAgICB0aGlzLndpZGdldC5wYWdlU2l6ZSA9IG51bGw7XHJcbiAgICB0aGlzLndpZGdldC5zb3J0RGlyZWN0aW9uQXNjID0gdHJ1ZTtcclxuICAgIHRoaXMud2lkZ2V0LmlzRmF2b3VyaXRlV2lkZ2V0ID0gdHJ1ZTtcclxuICAgIGlmIChzZWFyY2hUZXh0KVxyXG4gICAgICB0aGlzLndpZGdldC5zZWFyY2hUZXh0ID0gc2VhcmNoVGV4dDtcclxuXHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuR2V0V2lkZ2V0c0Jhc2VkT25Vc2VyKHRoaXMud2lkZ2V0KS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMud2lkZ2V0cyA9IFtdO1xyXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHJlc3VsdC5kYXRhLnNvcnQoKGEsIGIpID0+XHJcbiAgICAgICAgICBhLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA+IGIud2lkZ2V0TmFtZS50b0xvd2VyQ2FzZSgpID8gMSA6IC0xXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcclxuICAgICAgICBpZiAoc3RvcmUpIHtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRmF2b3VyaXRlV2lkZ2V0cywgSlNPTi5zdHJpbmdpZnkodGhpcy53aWRnZXRzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMud2lkZ2V0c2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xyXG5cclxuICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1haW5Mb2dvO1xyXG4gICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWluaUxvZ287XHJcbiAgICAvLyB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28pO1xyXG4gICAgLy8gdGhpcy5jb21wYW55TWluaUxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvKTtcclxuXHJcbiAgICBpZiAodGhpcy5jb21wYW55TWFpbkxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29tcGFueU1pbmlMb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0QWxsRW1wbG95ZWVzKCkge1xyXG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyB9KSk7XHJcbiAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzID0gcmVzdWx0O1xyXG4gICAgfSlcclxuICAgIGxldCBlbXBsb3llZVNwZW50VGltZSA9IG5ldyBFbXBsb3llZUxpc3RJbnB1dCgpO1xyXG4gICAgZW1wbG95ZWVTcGVudFRpbWUuc29ydERpcmVjdGlvbkFzYyA9IHRydWU7XHJcbiAgICBlbXBsb3llZVNwZW50VGltZS5pc0FjdGl2ZSA9IHRydWU7XHJcbiAgICAvLyB0aGlzLmhyRGFzaGJvYXJTZXJ2aWNlLkdldEFsbEVtcGxveWVlcyhlbXBsb3llZVNwZW50VGltZSkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgLy8gICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgIC8vICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHJlc3VsdC5kYXRhO1xyXG4gICAgLy8gICAgIGlmICghKHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzKSkge1xyXG4gICAgLy8gICAgICAgdmFyIGN1cnJlbnRVc2VySWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XHJcbiAgICAvLyAgICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0LmZpbHRlcih4ID0+ICh4LnVzZXJJZC50b0xvd2VyQ2FzZSgpID09IGN1cnJlbnRVc2VySWQudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0O1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KVxyXG5cclxuICAgIGNvbnN0IGVtcGxveWVlTGlzdFNlYXJjaFJlc3VsdCA9IG5ldyBFbXBsb3llZUxpc3RNb2RlbCgpO1xyXG4gICAgZW1wbG95ZWVMaXN0U2VhcmNoUmVzdWx0LnNvcnREaXJlY3Rpb25Bc2MgPSB0cnVlO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLmdldEFsbEVtcGxveWVlcyhlbXBsb3llZUxpc3RTZWFyY2hSZXN1bHQpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSByZXN1bHQuZGF0YTtcclxuICAgICAgICBpZiAoISh0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscykpIHtcclxuICAgICAgICAgIHZhciBjdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5maWx0ZXIoeCA9PiAoeC51c2VySWQudG9Mb3dlckNhc2UoKSA9PSBjdXJyZW50VXNlcklkLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdDtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgLy8gbmdBZnRlclZpZXdJbml0KCkge1xyXG4gIC8vICAgdGhpcy5lID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgLy8gICBsZXQgb3V0U2lkZUNsaWNrID0gIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywoKT0+e1xyXG4gIC8vICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAvLyB9KTtcclxuICAvLyB9XHJcblxyXG4gIE9wZW5NZW51SXRlbXMob3Blbk1lbnVQb3BVcCkge1xyXG4gICAgb3Blbk1lbnVQb3BVcC5vcGVuUG9wb3ZlcigpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkxldmVsMk1lbnUobGluaywgZXZlbnQpIHtcclxuICAgIHRoaXMuc3RhdGVMdmwxID0gbGluaztcclxuICAgIHRoaXMuc3ViTGV2ZWxzID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBvcGVuTGV2ZWwzTWVudShsaW5rMSwgbGluazIsIGV2ZW50KSB7XHJcbiAgICB0aGlzLmxldmVsM0xpbmsxID0gbGluazE7XHJcbiAgICB0aGlzLmxldmVsM0xpbmsyID0gbGluazI7XHJcbiAgICB0aGlzLnN1YkxldmVsc0ZvckxldmVsMiA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsTWVudUl0ZW1zKCkge1xyXG4gICAgdGhpcy5tZW51c2ZldGNoSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBHZXRBbGxNZW51SXRlbXNUcmlnZ2VyZWQoTWVudUNhdGVnb3JpZXMuTWFpbikpO1xyXG4gICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcclxuICAgIHRoaXMuZGVmYXVsdERhc2hib2FyZElkID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSkgOiBudWxsOztcclxuICAgIGlmICh0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCAmJiB1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdERhc2hib2FyZElkKSB7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwibGl2ZXMvd2VsY29tZVwiKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9Vcmwod29ya3NwYWNlSWQpIHtcclxuICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XHJcbiAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHdvcmtzcGFjZUlkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHdvcmtzcGFjZUlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFNvZnRMYWJlbENvbmZpZ3VyYXRpb25zKCkge1xyXG4gICAgdGhpcy5zb2Z0TGFiZWxzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnU29mdExhYmVscycpKTtcclxuICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hNZW51SXRlbXMoKSB7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hCeVRleHRMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5yc3MuZ2V0U2VhcmNoTWVudUl0ZW1zKHsgc2VhcmNoVGV4dDogdGhpcy5zZWFyY2hUZXh0LCBzZWFyY2hVbmlxdWVJZDogbnVsbCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEgIT0gbnVsbCAmJiByZXNwb25zZS5kYXRhICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0TGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+IHVzLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gKHVzLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHx8ICh1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+IHVzLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgKHVzLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdXNlcnMgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHVzZXJzO1xyXG4gICAgICAgICAgICAgICAgaWYgKCEodGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0LmZpbHRlcigoeDogYW55KSA9PiAoeC5pdGVtSWQudG9Mb3dlckNhc2UoKSA9PSBjdXJyZW50VXNlcklkLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3Q7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgICAgICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2VhcmNoQnlUZXh0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblByb2plY3RTZWxlY3QoaXRlbSwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLnByb2plY3RMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUucHJvamVjdCwgaXRlbS5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwicHJvamVjdHMvcHJvamVjdHN0YXR1cy9cIiArIGl0ZW0uaXRlbUlkICsgXCIvYWN0aXZlLWdvYWxzXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgU2VhcmNoSXRlbShldmVudCkge1xyXG4gICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XHJcbiAgICB0aGlzLnRoZW1lQmFzZUNvbG9yID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29sb3InKTtcclxuICAgIHZhciBlbGVtZW50ID1cclxuICAgICAgISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIik7XHJcbiAgICBlbGVtZW50ID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgdmFyIGVsZW0gPVxyXG4gICAgICAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKTtcclxuICAgIGVsZW0gPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMCA6IG51bGw7XHJcbiAgICB2YXIgZW1wID0gISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIik7XHJcbiAgICBlbXAgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMCA6IG51bGw7XHJcbiAgICB2YXIgd2lkZ2V0ID0gISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIik7XHJcbiAgICB3aWRnZXQgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMCA6IG51bGw7XHJcbiAgICAvL3RoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgIGlmIChldmVudC50YXJnZXQudmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VhcmNoTWVudUl0ZW1zKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5zZWFyY2hCeUlkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLm1lbnUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XHJcbiAgICAgICAgICBmYWxzZSAmJiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3AuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ud29ya3NwYWNlTmFtZVxyXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PVxyXG4gICAgICAgICAgZmFsc2VcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5hZG1pblRvb2xzID8gdGhpcy50b29scyA9IHRoaXMuYWRtaW5Ub29scy5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PVxyXG4gICAgICAgICAgZmFsc2VcclxuICAgICAgKSA6IG51bGw7XHJcbiAgICAgIC8vdGhpcy5sb2FkV2lkZ2V0c0xpc3QoZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgdGhpcy5vcmlnaW5hbFdpZGdldHMgPyB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cy5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PVxyXG4gICAgICAgICAgZmFsc2VcclxuICAgICAgKSA6IG51bGw7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QubGVuZ3RoID4gMCA/ICh0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5maWx0ZXIoeCA9PlxyXG4gICAgICAoKHguZnVsbE5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09IGZhbHNlKVxyXG4gICAgICAgIHx8ICh4LmVtcGxveWVlTnVtYmVyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSBmYWxzZSlcclxuICAgICAgICB8fCAoeC5zdXJOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSBmYWxzZSkpXHJcbiAgICAgICkpIDogbnVsbDtcclxuICAgICAgLy8gdGhpcy5hbGxzZWFyY2hlcyA/IHRoaXMucmVjZW50U2VhcmNoZXMgPSB0aGlzLmFsbHNlYXJjaGVzLmZpbHRlcihcclxuICAgICAgLy8gICBpdGVtID0+XHJcbiAgICAgIC8vICAgICBpdGVtLnJlY2VudFNlYXJjaC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSAtMVxyXG4gICAgICAvLyApIDogbnVsbDtcclxuICAgICAgdGhpcy5hbGxzZWFyY2hlcyA/IHRoaXMucmVjZW50U2VhcmNoZXMgPSB0aGlzLmFsbHNlYXJjaGVzLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLnJlY2VudFNlYXJjaC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICkgOiBudWxsO1xyXG5cclxuICAgICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSAmJiBldmVudC50YXJnZXQudmFsdWUuc2VhcmNoKCctJykgPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yc3Muc2VhcmNoR29hbFRhc2tzKGV2ZW50LnRhcmdldC52YWx1ZSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+ICh1cy50eXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHx8ICh1cy50eXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gdXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8ICh1cy50eXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCEoKHRoaXMuaXRlbXMubGVuZ3RoID4gMCAmJiB0aGlzLml0ZW1zKSB8fCAodGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHx8ICh0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHx8ICh0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApKSkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAvLyAgIGNvbnN0IHVzZXJTdG9yeVNlYXJjaENyaXRlcmlhVGVtcCA9IG5ldyBVc2VyU3RvcnlTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwoKTtcclxuICAgICAgLy8gICB1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXAucGFnZVNpemUgPSAxMDAwO1xyXG4gICAgICAvLyAgIHVzZXJTdG9yeVNlYXJjaENyaXRlcmlhVGVtcC5zZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAvLyAgIC8vLnJlcGxhY2UoL1xccy9nLCBcIlwiKTtcclxuXHJcbiAgICAgIC8vICAvLyBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlLmluZGV4T2YoJy0nKSkge1xyXG4gICAgICAvLyAgICAgdGhpcy51c2VyU2VydmljZS5zZWFyY2hVc2VyU3Rvcmllcyh1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXApLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cclxuICAgICAgLy8gICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgIC8vICAgICAgIGxldCBjb21wYW55U2V0dGluZ3NNb2RlbCA9IFtdO1xyXG5cclxuICAgICAgLy8gICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSAhPSBudWxsICYmIHJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyAgICAgICAgIHZhciB1c2VyU3Rvcmllc0xpc3QgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAvLyAgICAgICAgIHRoaXMuY29tcGFueVNldHRpbmdzTU9kZWwkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRDb21wYW55U2V0dGluZ3MpKTtcclxuICAgICAgLy8gICAgICAgICB0aGlzLmNvbXBhbnlTZXR0aW5nc01PZGVsJC5zdWJzY3JpYmUoKHgpID0+IGNvbXBhbnlTZXR0aW5nc01vZGVsID0geCk7XHJcbiAgICAgIC8vICAgICAgICAgbGV0IGJ1Z0JvYXJkUmVzdWx0ID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkudHJpbSgpID09IFwiRW5hYmxlQnVnQm9hcmRcIik7XHJcbiAgICAgIC8vICAgICAgICAgaWYgKGJ1Z0JvYXJkUmVzdWx0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gICAgICAgICAgIHRoaXMuaXNFbmFibGVCdWdCb2FyZCA9IGJ1Z0JvYXJkUmVzdWx0WzBdLnZhbHVlID09IFwiMVwiID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAvLyAgICAgICAgIH1cclxuICAgICAgLy8gICAgICAgICBpZiAoIXRoaXMuaXNFbmFibGVCdWdCb2FyZCkge1xyXG4gICAgICAvLyAgICAgICAgICAgdXNlclN0b3JpZXNMaXN0ID0gdXNlclN0b3JpZXNMaXN0Lm1hcCgoeCkgPT4geC5pc0J1ZyA9PSBmYWxzZSk7XHJcbiAgICAgIC8vICAgICAgICAgfVxyXG5cclxuICAgICAgLy8gICAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSB1c2VyU3Rvcmllc0xpc3QubWFwKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgIC8vICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAvLyAgICAgICAgICAgICBnb2FsSWQ6IGl0ZW0uZ29hbElkLFxyXG4gICAgICAvLyAgICAgICAgICAgICBnb2FsTmFtZTogaXRlbS5nb2FsTmFtZSxcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbFNob3J0TmFtZTogaXRlbS5nb2FsU2hvcnROYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICBnb2FsVW5pcXVlTmFtZTogaXRlbS5nb2FsVW5pcXVlTmFtZSxcclxuICAgICAgLy8gICAgICAgICAgICAgcHJvamVjdElkOiBpdGVtLnByb2plY3RJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgcHJvamVjdE5hbWU6IGl0ZW0ucHJvamVjdE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHNwcmludElkOiBpdGVtLnNwcmludElkLFxyXG4gICAgICAvLyAgICAgICAgICAgICBzcHJpbnROYW1lOiBpdGVtLnNwcmludE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeUlkOiBpdGVtLnVzZXJTdG9yeUlkLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlOYW1lOiBpdGVtLnVzZXJTdG9yeU5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeVN0YXR1c05hbWU6IGl0ZW0udXNlclN0b3J5U3RhdHVzTmFtZSxcclxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5VHlwZU5hbWU6IGl0ZW0udXNlclN0b3J5VHlwZU5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeVVuaXF1ZU5hbWU6IGl0ZW0udXNlclN0b3J5VW5pcXVlTmFtZVxyXG4gICAgICAvLyAgICAgICAgICAgfVxyXG4gICAgICAvLyAgICAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgLy8gICAgICAgfVxyXG4gICAgICAvLyAgICAgfSk7XHJcbiAgICAgIC8vICAvLyB9XHJcblxyXG4gICAgICAvLyAgIGxldCBzZWFyY2hHb2FscyA9IG5ldyBHb2FsU2VhcmNoQ3JpdGVyaWFBcGlJbnB1dE1vZGVsKCk7XHJcbiAgICAgIC8vICAgc2VhcmNoR29hbHMuc2VhcmNoVGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICAgLy8gICAvLy5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcbiAgICAgIC8vICAgLy9pZiAoZXZlbnQudGFyZ2V0LnZhbHVlLmluZGV4T2YoJy0nKSkge1xyXG4gICAgICAvLyAgIHRoaXMudXNlclNlcnZpY2Uuc2VhcmNoR29hbHMoc2VhcmNoR29hbHMpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAvLyAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG5cclxuICAgICAgLy8gICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEgIT0gbnVsbCAmJiByZXNwb25zZS5kYXRhICE9IHVuZGVmaW5lZCAmJiByZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEubWFwKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgIC8vICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgLy8gICAgICAgICAgIGdvYWxJZDogaXRlbS5nb2FsSWQsXHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsTmFtZTogaXRlbS5nb2FsTmFtZSxcclxuICAgICAgLy8gICAgICAgICAgIGdvYWxTaG9ydE5hbWU6IGl0ZW0uZ29hbFNob3J0TmFtZSxcclxuICAgICAgLy8gICAgICAgICAgIGdvYWxVbmlxdWVOYW1lOiBpdGVtLmdvYWxVbmlxdWVOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgcHJvamVjdElkOiBpdGVtLnByb2plY3RJZCxcclxuICAgICAgLy8gICAgICAgICAgIHByb2plY3ROYW1lOiBpdGVtLnByb2plY3ROYW1lXHJcbiAgICAgIC8vICAgICAgICAgfVxyXG4gICAgICAvLyAgICAgICB9KTtcclxuXHJcbiAgICAgIC8vICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAvLyAgICAgfVxyXG5cclxuICAgICAgLy8gICB9KVxyXG4gICAgICAvLyAvL31cclxuXHJcbiAgICAgIC8vIGlmICghKHRoaXMuaXRlbXMubGVuZ3RoID4gMCkgJiYgISh0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSAmJiAhKHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkgJiYgISh0aGlzLndpZGdldHMubGVuZ3RoID4gMCkgJiYgISh0aGlzLnRvb2xzLmxlbmd0aCA+IDApICYmICEodGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApKSB7XHJcbiAgICAgIGlmICghKHRoaXMuaXRlbXMubGVuZ3RoID4gMCkgJiYgISh0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApICYmICEodGhpcy53aWRnZXRzLmxlbmd0aCA+IDApICYmICEodGhpcy50b29scy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSkge1xyXG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5ycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy51c2VycyA9IG51bGxcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICAgIHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy50ID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy50b29sc1swXTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLndvcmtzcGFjZXMgJiZcclxuICAgICAgICB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy53aWRnZXRzICYmXHJcbiAgICAgICAgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndkID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ICYmXHJcbiAgICAgICAgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzICYmXHJcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5tZW51SXRlbSkge1xyXG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtXHJcbiAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3A7XHJcbiAgICAgIHRoaXMudG9vbHMgPSB0aGlzLmFkbWluVG9vbHM7XHJcbiAgICAgIHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzO1xyXG4gICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnByb2plY3RMaXN0ID0gW107XHJcbiAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSB0aGlzLmFsbHNlYXJjaGVzO1xyXG4gICAgICAvL3RoaXMuZW1wbG95ZWVMaXN0ID0gKHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ICYmIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApID8gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgOiBbXTtcclxuICAgICAgdGhpcy5lbXBsb3llZUxpc3QgPSBbXTtcclxuICAgICAgLy8gdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgLy8gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgLy8gdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXMubGVuZ3RoID4gMCA/IHRoaXMuaXRlbXNbMF0gOiBudWxsO1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPT0gXCJcIiA/ICh0aGlzLnNlYXJjaFRleHQgPSB1bmRlZmluZWQpIDogbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTZWFyY2goZXZlbnQpIHtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW1cclxuICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpXHJcbiAgICAgIC5zb3J0KChhLCBiKSA9PiAoYS5tZW51LnRvTG93ZXJDYXNlKCkgPiBiLm1lbnUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMSkpO1xyXG4gICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcDtcclxuICAgIHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzO1xyXG4gICAgdGhpcy50b29scyA9IHRoaXMuYWRtaW5Ub29scztcclxuICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSB0aGlzLmFsbHNlYXJjaGVzO1xyXG4gICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5wcm9qZWN0TGlzdCA9IFtdO1xyXG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QubGVuZ3RoID4gMCA/IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0IDogW107XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlKGV2ZW50LCBpdGVtKSB7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeUlkKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMucnNzLmdldFNlYXJjaE1lbnVJdGVtcyh7IHNlYXJjaFRleHQ6IG51bGwsIHNlYXJjaFVuaXF1ZUlkOiB0aGlzLnNlYXJjaFRleHQgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvUm91dGUocmVzLmRhdGFbMF0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcoJ0dpdmVuIElkIGlzIG5vdCB2YWxpZCwgcGxlYXNlIHByb3ZpZGUgY29ycmVjdCBpZCB0byBuYXZpZ2F0ZScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKCFyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXMuYXBpUmVzcG9uc2VNZXNzYWdlc1swXS5tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2VhcmNoQnlUZXh0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXRlbSkge1xyXG4gICAgICB0aGlzLnJlZGlyZWN0VG9Sb3V0ZShpdGVtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG9Sb3V0ZShpdGVtKSB7XHJcbiAgICB2YXIgbmFtZTtcclxuICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCB8fCB0aGlzLnNlYXJjaEJ5SWQpIHtcclxuICAgICAgaWYgKGl0ZW0uaXRlbVR5cGUgJiYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZykgfHwgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgIC8vdGhpcy5JbnNlcnRTZWFyY2goaXRlbS51bmlxdWVuTmFtZSk7XHJcbiAgICAgICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50LnByb2plY3RJZCA9PSBpdGVtLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHtcclxuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtXCIsIGl0ZW0uaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5JbnNlcnRTZWFyY2godGhpcy5zZWFyY2hCeUlkID8gaXRlbS5pdGVtVW5pcXVlTmFtZSA6IGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuYWRob2MsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImRhc2hib2FyZC9hZGhvYy13b3JraXRlbVwiLCBpdGVtLml0ZW1JZF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB9XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSAmJiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgICAvL2lmICh0aGlzLnByb2plY3RTZWFyY2hSZXN1bHRzLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQucHJvamVjdElkID09IGl0ZW0ucHJvamVjdElkKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCkge1xyXG4gICAgICAgICAgdGhpcy5JbnNlcnRTZWFyY2godGhpcy5zZWFyY2hCeUlkID8gaXRlbS5pdGVtVW5pcXVlTmFtZSA6IGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuZ29hbCwgaXRlbS5pdGVtSWQpO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvZ29hbFwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCwgaXRlbS5pdGVtSWQpO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvc3ByaW50XCIsIGl0ZW0uaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgICAgdGhpcy5JbnNlcnRTZWFyY2godGhpcy5zZWFyY2hCeUlkID8gaXRlbS5pdGVtVW5pcXVlTmFtZSA6IGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuZW1wbG95ZWUsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFxyXG4gICAgICAgICAgXCIvZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBpdGVtLml0ZW1JZCArIFwiL292ZXJ2aWV3XCJcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLnByb2plY3QsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBpdGVtLml0ZW1JZCArIFwiL2FjdGl2ZS1nb2Fsc1wiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKGl0ZW0ubWVudSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICBuYW1lID0gaXRlbS5tZW51O1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbaXRlbS5zdGF0ZV0pO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlbnRTZWFyY2hUeXBlLm1lbnUsIGl0ZW0uaWQpO1xyXG4gICAgfVxyXG4gICAgLy8gZWxzZSBpZiAoaXRlbS5wZXJtaXNzaW9uKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgLy8gICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAvLyAgIG5hbWUgPSBpdGVtLm5hbWU7XHJcbiAgICAvLyAgIHRoaXMuSW5zZXJ0U2VhcmNoKG5hbWUsIFJlY2UpO1xyXG4gICAgLy8gICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbaXRlbS5saW5rXSk7XHJcbiAgICAvLyB9IFxyXG4gICAgZWxzZSBpZiAoaXRlbS53b3Jrc3BhY2VJZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICBuYW1lID0gaXRlbS53b3Jrc3BhY2VOYW1lO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmRhc2hib2FyZCwgaXRlbS53b3Jrc3BhY2VJZCk7XHJcbiAgICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XHJcbiAgICAgIGlmICh1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBpdGVtLndvcmtzcGFjZUlkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBpdGVtLndvcmtzcGFjZUlkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChpdGVtLndpZGdldElkKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIG5hbWUgPSBpdGVtLndpZGdldE5hbWU7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKG5hbWUsIFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBpdGVtLndpZGdldElkKTtcclxuICAgICAgdGhpcy5SZWRpcmVjdFRvQXBwKGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuU2VhcmNoUmVjZW50SXRlbShpdGVtLCBldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgSW5zZXJ0U2VhcmNoKG5hbWUsIHJlY2VudFNlYXJjaFR5cGUsIGlkKSB7XHJcbiAgICB0aGlzLnJzcy5pbnNlcnRSZWNlbnRTZWFyY2goeyBuYW1lOiBuYW1lLCByZWNlbnRTZWFyY2hUeXBlOiByZWNlbnRTZWFyY2hUeXBlLCBpdGVtSWQ6IGlkIH0pLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMobmFtZSlcclxuICAgICAgICAvLyAgID8gKHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKHRoaXMucmVjZW50U2VhcmNoZXMuaW5kZXhPZihuYW1lKSwgMSksXHJcbiAgICAgICAgLy8gICAgIHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKDAsIDAsIG5hbWUpKVxyXG4gICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQobmFtZSk7XHJcbiAgICAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIFNlYXJjaFJlY2VudEl0ZW0oc2VhcmNoLCBldmVudCkge1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUubWVudSkge1xyXG4gICAgICB2YXIgaXRlbSA9IHRoaXMuaXRlbXMuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ubWVudS50b0xvd2VyQ2FzZSgpID09IHNlYXJjaC5yZWNlbnRTZWFyY2gudG9Mb3dlckNhc2UoKVxyXG4gICAgICApO1xyXG4gICAgICBpdGVtLmxlbmd0aCA+IDAgPyB0aGlzLm5hdmlnYXRlKGV2ZW50LCBpdGVtWzBdKSA6IG51bGxcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5kYXNoYm9hcmQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS5kYXNoYm9hcmQsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgc2VhcmNoLml0ZW1JZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS53aWRnZXQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS53aWRnZXQsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShcclxuICAgICAgICBbXCJkYXNoYm9hcmQtbWFuYWdlbWVudC93aWRnZXRzXCIsIHNlYXJjaC5pdGVtSWRdXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuYWRob2MpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS5hZGhvYywgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImRhc2hib2FyZC9hZGhvYy13b3JraXRlbVwiLCBzZWFyY2guaXRlbUlkXSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUud29ya0l0ZW1PckJ1Zykge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCBzZWFyY2guaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5nb2FsKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuZ29hbCwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL2dvYWxcIiwgc2VhcmNoLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuc3ByaW50KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuc3ByaW50LCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvc3ByaW50XCIsIHNlYXJjaC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLnByb2plY3QpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0LCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBzZWFyY2guaXRlbUlkICsgXCIvYWN0aXZlLWdvYWxzXCIpO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuZW1wbG95ZWUsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFxyXG4gICAgICAgIFwiL2Rhc2hib2FyZC9wcm9maWxlL1wiICsgc2VhcmNoLml0ZW1JZCArIFwiL292ZXJ2aWV3XCJcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdE1lbnUoZXZlbnQsIGNsaWNrKSB7XHJcbiAgICBpZiAoY2xpY2sud2hpY2ggPT0gMSAmJiBldmVudC53b3Jrc3BhY2VJZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XHJcbiAgICAgIGlmICh1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBldmVudC53b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgZXZlbnQud29ya3NwYWNlSWQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXNoYm9hcmQgPSBldmVudC53b3Jrc3BhY2VJZDtcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLm1lbnVJdGVtTmFtZSA9IGV2ZW50LndvcmtzcGFjZU5hbWU7XHJcbiAgICAgIHRoaXMucnNzXHJcbiAgICAgICAgLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IGV2ZW50LndvcmtzcGFjZU5hbWUsIHJlY2VudFNlYXJjaFR5cGU6IFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkLCBpdGVtSWQ6IGV2ZW50LndvcmtzcGFjZUlkIH0pXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmNsdWRlcyhldmVudC53b3Jrc3BhY2VOYW1lKVxyXG4gICAgICAgICAgICAvLyAgID8gKHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKFxyXG4gICAgICAgICAgICAvLyAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLmluZGV4T2YoZXZlbnQud29ya3NwYWNlTmFtZSksXHJcbiAgICAgICAgICAgIC8vICAgICAgIDFcclxuICAgICAgICAgICAgLy8gICAgICksXHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSgwLCAwLCBldmVudC53b3Jrc3BhY2VOYW1lKSlcclxuICAgICAgICAgICAgLy8gICA6IHRoaXMucmVjZW50U2VhcmNoZXMudW5zaGlmdChldmVudC53b3Jrc3BhY2VOYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0RW1wbG95ZWUoZXZlbnQsIGNsaWNrKSB7XHJcbiAgICBpZiAoY2xpY2sud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hCeVRleHQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICBcIi9kYXNoYm9hcmQvcHJvZmlsZS9cIiArIGV2ZW50Lml0ZW1JZCArIFwiL292ZXJ2aWV3XCJcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhc2hib2FyZCA9IGV2ZW50LndvcmtzcGFjZUlkO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWUgPSBldmVudC5pdGVtSWQ7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5tZW51SXRlbU5hbWUgPSBldmVudC5pdGVtTmFtZTtcclxuICAgICAgdGhpcy5yc3NcclxuICAgICAgICAuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogZXZlbnQuaXRlbU5hbWUsIHJlY2VudFNlYXJjaFR5cGU6IFJlY2VudFNlYXJjaFR5cGUuZW1wbG95ZWUsIGl0ZW1JZDogZXZlbnQuaXRlbUlkIH0pXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5yc3MuZ2V0UmVjZW50U2VhcmNoKCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZURhdGEuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHJlc3BvbnNlRGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkodGhpcy5hbGxzZWFyY2hlcykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHJlc3BvbnNlRGF0YS5kYXRhO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWRpbW5Ub29sKGxpbmssIGV2ZW50LCBpdGVtKSB7XHJcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hCeVRleHQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW2xpbmtdKTtcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLnJzcy5pbnNlcnRSZWNlbnRTZWFyY2goeyBuYW1lOiBpdGVtLm1lbnUsIHJlY2VudFNlYXJjaFR5cGU6IFJlY2VudFNlYXJjaFR5cGUubWVudSwgaXRlbUlkOiBpdGVtLmlkIH0pLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAvLyB0aGlzLnJlY2VudFNlYXJjaGVzLmluY2x1ZGVzKG5hbWUpXHJcbiAgICAgICAgICAvLyAgID8gKHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKHRoaXMucmVjZW50U2VhcmNoZXMuaW5kZXhPZihuYW1lKSwgMSksXHJcbiAgICAgICAgICAvLyAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoMCwgMCwgbmFtZSkpXHJcbiAgICAgICAgICAvLyAgIDogdGhpcy5yZWNlbnRTZWFyY2hlcy51bnNoaWZ0KG5hbWUpO1xyXG4gICAgICAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgT25TZWxlY3Qod2lkZ2V0LCBldmVudCkge1xyXG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuUmVkaXJlY3RUb0FwcCh3aWRnZXQpO1xyXG4gICAgICB0aGlzLnJzc1xyXG4gICAgICAgIC5pbnNlcnRSZWNlbnRTZWFyY2goeyBuYW1lOiB3aWRnZXQud2lkZ2V0TmFtZSwgcmVjZW50U2VhcmNoVHlwZTogUmVjZW50U2VhcmNoVHlwZS53aWRnZXQsIGl0ZW1JZDogd2lkZ2V0LndpZGdldElkIH0pXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmNsdWRlcyh3aWRnZXQud2lkZ2V0TmFtZSlcclxuICAgICAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZShcclxuICAgICAgICAgICAgLy8gICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmRleE9mKHdpZGdldC53aWRnZXROYW1lKSxcclxuICAgICAgICAgICAgLy8gICAgICAgMVxyXG4gICAgICAgICAgICAvLyAgICAgKSxcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKDAsIDAsIHdpZGdldC53aWRnZXROYW1lKSlcclxuICAgICAgICAgICAgLy8gICA6IHRoaXMucmVjZW50U2VhcmNoZXMudW5zaGlmdCh3aWRnZXQud2lkZ2V0TmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnZXRSZWNlbnRTZWFyY2hlcygpIHtcclxuICAgIHRoaXMucmVjZW50U2VhcmNoZXNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy5yc3MuZ2V0UmVjZW50U2VhcmNoKCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmFsbHNlYXJjaGVzID0gcmVzcG9uc2VEYXRhLmRhdGE7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHJlc3BvbnNlRGF0YS5kYXRhO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMsIEpTT04uc3RyaW5naWZ5KHRoaXMuYWxsc2VhcmNoZXMpKTtcclxuICAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgUmVkaXJlY3RUb0FwcCh3aWRnZXQpIHtcclxuICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFxyXG4gICAgICBbXCJkYXNoYm9hcmQtbWFuYWdlbWVudC93aWRnZXRzXCIsIHdpZGdldC53aWRnZXRJZF1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIE9uR29hbFNlbGVjdChnb2FsLCBldmVudCkge1xyXG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuUmVkaXJlY3RUb0dvYWwoZ29hbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBSZWRpcmVjdFRvR29hbChnb2FsKSB7XHJcbiAgICAvL2lmICh0aGlzLnByb2plY3RTZWFyY2hSZXN1bHRzLmZpbHRlcihpdGVtID0+IGl0ZW0ucHJvamVjdElkID09IGdvYWwucHJvamVjdElkKS5sZW5ndGggPiAwKSB7XHJcbiAgICBpZiAoZ29hbC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsKSB7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKGdvYWwuaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuZ29hbCwgZ29hbC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsXCIsIGdvYWwuaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKGdvYWwuaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuc3ByaW50LCBnb2FsLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBnb2FsLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XHJcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG4gIC8vICB9XHJcblxyXG4gIE9uVXNlclN0b3J5U2VsZWN0KHVzZXJTdG9yeSwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLlJlZGlyZWN0VG9Vc2VyU3RvcnkodXNlclN0b3J5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFJlZGlyZWN0VG9Vc2VyU3RvcnkodXNlclN0b3J5KSB7XHJcbiAgICAvL2lmICh0aGlzLnByb2plY3RTZWFyY2hSZXN1bHRzLmZpbHRlcihpdGVtID0+IGl0ZW0ucHJvamVjdElkID09IHVzZXJTdG9yeS5wcm9qZWN0SWQpLmxlbmd0aCA+IDApIHtcclxuICAgIGlmICh1c2VyU3RvcnkuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1Zykge1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaCh1c2VyU3RvcnkuaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUud29ya0l0ZW1PckJ1ZywgdXNlclN0b3J5Lml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtXCIsIHVzZXJTdG9yeS5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2godXNlclN0b3J5Lml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jLCB1c2VyU3RvcnkuaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wiZGFzaGJvYXJkL2FkaG9jLXdvcmtpdGVtXCIsIHVzZXJTdG9yeS5pdGVtSWRdKTtcclxuICAgIH1cclxuICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuICAvLyB9XHJcblxyXG4gIFNldCgpIHtcclxuICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSB1bmRlZmluZWQgfHxcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09IG51bGwgfHxcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09PSBcIlwiXHJcbiAgICAvLyApIHtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnQgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgYXJyb3dEb3duRXZlbnRGb3JTZWFyY2hCeVRleHQoKSB7XHJcbiAgICBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMucHJvamVjdEluZGV4IDwgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0W3RoaXMucHJvamVjdEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMucHJvamVjdEluZGV4ID09IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPT0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA9PSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzIDwgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy51c2VycysrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPT0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDFcclxuICAgICAgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPT0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDFcclxuICAgICAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5nb2FsSW5kZXggPCB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy5nb2FsSW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLmdvYWxJbmRleCA9PSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDFcclxuICAgICAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA8IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJyb3dEb3duRXZlbnQoKSB7XHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSB1bmRlZmluZWQgfHxcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IG51bGwgfHxcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09PSBcIlwiXHJcbiAgICAvLyApIHtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0ICYmIHRoaXMuc2VhcmNoVGV4dCkge1xyXG4gICAgICB0aGlzLmFycm93RG93bkV2ZW50Rm9yU2VhcmNoQnlUZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA8IHRoaXMuaXRlbXMubGVuZ3RoIC0gMVxyXG4gICAgKSB7XHJcbiAgICAgIC8vdGhpcy5tZW51RWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEJ5KDAsIDEwMCk7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCsrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICAvLyB0aGlzLmhpZ2hsaWdodChuZXh0cm93KTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiZcclxuICAgICAgdGhpcy53cyA8IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxXHJcbiAgICApIHtcclxuICAgICAgdGhpcy53cysrO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wICs9IDQxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICAvLyB0aGlzLmhpZ2hsaWdodChuZXh0cm93KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkIDwgdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCArPSA0ODtcclxuICAgICAgdGhpcy53ZCsrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4IDwgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCsrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xyXG4gICAgICAvLyB0aGlzLmhpZ2hsaWdodChuZXh0cm93KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPCB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnVzZXJzKys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5nb2FsSW5kZXggPCB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy5nb2FsSW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzIDwgOCkge1xyXG4gICAgICB0aGlzLnJzKys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgLy8gICB0aGlzLnQgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53ZCA9IDA7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5ycyA9IDA7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gOCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLnJzID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwXHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSA4ICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5ycyA9IDA7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5ycyA9IDA7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gZWxzZSB7XHJcbiAgICAvLyAgIGlmICh0aGlzLnJzICE9PSBudWxsICYmIHRoaXMucnMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDggJiYgdGhpcy5ycyA8IDgpIHtcclxuICAgIC8vICAgICB0aGlzLnJzKys7XHJcbiAgICAvLyAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XHJcbiAgICAvLyAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgZWxzZSBpZiAodGhpcy5ycyAhPT0gbnVsbCAmJiB0aGlzLnJzICE9PSB1bmRlZmluZWQgJiYgKHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoKSAtIDEgPiB0aGlzLnJzICYmIHRoaXMucnMgPCA4KSB7XHJcbiAgICAvLyAgICAgdGhpcy5ycysrO1xyXG4gICAgLy8gICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcblxyXG5cclxuICB9XHJcbiAgYXJyb3dVcEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXgtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXS5pdGVtSWQgJiYgdGhpcy51c2VycyA9PSAwICYmIHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0W3RoaXMucHJvamVjdEluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy51c2VycyA+IDApIHtcclxuICAgICAgdGhpcy51c2Vycy0tO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLmdvYWxJbmRleCA9PSAwICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLmdvYWxJbmRleCA9PSAwICYmIHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0W3RoaXMucHJvamVjdEluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleC0tO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFt0aGlzLmdvYWxJbmRleF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleC0tO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xyXG4gICAgfVxyXG4gIH1cclxuICBhcnJvd1VwRXZlbnQoKSB7XHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSB1bmRlZmluZWQgfHxcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IG51bGwgfHxcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09PSBcIlwiXHJcbiAgICAvLyApIHtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfSBcclxuICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCAmJiB0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgdGhpcy5hcnJvd1VwRXZlbnRGb3JTZWFyY2hCeVRleHQoKTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBtZW51c1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4LS07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgLT0gNDU7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gd29ya3NwYWNlc1xyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiZcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCA9PSB0aGlzLndvcmtzcGFjZXNbMF0ud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSAwICYmXHJcbiAgICAgIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCAtPSA0MTtcclxuICAgICAgdGhpcy53cy0tO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIHdpZGdldHMgICAgXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgLT0gNDg7XHJcbiAgICAgIHRoaXMud2QtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLml0ZW1DbGlja2VkLndpZGdldElkID09IHRoaXMud2lkZ2V0c1swXS53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiZcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgPT0gdGhpcy53aWRnZXRzWzBdLndpZGdldElkICYmIHRoaXMud2QgPT0gMCAmJlxyXG4gICAgICB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gRW1wbG95ZWVzICAgXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleC0tO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJlxyXG4gICAgICB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiZcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICAgIC8vRnJvbSBXSS9CdWcgICAgICAgICBORUVEIFRPIERPIFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXHJcbiAgICAgICYmIHRoaXMudXNlcnMgPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgLT0gNDU7XHJcbiAgICAgIHRoaXMudXNlcnMtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIGdvYWwvc3ByaW50XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXHJcbiAgICAgICYmIHRoaXMuZ29hbEluZGV4ID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLmdvYWxJbmRleC0tO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFt0aGlzLmdvYWxJbmRleF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLnVzZXJTdG9yeUxpc3QgJiYgdGhpcy51c2VyU3RvcnlMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9PSAwICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9PSAwICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGV0eXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIHJlY2VudCBzZWFyY2hlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA+IDApIHtcclxuICAgICAgdGhpcy5ycy0tO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFt0aGlzLmdvYWxJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiZcclxuICAgICAgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy51c2VyU3RvcnlMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbdGhpcy51c2Vyc107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiZcclxuICAgICAgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiZcclxuICAgICAgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiZcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiZcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnQgPSB0aGlzLnRvb2xzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICAvLyAgIHRoaXMud2QgPSA4O1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmZ1bGxOYW1lICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy50ID0gdGhpcy50b29scy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiYgdGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy50ID0gdGhpcy50b29scy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IDAgJiYgdGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy50ID0gdGhpcy50b29scy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy50b29sc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucGVybWlzc2lvbiAmJiB0aGlzLnQgPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgaWYgKHRoaXMucnMgIT09IG51bGwgJiYgdGhpcy5ycyAhPT0gdW5kZWZpbmVkICYmIHRoaXMucnMgPiAwKSB7XHJcbiAgICAvLyAgICAgdGhpcy5ycy0tO1xyXG4gICAgLy8gICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgLy8gICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIGFycm93TGVmdEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbMF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFycm93TGVmdEV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCAmJiB0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgdGhpcy5hcnJvd0xlZnRFdmVudEZvclNlYXJjaEJ5VGV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vRnJvbSB3b3Jrc3BhY2VzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgLy9mcm9tIHdpZGdldHNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gZW1wbG95ZWVzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIFdJL0J1Z1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXHJcbiAgICAgICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBHb2FsL1NwcmludFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLnVzZXJTdG9yeUxpc3QgJiYgdGhpcy51c2VyU3RvcnlMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5TGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcclxuICAgICAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXHJcbiAgICAgICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXHJcbiAgICAgICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXHJcbiAgICAgICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIHJlY2VudCBzZWFyY2hlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLnVzZXJTdG9yeUxpc3QgJiYgdGhpcy51c2VyU3RvcnlMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5TGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJyb3dSaWdodEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfVxyXG4gIH1cclxuICBhcnJvd1JpZ2h0RXZlbnQoKSB7XHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSB1bmRlZmluZWQgfHxcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09IG51bGwgfHxcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09PSBcIlwiXHJcbiAgICAvLyApIHtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfSBcclxuICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCAmJiB0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgdGhpcy5hcnJvd1JpZ2h0RXZlbnRGb3JTZWFyY2hCeVRleHQoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vRnJvbSBtZW51c1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIHdvcmtzcGFjZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSB3aWRnZXRzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gRW1wbG95ZWVzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIFdJL0J1Z1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXHJcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIEdvYWwvU3ByaW50XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwpXHJcbiAgICAgICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuV29ya3NwYWNlRm9ybSgpIHtcclxuICAgIHRoaXMuYWRkV29ya1NwYWNlUG9wT3Zlci5vcGVuKCk7XHJcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICB0aGlzLmdldEFsbFJvbGVzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxSb2xlcygpIHtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5HZXRhbGxSb2xlcygpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5yb2xlc0Ryb3BEb3duID0gcmVzcG9uc2VEYXRhLmRhdGE7XHJcbiAgICAgIHRoaXMucm9sZXNEcm9wRG93bi5mb3JFYWNoKChwKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaWQgPSBwLnJvbGVJZC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHAucm9sZUlkID0gaWQ7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMubmdEZXN0cm95ZWQkLm5leHQoKTtcclxuICAgIHRoaXMubmdEZXN0cm95ZWQkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlU2VsZWN0ZWRSb2xlc0ZuKCkgeyB9XHJcbiAgY29tcGFyZUVkaXRTZWxlY3RlZFJvbGVzRm4oKSB7IH1cclxuICBjb21wYXJlRGVsZXRlU2VsZWN0ZWRSb2xlc0ZuKCkgeyB9XHJcbiAgdXBzZXJ0V29ya3NwYWNlKCkgeyB9XHJcbiAgdG9nZ2xlQWxsUm9sZXNTZWxlY3RlZCgpIHsgfVxyXG4gIHRvZ2dsZUVkaXRBbGxSb2xlc1NlbGVjdGVkKCkgeyB9XHJcbiAgdG9nZ2xlRGVsZXRlQWxsUm9sZXNTZWxlY3RlZCgpIHsgfVxyXG4gIGNsb3NlQWRkV29ya3NwYWNlRGlhbG9nKCkgeyB9XHJcbn1cclxuIiwiPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJ2aXNpYmxlc1wiIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudXNcIiBmeEhpZGUuZ3QteHMgZnhTaG93PlxyXG4gIDxtYXQtaWNvbiBjbGFzcz1cIm5ld01lbnVcIj5tZW51PC9tYXQtaWNvbj5cclxuPC9idXR0b24+XHJcbjxkaXYgZnhGbGV4IGNsYXNzPVwibmV3TG9nbyBkZWZhdWx0LWJnIHRvcC1sb2dvLWJnIG5ld21pbmlsb2dvIHpvb20taW1hZ2UtaG92ZXJcIiBmeEhpZGUuZ3QteHMgZnhTaG93PlxyXG4gIDxpbWcgc3JjPVwie3tjb21wYW55TWluaUxvZ299fVwiIGFsdD1cIlwiIGlkPVwibWluaS1sb2dvLXRvcGJhclwiIHN0eWxlPVwid2lkdGg6MzBweDsgaGVpZ2h0OjMwcHg7XCJcclxuICAgIChjbGljayk9XCJnZXRBbGxNZW51SXRlbXMoKVwiIC8+XHJcbjwvZGl2PlxyXG48ZGl2IGZ4RmxleCBjbGFzcz1cIm5ld0xvZ28gIHRvcC1sb2dvLWJnIGFwcHMtYnV0dG9uIHpvb20taW1hZ2UtaG92ZXJcIiBzdHlsZT1cImxlZnQ6IDBweDtcIiBmeEhpZGUgZnhTaG93Lmd0LXhzPlxyXG4gIDxpbWcgc3JjPVwie3tjb21wYW55TWFpbkxvZ299fVwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO2xlZnQ6IDIwcHg7bGVmdDogMjBweDtwb3NpdGlvbjogcmVsYXRpdmU7XCIgaWQ9XCJtYWluLWxvZ28tdG9wYmFyXCJcclxuICAgIGNsYXNzPVwiaW1nLWhlaWdodC1tYWluLWxvZ28tdG9wYmFyXCIgKGNsaWNrKT1cImdldEFsbE1lbnVJdGVtcygpXCIgLz5cclxuPC9kaXY+XHJcblxyXG48IS0tIFxyXG48bWF0LW1lbnUgI21lbnVzPVwibWF0TWVudVwiIGNsYXNzPVwiZmlsdGVyLXBhbmVsXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YobWVudUl0ZW1zJCB8IGFzeW5jKVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2Ryb3BEb3duJ1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImxldmVsVHdvTWVudVwiIChtb3VzZW92ZXIpPVwib3BlbkxldmVsMk1lbnUoaXRlbS5zdGF0ZSxpdGVtLnN1YilcIj5cclxuICAgICAgICA8bWF0LWljb24+e3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj57eyBpdGVtLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnbGluaydcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3sgaXRlbS5zdGF0ZSB9fVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj57eyBpdGVtLmljb24gfX08L21hdC1pY29uPnt7IGl0ZW0ubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LW1lbnU+XHJcblxyXG48bWF0LW1lbnUgI2xldmVsVHdvTWVudT1cIm1hdE1lbnVcIj5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtTHZsMiBvZiBzdWJMZXZlbHNcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJpdGVtTHZsMi50eXBlID09PSAnZHJvcERvd24nXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbWF0TWVudVRyaWdnZXJGb3JdPVwibGV2ZWxUaHJlZU1lbnVcIlxyXG4gICAgICAgIChtb3VzZW92ZXIpPVwib3BlbkxldmVsM01lbnUoc3RhdGVMdmwxLGl0ZW1MdmwyLnN0YXRlLGl0ZW0uc3ViKVwiPlxyXG4gICAgICAgIHt7IGl0ZW1MdmwyLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIml0ZW1MdmwyLnR5cGUgPT0gJ2FwcGxpY2F0aW9ubGluaydcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3sgaXRlbUx2bDIuc3RhdGUgfX1cIj5cclxuICAgICAgICB7eyBpdGVtTHZsMi5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJpdGVtTHZsMi50eXBlID09ICdsaW5rJ1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGluaz1cIi97e3N0YXRlTHZsMX19L3t7IGl0ZW1MdmwyLnN0YXRlIH19XCI+XHJcbiAgICAgICAge3sgaXRlbUx2bDIubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LW1lbnU+XHJcblxyXG48bWF0LW1lbnUgI2xldmVsVGhyZWVNZW51PVwibWF0TWVudVwiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW1MdmwzIG9mIHN1YkxldmVsc0ZvckxldmVsMlwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3sgbGV2ZWwzTGluazEgfX0ve3sgbGV2ZWwzTGluazIgfX0ve3tpdGVtTHZsMy5zdGF0ZX19XCI+XHJcbiAgICAgIHt7IGl0ZW1MdmwzLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LW1lbnU+IC0tPlxyXG5cclxuPG1hdC1tZW51ICNtZW51cz1cIm1hdE1lbnVcIiB5UG9zaXRpb249XCJiZWxvd1wiIGNsYXNzPVwiZmlsdGVyLXBhbmVsXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgc3R5bGU9XCJoZWlnaHQ6YXV0b1wiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2xpbmsnIHx8IGl0ZW0udHlwZSA9PSAnYXBwbGljYXRpb25saW5rJ1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGluaz1cIi97eyBpdGVtLnN0YXRlIH19XCIgKGNsaWNrKT1cInNlbGVjdE1lbnUoaXRlbSwkZXZlbnQpXCJcclxuICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIj5cclxuICAgICAgICA8bWF0LWljb24+e3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj57eyBpdGVtLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L21hdC1tZW51PlxyXG5cclxuXHJcbjxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XHJcbmxlZnQ6IDkwJVwiIGNsYXNzPVwic3RvcmUtaWNvbSBtYXQtaWNvbi1idXR0b25cIiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0RyYWdBcHBzXCJcclxuICBbbmdDbGFzc109XCJ0aGlzLnJvdXRlcy51cmwuaW5jbHVkZXMoJy9hcHAtc3RvcmUvd2lkZ2V0cycpID8gJ2ljb25fYWN0aXZlX2NsYXNzJyA6ICcnXCI+XHJcbiAgPGZhLWljb24gaWNvbj1cInN0b3JlXCIgc3R5bGU9XCJmb250LXNpemU6IDIwcHggIWltcG9ydGFudDtcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcclxuICAgIG1hdFRvb2x0aXA9XCJ7eyAnQVBQLkFQUFNUT1JFJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cIm9wZW5BcHBzKClcIlxyXG4gICAgY2xhc3M9XCJtYXQtY29sb3ItYWNjZW50IGN1cnNvci1wb2ludGVyIHRoZW1lLW5hdmJhci1pY29uLWNvbG9yXCI+PC9mYS1pY29uPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJTZWFyY2hCb3ggZHJvcGRvd25cIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1wiPlxyXG4gIDxzcGFuIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBpbnB1dC1ncm91cC1hZGRvblwiICpuZ0lmPVwic2VhcmNoQnlUZXh0XCI+QCAmbmJzcDs8L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJtYXQtY29sb3ItYWNjZW50IGlucHV0LWdyb3VwLWFkZG9uXCIgKm5nSWY9XCJzZWFyY2hCeUlkXCI+IyAmbmJzcDs8L3NwYW4+XHJcbiAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJTZWFyY2hCb3gtaW5wdXQgZHJvcGJ0blwiIHBsYWNlaG9sZGVyPVwie3sgJ0FQUC5TVEFSVEhFUkVPUkNMSUNLQ09OVFJPTCtRJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgIFtjbGFzcy5oaWRlLXBsYWNlaG9sZGVyXT1cInNlYXJjaEJ5VGV4dCB8fCBzZWFyY2hCeUlkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgI2VsZW1lbnQgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcclxuICAgIChpbnB1dCk9XCJTZWFyY2hJdGVtKCRldmVudClcIiAoY2xpY2spPVwiU2VhcmNoSXRlbSgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIlNldCgpO1wiXHJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCJuYXZpZ2F0ZSgkZXZlbnQsIGl0ZW1DbGlja2VkKVwiIChrZXlkb3duLmFycm93ZG93bik9XCJhcnJvd0Rvd25FdmVudCgpXCJcclxuICAgIChrZXlkb3duLmFycm93dXApPVwiYXJyb3dVcEV2ZW50KClcIiAoa2V5ZG93bi5hcnJvd2xlZnQpPVwiYXJyb3dMZWZ0RXZlbnQoKVwiIChrZXlkb3duLmFycm93cmlnaHQpPVwiYXJyb3dSaWdodEV2ZW50KClcIj5cclxuXHJcbiAgPGJ1dHRvbiBjbGFzcz1cIlNlYXJjaEJveC1idXR0b25cIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY2xvc2VfaWNvbl9zZWFyY2hcIj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIhc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2VhcmNoVGV4dFwiIGNsYXNzPVwiaWNvbi1idXR0b24gbXItMDVcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgKGNsaWNrKT1cImNsb3NlU2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOnBvaW50ZXJcIj5cclxuICAgICAgICBjbG9zZTwvbWF0LWljb24+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8bWF0LWljb24gY2xhc3M9XCJTZWFyY2hCb3gtaWNvbiBpY29uLWNvbG9yIG10LWxnLW4yIG1yLTA1IGluZm8tY2xhc3NcIiBbc2F0UG9wb3ZlckFuY2hvckZvcl09XCJwXCJcclxuICAgICAgI2luZm9Qb3BPdmVyPVwic2F0UG9wb3ZlckFuY2hvclwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvcGVuSW5mbyhpbmZvUG9wT3ZlcilcIj5pbmZvPC9tYXQtaWNvbj5cclxuICAgIDxtYXQtaWNvbiBjbGFzcz1cIlNlYXJjaEJveC1pY29uIGljb24tY29sb3IgbXQtbGctbjJcIiBjb2xvcj1cInByaW1hcnlcIj5zZWFyY2g8L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50XCIgW25nQ2xhc3NdPVwieydkLWJsb2NrJyA6IGRpc3BsYXksICAnZC1ub25lJyA6ICFkaXNwbGF5fVwiPlxyXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxyXG4gICAgICAqbmdJZj1cImxvYWRpbmdTZWFyY2hNZW51RGF0YSB8fCByZWNlbnRTZWFyY2hlc2ZldGNoSW5Qcm9ncmVzcyB8fCB3aWRnZXRzZmV0Y2hJblByb2dyZXNzXCI+XHJcbiAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IHJvd3NlbGVjdFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbnNlbGVjdC1uZXh0IHBsLTA1XCIgKm5nSWY9XCJpdGVtcyAmJiAoaXRlbXMubGVuZ3RoPjApICYmICEoc2VhcmNoQnlJZCB8fCBzZWFyY2hCeVRleHQpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiPnt7ICdTSEVMTC5BUFBMSUNBVElPTlMnIHwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGlkPVwic3R5bGUtMVwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtcyAmJiBpdGVtcy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4O1wiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRSb3dJbmRleCA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnbGluaycgfHwgaXRlbS50eXBlID09ICdhcHBsaWNhdGlvbmxpbmsnXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGluaz1cIi97eyBpdGVtLnN0YXRlIH19XCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRSb3dJbmRleCA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwic2VsZWN0QWRpbW5Ub29sKGl0ZW0uc3RhdGUsICRldmVudCwgaXRlbSlcIiByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OlxyXG4gICAgICAgICAgICAgICAgICAgIHRydWV9XCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyB0cmFuc2xhdGVhcHBsaWNhdGlvbm5hbWUoaXRlbS5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzKX19XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tY29sb3JcIiBbbmdDbGFzc109XCJzZWxlY3RlZFJvd0luZGV4ID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwidHJhbnNsYXRlYXBwbGljYXRpb25uYW1lKGl0ZW0ubWVudSkgfCAgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIHBsLTA1XCIgKm5nSWY9XCIhKHNlYXJjaEJ5SWQgfHwgc2VhcmNoQnlUZXh0KVwiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMFwiICpuZ0lmPVwid29ya3NwYWNlcyAmJiAod29ya3NwYWNlcy5sZW5ndGg+MClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj57eyAnU0hFTEwuREFTSEJPQVJEUycgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwicGx1cy1zcXVhcmVcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfQWRkRGFzaGJvYXJkXCIgbWF0VG9vbHRpcD1cInt7ICdBUFAuQUREREFTSEJPQVJEJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiaW5pdGlhbGl6ZVdvcmtzcGFjZUZvcm0oKTtvcGVuV29ya3NwYWNlRm9ybSgpO1wiIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwiYWRkV29ya3NwYWNlXCI+XHJcbiAgICAgICAgICAgIDwvZmEtaWNvbj4gXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgaWQ9XCJzdHlsZS0yXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya3NwYWNlcyAmJiB3b3Jrc3BhY2VzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgd2Mgb2Ygd29ya3NwYWNlczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJ3cyA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCIgY2xhc3M9XCJzY3JvbGxcIiAjd29ya3NwYWNlRWxlbWVudD5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAobW91c2Vkb3duKT1cInNlbGVjdE1lbnUod2MsJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndzID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9Vcmwod2Mud29ya3NwYWNlSWQpXCJcclxuICAgICAgICAgICAgICAgICAgcm91dGVyTGluaz1cIi9kYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQve3sgd2Mud29ya3NwYWNlSWQgfX1cIiByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7d2Mud29ya3NwYWNlTmFtZX19XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwid2Mud29ya3NwYWNlTmFtZSB8IGhpZ2hMaWdodFRleHQgOiBzZWFyY2hUZXh0IFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uc2VsZWN0LWFwcHMgbWwtMFwiICpuZ0lmPVwid2lkZ2V0cyAmJiB3aWRnZXRzLmxlbmd0aD4wICAmJiAhKHNlYXJjaEJ5SWQgfHwgc2VhcmNoQnlUZXh0KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj57eyAnU0hFTEwuRkFWT1VSSVRFQVBQUycgfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiIGlkPVwic3R5bGUtM1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgd2lkZ2V0IG9mIHdpZGdldHM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJ3ZCA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OlxyXG4gICAgICAgICAgdHJ1ZX1cIiByb3V0ZXJMaW5rPVwiL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3dpZGdldHMve3sgd2lkZ2V0LndpZGdldElkIH19XCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3ZCA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiIChtb3VzZWRvd24pPVwiT25TZWxlY3Qod2lkZ2V0LCRldmVudClcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3t3aWRnZXQud2lkZ2V0TmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJ3aWRnZXQud2lkZ2V0TmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyB8IGhpZ2hMaWdodFRleHQgOiBzZWFyY2hUZXh0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zZWxlY3QtbmV4dCBtbC0wXCIgKm5nSWY9XCJwcm9qZWN0TGlzdCAmJiBwcm9qZWN0TGlzdC5sZW5ndGg+MCAmJiBzZWFyY2hUZXh0ICYmIHNlYXJjaEJ5VGV4dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj5Qcm9qZWN0czwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxcIiBpZD1cInN0eWxlLTdcIlxyXG4gICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvamVjdCBvZiBwcm9qZWN0TGlzdDsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInByb2plY3RJbmRleCA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OlxyXG4gICAgICAgdHJ1ZX1cIiBbbmdDbGFzc109XCJwcm9qZWN0SW5kZXggPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIlxyXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Qcm9qZWN0U2VsZWN0KHByb2plY3QsJGV2ZW50KVwiIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e3Byb2plY3QuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwicHJvamVjdC5pdGVtTmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyB8IGhpZ2hMaWdodFRleHQgOiBzZWFyY2hUZXh0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zZWxlY3QtbmV4dCBtbC0wXCJcclxuICAgICAgICAqbmdJZj1cInVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGg+MCAmJiBzZWFyY2hUZXh0ICYmIHNlYXJjaEJ5VGV4dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIiAqbmdJZj1cImlzRW5hYmxlQnVnQm9hcmRcIj57eyAnU0hFTEwuV0lCVUcnIHwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCIgKm5nSWY9XCIhaXNFbmFibGVCdWdCb2FyZFwiPnt7ICdTSEVMTC5XSSd8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbFwiIGlkPVwic3R5bGUtNVwiXHJcbiAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB1c2VyU3Rvcnkgb2YgdXNlclN0b3J5U2VhcmNoTGlzdDsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInVzZXJzID09IGkgPyB0aGVtZUJhc2VDb2xvciA6ICd3aGl0ZSdcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbmtBY3RpdmU9XCJpdGVtLWFjdGl2ZVwiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7ZXhhY3Q6XHJcbiAgICAgICAgIHRydWV9XCIgW25nQ2xhc3NdPVwidXNlcnMgPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIiAobW91c2Vkb3duKT1cIk9uVXNlclN0b3J5U2VsZWN0KHVzZXJTdG9yeSwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7dXNlclN0b3J5Lml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInVzZXJTdG9yeS5pdGVtTmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyB8IGhpZ2hMaWdodFRleHQgOiBzZWFyY2hUZXh0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMFwiXHJcbiAgICAgICAgKm5nSWY9XCJnb2FsU2VhcmNoTGlzdCAmJiBnb2FsU2VhcmNoTGlzdC5sZW5ndGg+MCAmJiBzZWFyY2hUZXh0ICYmIHNlYXJjaEJ5VGV4dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj57eyAnU0hFTEwuR09BTFNQUklOVCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsXCIgaWQ9XCJzdHlsZS02XCJcclxuICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGdvYWwgb2YgZ29hbFNlYXJjaExpc3Q7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJnb2FsSW5kZXggPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcclxuICAgICAgICAgdHJ1ZX1cIiBbbmdDbGFzc109XCJnb2FsSW5kZXggPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIiAobW91c2Vkb3duKT1cIk9uR29hbFNlbGVjdChnb2FsLCRldmVudClcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3tnb2FsLml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImdvYWwuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbnNlbGVjdC1hcHBzIG1sLTBcIlxyXG4gICAgICAgICpuZ0lmPVwiKGVtcGxveWVlTGlzdCAmJiBlbXBsb3llZUxpc3QubGVuZ3RoID4gMCkgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+RW1wbG95ZWVzPC9kaXY+XHJcbiAgICAgICAgPGRpdiBpZD1cInN0eWxlLTRcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbXBsb3llZSBvZiBlbXBsb3llZUxpc3Q7IGxldCBpID0gaW5kZXhcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlO1wiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCIgI3dvcmtzcGFjZUVsZW1lbnQ+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAobW91c2Vkb3duKT1cInNlbGVjdEVtcGxveWVlKGVtcGxveWVlLCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiXHJcbiAgICAgICAgICAgICAgcm91dGVyTGluaz1cIi9kYXNoYm9hcmQvcHJvZmlsZS97eyBlbXBsb3llZS5pdGVtSWQgfX0vb3ZlcnZpZXdcIiByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3tlbXBsb3llZS5pdGVtTmFtZX19XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1hdmF0YXIgW25hbWVdPVwiZW1wbG95ZWUuaXRlbU5hbWUgfCByZW1vdmVTcGVjaWFsQ2hhcmFjdGVyc1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgZW1wbG95ZWUuaXRlbU5hbWUgfX1cIiBbc3JjXT1cImVtcGxveWVlLnByb2ZpbGVJbWFnZSB8IGZldGNoU2l6ZWRBbmRDYWNoZWRJbWFnZTogJzIwJzonJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtpc1JvdW5kXT1cInRydWVcIiBzaXplPVwiMjBcIiAoY2xpY2spPVwicHJvZmlsZVBhZ2UoZW1wbG95ZWUudXNlcklkKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1hdmF0YXI+IFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTA1XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZW1wbG95ZWUuaXRlbU5hbWUgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5zZWxlY3QtYXBwcyBtbC0wXCJcclxuICAgICAgICAqbmdJZj1cInJlY2VudFNlYXJjaGVzICYmIChyZWNlbnRTZWFyY2hlcy5sZW5ndGg+MCkgICYmICEoc2VhcmNoQnlJZCB8fCBzZWFyY2hCeVRleHQpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiPnt7ICdTSEVMTC5SRUNFTlRTRUFSQ0hTJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudFwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VhcmNoIG9mIHJlY2VudFNlYXJjaGVzIHwgc2xpY2U6MDo5IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJycyA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbmdDbGFzc109XCJycyA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiXHJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJzZWFyY2hUZXh0PXNlYXJjaC5yZWNlbnRTZWFyY2g7U2VhcmNoUmVjZW50SXRlbShzZWFyY2gsJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7e3NlYXJjaC5yZWNlbnRTZWFyY2ggfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fSBcclxuICAgICAgICAgICh7eyBjb252ZXJ0VG9Mb2NhbFRpbWUoc2VhcmNoLmNyZWF0ZWREYXRlVGltZSkgfCB0aW1lYWdvIH19KVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwic2VhcmNoLnJlY2VudFNlYXJjaCB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyB8IGhpZ2hMaWdodFRleHQgOiBzZWFyY2hUZXh0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICh7eyBjb252ZXJ0VG9Mb2NhbFRpbWUoc2VhcmNoLmNyZWF0ZWREYXRlVGltZSkgfCB0aW1lYWdvIH19KVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGluLWhlYWRlciBcIiAqbmdJZj1cIiFzZWFyY2hUZXh0ICYmIHNlYXJjaEJ5SWRcIj5cclxuICAgICAgUGxlYXNlIGVudGVyIHVuaXF1ZSBpZCBhbmQgY2xpY2sgZW50ZXIgZm9yIG5hdmlnYXRpbmcgdG8gY29ycmVzcGluZyBwYWdlXHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIGluLWhlYWRlciBcIiAqbmdJZj1cIiFzZWFyY2hUZXh0ICYmIHNlYXJjaEJ5VGV4dFwiID5cclxuICAgIFBsZWFzZSBlbnRlciB0ZXh0IHRvIHJldHJlaXZlIGRhdGEgYnkgZmlsdGVyaW5nXHJcbiAgPC9kaXY+IC0tPlxyXG4gIFxyXG5cclxuICA8c2F0LXBvcG92ZXIgYmFja2Ryb3BDbGFzcz1cImJhY2tkcm9wLWNvbG9yXCIgaGFzQmFja2Ryb3AgI2FkZFdvcmtzcGFjZSB2ZXJ0aWNhbEFsaWduPVwiYmVsb3dcIiBob3Jpem9udGFsQWxpZ249XCJlbmRcIlxyXG4gICAgW2ludGVyYWN0aXZlQ2xvc2VdPVwiZmFsc2VcIj5cclxuICAgIDxtYXQtY2FyZCBjbGFzcz1cImZpbHRlci1kYXRhIHAtMFwiPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGUgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlLXRleHQgbWF0LWJnLXByaW1hcnkgcC0wNSBtYi0xXCI+XHJcbiAgICAgICAgICB7eyAnQVBQLkFERERBU0hCT0FSRFRJVExFJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIndvcmtzcGFjZUZvcm1cIiBub3ZhbGlkYXRlIChzdWJtaXQpPVwid29ya3NwYWNlRm9ybS52YWxpZCAmJiB1cHNlcnRXb3Jrc3BhY2UoKVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwie3sgJ0hSTUFOQUdBTUVOVC5OQU1FJyB8IHRyYW5zbGF0ZX19KlwiIGZvcm1Db250cm9sTmFtZT1cIndvcmtzcGFjZU5hbWVcIiAvPlxyXG4gICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwid29ya3NwYWNlRm9ybS5nZXQoJ3dvcmtzcGFjZU5hbWUnKS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiB3b3Jrc3BhY2VGb3JtLmdldCgnd29ya3NwYWNlTmFtZScpLnRvdWNoZWQgXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnQVBQLkRBU0hCT0FSRE5BTUVSRVFVSVJFRCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwid29ya3NwYWNlRm9ybS5nZXQoJ3dvcmtzcGFjZU5hbWUnKS5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdBUFAuREFTSEJPQVJETkFNRUxFTkdUSEVYQ0VFRCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIHJvd3M9XCIyXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0NPTVBBTllTRVRUSU5HUy5ERVNDUklQVElPTicgfCB0cmFuc2xhdGUgfX1cIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwid29ya3NwYWNlRm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJykuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmIHdvcmtzcGFjZUZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpLnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdBUFAuQ1VTVE9NQVBQREVTQ1JJUFRJT05NQVhMRU5HVEhFUlJPUicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0ZWRSb2xlc1wiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlU2VsZWN0ZWRSb2xlc0ZuXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1dJREdFVFMuVklFV1JPTEVTJyB8IHRyYW5zbGF0ZSB9fVwiIG11bHRpcGxlIHJlcXVpcmVkPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gI2FsbFNlbGVjdGVkIChjbGljayk9XCJ0b2dnbGVBbGxSb2xlc1NlbGVjdGVkKClcIiBbdmFsdWVdPVwiMFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnUEVSTUlTU0lPTk1BTkFHRU1FTlQuU0VMRUNUQUxMJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJyb2xlcy5yb2xlSWRcIiAqbmdGb3I9XCJsZXQgcm9sZXMgb2Ygcm9sZXNEcm9wRG93blwiICNhbGxTZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUm9sZXNQZXJPbmUoYWxsU2VsZWN0ZWQudmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHJvbGVzLnJvbGVOYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwid29ya3NwYWNlRm9ybS5nZXQoJ3NlbGVjdGVkUm9sZXMnKS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiB3b3Jrc3BhY2VGb3JtLmdldCgnc2VsZWN0ZWRSb2xlcycpLnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgIHt7ICdBUFAuU0VMRUNUQU5ZUk9MRScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImVkaXRSb2xlSWRzXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVFZGl0U2VsZWN0ZWRSb2xlc0ZuXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1dJREdFVFMuRURJVFJPTEVTJyB8IHRyYW5zbGF0ZSB9fVwiIG11bHRpcGxlPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gI2FsbEVkaXRTZWxlY3RlZCAoY2xpY2spPVwidG9nZ2xlRWRpdEFsbFJvbGVzU2VsZWN0ZWQoKVwiIFt2YWx1ZV09XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7ICdQRVJNSVNTSU9OTUFOQUdFTUVOVC5TRUxFQ1RBTEwnIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInJvbGUucm9sZUlkXCIgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXNEcm9wRG93blwiICNhbGxFZGl0U2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUVkaXRSb2xlc1Blck9uZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHJvbGUucm9sZU5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJkZWxldGVSb2xlSWRzXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVEZWxldGVTZWxlY3RlZFJvbGVzRm5cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnV0lER0VUUy5ERUxFVEVST0xFUycgfCB0cmFuc2xhdGUgfX1cIiBtdWx0aXBsZT5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxEZWxldGVTZWxlY3RlZCAoY2xpY2spPVwidG9nZ2xlRGVsZXRlQWxsUm9sZXNTZWxlY3RlZCgpXCIgW3ZhbHVlXT1cIjBcIj5cclxuICAgICAgICAgICAgICAgICAge3sgJ1BFUk1JU1NJT05NQU5BR0VNRU5ULlNFTEVDVEFMTCcgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwicm9sZS5yb2xlSWRcIiAqbmdGb3I9XCJsZXQgcm9sZSBvZiByb2xlc0Ryb3BEb3duXCIgI2FsbERlbGV0ZVNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZWxldGVSb2xlc1Blck9uZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHJvbGUucm9sZU5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXItMVwiIG1hdC1idXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ1cHNlcnRXb3Jrc3BhY2UoKVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiF3b3Jrc3BhY2VGb3JtLnZhbGlkXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImRhc2hib2FyZFVwZGF0ZUluUHJvZ3Jlc3NcIj5cclxuICAgICAgICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJtci0wNVwiIGljb249XCJwbHVzXCI+PC9mYS1pY29uPiB7eyAnU0FWRScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlQWRkV29ya3NwYWNlRGlhbG9nKClcIj5cclxuICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cIm1yLTA1XCIgaWNvbj1cInRpbWVzXCI+PC9mYS1pY29uPiB7eyAnQ0FOQ0VMJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICA8L3NhdC1wb3BvdmVyPlxyXG5cclxuXHJcbiAgPHNhdC1wb3BvdmVyICNwIGhhc0JhY2tkcm9wIFtpbnRlcmFjdGl2ZUNsb3NlXT1cInRydWVcIiB2ZXJ0aWNhbEFsaWduPVwiYWJvdmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLXdyYXBwZXJcIj5cclxuICAgICAgPHRhYmxlPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0ZD5DdHJsICsgUTogPC90ZD5cclxuICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxyXG4gICAgICAgICAgPHRkPiB7eyAnU0hFTEwuVE9PUEVOU0VBUkNITUVOVScgfCB0cmFuc2xhdGV9fTwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICA8dGQ+Q3RybCArIEI6IDwvdGQ+XHJcbiAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD5cclxuICAgICAgICAgIDx0ZD4ge3sgJ1NIRUxMLlRPT1BFTkdPQUxTQU5EVVNFUlMnIHwgdHJhbnNsYXRlfX08L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgPHRkPkN0cmwgKyBZOiA8L3RkPlxyXG4gICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+XHJcbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT1NFQVJDSEJZSUQnIHwgdHJhbnNsYXRlfX08L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgPHRkPkN0cmwgKyBNOiA8L3RkPlxyXG4gICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+XHJcbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT0NMT1NFTUVOVScgfCB0cmFuc2xhdGV9fTwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2F0LXBvcG92ZXI+XHJcblxyXG4gIDxtYXQtc3Bpbm5lciAqbmdJZj1cInNlYXJjaEJ5VGV4dExvYWRpbmcgJiYgZGlzcGxheVwiIGNsYXNzPVwic3Bpbm5lci1jbGFzc1wiIFtkaWFtZXRlcl09XCIxMDBcIj48L21hdC1zcGlubmVyPiJdfQ==
|
|
2980
|
+
MenuComponent.ɵfac = function MenuComponent_Factory(t) { return new (t || MenuComponent)(i0.ɵɵdirectiveInject(i1.Store), i0.ɵɵdirectiveInject(i2.CookieService), i0.ɵɵdirectiveInject(i3.Router), i0.ɵɵdirectiveInject(i4.ToastrService), i0.ɵɵdirectiveInject(i5.TranslateService), i0.ɵɵdirectiveInject(i6.AuthenticationService), i0.ɵɵdirectiveInject(i3.ActivatedRoute), i0.ɵɵdirectiveInject(i7.MatDialog), i0.ɵɵdirectiveInject(i8.RecentSearchService), i0.ɵɵdirectiveInject(i9.Location), i0.ɵɵdirectiveInject(i10.ThemeService), i0.ɵɵdirectiveInject(i11.Actions), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(WINDOW), i0.ɵɵdirectiveInject(i12.GoogleAnalyticsService), i0.ɵɵdirectiveInject(i13.CommonService)); };
|
|
2981
|
+
MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent, selectors: [["app-menu"]], viewQuery: function MenuComponent_Query(rf, ctx) { if (rf & 1) {
|
|
2982
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
2983
|
+
i0.ɵɵviewQuery(_c1, 5);
|
|
2984
|
+
i0.ɵɵviewQuery(_c2, 5);
|
|
2985
|
+
i0.ɵɵviewQuery(_c3, 5);
|
|
2986
|
+
i0.ɵɵviewQuery(_c4, 5);
|
|
2987
|
+
i0.ɵɵviewQuery(_c5, 5);
|
|
2988
|
+
i0.ɵɵviewQuery(_c6, 5);
|
|
2989
|
+
i0.ɵɵviewQuery(_c7, 5);
|
|
2990
|
+
i0.ɵɵviewQuery(_c8, 5);
|
|
2991
|
+
i0.ɵɵviewQuery(_c9, 5);
|
|
2992
|
+
} if (rf & 2) {
|
|
2993
|
+
let _t;
|
|
2994
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menuTrigger = _t.first);
|
|
2995
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.element = _t.first);
|
|
2996
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.workspaceElement = _t.first);
|
|
2997
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menuElement = _t.first);
|
|
2998
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.addWorkSpacePopOver = _t.first);
|
|
2999
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.allSelected = _t.first);
|
|
3000
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.allEditSelected = _t.first);
|
|
3001
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.allDeleteSelected = _t.first);
|
|
3002
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.infoPopOver = _t.first);
|
|
3003
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.openMenuPopOver = _t);
|
|
3004
|
+
} }, hostBindings: function MenuComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
3005
|
+
i0.ɵɵlistener("keydown.control.q", function MenuComponent_keydown_control_q_HostBindingHandler() { return ctx.keyOpenEvent(); }, false, i0.ɵɵresolveDocument)("keydown.control.m", function MenuComponent_keydown_control_m_HostBindingHandler() { return ctx.keyCloseEvent(); }, false, i0.ɵɵresolveDocument)("keydown.control.b", function MenuComponent_keydown_control_b_HostBindingHandler() { return ctx.remoteSearchByText(); }, false, i0.ɵɵresolveDocument)("keydown.control.y", function MenuComponent_keydown_control_y_HostBindingHandler() { return ctx.remoteSearchById(); }, false, i0.ɵɵresolveDocument);
|
|
3006
|
+
} }, inputs: { reloadAll: ["reload", "reloadAll"] }, outputs: { isOpened: "isOpened", openNewDashboard: "openNewDashboard" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 128, vars: 93, consts: [["type", "submit", "mat-icon-button", "", "fxHide.gt-xs", "", "fxShow", "", 1, "visibles", 3, "matMenuTriggerFor"], [1, "newMenu"], ["fxFlex", "", "fxHide.gt-xs", "", "fxShow", "", 1, "newLogo", "default-bg", "top-logo-bg", "newminilogo", "zoom-image-hover"], ["alt", "", "id", "mini-logo-topbar", 2, "width", "30px", "height", "30px", 3, "src", "click"], ["fxFlex", "", "fxHide", "", "fxShow.gt-xs", "", 1, "newLogo", "top-logo-bg", "apps-button", "zoom-image-hover", 2, "left", "0px"], ["id", "main-logo-topbar", 1, "img-height-main-logo-topbar", 2, "cursor", "pointer", "left", "20px", "left", "20px", "position", "relative", 3, "src", "click"], ["yPosition", "below", 1, "filter-panel", 2, "height", "auto", 3, "click"], ["menus", "matMenu"], [4, "ngFor", "ngForOf"], ["style", "position: relative;\nleft: 90%", "class", "store-icom mat-icon-button", 3, "ngClass", 4, "ngIf"], [1, "SearchBox", "dropdown", 2, "position", "absolute !important"], ["class", "mat-color-accent input-group-addon", 4, "ngIf"], ["type", "text", "autocomplete", "off", 1, "SearchBox-input", "dropbtn", 3, "placeholder", "ngModel", "ngModelChange", "input", "click", "focus", "blur", "keydown.enter", "keydown.arrowdown", "keydown.arrowup", "keydown.arrowleft", "keydown.arrowright"], ["element", ""], [1, "SearchBox-button"], [1, "close_icon_search"], [4, "ngIf"], ["class", "icon-button mr-05", "aria-hidden", "false", "style", "cursor:pointer", 3, "click", 4, "ngIf"], ["color", "primary", 1, "SearchBox-icon", "icon-color", "mt-lg-n2", "mr-05", "info-class", 3, "satPopoverAnchorFor", "click"], ["infoPopOver", "satPopoverAnchor"], ["color", "primary", 1, "SearchBox-icon", "icon-color", "mt-lg-n2"], [1, "dropdown-content", 3, "ngClass"], ["color", "primary", "mode", "indeterminate", 4, "ngIf"], [1, "row", "rowselect"], ["class", "column columnselect-next pl-05", 4, "ngIf"], ["class", "column pl-05", 4, "ngIf"], ["class", "column columnselect-apps ml-0", 4, "ngIf"], ["class", "columnselect-next ml-0", 4, "ngIf"], ["backdropClass", "backdrop-color", "hasBackdrop", "", "verticalAlign", "below", "horizontalAlign", "end", 3, "interactiveClose"], ["addWorkspace", ""], [1, "filter-data", "p-0"], [1, "text-center"], [1, "card-title-text", "mat-bg-primary", "p-05", "mb-1"], ["novalidate", "", 3, "formGroup", "submit"], [1, "card-content"], [1, "full-width"], ["matInput", "", "formControlName", "workspaceName", 3, "placeholder"], ["matInput", "", "formControlName", "description", "rows", "2", 3, "placeholder"], [1, "full-width", 3, "click"], ["formControlName", "selectedRoles", "multiple", "", "required", "", 3, "compareWith", "placeholder"], [3, "value", "click"], ["allSelected", ""], [3, "value", "click", 4, "ngFor", "ngForOf"], ["formControlName", "editRoleIds", "multiple", "", 3, "compareWith", "placeholder"], ["allEditSelected", ""], ["formControlName", "deleteRoleIds", "multiple", "", 3, "compareWith", "placeholder"], ["allDeleteSelected", ""], ["mat-button", "", "mat-raised-button", "", "color", "primary", "type", "button", 1, "mr-1", 3, "disabled", "click"], ["icon", "plus", 1, "mr-05"], ["mat-button", "", "mat-raised-button", "", "type", "button", 3, "click"], ["icon", "times", 1, "mr-05"], ["hasBackdrop", "", "verticalAlign", "above", 3, "interactiveClose"], ["p", ""], [1, "tooltip-wrapper"], ["class", "spinner-class", 3, "diameter", 4, "ngIf"], ["mat-menu-item", "", "routerLinkActive", "item-active", 3, "routerLink", "click"], [1, "store-icom", "mat-icon-button", 2, "position", "relative", "left", "90%", 3, "ngClass"], ["icon", "store", "matTooltipClass", "tooltipClass-mat", 1, "mat-color-accent", "cursor-pointer", "theme-navbar-icon-color", 2, "font-size", "20px !important", 3, "matTooltip", "click"], [1, "mat-color-accent", "input-group-addon"], ["aria-hidden", "false", 1, "icon-button", "mr-05", 2, "cursor", "pointer", 3, "click"], ["color", "primary", "mode", "indeterminate"], [1, "column", "columnselect-next", "pl-05"], [1, "in-header"], ["id", "style-1", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], [3, "background-color", 4, "ngFor", "ngForOf"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "routerLink", "ngClass", "routerLinkActiveOptions", "matTooltip", "mousedown"], [1, "icon-color", 3, "ngClass"], [3, "innerHTML"], [1, "column", "pl-05"], [1, "columnselect-next", "ml-0"], ["icon", "plus-square", "class", "mat-color-accent cursor-pointer", 3, "matTooltip", "satPopoverAnchorFor", "click", 4, "ngIf"], ["id", "style-2", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["icon", "plus-square", 1, "mat-color-accent", "cursor-pointer", 3, "matTooltip", "satPopoverAnchorFor", "click"], ["class", "scroll", 3, "background-color", 4, "ngFor", "ngForOf"], [1, "scroll"], ["workspaceElement", ""], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "ngClass", "routerLink", "matTooltip", "mousedown", "click"], [1, "column", "columnselect-apps", "ml-0"], ["id", "style-3", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "routerLinkActiveOptions", "routerLink", "ngClass", "matTooltip", "mousedown"], ["id", "style-7", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "routerLinkActiveOptions", "ngClass", "matTooltip", "mousedown"], ["class", "in-header", 4, "ngIf"], ["id", "style-5", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["id", "style-6", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["id", "style-4", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["style", "background-color: white;", 3, "background-color", 4, "ngFor", "ngForOf"], [2, "background-color", "white"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "ngClass", "routerLink", "matTooltip", "mousedown"], ["fxLayout", "row"], ["fxLayoutAlign", "start center", "size", "20", 3, "name", "matTooltip", "src", "isRound", "click"], [1, "ml-05"], [2, "background-color", "white !important", "height", "445px !important"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "ngClass", "matTooltip", "mousedown"], [1, "spinner-class", 3, "diameter"]], template: function MenuComponent_Template(rf, ctx) { if (rf & 1) {
|
|
3007
|
+
const _r109 = i0.ɵɵgetCurrentView();
|
|
3008
|
+
i0.ɵɵelementStart(0, "button", 0);
|
|
3009
|
+
i0.ɵɵelementStart(1, "mat-icon", 1);
|
|
3010
|
+
i0.ɵɵtext(2, "menu");
|
|
3011
|
+
i0.ɵɵelementEnd();
|
|
3012
|
+
i0.ɵɵelementEnd();
|
|
3013
|
+
i0.ɵɵelementStart(3, "div", 2);
|
|
3014
|
+
i0.ɵɵelementStart(4, "img", 3);
|
|
3015
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_img_click_4_listener() { return ctx.getAllMenuItems(); });
|
|
3016
|
+
i0.ɵɵelementEnd();
|
|
3017
|
+
i0.ɵɵelementEnd();
|
|
3018
|
+
i0.ɵɵelementStart(5, "div", 4);
|
|
3019
|
+
i0.ɵɵelementStart(6, "img", 5);
|
|
3020
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_img_click_6_listener() { return ctx.getAllMenuItems(); });
|
|
3021
|
+
i0.ɵɵelementEnd();
|
|
3022
|
+
i0.ɵɵelementEnd();
|
|
3023
|
+
i0.ɵɵelementStart(7, "mat-menu", 6, 7);
|
|
3024
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_menu_click_7_listener($event) { return $event.stopPropagation(); });
|
|
3025
|
+
i0.ɵɵtemplate(9, MenuComponent_div_9_Template, 2, 1, "div", 8);
|
|
3026
|
+
i0.ɵɵelementEnd();
|
|
3027
|
+
i0.ɵɵtemplate(10, MenuComponent_div_10_Template, 3, 4, "div", 9);
|
|
3028
|
+
i0.ɵɵelementStart(11, "div", 10);
|
|
3029
|
+
i0.ɵɵtemplate(12, MenuComponent_span_12_Template, 2, 0, "span", 11);
|
|
3030
|
+
i0.ɵɵtemplate(13, MenuComponent_span_13_Template, 2, 0, "span", 11);
|
|
3031
|
+
i0.ɵɵelementStart(14, "input", 12, 13);
|
|
3032
|
+
i0.ɵɵlistener("ngModelChange", function MenuComponent_Template_input_ngModelChange_14_listener($event) { return ctx.searchText = $event; })("input", function MenuComponent_Template_input_input_14_listener($event) { return ctx.SearchItem($event); })("click", function MenuComponent_Template_input_click_14_listener($event) { return ctx.SearchItem($event); })("focus", function MenuComponent_Template_input_focus_14_listener() { return ctx.onFocus(); })("blur", function MenuComponent_Template_input_blur_14_listener() { return ctx.Set(); })("keydown.enter", function MenuComponent_Template_input_keydown_enter_14_listener($event) { return ctx.navigate($event, ctx.itemClicked); })("keydown.arrowdown", function MenuComponent_Template_input_keydown_arrowdown_14_listener() { return ctx.arrowDownEvent(); })("keydown.arrowup", function MenuComponent_Template_input_keydown_arrowup_14_listener() { return ctx.arrowUpEvent(); })("keydown.arrowleft", function MenuComponent_Template_input_keydown_arrowleft_14_listener() { return ctx.arrowLeftEvent(); })("keydown.arrowright", function MenuComponent_Template_input_keydown_arrowright_14_listener() { return ctx.arrowRightEvent(); });
|
|
3033
|
+
i0.ɵɵpipe(16, "translate");
|
|
3034
|
+
i0.ɵɵelementEnd();
|
|
3035
|
+
i0.ɵɵelementStart(17, "button", 14);
|
|
3036
|
+
i0.ɵɵelementStart(18, "span", 15);
|
|
3037
|
+
i0.ɵɵtemplate(19, MenuComponent_span_19_Template, 1, 0, "span", 16);
|
|
3038
|
+
i0.ɵɵtemplate(20, MenuComponent_mat_icon_20_Template, 2, 0, "mat-icon", 17);
|
|
3039
|
+
i0.ɵɵelementEnd();
|
|
3040
|
+
i0.ɵɵelementStart(21, "mat-icon", 18, 19);
|
|
3041
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_icon_click_21_listener() { i0.ɵɵrestoreView(_r109); const _r8 = i0.ɵɵreference(22); return ctx.openInfo(_r8); });
|
|
3042
|
+
i0.ɵɵtext(23, "info");
|
|
3043
|
+
i0.ɵɵelementEnd();
|
|
3044
|
+
i0.ɵɵelementStart(24, "mat-icon", 20);
|
|
3045
|
+
i0.ɵɵtext(25, "search");
|
|
3046
|
+
i0.ɵɵelementEnd();
|
|
3047
|
+
i0.ɵɵelementEnd();
|
|
3048
|
+
i0.ɵɵelementStart(26, "div", 21);
|
|
3049
|
+
i0.ɵɵtemplate(27, MenuComponent_mat_progress_bar_27_Template, 1, 0, "mat-progress-bar", 22);
|
|
3050
|
+
i0.ɵɵelementStart(28, "div", 23);
|
|
3051
|
+
i0.ɵɵtemplate(29, MenuComponent_div_29_Template, 6, 4, "div", 24);
|
|
3052
|
+
i0.ɵɵtemplate(30, MenuComponent_div_30_Template, 2, 1, "div", 25);
|
|
3053
|
+
i0.ɵɵtemplate(31, MenuComponent_div_31_Template, 6, 4, "div", 26);
|
|
3054
|
+
i0.ɵɵtemplate(32, MenuComponent_div_32_Template, 5, 1, "div", 27);
|
|
3055
|
+
i0.ɵɵtemplate(33, MenuComponent_div_33_Template, 5, 3, "div", 27);
|
|
3056
|
+
i0.ɵɵtemplate(34, MenuComponent_div_34_Template, 6, 4, "div", 27);
|
|
3057
|
+
i0.ɵɵtemplate(35, MenuComponent_div_35_Template, 5, 1, "div", 26);
|
|
3058
|
+
i0.ɵɵtemplate(36, MenuComponent_div_36_Template, 7, 8, "div", 26);
|
|
3059
|
+
i0.ɵɵelementEnd();
|
|
3060
|
+
i0.ɵɵelementStart(37, "sat-popover", 28, 29);
|
|
3061
|
+
i0.ɵɵelementStart(39, "mat-card", 30);
|
|
3062
|
+
i0.ɵɵelementStart(40, "mat-card-title", 31);
|
|
3063
|
+
i0.ɵɵelementStart(41, "div", 32);
|
|
3064
|
+
i0.ɵɵtext(42);
|
|
3065
|
+
i0.ɵɵpipe(43, "translate");
|
|
3066
|
+
i0.ɵɵelementEnd();
|
|
3067
|
+
i0.ɵɵelementEnd();
|
|
3068
|
+
i0.ɵɵelementStart(44, "mat-card-content");
|
|
3069
|
+
i0.ɵɵelementStart(45, "form", 33);
|
|
3070
|
+
i0.ɵɵlistener("submit", function MenuComponent_Template_form_submit_45_listener() { return ctx.workspaceForm.valid && ctx.upsertWorkspace(); });
|
|
3071
|
+
i0.ɵɵelementStart(46, "div", 34);
|
|
3072
|
+
i0.ɵɵelementStart(47, "mat-form-field", 35);
|
|
3073
|
+
i0.ɵɵelement(48, "input", 36);
|
|
3074
|
+
i0.ɵɵpipe(49, "translate");
|
|
3075
|
+
i0.ɵɵtemplate(50, MenuComponent_mat_error_50_Template, 3, 3, "mat-error", 16);
|
|
3076
|
+
i0.ɵɵtemplate(51, MenuComponent_mat_error_51_Template, 3, 3, "mat-error", 16);
|
|
3077
|
+
i0.ɵɵelementEnd();
|
|
3078
|
+
i0.ɵɵelementStart(52, "mat-form-field", 35);
|
|
3079
|
+
i0.ɵɵelement(53, "textarea", 37);
|
|
3080
|
+
i0.ɵɵpipe(54, "translate");
|
|
3081
|
+
i0.ɵɵtemplate(55, MenuComponent_mat_error_55_Template, 3, 3, "mat-error", 16);
|
|
3082
|
+
i0.ɵɵelementEnd();
|
|
3083
|
+
i0.ɵɵelementStart(56, "mat-form-field", 38);
|
|
3084
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_form_field_click_56_listener($event) { return $event.stopPropagation(); });
|
|
3085
|
+
i0.ɵɵelementStart(57, "mat-select", 39);
|
|
3086
|
+
i0.ɵɵpipe(58, "translate");
|
|
3087
|
+
i0.ɵɵelementStart(59, "mat-option", 40, 41);
|
|
3088
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_59_listener() { return ctx.toggleAllRolesSelected(); });
|
|
3089
|
+
i0.ɵɵtext(61);
|
|
3090
|
+
i0.ɵɵpipe(62, "translate");
|
|
3091
|
+
i0.ɵɵelementEnd();
|
|
3092
|
+
i0.ɵɵtemplate(63, MenuComponent_mat_option_63_Template, 3, 2, "mat-option", 42);
|
|
3093
|
+
i0.ɵɵelementEnd();
|
|
3094
|
+
i0.ɵɵtemplate(64, MenuComponent_mat_error_64_Template, 3, 3, "mat-error", 16);
|
|
3095
|
+
i0.ɵɵelementEnd();
|
|
3096
|
+
i0.ɵɵelementStart(65, "mat-form-field", 35);
|
|
3097
|
+
i0.ɵɵelementStart(66, "mat-select", 43);
|
|
3098
|
+
i0.ɵɵpipe(67, "translate");
|
|
3099
|
+
i0.ɵɵelementStart(68, "mat-option", 40, 44);
|
|
3100
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_68_listener() { return ctx.toggleEditAllRolesSelected(); });
|
|
3101
|
+
i0.ɵɵtext(70);
|
|
3102
|
+
i0.ɵɵpipe(71, "translate");
|
|
3103
|
+
i0.ɵɵelementEnd();
|
|
3104
|
+
i0.ɵɵtemplate(72, MenuComponent_mat_option_72_Template, 3, 2, "mat-option", 42);
|
|
3105
|
+
i0.ɵɵelementEnd();
|
|
3106
|
+
i0.ɵɵelementEnd();
|
|
3107
|
+
i0.ɵɵelementStart(73, "mat-form-field", 35);
|
|
3108
|
+
i0.ɵɵelementStart(74, "mat-select", 45);
|
|
3109
|
+
i0.ɵɵpipe(75, "translate");
|
|
3110
|
+
i0.ɵɵelementStart(76, "mat-option", 40, 46);
|
|
3111
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_76_listener() { return ctx.toggleDeleteAllRolesSelected(); });
|
|
3112
|
+
i0.ɵɵtext(78);
|
|
3113
|
+
i0.ɵɵpipe(79, "translate");
|
|
3114
|
+
i0.ɵɵelementEnd();
|
|
3115
|
+
i0.ɵɵtemplate(80, MenuComponent_mat_option_80_Template, 3, 2, "mat-option", 42);
|
|
3116
|
+
i0.ɵɵelementEnd();
|
|
3117
|
+
i0.ɵɵelementEnd();
|
|
3118
|
+
i0.ɵɵelementEnd();
|
|
3119
|
+
i0.ɵɵelementStart(81, "div", 31);
|
|
3120
|
+
i0.ɵɵelementStart(82, "button", 47);
|
|
3121
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_button_click_82_listener() { return ctx.upsertWorkspace(); });
|
|
3122
|
+
i0.ɵɵtemplate(83, MenuComponent_mat_progress_bar_83_Template, 1, 0, "mat-progress-bar", 22);
|
|
3123
|
+
i0.ɵɵelement(84, "fa-icon", 48);
|
|
3124
|
+
i0.ɵɵtext(85);
|
|
3125
|
+
i0.ɵɵpipe(86, "translate");
|
|
3126
|
+
i0.ɵɵelementEnd();
|
|
3127
|
+
i0.ɵɵelementStart(87, "button", 49);
|
|
3128
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_button_click_87_listener() { return ctx.closeAddWorkspaceDialog(); });
|
|
3129
|
+
i0.ɵɵelement(88, "fa-icon", 50);
|
|
3130
|
+
i0.ɵɵtext(89);
|
|
3131
|
+
i0.ɵɵpipe(90, "translate");
|
|
3132
|
+
i0.ɵɵelementEnd();
|
|
3133
|
+
i0.ɵɵelementEnd();
|
|
3134
|
+
i0.ɵɵelementEnd();
|
|
3135
|
+
i0.ɵɵelementEnd();
|
|
3136
|
+
i0.ɵɵelementEnd();
|
|
3137
|
+
i0.ɵɵelementEnd();
|
|
3138
|
+
i0.ɵɵelementStart(91, "sat-popover", 51, 52);
|
|
3139
|
+
i0.ɵɵelementStart(93, "div", 53);
|
|
3140
|
+
i0.ɵɵelementStart(94, "table");
|
|
3141
|
+
i0.ɵɵelementStart(95, "tr");
|
|
3142
|
+
i0.ɵɵelementStart(96, "td");
|
|
3143
|
+
i0.ɵɵtext(97, "Ctrl + Q: ");
|
|
3144
|
+
i0.ɵɵelementEnd();
|
|
3145
|
+
i0.ɵɵelementStart(98, "td");
|
|
3146
|
+
i0.ɵɵtext(99, "\u00A0");
|
|
3147
|
+
i0.ɵɵelementEnd();
|
|
3148
|
+
i0.ɵɵelementStart(100, "td");
|
|
3149
|
+
i0.ɵɵtext(101);
|
|
3150
|
+
i0.ɵɵpipe(102, "translate");
|
|
3151
|
+
i0.ɵɵelementEnd();
|
|
3152
|
+
i0.ɵɵelementEnd();
|
|
3153
|
+
i0.ɵɵelementStart(103, "tr");
|
|
3154
|
+
i0.ɵɵelementStart(104, "td");
|
|
3155
|
+
i0.ɵɵtext(105, "Ctrl + B: ");
|
|
3156
|
+
i0.ɵɵelementEnd();
|
|
3157
|
+
i0.ɵɵelementStart(106, "td");
|
|
3158
|
+
i0.ɵɵtext(107, "\u00A0");
|
|
3159
|
+
i0.ɵɵelementEnd();
|
|
3160
|
+
i0.ɵɵelementStart(108, "td");
|
|
3161
|
+
i0.ɵɵtext(109);
|
|
3162
|
+
i0.ɵɵpipe(110, "translate");
|
|
3163
|
+
i0.ɵɵelementEnd();
|
|
3164
|
+
i0.ɵɵelementEnd();
|
|
3165
|
+
i0.ɵɵelementStart(111, "tr");
|
|
3166
|
+
i0.ɵɵelementStart(112, "td");
|
|
3167
|
+
i0.ɵɵtext(113, "Ctrl + Y: ");
|
|
3168
|
+
i0.ɵɵelementEnd();
|
|
3169
|
+
i0.ɵɵelementStart(114, "td");
|
|
3170
|
+
i0.ɵɵtext(115, "\u00A0");
|
|
3171
|
+
i0.ɵɵelementEnd();
|
|
3172
|
+
i0.ɵɵelementStart(116, "td");
|
|
3173
|
+
i0.ɵɵtext(117);
|
|
3174
|
+
i0.ɵɵpipe(118, "translate");
|
|
3175
|
+
i0.ɵɵelementEnd();
|
|
3176
|
+
i0.ɵɵelementEnd();
|
|
3177
|
+
i0.ɵɵelementStart(119, "tr");
|
|
3178
|
+
i0.ɵɵelementStart(120, "td");
|
|
3179
|
+
i0.ɵɵtext(121, "Ctrl + M: ");
|
|
3180
|
+
i0.ɵɵelementEnd();
|
|
3181
|
+
i0.ɵɵelementStart(122, "td");
|
|
3182
|
+
i0.ɵɵtext(123, "\u00A0");
|
|
3183
|
+
i0.ɵɵelementEnd();
|
|
3184
|
+
i0.ɵɵelementStart(124, "td");
|
|
3185
|
+
i0.ɵɵtext(125);
|
|
3186
|
+
i0.ɵɵpipe(126, "translate");
|
|
3187
|
+
i0.ɵɵelementEnd();
|
|
3188
|
+
i0.ɵɵelementEnd();
|
|
3189
|
+
i0.ɵɵelementEnd();
|
|
3190
|
+
i0.ɵɵelementEnd();
|
|
3191
|
+
i0.ɵɵelementEnd();
|
|
3192
|
+
i0.ɵɵtemplate(127, MenuComponent_mat_spinner_127_Template, 1, 1, "mat-spinner", 54);
|
|
3193
|
+
i0.ɵɵelementEnd();
|
|
3194
|
+
i0.ɵɵelementEnd();
|
|
3195
|
+
} if (rf & 2) {
|
|
3196
|
+
const _r0 = i0.ɵɵreference(8);
|
|
3197
|
+
const _r30 = i0.ɵɵreference(92);
|
|
3198
|
+
i0.ɵɵproperty("matMenuTriggerFor", _r0);
|
|
3199
|
+
i0.ɵɵadvance(4);
|
|
3200
|
+
i0.ɵɵpropertyInterpolate("src", ctx.companyMiniLogo, i0.ɵɵsanitizeUrl);
|
|
3201
|
+
i0.ɵɵadvance(2);
|
|
3202
|
+
i0.ɵɵpropertyInterpolate("src", ctx.companyMainLogo, i0.ɵɵsanitizeUrl);
|
|
3203
|
+
i0.ɵɵadvance(3);
|
|
3204
|
+
i0.ɵɵproperty("ngForOf", ctx.items);
|
|
3205
|
+
i0.ɵɵadvance(1);
|
|
3206
|
+
i0.ɵɵproperty("ngIf", ctx.canAccess_feature_DragApps);
|
|
3207
|
+
i0.ɵɵadvance(2);
|
|
3208
|
+
i0.ɵɵproperty("ngIf", ctx.searchByText);
|
|
3209
|
+
i0.ɵɵadvance(1);
|
|
3210
|
+
i0.ɵɵproperty("ngIf", ctx.searchById);
|
|
3211
|
+
i0.ɵɵadvance(1);
|
|
3212
|
+
i0.ɵɵclassProp("hide-placeholder", ctx.searchByText || ctx.searchById);
|
|
3213
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(16, 58, "APP.STARTHEREORCLICKCONTROL+Q"));
|
|
3214
|
+
i0.ɵɵproperty("ngModel", ctx.searchText);
|
|
3215
|
+
i0.ɵɵadvance(5);
|
|
3216
|
+
i0.ɵɵproperty("ngIf", !ctx.searchText);
|
|
3217
|
+
i0.ɵɵadvance(1);
|
|
3218
|
+
i0.ɵɵproperty("ngIf", ctx.searchText);
|
|
3219
|
+
i0.ɵɵadvance(1);
|
|
3220
|
+
i0.ɵɵproperty("satPopoverAnchorFor", _r30);
|
|
3221
|
+
i0.ɵɵadvance(5);
|
|
3222
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(90, _c11, ctx.display, !ctx.display));
|
|
3223
|
+
i0.ɵɵadvance(1);
|
|
3224
|
+
i0.ɵɵproperty("ngIf", ctx.loadingSearchMenuData || ctx.recentSearchesfetchInProgress || ctx.widgetsfetchInProgress);
|
|
3225
|
+
i0.ɵɵadvance(2);
|
|
3226
|
+
i0.ɵɵproperty("ngIf", ctx.items && ctx.items.length > 0 && !(ctx.searchById || ctx.searchByText));
|
|
3227
|
+
i0.ɵɵadvance(1);
|
|
3228
|
+
i0.ɵɵproperty("ngIf", !(ctx.searchById || ctx.searchByText));
|
|
3229
|
+
i0.ɵɵadvance(1);
|
|
3230
|
+
i0.ɵɵproperty("ngIf", ctx.widgets && ctx.widgets.length > 0 && !(ctx.searchById || ctx.searchByText));
|
|
3231
|
+
i0.ɵɵadvance(1);
|
|
3232
|
+
i0.ɵɵproperty("ngIf", ctx.projectList && ctx.projectList.length > 0 && ctx.searchText && ctx.searchByText);
|
|
3233
|
+
i0.ɵɵadvance(1);
|
|
3234
|
+
i0.ɵɵproperty("ngIf", ctx.userStorySearchList && ctx.userStorySearchList.length > 0 && ctx.searchText && ctx.searchByText);
|
|
3235
|
+
i0.ɵɵadvance(1);
|
|
3236
|
+
i0.ɵɵproperty("ngIf", ctx.goalSearchList && ctx.goalSearchList.length > 0 && ctx.searchText && ctx.searchByText);
|
|
3237
|
+
i0.ɵɵadvance(1);
|
|
3238
|
+
i0.ɵɵproperty("ngIf", ctx.employeeList && ctx.employeeList.length > 0 && ctx.searchText && ctx.searchByText);
|
|
3239
|
+
i0.ɵɵadvance(1);
|
|
3240
|
+
i0.ɵɵproperty("ngIf", ctx.recentSearches && ctx.recentSearches.length > 0 && !(ctx.searchById || ctx.searchByText));
|
|
3241
|
+
i0.ɵɵadvance(1);
|
|
3242
|
+
i0.ɵɵproperty("interactiveClose", false);
|
|
3243
|
+
i0.ɵɵadvance(5);
|
|
3244
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(43, 60, "APP.ADDDASHBOARDTITLE"), " ");
|
|
3245
|
+
i0.ɵɵadvance(3);
|
|
3246
|
+
i0.ɵɵproperty("formGroup", ctx.workspaceForm);
|
|
3247
|
+
i0.ɵɵadvance(3);
|
|
3248
|
+
i0.ɵɵpropertyInterpolate1("placeholder", "", i0.ɵɵpipeBind1(49, 62, "HRMANAGAMENT.NAME"), "*");
|
|
3249
|
+
i0.ɵɵadvance(2);
|
|
3250
|
+
i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("workspaceName").hasError("required") && ctx.workspaceForm.get("workspaceName").touched);
|
|
3251
|
+
i0.ɵɵadvance(1);
|
|
3252
|
+
i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("workspaceName").hasError("maxlength"));
|
|
3253
|
+
i0.ɵɵadvance(2);
|
|
3254
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(54, 64, "COMPANYSETTINGS.DESCRIPTION"));
|
|
3255
|
+
i0.ɵɵadvance(2);
|
|
3256
|
+
i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("description").hasError("maxlength") && ctx.workspaceForm.get("description").touched);
|
|
3257
|
+
i0.ɵɵadvance(2);
|
|
3258
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(58, 66, "WIDGETS.VIEWROLES"));
|
|
3259
|
+
i0.ɵɵproperty("compareWith", ctx.compareSelectedRolesFn);
|
|
3260
|
+
i0.ɵɵadvance(2);
|
|
3261
|
+
i0.ɵɵproperty("value", 0);
|
|
3262
|
+
i0.ɵɵadvance(2);
|
|
3263
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(62, 68, "PERMISSIONMANAGEMENT.SELECTALL"), "");
|
|
3264
|
+
i0.ɵɵadvance(2);
|
|
3265
|
+
i0.ɵɵproperty("ngForOf", ctx.rolesDropDown);
|
|
3266
|
+
i0.ɵɵadvance(1);
|
|
3267
|
+
i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("selectedRoles").hasError("required") && ctx.workspaceForm.get("selectedRoles").touched);
|
|
3268
|
+
i0.ɵɵadvance(2);
|
|
3269
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(67, 70, "WIDGETS.EDITROLES"));
|
|
3270
|
+
i0.ɵɵproperty("compareWith", ctx.compareEditSelectedRolesFn);
|
|
3271
|
+
i0.ɵɵadvance(2);
|
|
3272
|
+
i0.ɵɵproperty("value", 0);
|
|
3273
|
+
i0.ɵɵadvance(2);
|
|
3274
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(71, 72, "PERMISSIONMANAGEMENT.SELECTALL"), "");
|
|
3275
|
+
i0.ɵɵadvance(2);
|
|
3276
|
+
i0.ɵɵproperty("ngForOf", ctx.rolesDropDown);
|
|
3277
|
+
i0.ɵɵadvance(2);
|
|
3278
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(75, 74, "WIDGETS.DELETEROLES"));
|
|
3279
|
+
i0.ɵɵproperty("compareWith", ctx.compareDeleteSelectedRolesFn);
|
|
3280
|
+
i0.ɵɵadvance(2);
|
|
3281
|
+
i0.ɵɵproperty("value", 0);
|
|
3282
|
+
i0.ɵɵadvance(2);
|
|
3283
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(79, 76, "PERMISSIONMANAGEMENT.SELECTALL"), "");
|
|
3284
|
+
i0.ɵɵadvance(2);
|
|
3285
|
+
i0.ɵɵproperty("ngForOf", ctx.rolesDropDown);
|
|
3286
|
+
i0.ɵɵadvance(2);
|
|
3287
|
+
i0.ɵɵproperty("disabled", !ctx.workspaceForm.valid);
|
|
3288
|
+
i0.ɵɵadvance(1);
|
|
3289
|
+
i0.ɵɵproperty("ngIf", ctx.dashboardUpdateInProgress);
|
|
3290
|
+
i0.ɵɵadvance(2);
|
|
3291
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(86, 78, "SAVE"), " ");
|
|
3292
|
+
i0.ɵɵadvance(4);
|
|
3293
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(90, 80, "CANCEL"), " ");
|
|
3294
|
+
i0.ɵɵadvance(2);
|
|
3295
|
+
i0.ɵɵproperty("interactiveClose", true);
|
|
3296
|
+
i0.ɵɵadvance(10);
|
|
3297
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(102, 82, "SHELL.TOOPENSEARCHMENU"), "");
|
|
3298
|
+
i0.ɵɵadvance(8);
|
|
3299
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(110, 84, "SHELL.TOOPENGOALSANDUSERS"), "");
|
|
3300
|
+
i0.ɵɵadvance(8);
|
|
3301
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(118, 86, "SHELL.TOSEARCHBYID"), "");
|
|
3302
|
+
i0.ɵɵadvance(8);
|
|
3303
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(126, 88, "SHELL.TOCLOSEMENU"), "");
|
|
3304
|
+
i0.ɵɵadvance(2);
|
|
3305
|
+
i0.ɵɵproperty("ngIf", ctx.searchByTextLoading && ctx.display);
|
|
3306
|
+
} }, directives: [i14.MatButton, i15.DefaultShowHideDirective, i16.MatMenuTrigger, i17.MatIcon, i18.DefaultFlexDirective, i16.MatMenu, i9.NgForOf, i9.NgIf, i19.DefaultValueAccessor, i19.NgControlStatus, i19.NgModel, i20.SatPopoverAnchor, i9.NgClass, i15.DefaultClassDirective, i20.SatPopover, i21.MatCard, i21.MatCardTitle, i21.MatCardContent, i19.ɵNgNoValidate, i19.NgControlStatusGroup, i19.FormGroupDirective, i22.MatFormField, i23.MatInput, i19.FormControlName, i24.MatSelect, i19.RequiredValidator, i25.MatOption, i26.FaIconComponent, i16.MatMenuItem, i3.RouterLinkActive, i3.RouterLink, i27.MatTooltip, i28.MatProgressBar, i18.DefaultLayoutDirective, i29.SnovasysAvatarComponent, i18.DefaultLayoutAlignDirective, i22.MatError, i30.MatSpinner], pipes: [i5.TranslatePipe, i31.SoftLabelPipe, i32.HighLightTextPipe, i33.RemoveSpecialCharactersPipe, i34.FetchSizedAndCachedImagePipe, i9.SlicePipe, i35.TimeagoPipe], encapsulation: 2 });
|
|
3307
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenuComponent, [{
|
|
3308
|
+
type: Component,
|
|
3309
|
+
args: [{
|
|
3310
|
+
selector: "app-menu",
|
|
3311
|
+
templateUrl: "./menu.component.html"
|
|
3312
|
+
}]
|
|
3313
|
+
}], function () { return [{ type: i1.Store }, { type: i2.CookieService }, { type: i3.Router }, { type: i4.ToastrService }, { type: i5.TranslateService }, { type: i6.AuthenticationService }, { type: i3.ActivatedRoute }, { type: i7.MatDialog }, { type: i8.RecentSearchService }, { type: i9.Location }, { type: i10.ThemeService }, { type: i11.Actions }, { type: i0.ChangeDetectorRef }, { type: Window, decorators: [{
|
|
3314
|
+
type: Inject,
|
|
3315
|
+
args: [WINDOW]
|
|
3316
|
+
}] }, { type: i12.GoogleAnalyticsService }, { type: i13.CommonService }]; }, { openMenuPopOver: [{
|
|
3317
|
+
type: ViewChildren,
|
|
3318
|
+
args: ["openMenuPopUp"]
|
|
3319
|
+
}], menuTrigger: [{
|
|
3320
|
+
type: ViewChild,
|
|
3321
|
+
args: ["menuTrigger"]
|
|
3322
|
+
}], element: [{
|
|
3323
|
+
type: ViewChild,
|
|
3324
|
+
args: ["element"]
|
|
3325
|
+
}], workspaceElement: [{
|
|
3326
|
+
type: ViewChild,
|
|
3327
|
+
args: ["workspaceElement"]
|
|
3328
|
+
}], menuElement: [{
|
|
3329
|
+
type: ViewChild,
|
|
3330
|
+
args: ["menuElement"]
|
|
3331
|
+
}], addWorkSpacePopOver: [{
|
|
3332
|
+
type: ViewChild,
|
|
3333
|
+
args: ["addWorkspace"]
|
|
3334
|
+
}], allSelected: [{
|
|
3335
|
+
type: ViewChild,
|
|
3336
|
+
args: ["allSelected"]
|
|
3337
|
+
}], allEditSelected: [{
|
|
3338
|
+
type: ViewChild,
|
|
3339
|
+
args: ["allEditSelected"]
|
|
3340
|
+
}], allDeleteSelected: [{
|
|
3341
|
+
type: ViewChild,
|
|
3342
|
+
args: ["allDeleteSelected"]
|
|
3343
|
+
}], infoPopOver: [{
|
|
3344
|
+
type: ViewChild,
|
|
3345
|
+
args: ['infoPopOver']
|
|
3346
|
+
}], isOpened: [{
|
|
3347
|
+
type: Output
|
|
3348
|
+
}], openNewDashboard: [{
|
|
3349
|
+
type: Output
|
|
3350
|
+
}], reloadAll: [{
|
|
3351
|
+
type: Input,
|
|
3352
|
+
args: ["reload"]
|
|
3353
|
+
}], keyOpenEvent: [{
|
|
3354
|
+
type: HostListener,
|
|
3355
|
+
args: ['document:keydown.control.q', []]
|
|
3356
|
+
}], keyCloseEvent: [{
|
|
3357
|
+
type: HostListener,
|
|
3358
|
+
args: ['document:keydown.control.m', []]
|
|
3359
|
+
}], remoteSearchByText: [{
|
|
3360
|
+
type: HostListener,
|
|
3361
|
+
args: ['document:keydown.control.b', []]
|
|
3362
|
+
}], remoteSearchById: [{
|
|
3363
|
+
type: HostListener,
|
|
3364
|
+
args: ['document:keydown.control.y', []]
|
|
3365
|
+
}] }); })();
|
|
3366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXNCLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFLLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFtQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJakYsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU14RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUdqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENB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LFdBQVcsRUFBRSx1QkFBdUI7YUFDckM7MllBa0ltQyxNQUFNO3NCQUFyQyxNQUFNO3VCQUFDLE1BQU07MkZBN0hlLGVBQWU7a0JBQTdDLFlBQVk7bUJBQUMsZUFBZTtZQUNILFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUNGLE9BQU87a0JBQTVCLFNBQVM7bUJBQUMsU0FBUztZQUNXLGdCQUFnQjtrQkFBOUMsU0FBUzttQkFBQyxrQkFBa0I7WUFDSCxXQUFXO2tCQUFwQyxTQUFTO21CQUFDLGFBQWE7WUFDRyxtQkFBbUI7a0JBQTdDLFNBQVM7bUJBQUMsY0FBYztZQUNTLFdBQVc7a0JBQTVDLFNBQVM7bUJBQUMsYUFBYTtZQUNjLGVBQWU7a0JBQXBELFNBQVM7bUJBQUMsaUJBQWlCO1lBQ1ksaUJBQWlCO2tCQUF4RCxTQUFTO21CQUFDLG1CQUFtQjtZQUNKLFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUNkLFFBQVE7a0JBQWpCLE1BQU07WUFDRyxnQkFBZ0I7a0JBQXpCLE1BQU07WUF3RUgsU0FBUztrQkFEWixLQUFLO21CQUFDLFFBQVE7WUE4S2YsWUFBWTtrQkFEWCxZQUFZO21CQUFDLDRCQUE0QixFQUFFLEVBQUU7WUFXOUMsYUFBYTtrQkFEWixZQUFZO21CQUFDLDRCQUE0QixFQUFFLEVBQUU7WUFXOUMsa0JBQWtCO2tCQURqQixZQUFZO21CQUFDLDRCQUE0QixFQUFFLEVBQUU7WUFVOUMsZ0JBQWdCO2tCQURmLFlBQVk7bUJBQUMsNEJBQTRCLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkcmVuLCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBTdG9yZSwgc2VsZWN0IH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XHJcbi8vIGltcG9ydCB7IFN0YXRlIH0gZnJvbSBcImFwcC9zaGFyZWQvc3RvcmUvcmVkdWNlcnMvbWVudWl0ZW1zLnJlZHVjZXJzXCI7XHJcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSBcIi4uLy4uL3N0b3JlL3JlZHVjZXJzL2luZGV4XCI7XHJcbmltcG9ydCAqIGFzIHNoYXJlZE1vZHVsZVJlZHVjZXJzIGZyb20gXCIuLy4uLy4uL3N0b3JlL3JlZHVjZXJzL2luZGV4XCI7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBHZXRBbGxNZW51SXRlbXNUcmlnZ2VyZWQgfSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9tZW51aXRlbXMuYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tIFwibmd4LWNvb2tpZS1zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIE5hdmlnYXRpb25FbmQgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhclwiO1xyXG5pbXBvcnQgeyBSZWNlbnRTZWFyY2hTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3JlY2VudFNlYXJjaC5zZXJ2aWNlXCI7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMsIEdldENvbXBhbnlUaGVtZVRyaWdnZXJlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL2F1dGhlbnRpY2F0aW9uLmFjdGlvbnNcIjtcclxuaW1wb3J0IHsgb2ZUeXBlLCBBY3Rpb25zIH0gZnJvbSBcIkBuZ3J4L2VmZmVjdHNcIjtcclxuaW1wb3J0IHsgU2VhcmNoVGFza1R5cGUgfSBmcm9tIFwiLi9zZWFyY2hUYXNrLmVudW1cIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2F0UG9wb3ZlciB9IGZyb20gJ0BuY3N0YXRlL3NhdC1wb3BvdmVyJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi11c2VkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbnN0YW50cy9sb2NhbHN0b3JhZ2UtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IEVtcGxveWVlTGlzdE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VtcGxveWVlJztcclxuaW1wb3J0IHsgRW1wbG95ZWVMaXN0SW5wdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW1wbG95ZWUtTGlzdCc7XHJcbmltcG9ydCB7IEN1c3RvbUFwcEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29tcG9uZW50cy9jb21wb25lbnRiYXNlJztcclxuaW1wb3J0IHsgU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NvZnRsYWJlbHMtbW9kZWwnO1xyXG5pbXBvcnQgeyBJTWVudUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvSU1lbnVJdGVtJztcclxuaW1wb3J0IHsgVXNlclN0b3J5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJTdG9yeSc7XHJcbmltcG9ydCB7IFdpZGdldExpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvd2lkZ2V0bGlzdCc7XHJcbmltcG9ydCB7IERyYWdlZFdpZGdldCB9IGZyb20gJy4uLy4uL21vZGVscy9kcmFnZWRXaWRnZXQnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dvcmtzcGFjZUxpc3QnO1xyXG5pbXBvcnQgeyBSZWNlbnRTZWFyY2hNb2RlbCwgU2VhcmNoVGFza1R5cGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9SZWNlbnRTZWFyY2hNb2RlbCc7XHJcbmltcG9ydCB7IFRoZW1lTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGhlbWVzLm1vZGVsJztcclxuaW1wb3J0IHsgV0lORE9XIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2hlbHBlcnMvd2luZG93LmhlbHBlcic7XHJcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHb29nbGVBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvamVjdFNlYXJjaENyaXRlcmlhSW5wdXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9Qcm9qZWN0U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsJztcclxuaW1wb3J0IHsgTWVudUNhdGVnb3JpZXMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbWVudS1jYXRlZ29yaWVzJztcclxuaW1wb3J0IHsgRmVhdHVyZUlkcyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvZmVhdHVyZS1pZHMnO1xyXG5pbXBvcnQgJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9oZWxwZXJzL2ZvbnRhd2Vzb21lLWljb25zJztcclxuaW1wb3J0IHsgUmVjZW50U2VhcmNoVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vcmVjZW50U2VhcmNoVHlwZS5lbnVtJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcbmltcG9ydCB7IHRyaWdnZXIsIHN0eWxlLCBhbmltYXRlLCB0cmFuc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZVwiO1xyXG5cclxuLyoqIEBkeW5hbWljICovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtbWVudVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbWVudS5jb21wb25lbnQuaHRtbFwiXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudCBleHRlbmRzIEN1c3RvbUFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIFt4OiBzdHJpbmddOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oXCJvcGVuTWVudVBvcFVwXCIpIG9wZW5NZW51UG9wT3ZlcjtcclxuICBAVmlld0NoaWxkKFwibWVudVRyaWdnZXJcIikgbWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xyXG4gIEBWaWV3Q2hpbGQoXCJlbGVtZW50XCIpIGVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcIndvcmtzcGFjZUVsZW1lbnRcIikgd29ya3NwYWNlRWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwibWVudUVsZW1lbnRcIikgbWVudUVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcImFkZFdvcmtzcGFjZVwiKSBhZGRXb3JrU3BhY2VQb3BPdmVyOiBTYXRQb3BvdmVyO1xyXG4gIEBWaWV3Q2hpbGQoXCJhbGxTZWxlY3RlZFwiKSBwcml2YXRlIGFsbFNlbGVjdGVkOiBNYXRPcHRpb247XHJcbiAgQFZpZXdDaGlsZChcImFsbEVkaXRTZWxlY3RlZFwiKSBwcml2YXRlIGFsbEVkaXRTZWxlY3RlZDogTWF0T3B0aW9uO1xyXG4gIEBWaWV3Q2hpbGQoXCJhbGxEZWxldGVTZWxlY3RlZFwiKSBwcml2YXRlIGFsbERlbGV0ZVNlbGVjdGVkOiBNYXRPcHRpb247XHJcbiAgQFZpZXdDaGlsZCgnaW5mb1BvcE92ZXInKSBpbmZvUG9wT3ZlcjogVGVtcGxhdGVSZWY8YW55PlxyXG4gIEBPdXRwdXQoKSBpc09wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuTmV3RGFzaGJvYXJkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgZTogRWxlbWVudDtcclxuICBzZWFyY2hUZXh0OiBzdHJpbmc7XHJcbiAgZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzb2Z0TGFiZWxzOiBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWxbXTtcclxuICBwdWJsaWMgbWVudUl0ZW1zJDogT2JzZXJ2YWJsZTxJTWVudUl0ZW1bXT47XHJcbiAgdXNlclN0b3JpZXNMaXN0JDogT2JzZXJ2YWJsZTxVc2VyU3RvcnlbXT47XHJcbiAgbWVudUl0ZW06IElNZW51SXRlbVtdO1xyXG4gIGl0ZW1zID0gW107XHJcbiAgbWVudUl0ZW1OYW1lOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHdpZGdldHM6IFdpZGdldExpc3RbXTtcclxuICBvcmlnaW5hbFdpZGdldHM6IFdpZGdldExpc3RbXTtcclxuICBzZWxlY3RlZExpc3Q6IERyYWdlZFdpZGdldFtdO1xyXG4gIHdpZGdldDogV2lkZ2V0TGlzdDtcclxuICBzZWxlY3RlZEFwcHM6IGFueTtcclxuICB1cmw6IHN0cmluZztcclxuICBzZWxlY3RlZERhc2hib2FyZDogYW55O1xyXG4gIGRlZmF1bHREYXNoYm9hcmQ6IGFueTtcclxuICBzdWJMZXZlbHM6IHN0cmluZ1tdID0gW107XHJcbiAgc3RhdGVMdmwxOiBzdHJpbmc7XHJcbiAgbGV2ZWwzTGluazE6IHN0cmluZztcclxuICBsZXZlbDNMaW5rMjogc3RyaW5nO1xyXG4gIHN1YkxldmVsc0ZvckxldmVsMjogc3RyaW5nO1xyXG4gIGNvbXBhbnlNYWluTG9nbzogc3RyaW5nO1xyXG4gIGNvbXBhbnlNaW5pTG9nbzogc3RyaW5nO1xyXG4gIHJvbGVzRHJvcERvd246IGFueVtdO1xyXG4gIHdvcmtzcGFjZXNMaXN0JDogT2JzZXJ2YWJsZTxXb3Jrc3BhY2VMaXN0W10+O1xyXG4gIHdvcmtzcGFjZXM6IFdvcmtzcGFjZUxpc3RbXTtcclxuICB3b3Jrc3BhY2VzRm9yTG9vcDogYW55O1xyXG4gIGRpc3BsYXk6IGJvb2xlYW47XHJcbiAgYWRtaW5Ub29sczogYW55ID0gW107XHJcbiAgdG9vbHM6IGFueTtcclxuICBzZWxlY3RlZFJvd0luZGV4OiBhbnk7XHJcbiAgaXRlbUNsaWNrZWQ6IGFueTtcclxuICB0OiBhbnk7XHJcbiAgd2Q6IGFueTtcclxuICB3czogYW55O1xyXG4gIHJzOiBhbnk7XHJcbiAgYWxsc2VhcmNoZXM6IFJlY2VudFNlYXJjaE1vZGVsW10gPSBbXTtcclxuICByZWNlbnRTZWFyY2hlczogUmVjZW50U2VhcmNoTW9kZWxbXSA9IFtdO1xyXG4gIHByb2plY3RSb2xlVGV4dDogc3RyaW5nID0gXCJQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvblwiO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zOiBCb29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlRm9ybTogQm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXM6IEJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9uczogQm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXM6IEJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+O1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlRm9ybSQ6IE9ic2VydmFibGU8Qm9vbGVhbj47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJDogT2JzZXJ2YWJsZTxCb29sZWFuPlxyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzJDogT2JzZXJ2YWJsZTxCb29sZWFuPjtcclxuICBjb21wYW55U2V0dGluZ3NNT2RlbCQ6IE9ic2VydmFibGU8YW55W10+O1xyXG4gIGRpc2FibGVXb3Jrc3BhY2UgPSBmYWxzZTtcclxuICBkaXNhYmxlV29ya3NwYWNlRGVsZXRlID0gZmFsc2U7XHJcbiAgZGlzYWJsZVdvcmtzcGFjZWhpZGUgPSBmYWxzZTtcclxuICBmb3JtczogYW55O1xyXG4gIGN1c3RhcHA6IGFueTtcclxuICBwcm9qZWN0Um9sZUNvbmZpZ3VyYXRpb246IGFueTtcclxuICByb2xlQ29uZmlndXJhdGlvbjogYW55O1xyXG4gIHRoZW1lTW9kZWw6IFRoZW1lTW9kZWw7XHJcbiAgZW1wbG95ZWVMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHRoZW1lTW9kZWwkOiBPYnNlcnZhYmxlPFRoZW1lTW9kZWw+O1xyXG4gIHRoZW1lQmFzZUNvbG9yOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRFbXBsb3llZTogc3RyaW5nO1xyXG4gIGxvYWRlZEVtcGxveWVlTGlzdDogRW1wbG95ZWVMaXN0TW9kZWxbXSA9IFtdO1xyXG4gIHNlbGVjdGVkRW1wbG95ZWVJbmRleDogbnVtYmVyID0gbnVsbDtcclxuICB2aWV3RW1wbG95ZWVQZXJtaXNzaW9uOiBib29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlsczogQm9vbGVhbjtcclxuICBwcm9qZWN0TGlzdDogYW55ID0gW107XHJcbiAgcHJvamVjdEluZGV4OiBhbnk7XHJcbiAgc2VhcmNoQnlUZXh0TG9hZGluZzogYm9vbGVhbjtcclxuICBASW5wdXQoXCJyZWxvYWRcIilcclxuICBzZXQgcmVsb2FkQWxsKGRhdGE6IGJvb2xlYW4pIHtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIHRoaXMuYWRtaW5Ub29scyA9IFtdO1xyXG4gICAgICB0aGlzLnRvb2xzID0gW107XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIG5nRGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgdXNlclN0b3J5TGlzdDogYW55ID0gW107XHJcbiAgdXNlclN0b3J5U2VhcmNoTGlzdDogYW55ID0gW107XHJcbiAgZ29hbFNlYXJjaExpc3Q6IGFueSA9IFtdO1xyXG4gIGlzRW5hYmxlQnVnQm9hcmQ6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWRSb2xlSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGRhc2hib2FyZFVwZGF0ZUluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgdXNlcnM6IGFueTtcclxuICBnb2FsSW5kZXg6IGFueTtcclxuICB3b3Jrc3BhY2VGb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHJvamVjdFNlYXJjaFJlc3VsdHM6IGFueTtcclxuICBkZWxheVRpbWVJbnB1dCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBtZW51c2ZldGNoSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICB3b3Jrc3BhY2VzZmV0Y2hJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHdpZGdldHNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgcmVjZW50U2VhcmNoZXNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgc2VhcmNoVGFza3M6IFNlYXJjaFRhc2tUeXBlTW9kZWw7XHJcbiAgbG9hZGluZ1NlYXJjaE1lbnVEYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGVmYXVsdERhc2hib2FyZElkOiBzdHJpbmc7XHJcbiAgc2VhcmNoQnlJZDogYm9vbGVhbjtcclxuICBzZWFyY2hCeVRleHQ6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxTdGF0ZT4sXHJcbiAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcm91dGVzOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHB1YmxpYyBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByc3M6IFJlY2VudFNlYXJjaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGlvblVwZGF0ZXMkOiBBY3Rpb25zLFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KFdJTkRPVykgcHJpdmF0ZSB3aW5kb3c6IFdpbmRvdyxcclxuICAgIHByaXZhdGUgZ29vZ2xlQW5hbHl0aWNzU2VydmljZTogR29vZ2xlQW5hbHl0aWNzU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIC8vdGhpcy5vbkZvY3VzKCk7XHJcblxyXG4gICAgLy8gbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAvLyB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2ssIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgfSkpO1xyXG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyA9IHJlc3VsdDtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVXb3Jrc3BhY2VGb3JtKCk7XHJcbiAgICB0aGlzLnJvdXRlcy5ldmVudHMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmxvY2F0aW9uLnBhdGgoKSAhPSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB0aGlzLndpZGdldFNlcnZpY2Uuc2VsZWN0ZWRXb3Jrc3BhY2Uuc3Vic2NyaWJlKGlkID0+IHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZERhc2hib2FyZCA9IGlkO1xyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAvLyAgIC5waXBlKFxyXG4gICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAvLyAgICAgb2ZUeXBlKEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMuR2V0Q29tcGFueVRoZW1lQ29tcGxldGVkKSxcclxuICAgIC8vICAgICB0YXAoKCkgPT4ge1xyXG4gICAgLy90aGlzLnRoZW1lTW9kZWwkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRUaGVtZU1vZGVsKSk7XHJcbiAgICAvL3RoaXMudGhlbWVNb2RlbCQuc3Vic2NyaWJlKHggPT4gdGhpcy50aGVtZU1vZGVsID0geCk7XHJcbiAgICAvLyB0aGlzLmdldFRoZW1lKCk7XHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuICAgIHRoaXMudGhlbWVTZXJ2aWNlLmNoYW5nZVRoZW1lKHRoaXMudGhlbWVNb2RlbCk7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1haW5Mb2dvLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuXHJcbiAgICB2YXIgY29tcGFueVNldHRpbmdzTW9kZWwgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKSk7XHJcblxyXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XHJcbiAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuXHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3J0Y3V0LWZhdi1pY29uXCIpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB0aGlzLnRoZW1lQmFzZUNvbG9yID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29sb3InKTtcclxuICAgIC8vIC8vIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuICAgIC8vIC8vIGlmICh0aGlzLnRoZW1lTW9kZWwgJiYgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlUaGVtZUlkICE9PSBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiKSB7XHJcbiAgICAvLyAvLyAgIHRoaXMudGhlbWVTZXJ2aWNlLmNoYW5nZVRoZW1lKHRoaXMudGhlbWVNb2RlbCk7XHJcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwpO1xyXG4gICAgLy8gLy8gICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvLCBudWxsKTtcclxuICAgIC8vIC8vIH1cclxuICAgIC8vIC8vIGVsc2Uge1xyXG4gICAgLy8gLy8gICB2YXIgdGhlbWVNb2RlbCA9IG5ldyBUaGVtZU1vZGVsKClcclxuICAgIC8vIC8vICAgdGhlbWVNb2RlbC5jb21wYW55VGhlbWVJZCA9IFwiMDkyOUQzNUEtMzU3My00QjA2LTkzRkItQzdENDZBQUZBOTE4XCI7XHJcbiAgICAvLyAvLyAgIC8vIHRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvID0gXCJhc3NldHMvaW1hZ2VzL0xvZ28tZmF2aWNvbi5wbmdcIjtcclxuICAgIC8vIC8vICAgLy8gdGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28gPSBcImFzc2V0cy9pbWFnZXMvTWFpbi1Mb2dvLnBuZ1wiO1xyXG4gICAgLy8gLy8gICB0aGlzLnRoZW1lTW9kZWwgPSB0aGVtZU1vZGVsO1xyXG4gICAgLy8gLy8gICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGVtZU1vZGVsKTtcclxuICAgIC8vIC8vICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNYWluTG9nbywgbnVsbCk7XHJcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwpO1xyXG4gICAgLy8gLy8gfVxyXG4gICAgLy8gLy8gdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIC8vIC8vIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICAvLyAvLyAvL3RoaXMuY2hhbmdlRmF2SWNvbigpO1xyXG4gICAgLy8gLy8gdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICAvL3RoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gKVxyXG4gICAgLy8gLnN1YnNjcmliZSgpO1xyXG5cclxuXHJcbiAgICAvLyB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAvLyAgIC5waXBlKFxyXG4gICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAvLyAgICAgb2ZUeXBlKFdvcmtzcGFjZXNBY3Rpb25UeXBlcy5Mb2FkV29ya3NwYWNlQnlJZENvbXBsZXRlZCksXHJcbiAgICAvLyAgICAgdGFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgIC8vICAgICAgIHZhciB3b3Jrc3BhY2VzTGlzdCA9IGRhdGEuc2VhcmNoV29ya3NwYWNlc1N1Y2Nlc3M7XHJcbiAgICAvLyAgICAgICB0aGlzLmRhc2hib2FyZFVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIC8vICAgICAgIC8vIHRoaXMuY2xvc2VBZGRXb3Jrc3BhY2VEaWFsb2coKTtcclxuICAgIC8vICAgICAgIHRoaXMuZGlzYWJsZVdvcmtzcGFjZSA9IGZhbHNlO1xyXG4gICAgLy8gICAgICAgaWYgKHdvcmtzcGFjZXNMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgdGhpcy53b3Jrc3BhY2VzLnB1c2god29ya3NwYWNlc0xpc3RbMF0pO1xyXG4gICAgLy8gICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICAvLyAgICAgICAgIHRoaXMub3Blbk5ld0Rhc2hib2FyZC5lbWl0KHdvcmtzcGFjZXNMaXN0WzBdLndvcmtzcGFjZUlkKVxyXG4gICAgLy8gICAgICAgfVxyXG5cclxuICAgIC8vICAgICB9KVxyXG4gICAgLy8gICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIC8vdGhpcy5nZXRBbGxQcm9qZWN0cygpO1xyXG5cclxuICAgIHRoaXMuZGVsYXlUaW1lSW5wdXQucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDIwMDApLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICB0aGlzLlNlYXJjaEl0ZW0odmFsdWUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRUaGVtZSgpIHtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFRoZW1lcygpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoJ0NvbXBhbnlUaGVtZScsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGlzLnRoZW1lTW9kZWwpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICB0aGlzLnNpdGVVcmwgPSByZXNwb25zZS5kYXRhLnJlZ2lzdHJlclNpdGVBZGRyZXNzO1xyXG4gICAgICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGFueU1haW5Mb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gcmVzcG9uc2UuZGF0YS5jb21wYW55TWFpbkxvZ287XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHJlc3BvbnNlLmRhdGEuY29tcGFueU1pbmlMb2dvO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3J0Y3V0LWZhdi1pY29uXCIpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICAgICAgdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLnEnLCBbXSlcclxuICBrZXlPcGVuRXZlbnQoKSB7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgdGhpcy5vbkZvY3VzKClcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5tJywgW10pXHJcbiAga2V5Q2xvc2VFdmVudCgpIHtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5iJywgW10pXHJcbiAgcmVtb3RlU2VhcmNoQnlUZXh0KCkge1xyXG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IHRydWVcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAvL3RoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC55JywgW10pXHJcbiAgcmVtb3RlU2VhcmNoQnlJZCgpIHtcclxuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2VcclxuICAgIHRoaXMuc2VhcmNoQnlJZCA9IHRydWU7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgLy90aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9Mb2NhbFRpbWUodGltZSkge1xyXG4gICAgdmFyIHV0Y0RhdGUgPSBtb21lbnQudXRjKHRpbWUpLmZvcm1hdCgpO1xyXG4gICAgdmFyIGxvY2FsRGF0ZSA9IG1vbWVudC51dGModXRjRGF0ZSkubG9jYWwoKS5mb3JtYXQoKTtcclxuICAgIHJldHVybiBsb2NhbERhdGU7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplV29ya3NwYWNlRm9ybSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb2xlSWRzID0gbnVsbDtcclxuICAgIHRoaXMuZGlzYWJsZVdvcmtzcGFjZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaXNhYmxlV29ya3NwYWNlaGlkZSA9IGZhbHNlO1xyXG4gICAgdGhpcy53b3Jrc3BhY2VGb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgIHdvcmtzcGFjZU5hbWU6IG5ldyBGb3JtQ29udHJvbChudWxsLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXHJcbiAgICAgICAgXSlcclxuICAgICAgKSxcclxuICAgICAgc2VsZWN0ZWRSb2xlczogbmV3IEZvcm1Db250cm9sKG51bGwsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICBdKVxyXG4gICAgICApLFxyXG4gICAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKG51bGwsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMDApXHJcbiAgICAgICAgXSlcclxuICAgICAgKSxcclxuICAgICAgZWRpdFJvbGVJZHM6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbXSksXHJcbiAgICAgIGRlbGV0ZVJvbGVJZHM6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbXSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgIHRoaXMuZGVmYXVsdERhc2hib2FyZElkID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSkgOiBudWxsOztcclxuXHJcbiAgICAvL3RoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldENvbXBhbnlUaGVtZVRyaWdnZXJlZCgpKTtcclxuICAgIHRoaXMuYWRtaW5Ub29scyA9IFtdO1xyXG4gICAgLy8gdmFyIGRhc2hib2FyZHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcykpO1xyXG4gICAgLy8gaWYgKGRhc2hib2FyZHMgJiYgZGFzaGJvYXJkcyAhPSBcIm51bGxcIikge1xyXG4gICAgLy8gICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wID0gZGFzaGJvYXJkcztcclxuICAgIC8vIH1cclxuICAgIC8vIHZhciBtZW51SXRlbXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTWVudUl0ZW1zKSlcclxuICAgIC8vIGlmIChtZW51SXRlbXMgJiYgbWVudUl0ZW1zICE9IFwibnVsbFwiKSB7XHJcbiAgICAvLyAgIHRoaXMubWVudUl0ZW0gPSBtZW51SXRlbXM7XHJcbiAgICAvLyAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIHZhciB3aWRnZXRzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMpKTtcclxuICAgIC8vIGlmICh3aWRnZXRzICYmIHdpZGdldHMgIT0gXCJudWxsXCIpIHtcclxuICAgIC8vICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHMgPSB3aWRnZXRzO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gdmFyIHJlY2VudFNlYXJjaGVzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzKSk7XHJcbiAgICAvLyBpZiAocmVjZW50U2VhcmNoZXMgJiYgcmVjZW50U2VhcmNoZXMgIT0gXCJudWxsXCIpIHtcclxuICAgIC8vICAgdGhpcy5hbGxzZWFyY2hlcyA9IHRoaXMucmVjZW50U2VhcmNoZXMgPSByZWNlbnRTZWFyY2hlcztcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMubG9hZFdpZGdldHNMaXN0KCk7XHJcbiAgICAvLyAgdGhpcy5sb2FkV29ya3NwYWNlc0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0U29mdExhYmVsQ29uZmlndXJhdGlvbnMoKTtcclxuICAgIHRoaXMuZ2V0Q29tcGFueVNldHRpbmdzKCk7XHJcbiAgICB0aGlzLm1lbnVJdGVtcyQgPSB0aGlzLnN0b3JlLnBpcGUoXHJcbiAgICAgIHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRDdXJyZW50QWN0aXZlTWVudUNhdGVnb3J5TWVudUl0ZW1zKSxcclxuICAgICAgdGFwKG1lbnVMaXN0ID0+IGNvbnNvbGUubG9nKG1lbnVMaXN0KSlcclxuICAgICk7XHJcbiAgICAvLyB0aGlzLm1lbnVJdGVtcyQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgLy8gICB2YXIgYSA9IHg7XHJcbiAgICAvLyAgIHZhciBiID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKTtcclxuXHJcbiAgICAvLyAgIC8vdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAvLyAgIC8vdGhpcy5tZW51c2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgLy8gfSk7XHJcblxyXG4gICAgLy8gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcclxuXHJcbiAgICB2YXIgY29tcGFueVNldHRpbmdzTW9kZWwgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKSk7XHJcblxyXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XHJcbiAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuXHJcbiAgICBpZiAodGhpcy5jb21wYW55TWFpbkxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29tcGFueU1pbmlMb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcbiAgICAvL3RoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gW107XHJcblxyXG4gICAgLy8gdGhpcy5jdXN0YXBwID0ge1xyXG4gICAgLy8gICBuYW1lOiBcIkN1c3RvbSBhcHBsaWNhdGlvbnNcIixcclxuICAgIC8vICAgbGluazogXCIvYXBwbGljYXRpb25zL2N1c3RvbS1hcHBsaWNhdGlvbnNcIixcclxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyRcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuZm9ybXMgPSB7XHJcbiAgICAvLyAgIG5hbWU6IFwiRm9ybXNcIixcclxuICAgIC8vICAgbGluazogXCIvYXBwbGljYXRpb25zL3ZpZXctZm9ybXNcIixcclxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMkXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLnByb2plY3RSb2xlQ29uZmlndXJhdGlvbiA9IHtcclxuICAgIC8vICAgbmFtZTogXCJQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvblwiLFxyXG4gICAgLy8gICBsaW5rOiBcIi9yb2xlbWFuYWdlbWVudC9lbnRpdHlyb2xlbWFuYWdlbWVudFwiLFxyXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLnJvbGVDb25maWd1cmF0aW9uID0ge1xyXG4gICAgLy8gICBuYW1lOiBcIlJvbGUgY29uZmlndXJhdGlvblwiLFxyXG4gICAgLy8gICBsaW5rOiBcIi9yb2xlbWFuYWdlbWVudC9yb2xlbWFuYWdlbWVudFwiLFxyXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyRcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zIH0pKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdDdXN0b20gYXBwbGljYXRpb25zJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5jdXN0YXBwKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0gfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0kLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnRm9ybXMnKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLmZvcm1zKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9WaWV3Rm9ybXMgfSkpOyAgICAvLyAvL3RoaXMucm91dGUudXJsLnN1YnNjcmliZSgodXJsKSA9PiB0aGlzLnVybCA9IHVybC50b1N0cmluZygpKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcyA9IHJlc3VsdDtcclxuICAgIC8vICAgaWYgKHJlc3VsdCkge1xyXG4gICAgLy8gICAgIHRoaXMuYWRtaW5Ub29scy5zb21lKChmbG93KSA9PiBmbG93Lm5hbWUgPT0gJ0Zvcm1zJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5mb3Jtcyk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMgfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvbicpID8gbnVsbCA6IHRoaXMuYWRtaW5Ub29scy5wdXNoKHRoaXMucHJvamVjdFJvbGVDb25maWd1cmF0aW9uKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9WaWV3Um9sZXMgfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnUm9sZSBjb25maWd1cmF0aW9uJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5yb2xlQ29uZmlndXJhdGlvbik7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzIH0pKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgIC8vICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgIC8vIHRoaXMuZ2V0QWxsRW1wbG95ZWVzKCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xyXG4gICAgLy90aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgLy90aGlzLmdldEFsbEVtcGxveWVlcygpO1xyXG4gICAgLy8gdGhpcy5sb2FkV2lkZ2V0c0xpc3QobnVsbCk7XHJcbiAgICAvLyB0aGlzLmxvYWRXb3Jrc3BhY2VzTGlzdCgpO1xyXG4gICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XHJcbiAgICAvLyBpZih0aGlzLml0ZW1zLmxlbmd0aD4wKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7IHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmKHRoaXMudG9vbHMubGVuZ3RoPjApIHtcclxuICAgIC8vICAgdGhpcy50PTA7IHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnRvb2xzWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmKHRoaXMud29ya3NwYWNlcy5sZW5ndGg+MCkge1xyXG4gICAgLy8gICB0aGlzLndzID0gMDsgdGhpcy5pdGVtQ2xpY2tlZCA9dGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgLy8gfSAgXHJcblxyXG4gICAgdGhpcy5TZWFyY2hJdGVtID0gXy5kZWJvdW5jZSh0aGlzLlNlYXJjaEl0ZW0sIDEwMDApO1xyXG4gICAgdGhpcy5yb3V0ZXMuZXZlbnRzXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5JbmZvKGluZm9Qb3BPdmVyKSB7XHJcbiAgICBpbmZvUG9wT3Zlci5vcGVuUG9wb3ZlcigpO1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0QWxsUHJvamVjdHMoKSB7XHJcbiAgLy8gICBjb25zdCBwcm9qZWN0U2VhcmNoUmVzdWx0ID0gbmV3IFByb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwoKTtcclxuICAvLyAgIHByb2plY3RTZWFyY2hSZXN1bHQuaXNBcmNoaXZlZCA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlLnNlYXJjaFByb2plY3RzKHByb2plY3RTZWFyY2hSZXN1bHQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gIC8vICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlKSB7XHJcbiAgLy8gICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcclxuICAvLyAgICAgICAgIHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMgPSByZXNwb25zZS5kYXRhO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBlbHNlIHtcclxuICAvLyAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gcmVzcG9uc2UuYXBpUmVzcG9uc2VNZXNzYWdlc1swXS5tZXNzYWdlO1xyXG4gIC8vICAgICAgIHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMgPSBbXTtcclxuICAvLyAgICAgICB0aGlzLnRvYXN0ci5lcnJvcih0aGlzLnZhbGlkYXRpb25NZXNzYWdlKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcblxyXG4gIGdldENvbXBhbnlTZXR0aW5ncygpIHtcclxuICAgIGxldCBjb21wYW55U2V0dGluZ3NNb2RlbCA9IFtdO1xyXG4gICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldENvbXBhbnlTZXR0aW5ncykpO1xyXG4gICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQuc3Vic2NyaWJlKCh4KSA9PiBjb21wYW55U2V0dGluZ3NNb2RlbCA9IHgpO1xyXG4gICAgbGV0IGJ1Z0JvYXJkUmVzdWx0ID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkudHJpbSgpID09IFwiRW5hYmxlQnVnQm9hcmRcIik7XHJcbiAgICBpZiAoYnVnQm9hcmRSZXN1bHQgJiYgYnVnQm9hcmRSZXN1bHQubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmlzRW5hYmxlQnVnQm9hcmQgPSBidWdCb2FyZFJlc3VsdFswXS52YWx1ZSA9PSBcIjFcIiA/IHRydWUgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG5cclxuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMuY29tcGFueU1pbmlMb2dvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRTZWFyY2hEYXRhKCkge1xyXG4gICAgdmFyIG1lbnVJdGVtcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5NZW51SXRlbXMpKVxyXG4gICAgaWYgKG1lbnVJdGVtcyAmJiBtZW51SXRlbXMgIT0gXCJudWxsXCIpIHtcclxuICAgICAgdGhpcy5tZW51SXRlbSA9IG1lbnVJdGVtcztcclxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW0uZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIik7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgdmFyIHdpZGdldHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRmF2b3VyaXRlV2lkZ2V0cykpO1xyXG4gICAgaWYgKHdpZGdldHMgJiYgd2lkZ2V0cyAhPSBcIm51bGxcIikge1xyXG4gICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHdpZGdldHM7XHJcbiAgICB9XHJcbiAgICB2YXIgcmVjZW50U2VhcmNoZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMpKTtcclxuICAgIGlmIChyZWNlbnRTZWFyY2hlcyAmJiByZWNlbnRTZWFyY2hlcyAhPSBcIm51bGxcIikge1xyXG4gICAgICB0aGlzLmFsbHNlYXJjaGVzID0gdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHJlY2VudFNlYXJjaGVzO1xyXG4gICAgfVxyXG4gIH1cclxuICB0cmFuc2xhdGVhcHBsaWNhdGlvbm5hbWUoaXRlbSkge1xyXG4gICAgaWYgKGl0ZW0gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHZhciBsb2NhbHZhcmlhYmxlID0gaXRlbS50cmltKCk7XHJcbiAgICB2YXIgbmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiQVBQLlwiICsgbG9jYWx2YXJpYWJsZSk7XHJcbiAgICBpZiAobmFtZS5pbmRleE9mKFwiQVBQLlwiKSAhPSAtMSkge1xyXG4gICAgICByZXR1cm4gaXRlbTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRm9jdXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VhcmNoQnlJZCAmJiAhdGhpcy5zZWFyY2hCeVRleHQpIHtcclxuICAgICAgdmFyIHJldHJpZXZlRGFzaGJvYXJkczogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgIHZhciBkYXNoYm9hcmRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzKTtcclxuICAgICAgaWYgKGRhc2hib2FyZHMgJiYgZGFzaGJvYXJkcyAhPSBcIm51bGxcIikge1xyXG4gICAgICAgIHJldHJpZXZlRGFzaGJvYXJkcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSBKU09OLnBhcnNlKGRhc2hib2FyZHMpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3AuZmlsdGVyKFxyXG4gICAgICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICAgICAgaXRlbS53b3Jrc3BhY2VOYW1lXHJcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCEodGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2spICYmIEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrKSkgPT0gdHJ1ZSkpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2ssIEpTT04uc3RyaW5naWZ5KHRydWUpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgIC8vIHRoaXMubG9hZFdpZGdldHNMaXN0KG51bGwpO1xyXG4gICAgICAgIC8vIHRoaXMubG9hZFdvcmtzcGFjZXNMaXN0KCk7XHJcbiAgICAgICAgLy8gdGhpcy5nZXRBbGxNZW51SXRlbXMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VhcmNoTWVudURhdGEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucnNzLnNlYXJjaE1lbnVEYXRhKHJldHJpZXZlRGFzaGJvYXJkcylcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS53b3Jrc3BhY2VzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSByZXMuZGF0YS53b3Jrc3BhY2VzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndvcmtzcGFjZXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSB0aGlzLndvcmtzcGFjZXM7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMuZGVmYXVsdERhc2hib2FyZCA9IHRoaXMud29ya3NwYWNlcy5maW5kKGkgPT4gaS5pc0RlZmF1bHQgPT0gdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS53aWRnZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHJlcy5kYXRhLndpZGdldHMuc29ydCgoYSwgYikgPT5cclxuICAgICAgICAgICAgICAgICAgYS53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPiBiLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5GYXZvdXJpdGVXaWRnZXRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndpZGdldHMpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLm1lbnVJdGVtcykge1xyXG4gICAgICAgICAgICAgICAgLy8gdmFyIGFwcGxpY2F0aW9ucyA9IHJlcy5kYXRhLm1lbnVJdGVtcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICAgICAgICAgIC8vICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIC8vICAgICB4Lm1lbnVDYXRlZ29yeSAmJlxyXG4gICAgICAgICAgICAgICAgLy8gICAgIE1lbnVDYXRlZ29yaWVzLk1haW4gJiZcclxuICAgICAgICAgICAgICAgIC8vICAgICB4Lm1lbnVDYXRlZ29yeS50b0xvd2VyQ2FzZSgpID09PSBNZW51Q2F0ZWdvcmllcy5NYWluLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgIC8vICAgKTtcclxuICAgICAgICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVJdGVtID0gcmVzLmRhdGEubWVudUl0ZW1zO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5NZW51SXRlbXMsIEpTT04uc3RyaW5naWZ5KHRoaXMubWVudUl0ZW0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgICAgICAgICAgICAgLy90aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnJlY2VudFNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHJlcy5kYXRhLnJlY2VudFNlYXJjaDtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSB0aGlzLmFsbHNlYXJjaGVzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkodGhpcy5hbGxzZWFyY2hlcykpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZEZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTZWFyY2hNZW51RGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkU2VhcmNoRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAvLyAgIGlmICghKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRGYXZvdXJpdGVXaWRnZXRzKSAmJiBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cykpID09IGZhbHNlKSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5sb2FkV2lkZ2V0c0xpc3QobnVsbCwgdHJ1ZSk7XHJcbiAgICAgIC8vICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgLy8gICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gICBpZiAoISh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkUmVjZW50U2VhcmNoZXMpICYmIEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRSZWNlbnRTZWFyY2hlcykpID09IGZhbHNlKSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xyXG4gICAgICAvLyAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIHRoaXMucm91dGVyQWN0aXZlKCk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIHJvdXRlckFjdGl2ZSgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlcy51cmwuaW5jbHVkZXMoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmRcIikgJiYgdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXSkge1xyXG4gICAgICB2YXIgZGFzaGJvYXJkSWQgPSB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdO1xyXG4gICAgICBpZiAoZGFzaGJvYXJkSWQgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLndvcmtzcGFjZXMuZmluZEluZGV4KGkgPT4gaS53b3Jrc3BhY2VJZCA9PSBkYXNoYm9hcmRJZCk7XHJcbiAgICAgICAgdGhpcy53cyA9IGluZGV4O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucm91dGVzLnVybC5pbmNsdWRlcyhcImRhc2hib2FyZC1tYW5hZ2VtZW50L3dpZGdldHNcIikgJiYgdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXSkge1xyXG4gICAgICB2YXIgd2lkZ2V0SWQgPSB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdO1xyXG4gICAgICBpZiAod2lkZ2V0SWQgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLndpZGdldHMuZmluZEluZGV4KGkgPT4gaS53aWRnZXRJZCA9PSB3aWRnZXRJZCk7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gMCkge1xyXG4gICAgICAgICAgdGhpcy53ZCA9IGluZGV4O1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53cyA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB2YXIgaW5kZXhScyA9IHRoaXMucmVjZW50U2VhcmNoZXMuZmluZEluZGV4KGkgPT4gaS5pdGVtSWQgPT0gd2lkZ2V0SWQpXHJcbiAgICAgICAgICB0aGlzLnJzID0gaW5kZXhScztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaSA9PiB0aGlzLnJvdXRlcy51cmwgPT0gXCIvXCIgKyBpLnN0YXRlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gaW5kZXg7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZFdvcmtzcGFjZXNMaXN0KCkge1xyXG4gICAgdGhpcy53b3Jrc3BhY2VzZmV0Y2hJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHZhciB3b3Jrc3BhY2VsaXN0ID0gbmV3IFdvcmtzcGFjZUxpc3QoKTtcclxuICAgIHdvcmtzcGFjZWxpc3Qud29ya3NwYWNlSWQgPSBcIm51bGxcIjtcclxuICAgIHdvcmtzcGFjZWxpc3QuaXNIaWRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5HZXRXb3Jrc3BhY2VMaXN0KHdvcmtzcGFjZWxpc3QpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcywgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzRm9yTG9vcCA9IHRoaXMud29ya3NwYWNlcztcclxuICAgICAgdGhpcy5kZWZhdWx0RGFzaGJvYXJkID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaSA9PiBpLmlzRGVmYXVsdCA9PSB0cnVlKTtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzZmV0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IExvYWRXb3Jrc3BhY2VzTGlzdFRyaWdnZXJlZCh0aGlzLndvcmtzcGFjZWxpc3QpKTtcclxuICB9O1xyXG5cclxuICBvcGVuQXBwcygpIHtcclxuICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImFwcC1zdG9yZS93aWRnZXRzXCJdKTtcclxuICB9XHJcblxyXG4gIGxvYWRXaWRnZXRzTGlzdChzZWFyY2hUZXh0LCBzdG9yZSA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLndpZGdldHNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy53aWRnZXQgPSBuZXcgV2lkZ2V0TGlzdCgpO1xyXG4gICAgdGhpcy53aWRnZXQud2lkZ2V0SWQgPSBcIm51bGxcIjtcclxuICAgIHRoaXMud2lkZ2V0LmlzQXJjaGl2ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMud2lkZ2V0LnBhZ2VOdW1iZXIgPSBudWxsO1xyXG4gICAgdGhpcy53aWRnZXQucGFnZVNpemUgPSBudWxsO1xyXG4gICAgdGhpcy53aWRnZXQuc29ydERpcmVjdGlvbkFzYyA9IHRydWU7XHJcbiAgICB0aGlzLndpZGdldC5pc0Zhdm91cml0ZVdpZGdldCA9IHRydWU7XHJcbiAgICBpZiAoc2VhcmNoVGV4dClcclxuICAgICAgdGhpcy53aWRnZXQuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XHJcblxyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLkdldFdpZGdldHNCYXNlZE9uVXNlcih0aGlzLndpZGdldCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLndpZGdldHMgPSBbXTtcclxuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbFdpZGdldHMgPSByZXN1bHQuZGF0YS5zb3J0KChhLCBiKSA9PlxyXG4gICAgICAgICAgYS53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPiBiLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHM7XHJcbiAgICAgICAgaWYgKHN0b3JlKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KHRoaXMud2lkZ2V0cykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLndpZGdldHNmZXRjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBjb21wYW55U2V0dGluZ3NNb2RlbCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpKTtcclxuXHJcbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG4gICAgLy8gdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIC8vIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29tcGFueU1haW5Mb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy5jb21wYW55TWluaUxvZ28pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldEFsbEVtcGxveWVlcygpIHtcclxuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgfSkpO1xyXG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyA9IHJlc3VsdDtcclxuICAgIH0pXHJcbiAgICBsZXQgZW1wbG95ZWVTcGVudFRpbWUgPSBuZXcgRW1wbG95ZWVMaXN0SW5wdXQoKTtcclxuICAgIGVtcGxveWVlU3BlbnRUaW1lLnNvcnREaXJlY3Rpb25Bc2MgPSB0cnVlO1xyXG4gICAgZW1wbG95ZWVTcGVudFRpbWUuaXNBY3RpdmUgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5ockRhc2hib2FyU2VydmljZS5HZXRBbGxFbXBsb3llZXMoZW1wbG95ZWVTcGVudFRpbWUpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgIC8vICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAvLyAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSByZXN1bHQuZGF0YTtcclxuICAgIC8vICAgICBpZiAoISh0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscykpIHtcclxuICAgIC8vICAgICAgIHZhciBjdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgLy8gICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5maWx0ZXIoeCA9PiAoeC51c2VySWQudG9Mb3dlckNhc2UoKSA9PSBjdXJyZW50VXNlcklkLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgdGhpcy5lbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdDtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuXHJcbiAgICBjb25zdCBlbXBsb3llZUxpc3RTZWFyY2hSZXN1bHQgPSBuZXcgRW1wbG95ZWVMaXN0TW9kZWwoKTtcclxuICAgIGVtcGxveWVlTGlzdFNlYXJjaFJlc3VsdC5zb3J0RGlyZWN0aW9uQXNjID0gdHJ1ZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRBbGxFbXBsb3llZXMoZW1wbG95ZWVMaXN0U2VhcmNoUmVzdWx0KS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgaWYgKCEodGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMpKSB7XHJcbiAgICAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKHggPT4gKHgudXNlcklkLnRvTG93ZXJDYXNlKCkgPT0gY3VycmVudFVzZXJJZC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3Q7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAvLyAgIHRoaXMuZSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gIC8vICAgbGV0IG91dFNpZGVDbGljayA9ICB0aGlzLmUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsKCk9PntcclxuICAvLyAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgLy8gfSk7XHJcbiAgLy8gfVxyXG5cclxuICBPcGVuTWVudUl0ZW1zKG9wZW5NZW51UG9wVXApIHtcclxuICAgIG9wZW5NZW51UG9wVXAub3BlblBvcG92ZXIoKTtcclxuICB9XHJcblxyXG4gIG9wZW5MZXZlbDJNZW51KGxpbmssIGV2ZW50KSB7XHJcbiAgICB0aGlzLnN0YXRlTHZsMSA9IGxpbms7XHJcbiAgICB0aGlzLnN1YkxldmVscyA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgb3BlbkxldmVsM01lbnUobGluazEsIGxpbmsyLCBldmVudCkge1xyXG4gICAgdGhpcy5sZXZlbDNMaW5rMSA9IGxpbmsxO1xyXG4gICAgdGhpcy5sZXZlbDNMaW5rMiA9IGxpbmsyO1xyXG4gICAgdGhpcy5zdWJMZXZlbHNGb3JMZXZlbDIgPSBldmVudDtcclxuICB9XHJcblxyXG4gIGdldEFsbE1lbnVJdGVtcygpIHtcclxuICAgIHRoaXMubWVudXNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcclxuICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XHJcbiAgICB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkpIDogbnVsbDs7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgJiYgdXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHRoaXMuZGVmYXVsdERhc2hib2FyZElkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCkge1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImxpdmVzL3dlbGNvbWVcIik7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvVXJsKHdvcmtzcGFjZUlkKSB7XHJcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTb2Z0TGFiZWxDb25maWd1cmF0aW9ucygpIHtcclxuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XHJcbiAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoTWVudUl0ZW1zKCkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMucnNzLmdldFNlYXJjaE1lbnVJdGVtcyh7IHNlYXJjaFRleHQ6IHRoaXMuc2VhcmNoVGV4dCwgc2VhcmNoVW5pcXVlSWQ6IG51bGwgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0KTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+ICh1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB8fCAodXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8ICh1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJzID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gdXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB1c2VycztcclxuICAgICAgICAgICAgICAgIGlmICghKHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzKSkge1xyXG4gICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5maWx0ZXIoKHg6IGFueSkgPT4gKHguaXRlbUlkLnRvTG93ZXJDYXNlKCkgPT0gY3VycmVudFVzZXJJZC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0O1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFswXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Qcm9qZWN0U2VsZWN0KGl0ZW0sIGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5wcm9qZWN0TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLnByb2plY3QsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBpdGVtLml0ZW1JZCArIFwiL2FjdGl2ZS1nb2Fsc1wiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFNlYXJjaEl0ZW0oZXZlbnQpIHtcclxuICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICB2YXIgZWxlbWVudCA9XHJcbiAgICAgICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpO1xyXG4gICAgZWxlbWVudCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwIDogbnVsbDtcclxuICAgIHZhciBlbGVtID1cclxuICAgICAgISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIik7XHJcbiAgICBlbGVtID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgdmFyIGVtcCA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpO1xyXG4gICAgZW1wID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgdmFyIHdpZGdldCA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpO1xyXG4gICAgd2lkZ2V0ID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgLy90aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNlYXJjaE1lbnVJdGVtcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuc2VhcmNoQnlJZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS5tZW51LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PVxyXG4gICAgICAgICAgZmFsc2UgJiYgaXRlbS50eXBlICE9IFwiZHJvcERvd25cIlxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLndvcmtzcGFjZU5hbWVcclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYWRtaW5Ub29scyA/IHRoaXMudG9vbHMgPSB0aGlzLmFkbWluVG9vbHMuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICkgOiBudWxsO1xyXG4gICAgICAvL3RoaXMubG9hZFdpZGdldHNMaXN0KGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgIHRoaXMub3JpZ2luYWxXaWRnZXRzID8gdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHMuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ud2lkZ2V0TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICkgOiBudWxsO1xyXG4gICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDAgPyAodGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKHggPT5cclxuICAgICAgKCh4LmZ1bGxOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSBmYWxzZSlcclxuICAgICAgICB8fCAoeC5lbXBsb3llZU51bWJlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpXHJcbiAgICAgICAgfHwgKHguc3VyTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpKVxyXG4gICAgICApKSA6IG51bGw7XHJcbiAgICAgIC8vIHRoaXMuYWxsc2VhcmNoZXMgPyB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcy5maWx0ZXIoXHJcbiAgICAgIC8vICAgaXRlbSA9PlxyXG4gICAgICAvLyAgICAgaXRlbS5yZWNlbnRTZWFyY2gudG9Mb3dlckNhc2UoKS5pbmRleE9mKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gLTFcclxuICAgICAgLy8gKSA6IG51bGw7XHJcbiAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPyB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcy5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS5yZWNlbnRTZWFyY2gudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XHJcbiAgICAgICAgICBmYWxzZVxyXG4gICAgICApIDogbnVsbDtcclxuXHJcbiAgICAgIGlmIChldmVudC50YXJnZXQudmFsdWUgJiYgZXZlbnQudGFyZ2V0LnZhbHVlLnNlYXJjaCgnLScpID4gMCkge1xyXG4gICAgICAgIHRoaXMucnNzLnNlYXJjaEdvYWxUYXNrcyhldmVudC50YXJnZXQudmFsdWUpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSAhPSBudWxsICYmIHJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB8fCAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+IHVzLnR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpKTtcclxuICAgICAgICAgICAgICAgIGlmICghKCh0aGlzLml0ZW1zLmxlbmd0aCA+IDAgJiYgdGhpcy5pdGVtcykgfHwgKHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB8fCAodGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB8fCAodGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSkpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgLy8gICBjb25zdCB1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXAgPSBuZXcgVXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsKCk7XHJcbiAgICAgIC8vICAgdXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wLnBhZ2VTaXplID0gMTAwMDtcclxuICAgICAgLy8gICB1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXAuc2VhcmNoVGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICAgLy8gICAvLy5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcblxyXG4gICAgICAvLyAgLy8gaWYgKGV2ZW50LnRhcmdldC52YWx1ZS5pbmRleE9mKCctJykpIHtcclxuICAgICAgLy8gICAgIHRoaXMudXNlclNlcnZpY2Uuc2VhcmNoVXNlclN0b3JpZXModXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHJcbiAgICAgIC8vICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAvLyAgICAgICBsZXQgY29tcGFueVNldHRpbmdzTW9kZWwgPSBbXTtcclxuXHJcbiAgICAgIC8vICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEgIT0gbnVsbCAmJiByZXNwb25zZS5kYXRhICE9IHVuZGVmaW5lZCAmJiByZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gICAgICAgICB2YXIgdXNlclN0b3JpZXNMaXN0ID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgLy8gICAgICAgICB0aGlzLmNvbXBhbnlTZXR0aW5nc01PZGVsJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Q29tcGFueVNldHRpbmdzKSk7XHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQuc3Vic2NyaWJlKCh4KSA9PiBjb21wYW55U2V0dGluZ3NNb2RlbCA9IHgpO1xyXG4gICAgICAvLyAgICAgICAgIGxldCBidWdCb2FyZFJlc3VsdCA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5LnRyaW0oKSA9PSBcIkVuYWJsZUJ1Z0JvYXJkXCIpO1xyXG4gICAgICAvLyAgICAgICAgIGlmIChidWdCb2FyZFJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vICAgICAgICAgICB0aGlzLmlzRW5hYmxlQnVnQm9hcmQgPSBidWdCb2FyZFJlc3VsdFswXS52YWx1ZSA9PSBcIjFcIiA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgIC8vICAgICAgICAgaWYgKCF0aGlzLmlzRW5hYmxlQnVnQm9hcmQpIHtcclxuICAgICAgLy8gICAgICAgICAgIHVzZXJTdG9yaWVzTGlzdCA9IHVzZXJTdG9yaWVzTGlzdC5tYXAoKHgpID0+IHguaXNCdWcgPT0gZmFsc2UpO1xyXG4gICAgICAvLyAgICAgICAgIH1cclxuXHJcbiAgICAgIC8vICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gdXNlclN0b3JpZXNMaXN0Lm1hcChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAvLyAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbElkOiBpdGVtLmdvYWxJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbE5hbWU6IGl0ZW0uZ29hbE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIGdvYWxTaG9ydE5hbWU6IGl0ZW0uZ29hbFNob3J0TmFtZSxcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbFVuaXF1ZU5hbWU6IGl0ZW0uZ29hbFVuaXF1ZU5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHByb2plY3RJZDogaXRlbS5wcm9qZWN0SWQsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHByb2plY3ROYW1lOiBpdGVtLnByb2plY3ROYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICBzcHJpbnRJZDogaXRlbS5zcHJpbnRJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgc3ByaW50TmFtZTogaXRlbS5zcHJpbnROYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlJZDogaXRlbS51c2VyU3RvcnlJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5TmFtZTogaXRlbS51c2VyU3RvcnlOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlTdGF0dXNOYW1lOiBpdGVtLnVzZXJTdG9yeVN0YXR1c05hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeVR5cGVOYW1lOiBpdGVtLnVzZXJTdG9yeVR5cGVOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlVbmlxdWVOYW1lOiBpdGVtLnVzZXJTdG9yeVVuaXF1ZU5hbWVcclxuICAgICAgLy8gICAgICAgICAgIH1cclxuICAgICAgLy8gICAgICAgICB9KTtcclxuXHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIC8vICAgICAgIH1cclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgLy8gfVxyXG5cclxuICAgICAgLy8gICBsZXQgc2VhcmNoR29hbHMgPSBuZXcgR29hbFNlYXJjaENyaXRlcmlhQXBpSW5wdXRNb2RlbCgpO1xyXG4gICAgICAvLyAgIHNlYXJjaEdvYWxzLnNlYXJjaFRleHQgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIC8vICAgLy8ucmVwbGFjZSgvXFxzL2csIFwiXCIpO1xyXG4gICAgICAvLyAgIC8vaWYgKGV2ZW50LnRhcmdldC52YWx1ZS5pbmRleE9mKCctJykpIHtcclxuICAgICAgLy8gICB0aGlzLnVzZXJTZXJ2aWNlLnNlYXJjaEdvYWxzKHNlYXJjaEdvYWxzKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgLy8gICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuXHJcbiAgICAgIC8vICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQgJiYgcmVzcG9uc2UuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAvLyAgICAgICAgIHJldHVybiB7XHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsSWQ6IGl0ZW0uZ29hbElkLFxyXG4gICAgICAvLyAgICAgICAgICAgZ29hbE5hbWU6IGl0ZW0uZ29hbE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsU2hvcnROYW1lOiBpdGVtLmdvYWxTaG9ydE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsVW5pcXVlTmFtZTogaXRlbS5nb2FsVW5pcXVlTmFtZSxcclxuICAgICAgLy8gICAgICAgICAgIHByb2plY3RJZDogaXRlbS5wcm9qZWN0SWQsXHJcbiAgICAgIC8vICAgICAgICAgICBwcm9qZWN0TmFtZTogaXRlbS5wcm9qZWN0TmFtZVxyXG4gICAgICAvLyAgICAgICAgIH1cclxuICAgICAgLy8gICAgICAgfSk7XHJcblxyXG4gICAgICAvLyAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgLy8gICAgIH1cclxuXHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gLy99XHJcblxyXG4gICAgICAvLyBpZiAoISh0aGlzLml0ZW1zLmxlbmd0aCA+IDApICYmICEodGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkgJiYgISh0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApICYmICEodGhpcy53aWRnZXRzLmxlbmd0aCA+IDApICYmICEodGhpcy50b29scy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSkge1xyXG4gICAgICBpZiAoISh0aGlzLml0ZW1zLmxlbmd0aCA+IDApICYmICEodGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSAmJiAhKHRoaXMudG9vbHMubGVuZ3RoID4gMCkgJiYgISh0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkpIHtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgICB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudCA9IDA7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudG9vbHNbMF07XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy53b3Jrc3BhY2VzICYmXHJcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMud2lkZ2V0cyAmJlxyXG4gICAgICAgIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB0aGlzLmVtcGxveWVlTGlzdCAmJlxyXG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJlxyXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMubWVudUl0ZW0pIHtcclxuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbVxyXG4gICAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wO1xyXG4gICAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xyXG4gICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcclxuICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgdGhpcy5wcm9qZWN0TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcztcclxuICAgICAgLy90aGlzLmVtcGxveWVlTGlzdCA9ICh0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCAmJiB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSA/IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0IDogW107XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gW107XHJcbiAgICAgIC8vIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIC8vIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLml0ZW1zWzBdIDogbnVsbDtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID09IFwiXCIgPyAodGhpcy5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkKSA6IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlU2VhcmNoKGV2ZW50KSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtXHJcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKVxyXG4gICAgICAuc29ydCgoYSwgYikgPT4gKGEubWVudS50b0xvd2VyQ2FzZSgpID4gYi5tZW51LnRvTG93ZXJDYXNlKCkgPyAxIDogLTEpKTtcclxuICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3A7XHJcbiAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcclxuICAgIHRoaXMudG9vbHMgPSB0aGlzLmFkbWluVG9vbHM7XHJcbiAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcztcclxuICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMucHJvamVjdExpc3QgPSBbXTtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA6IFtdO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZShldmVudCwgaXRlbSkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlJZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnJzcy5nZXRTZWFyY2hNZW51SXRlbXMoeyBzZWFyY2hUZXh0OiBudWxsLCBzZWFyY2hVbmlxdWVJZDogdGhpcy5zZWFyY2hUZXh0IH0pXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBpZiAocmVzLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb1JvdXRlKHJlcy5kYXRhWzBdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKCdHaXZlbiBJZCBpcyBub3QgdmFsaWQsIHBsZWFzZSBwcm92aWRlIGNvcnJlY3QgaWQgdG8gbmF2aWdhdGUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICghcmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzLmFwaVJlc3BvbnNlTWVzc2FnZXNbMF0ubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGl0ZW0pIHtcclxuICAgICAgdGhpcy5yZWRpcmVjdFRvUm91dGUoaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvUm91dGUoaXRlbSkge1xyXG4gICAgdmFyIG5hbWU7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgfHwgdGhpcy5zZWFyY2hCeUlkKSB7XHJcbiAgICAgIGlmIChpdGVtLml0ZW1UeXBlICYmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHx8IChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgICAvL3RoaXMuSW5zZXJ0U2VhcmNoKGl0ZW0udW5pcXVlbk5hbWUpO1xyXG4gICAgICAgIC8vaWYgKHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudC5wcm9qZWN0SWQgPT0gaXRlbS5wcm9qZWN0SWQpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB7XHJcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW1cIiwgaXRlbS5pdGVtSWRdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgJiYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCBpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50LnByb2plY3RJZCA9PSBpdGVtLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwpIHtcclxuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL2dvYWxcIiwgaXRlbS5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5zcHJpbnQsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICAgIFwiL2Rhc2hib2FyZC9wcm9maWxlL1wiICsgaXRlbS5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0LCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJwcm9qZWN0cy9wcm9qZWN0c3RhdHVzL1wiICsgaXRlbS5pdGVtSWQgKyBcIi9hY3RpdmUtZ29hbHNcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmIChpdGVtLm1lbnUpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgbmFtZSA9IGl0ZW0ubWVudTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW2l0ZW0uc3RhdGVdKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZW50U2VhcmNoVHlwZS5tZW51LCBpdGVtLmlkKTtcclxuICAgIH1cclxuICAgIC8vIGVsc2UgaWYgKGl0ZW0ucGVybWlzc2lvbikge1xyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIC8vICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgLy8gICBuYW1lID0gaXRlbS5uYW1lO1xyXG4gICAgLy8gICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlKTtcclxuICAgIC8vICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW2l0ZW0ubGlua10pO1xyXG4gICAgLy8gfSBcclxuICAgIGVsc2UgaWYgKGl0ZW0ud29ya3NwYWNlSWQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgbmFtZSA9IGl0ZW0ud29ya3NwYWNlTmFtZTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZW50U2VhcmNoVHlwZS5kYXNoYm9hcmQsIGl0ZW0ud29ya3NwYWNlSWQpO1xyXG4gICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgaXRlbS53b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgaXRlbS53b3Jrc3BhY2VJZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoaXRlbS53aWRnZXRJZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICBuYW1lID0gaXRlbS53aWRnZXROYW1lO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlbnRTZWFyY2hUeXBlLndpZGdldCwgaXRlbS53aWRnZXRJZCk7XHJcbiAgICAgIHRoaXMuUmVkaXJlY3RUb0FwcChpdGVtKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLlNlYXJjaFJlY2VudEl0ZW0oaXRlbSwgZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIEluc2VydFNlYXJjaChuYW1lLCByZWNlbnRTZWFyY2hUeXBlLCBpZCkge1xyXG4gICAgdGhpcy5yc3MuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogbmFtZSwgcmVjZW50U2VhcmNoVHlwZTogcmVjZW50U2VhcmNoVHlwZSwgaXRlbUlkOiBpZCB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAvLyB0aGlzLnJlY2VudFNlYXJjaGVzLmluY2x1ZGVzKG5hbWUpXHJcbiAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSh0aGlzLnJlY2VudFNlYXJjaGVzLmluZGV4T2YobmFtZSksIDEpLFxyXG4gICAgICAgIC8vICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSgwLCAwLCBuYW1lKSlcclxuICAgICAgICAvLyAgIDogdGhpcy5yZWNlbnRTZWFyY2hlcy51bnNoaWZ0KG5hbWUpO1xyXG4gICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBTZWFyY2hSZWNlbnRJdGVtKHNlYXJjaCwgZXZlbnQpIHtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLm1lbnUpIHtcclxuICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLm1lbnUudG9Mb3dlckNhc2UoKSA9PSBzZWFyY2gucmVjZW50U2VhcmNoLnRvTG93ZXJDYXNlKClcclxuICAgICAgKTtcclxuICAgICAgaXRlbS5sZW5ndGggPiAwID8gdGhpcy5uYXZpZ2F0ZShldmVudCwgaXRlbVswXSkgOiBudWxsXHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcclxuICAgICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHNlYXJjaC5pdGVtSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoXHJcbiAgICAgICAgW1wiZGFzaGJvYXJkLW1hbmFnZW1lbnQvd2lkZ2V0c1wiLCBzZWFyY2guaXRlbUlkXVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuYWRob2MsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW1cIiwgc2VhcmNoLml0ZW1JZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvd29ya2l0ZW1cIiwgc2VhcmNoLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuZ29hbCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsXCIsIHNlYXJjaC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBzZWFyY2guaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUucHJvamVjdCwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJwcm9qZWN0cy9wcm9qZWN0c3RhdHVzL1wiICsgc2VhcmNoLml0ZW1JZCArIFwiL2FjdGl2ZS1nb2Fsc1wiKTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5lbXBsb3llZSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICBcIi9kYXNoYm9hcmQvcHJvZmlsZS9cIiArIHNlYXJjaC5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNZW51KGV2ZW50LCBjbGljaykge1xyXG4gICAgaWYgKGNsaWNrLndoaWNoID09IDEgJiYgZXZlbnQud29ya3NwYWNlSWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgZXZlbnQud29ya3NwYWNlSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIGV2ZW50LndvcmtzcGFjZUlkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGFzaGJvYXJkID0gZXZlbnQud29ya3NwYWNlSWQ7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5tZW51SXRlbU5hbWUgPSBldmVudC53b3Jrc3BhY2VOYW1lO1xyXG4gICAgICB0aGlzLnJzc1xyXG4gICAgICAgIC5pbnNlcnRSZWNlbnRTZWFyY2goeyBuYW1lOiBldmVudC53b3Jrc3BhY2VOYW1lLCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLmRhc2hib2FyZCwgaXRlbUlkOiBldmVudC53b3Jrc3BhY2VJZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMoZXZlbnQud29ya3NwYWNlTmFtZSlcclxuICAgICAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZShcclxuICAgICAgICAgICAgLy8gICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmRleE9mKGV2ZW50LndvcmtzcGFjZU5hbWUpLFxyXG4gICAgICAgICAgICAvLyAgICAgICAxXHJcbiAgICAgICAgICAgIC8vICAgICApLFxyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoMCwgMCwgZXZlbnQud29ya3NwYWNlTmFtZSkpXHJcbiAgICAgICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQoZXZlbnQud29ya3NwYWNlTmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEVtcGxveWVlKGV2ZW50LCBjbGljaykge1xyXG4gICAgaWYgKGNsaWNrLndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXHJcbiAgICAgICAgXCIvZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBldmVudC5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXNoYm9hcmQgPSBldmVudC53b3Jrc3BhY2VJZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlID0gZXZlbnQuaXRlbUlkO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMubWVudUl0ZW1OYW1lID0gZXZlbnQuaXRlbU5hbWU7XHJcbiAgICAgIHRoaXMucnNzXHJcbiAgICAgICAgLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IGV2ZW50Lml0ZW1OYW1lLCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBpdGVtSWQ6IGV2ZW50Lml0ZW1JZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucnNzLmdldFJlY2VudFNlYXJjaCgpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMsIEpTT04uc3RyaW5naWZ5KHRoaXMuYWxsc2VhcmNoZXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEFkaW1uVG9vbChsaW5rLCBldmVudCwgaXRlbSkge1xyXG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtsaW5rXSk7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5yc3MuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogaXRlbS5tZW51LCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLm1lbnUsIGl0ZW1JZDogaXRlbS5pZCB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgLy8gdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmNsdWRlcyhuYW1lKVxyXG4gICAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSh0aGlzLnJlY2VudFNlYXJjaGVzLmluZGV4T2YobmFtZSksIDEpLFxyXG4gICAgICAgICAgLy8gICAgIHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKDAsIDAsIG5hbWUpKVxyXG4gICAgICAgICAgLy8gICA6IHRoaXMucmVjZW50U2VhcmNoZXMudW5zaGlmdChuYW1lKTtcclxuICAgICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIE9uU2VsZWN0KHdpZGdldCwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLlJlZGlyZWN0VG9BcHAod2lkZ2V0KTtcclxuICAgICAgdGhpcy5yc3NcclxuICAgICAgICAuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogd2lkZ2V0LndpZGdldE5hbWUsIHJlY2VudFNlYXJjaFR5cGU6IFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBpdGVtSWQ6IHdpZGdldC53aWRnZXRJZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMod2lkZ2V0LndpZGdldE5hbWUpXHJcbiAgICAgICAgICAgIC8vICAgPyAodGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoXHJcbiAgICAgICAgICAgIC8vICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMuaW5kZXhPZih3aWRnZXQud2lkZ2V0TmFtZSksXHJcbiAgICAgICAgICAgIC8vICAgICAgIDFcclxuICAgICAgICAgICAgLy8gICAgICksXHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSgwLCAwLCB3aWRnZXQud2lkZ2V0TmFtZSkpXHJcbiAgICAgICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQod2lkZ2V0LndpZGdldE5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0UmVjZW50U2VhcmNoZXMoKSB7XHJcbiAgICB0aGlzLnJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMucnNzLmdldFJlY2VudFNlYXJjaCgpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHJlc3BvbnNlRGF0YS5kYXRhO1xyXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeSh0aGlzLmFsbHNlYXJjaGVzKSk7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlc2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIFJlZGlyZWN0VG9BcHAod2lkZ2V0KSB7XHJcbiAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShcclxuICAgICAgW1wiZGFzaGJvYXJkLW1hbmFnZW1lbnQvd2lkZ2V0c1wiLCB3aWRnZXQud2lkZ2V0SWRdXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBPbkdvYWxTZWxlY3QoZ29hbCwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLlJlZGlyZWN0VG9Hb2FsKGdvYWwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUmVkaXJlY3RUb0dvYWwoZ29hbCkge1xyXG4gICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb2plY3RJZCA9PSBnb2FsLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xyXG4gICAgaWYgKGdvYWwuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCkge1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChnb2FsLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIGdvYWwuaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvZ29hbFwiLCBnb2FsLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChnb2FsLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCwgZ29hbC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnRcIiwgZ29hbC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuICAvLyAgfVxyXG5cclxuICBPblVzZXJTdG9yeVNlbGVjdCh1c2VyU3RvcnksIGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5SZWRpcmVjdFRvVXNlclN0b3J5KHVzZXJTdG9yeSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBSZWRpcmVjdFRvVXNlclN0b3J5KHVzZXJTdG9yeSkge1xyXG4gICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb2plY3RJZCA9PSB1c2VyU3RvcnkucHJvamVjdElkKS5sZW5ndGggPiAwKSB7XHJcbiAgICBpZiAodXNlclN0b3J5Lml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2godXNlclN0b3J5Lml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcsIHVzZXJTdG9yeS5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCB1c2VyU3RvcnkuaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHVzZXJTdG9yeS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5hZGhvYywgdXNlclN0b3J5Lml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImRhc2hib2FyZC9hZGhvYy13b3JraXRlbVwiLCB1c2VyU3RvcnkuaXRlbUlkXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcbiAgLy8gfVxyXG5cclxuICBTZXQoKSB7XHJcbiAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIGFycm93RG93bkV2ZW50Rm9yU2VhcmNoQnlUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA8IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCsrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA9PSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMucHJvamVjdEluZGV4ID09IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPT0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy51c2VycyA8IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMudXNlcnMrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4IDwgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5nb2FsSW5kZXggPT0gdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPCB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFycm93RG93bkV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCAmJiB0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgdGhpcy5hcnJvd0Rvd25FdmVudEZvclNlYXJjaEJ5VGV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPCB0aGlzLml0ZW1zLmxlbmd0aCAtIDFcclxuICAgICkge1xyXG4gICAgICAvL3RoaXMubWVudUVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxCeSgwLCAxMDApO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmXHJcbiAgICAgIHRoaXMud3MgPCB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMud3MrKztcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCArPSA0MTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA8IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgKz0gNDg7XHJcbiAgICAgIHRoaXMud2QrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA8IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzIDwgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy51c2VycysrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4IDwgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA8IDgpIHtcclxuICAgICAgdGhpcy5ycysrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy50ID0gdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9PSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy50ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud2QgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDggJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5ycyA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMFxyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gOCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICBpZiAodGhpcy5ycyAhPT0gbnVsbCAmJiB0aGlzLnJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiA4ICYmIHRoaXMucnMgPCA4KSB7XHJcbiAgICAvLyAgICAgdGhpcy5ycysrO1xyXG4gICAgLy8gICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgLy8gICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGVsc2UgaWYgKHRoaXMucnMgIT09IG51bGwgJiYgdGhpcy5ycyAhPT0gdW5kZWZpbmVkICYmICh0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCkgLSAxID4gdGhpcy5ycyAmJiB0aGlzLnJzIDwgOCkge1xyXG4gICAgLy8gICAgIHRoaXMucnMrKztcclxuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgfVxyXG4gIGFycm93VXBFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4LS07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgLT0gNDU7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0W3RoaXMucHJvamVjdEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF0uaXRlbUlkICYmIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPiAwKSB7XHJcbiAgICAgIHRoaXMudXNlcnMtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLmdvYWxJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXgtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJyb3dVcEV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH0gXHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dVcEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCk7XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gbWVudXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleC0tO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIHdvcmtzcGFjZXNcclxuICAgIGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmXHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgPT0gdGhpcy53b3Jrc3BhY2VzWzBdLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gMCAmJlxyXG4gICAgICB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgLT0gNDE7XHJcbiAgICAgIHRoaXMud3MtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSB3aWRnZXRzICAgIFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wIC09IDQ4O1xyXG4gICAgICB0aGlzLndkLS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCA9PSB0aGlzLndpZGdldHNbMF0ud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLml0ZW1DbGlja2VkLndpZGdldElkID09IHRoaXMud2lkZ2V0c1swXS53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiZcclxuICAgICAgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIEVtcGxveWVlcyAgIFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiZcclxuICAgICAgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJlxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gV0kvQnVnICAgICAgICAgTkVFRCBUTyBETyBcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLnVzZXJzID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLnVzZXJzLS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSAwICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICAgIC8vRnJvbSBnb2FsL3NwcmludFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLmdvYWxJbmRleCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5nb2FsSW5kZXgtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5TGlzdFt0aGlzLnVzZXJzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBldHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICAgIC8vRnJvbSByZWNlbnQgc2VhcmNoZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPiAwKSB7XHJcbiAgICAgIHRoaXMucnMtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxyXG4gICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMudXNlclN0b3J5TGlzdCAmJiB0aGlzLnVzZXJTdG9yeUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiYgdGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy50ID0gdGhpcy50b29scy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmZ1bGxOYW1lICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLndkID0gODtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudG9vbHNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnBlcm1pc3Npb24gJiYgdGhpcy50ID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIGlmICh0aGlzLnJzICE9PSBudWxsICYmIHRoaXMucnMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJzID4gMCkge1xyXG4gICAgLy8gICAgIHRoaXMucnMtLTtcclxuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIC8vICAgICAvLyB0aGlzLmhpZ2hsaWdodChuZXh0cm93KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuICBhcnJvd0xlZnRFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xyXG4gICAgfVxyXG4gIH1cclxuICBhcnJvd0xlZnRFdmVudCgpIHtcclxuICAgIC8vIGlmIChcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IHVuZGVmaW5lZCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gbnVsbCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT09IFwiXCJcclxuICAgIC8vICkge1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dMZWZ0RXZlbnRGb3JTZWFyY2hCeVRleHQoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gd29ya3NwYWNlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vZnJvbSB3aWRnZXRzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIGVtcGxveWVlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBXSS9CdWdcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXHJcbiAgICAgICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gR29hbC9TcHJpbnRcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcclxuICAgICAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSByZWNlbnQgc2VhcmNoZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFycm93UmlnaHRFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJyb3dSaWdodEV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH0gXHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dSaWdodEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gbWVudXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSB3b3Jrc3BhY2VzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gd2lkZ2V0c1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIEVtcGxveWVlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBXSS9CdWdcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBHb2FsL1NwcmludFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsKVxyXG4gICAgICAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbldvcmtzcGFjZUZvcm0oKSB7XHJcbiAgICB0aGlzLmFkZFdvcmtTcGFjZVBvcE92ZXIub3BlbigpO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgdGhpcy5nZXRBbGxSb2xlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsUm9sZXMoKSB7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuR2V0YWxsUm9sZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucm9sZXNEcm9wRG93biA9IHJlc3BvbnNlRGF0YS5kYXRhO1xyXG4gICAgICB0aGlzLnJvbGVzRHJvcERvd24uZm9yRWFjaCgocCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlkID0gcC5yb2xlSWQudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBwLnJvbGVJZCA9IGlkO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZVNlbGVjdGVkUm9sZXNGbigpIHsgfVxyXG4gIGNvbXBhcmVFZGl0U2VsZWN0ZWRSb2xlc0ZuKCkgeyB9XHJcbiAgY29tcGFyZURlbGV0ZVNlbGVjdGVkUm9sZXNGbigpIHsgfVxyXG4gIHVwc2VydFdvcmtzcGFjZSgpIHsgfVxyXG4gIHRvZ2dsZUFsbFJvbGVzU2VsZWN0ZWQoKSB7IH1cclxuICB0b2dnbGVFZGl0QWxsUm9sZXNTZWxlY3RlZCgpIHsgfVxyXG4gIHRvZ2dsZURlbGV0ZUFsbFJvbGVzU2VsZWN0ZWQoKSB7IH1cclxuICBjbG9zZUFkZFdvcmtzcGFjZURpYWxvZygpIHsgfVxyXG59XHJcbiIsIjxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwidmlzaWJsZXNcIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVzXCIgZnhIaWRlLmd0LXhzIGZ4U2hvdz5cclxuICA8bWF0LWljb24gY2xhc3M9XCJuZXdNZW51XCI+bWVudTwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG48ZGl2IGZ4RmxleCBjbGFzcz1cIm5ld0xvZ28gZGVmYXVsdC1iZyB0b3AtbG9nby1iZyBuZXdtaW5pbG9nbyB6b29tLWltYWdlLWhvdmVyXCIgZnhIaWRlLmd0LXhzIGZ4U2hvdz5cclxuICA8aW1nIHNyYz1cInt7Y29tcGFueU1pbmlMb2dvfX1cIiBhbHQ9XCJcIiBpZD1cIm1pbmktbG9nby10b3BiYXJcIiBzdHlsZT1cIndpZHRoOjMwcHg7IGhlaWdodDozMHB4O1wiXHJcbiAgICAoY2xpY2spPVwiZ2V0QWxsTWVudUl0ZW1zKClcIiAvPlxyXG48L2Rpdj5cclxuPGRpdiBmeEZsZXggY2xhc3M9XCJuZXdMb2dvICB0b3AtbG9nby1iZyBhcHBzLWJ1dHRvbiB6b29tLWltYWdlLWhvdmVyXCIgc3R5bGU9XCJsZWZ0OiAwcHg7XCIgZnhIaWRlIGZ4U2hvdy5ndC14cz5cclxuICA8aW1nIHNyYz1cInt7Y29tcGFueU1haW5Mb2dvfX1cIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtsZWZ0OiAyMHB4O2xlZnQ6IDIwcHg7cG9zaXRpb246IHJlbGF0aXZlO1wiIGlkPVwibWFpbi1sb2dvLXRvcGJhclwiXHJcbiAgICBjbGFzcz1cImltZy1oZWlnaHQtbWFpbi1sb2dvLXRvcGJhclwiIChjbGljayk9XCJnZXRBbGxNZW51SXRlbXMoKVwiIC8+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBcclxuPG1hdC1tZW51ICNtZW51cz1cIm1hdE1lbnVcIiBjbGFzcz1cImZpbHRlci1wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mKG1lbnVJdGVtcyQgfCBhc3luYylcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdkcm9wRG93bidcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJsZXZlbFR3b01lbnVcIiAobW91c2VvdmVyKT1cIm9wZW5MZXZlbDJNZW51KGl0ZW0uc3RhdGUsaXRlbS5zdWIpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+e3sgaXRlbS5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2xpbmsnXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGl0ZW0uc3RhdGUgfX1cIj5cclxuICAgICAgICA8bWF0LWljb24+e3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj57eyBpdGVtLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L21hdC1tZW51PlxyXG5cclxuPG1hdC1tZW51ICNsZXZlbFR3b01lbnU9XCJtYXRNZW51XCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbUx2bDIgb2Ygc3ViTGV2ZWxzXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbUx2bDIudHlwZSA9PT0gJ2Ryb3BEb3duJ1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImxldmVsVGhyZWVNZW51XCJcclxuICAgICAgICAobW91c2VvdmVyKT1cIm9wZW5MZXZlbDNNZW51KHN0YXRlTHZsMSxpdGVtTHZsMi5zdGF0ZSxpdGVtLnN1YilcIj5cclxuICAgICAgICB7eyBpdGVtTHZsMi5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJpdGVtTHZsMi50eXBlID09ICdhcHBsaWNhdGlvbmxpbmsnXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGl0ZW1MdmwyLnN0YXRlIH19XCI+XHJcbiAgICAgICAge3sgaXRlbUx2bDIubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbUx2bDIudHlwZSA9PSAnbGluaydcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3tzdGF0ZUx2bDF9fS97eyBpdGVtTHZsMi5zdGF0ZSB9fVwiPlxyXG4gICAgICAgIHt7IGl0ZW1MdmwyLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L21hdC1tZW51PlxyXG5cclxuPG1hdC1tZW51ICNsZXZlbFRocmVlTWVudT1cIm1hdE1lbnVcIj5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtTHZsMyBvZiBzdWJMZXZlbHNGb3JMZXZlbDJcIj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGxldmVsM0xpbmsxIH19L3t7IGxldmVsM0xpbmsyIH19L3t7aXRlbUx2bDMuc3RhdGV9fVwiPlxyXG4gICAgICB7eyBpdGVtTHZsMy5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L21hdC1tZW51PiAtLT5cclxuXHJcbjxtYXQtbWVudSAjbWVudXM9XCJtYXRNZW51XCIgeVBvc2l0aW9uPVwiYmVsb3dcIiBjbGFzcz1cImZpbHRlci1wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gIHN0eWxlPVwiaGVpZ2h0OmF1dG9cIj5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICdsaW5rJyB8fCBpdGVtLnR5cGUgPT0gJ2FwcGxpY2F0aW9ubGluaydcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3sgaXRlbS5zdGF0ZSB9fVwiIChjbGljayk9XCJzZWxlY3RNZW51KGl0ZW0sJGV2ZW50KVwiXHJcbiAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+e3sgaXRlbS5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT5cclxuXHJcblxyXG48ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1xyXG5sZWZ0OiA5MCVcIiBjbGFzcz1cInN0b3JlLWljb20gbWF0LWljb24tYnV0dG9uXCIgKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9EcmFnQXBwc1wiXHJcbiAgW25nQ2xhc3NdPVwidGhpcy5yb3V0ZXMudXJsLmluY2x1ZGVzKCcvYXBwLXN0b3JlL3dpZGdldHMnKSA/ICdpY29uX2FjdGl2ZV9jbGFzcycgOiAnJ1wiPlxyXG4gIDxmYS1pY29uIGljb249XCJzdG9yZVwiIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7XCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICBtYXRUb29sdGlwPVwie3sgJ0FQUC5BUFBTVE9SRScgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJvcGVuQXBwcygpXCJcclxuICAgIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBjdXJzb3ItcG9pbnRlciB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiPjwvZmEtaWNvbj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiU2VhcmNoQm94IGRyb3Bkb3duXCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcIj5cclxuICA8c3BhbiBjbGFzcz1cIm1hdC1jb2xvci1hY2NlbnQgaW5wdXQtZ3JvdXAtYWRkb25cIiAqbmdJZj1cInNlYXJjaEJ5VGV4dFwiPkAgJm5ic3A7PC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBpbnB1dC1ncm91cC1hZGRvblwiICpuZ0lmPVwic2VhcmNoQnlJZFwiPiMgJm5ic3A7PC9zcGFuPlxyXG4gIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiU2VhcmNoQm94LWlucHV0IGRyb3BidG5cIiBwbGFjZWhvbGRlcj1cInt7ICdBUFAuU1RBUlRIRVJFT1JDTElDS0NPTlRST0wrUScgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICBbY2xhc3MuaGlkZS1wbGFjZWhvbGRlcl09XCJzZWFyY2hCeVRleHQgfHwgc2VhcmNoQnlJZFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNlbGVtZW50IFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAoaW5wdXQpPVwiU2VhcmNoSXRlbSgkZXZlbnQpXCIgKGNsaWNrKT1cIlNlYXJjaEl0ZW0oJGV2ZW50KVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJTZXQoKTtcIlxyXG4gICAgKGtleWRvd24uZW50ZXIpPVwibmF2aWdhdGUoJGV2ZW50LCBpdGVtQ2xpY2tlZClcIiAoa2V5ZG93bi5hcnJvd2Rvd24pPVwiYXJyb3dEb3duRXZlbnQoKVwiXHJcbiAgICAoa2V5ZG93bi5hcnJvd3VwKT1cImFycm93VXBFdmVudCgpXCIgKGtleWRvd24uYXJyb3dsZWZ0KT1cImFycm93TGVmdEV2ZW50KClcIiAoa2V5ZG93bi5hcnJvd3JpZ2h0KT1cImFycm93UmlnaHRFdmVudCgpXCI+XHJcblxyXG4gIDxidXR0b24gY2xhc3M9XCJTZWFyY2hCb3gtYnV0dG9uXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImNsb3NlX2ljb25fc2VhcmNoXCI+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiIXNlYXJjaFRleHRcIj48L3NwYW4+XHJcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNlYXJjaFRleHRcIiBjbGFzcz1cImljb24tYnV0dG9uIG1yLTA1XCIgYXJpYS1oaWRkZW49XCJmYWxzZVwiIChjbGljayk9XCJjbG9zZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjpwb2ludGVyXCI+XHJcbiAgICAgICAgY2xvc2U8L21hdC1pY29uPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPG1hdC1pY29uIGNsYXNzPVwiU2VhcmNoQm94LWljb24gaWNvbi1jb2xvciBtdC1sZy1uMiBtci0wNSBpbmZvLWNsYXNzXCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwicFwiXHJcbiAgICAgICNpbmZvUG9wT3Zlcj1cInNhdFBvcG92ZXJBbmNob3JcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib3BlbkluZm8oaW5mb1BvcE92ZXIpXCI+aW5mbzwvbWF0LWljb24+XHJcbiAgICA8bWF0LWljb24gY2xhc3M9XCJTZWFyY2hCb3gtaWNvbiBpY29uLWNvbG9yIG10LWxnLW4yXCIgY29sb3I9XCJwcmltYXJ5XCI+c2VhcmNoPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudFwiIFtuZ0NsYXNzXT1cInsnZC1ibG9jaycgOiBkaXNwbGF5LCAgJ2Qtbm9uZScgOiAhZGlzcGxheX1cIj5cclxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCJcclxuICAgICAgKm5nSWY9XCJsb2FkaW5nU2VhcmNoTWVudURhdGEgfHwgcmVjZW50U2VhcmNoZXNmZXRjaEluUHJvZ3Jlc3MgfHwgd2lkZ2V0c2ZldGNoSW5Qcm9ncmVzc1wiPlxyXG4gICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyByb3dzZWxlY3RcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5zZWxlY3QtbmV4dCBwbC0wNVwiICpuZ0lmPVwiaXRlbXMgJiYgKGl0ZW1zLmxlbmd0aD4wKSAmJiAhKHNlYXJjaEJ5SWQgfHwgc2VhcmNoQnlUZXh0KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj57eyAnU0hFTEwuQVBQTElDQVRJT05TJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBpZD1cInN0eWxlLTFcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXMgJiYgaXRlbXMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGkgPSBpbmRleDtcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInNlbGVjdGVkUm93SW5kZXggPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2xpbmsnIHx8IGl0ZW0udHlwZSA9PSAnYXBwbGljYXRpb25saW5rJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3sgaXRlbS5zdGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkUm93SW5kZXggPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInNlbGVjdEFkaW1uVG9vbChpdGVtLnN0YXRlLCAkZXZlbnQsIGl0ZW0pXCIgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcclxuICAgICAgICAgICAgICAgICAgICB0cnVlfVwiIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIlxyXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgdHJhbnNsYXRlYXBwbGljYXRpb25uYW1lKGl0ZW0ubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLWNvbG9yXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRSb3dJbmRleCA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInRyYW5zbGF0ZWFwcGxpY2F0aW9ubmFtZShpdGVtLm1lbnUpIHwgIHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyB8IGhpZ2hMaWdodFRleHQgOiBzZWFyY2hUZXh0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBwbC0wNVwiICpuZ0lmPVwiIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnNlbGVjdC1uZXh0IG1sLTBcIiAqbmdJZj1cIndvcmtzcGFjZXMgJiYgKHdvcmtzcGFjZXMubGVuZ3RoPjApXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+e3sgJ1NIRUxMLkRBU0hCT0FSRFMnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cInBsdXMtc3F1YXJlXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0FkZERhc2hib2FyZFwiIG1hdFRvb2x0aXA9XCJ7eyAnQVBQLkFERERBU0hCT0FSRCcgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImluaXRpYWxpemVXb3Jrc3BhY2VGb3JtKCk7b3BlbldvcmtzcGFjZUZvcm0oKTtcIiBjbGFzcz1cIm1hdC1jb2xvci1hY2NlbnQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cImFkZFdvcmtzcGFjZVwiPlxyXG4gICAgICAgICAgICA8L2ZhLWljb24+IFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGlkPVwic3R5bGUtMlwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtzcGFjZXMgJiYgd29ya3NwYWNlcy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdjIG9mIHdvcmtzcGFjZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwid3MgPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiIGNsYXNzPVwic2Nyb2xsXCIgI3dvcmtzcGFjZUVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKG1vdXNlZG93bik9XCJzZWxlY3RNZW51KHdjLCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3cyA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiIChjbGljayk9XCJuYXZpZ2F0ZVRvVXJsKHdjLndvcmtzcGFjZUlkKVwiXHJcbiAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL3t7IHdjLndvcmtzcGFjZUlkIH19XCIgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7e3djLndvcmtzcGFjZU5hbWV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIndjLndvcmtzcGFjZU5hbWUgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dCBcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbnNlbGVjdC1hcHBzIG1sLTBcIiAqbmdJZj1cIndpZGdldHMgJiYgd2lkZ2V0cy5sZW5ndGg+MCAgJiYgIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+e3sgJ1NIRUxMLkZBVk9VUklURUFQUFMnIHwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIiBpZD1cInN0eWxlLTNcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwid2QgPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcclxuICAgICAgICAgIHRydWV9XCIgcm91dGVyTGluaz1cIi9kYXNoYm9hcmQtbWFuYWdlbWVudC93aWRnZXRzL3t7IHdpZGdldC53aWRnZXRJZCB9fVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2QgPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIiAobW91c2Vkb3duKT1cIk9uU2VsZWN0KHdpZGdldCwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7d2lkZ2V0LndpZGdldE5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwid2lkZ2V0LndpZGdldE5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMFwiICpuZ0lmPVwicHJvamVjdExpc3QgJiYgcHJvamVjdExpc3QubGVuZ3RoPjAgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+UHJvamVjdHM8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsXCIgaWQ9XCJzdHlsZS03XCJcclxuICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb2plY3Qgb2YgcHJvamVjdExpc3Q7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJwcm9qZWN0SW5kZXggPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcclxuICAgICAgIHRydWV9XCIgW25nQ2xhc3NdPVwicHJvamVjdEluZGV4ID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCJcclxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUHJvamVjdFNlbGVjdChwcm9qZWN0LCRldmVudClcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3twcm9qZWN0Lml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInByb2plY3QuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMFwiXHJcbiAgICAgICAgKm5nSWY9XCJ1c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoPjAgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCIgKm5nSWY9XCJpc0VuYWJsZUJ1Z0JvYXJkXCI+e3sgJ1NIRUxMLldJQlVHJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiICpuZ0lmPVwiIWlzRW5hYmxlQnVnQm9hcmRcIj57eyAnU0hFTEwuV0knfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxcIiBpZD1cInN0eWxlLTVcIlxyXG4gICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdXNlclN0b3J5IG9mIHVzZXJTdG9yeVNlYXJjaExpc3Q7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJ1c2VycyA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OlxyXG4gICAgICAgICB0cnVlfVwiIFtuZ0NsYXNzXT1cInVzZXJzID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKG1vdXNlZG93bik9XCJPblVzZXJTdG9yeVNlbGVjdCh1c2VyU3RvcnksJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7e3VzZXJTdG9yeS5pdGVtTmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJ1c2VyU3RvcnkuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnNlbGVjdC1uZXh0IG1sLTBcIlxyXG4gICAgICAgICpuZ0lmPVwiZ29hbFNlYXJjaExpc3QgJiYgZ29hbFNlYXJjaExpc3QubGVuZ3RoPjAgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+e3sgJ1NIRUxMLkdPQUxTUFJJTlQnIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbFwiIGlkPVwic3R5bGUtNlwiXHJcbiAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBnb2FsIG9mIGdvYWxTZWFyY2hMaXN0OyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ29hbEluZGV4ID09IGkgPyB0aGVtZUJhc2VDb2xvciA6ICd3aGl0ZSdcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbmtBY3RpdmU9XCJpdGVtLWFjdGl2ZVwiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7ZXhhY3Q6XHJcbiAgICAgICAgIHRydWV9XCIgW25nQ2xhc3NdPVwiZ29hbEluZGV4ID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKG1vdXNlZG93bik9XCJPbkdvYWxTZWxlY3QoZ29hbCwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7Z29hbC5pdGVtTmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJnb2FsLml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5zZWxlY3QtYXBwcyBtbC0wXCJcclxuICAgICAgICAqbmdJZj1cIihlbXBsb3llZUxpc3QgJiYgZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApICYmIHNlYXJjaFRleHQgJiYgc2VhcmNoQnlUZXh0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiPkVtcGxveWVlczwvZGl2PlxyXG4gICAgICAgIDxkaXYgaWQ9XCJzdHlsZS00XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZW1wbG95ZWUgb2YgZW1wbG95ZWVMaXN0OyBsZXQgaSA9IGluZGV4XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJzZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiICN3b3Jrc3BhY2VFbGVtZW50PlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKG1vdXNlZG93bik9XCJzZWxlY3RFbXBsb3llZShlbXBsb3llZSwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIlxyXG4gICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvZGFzaGJvYXJkL3Byb2ZpbGUve3sgZW1wbG95ZWUuaXRlbUlkIH19L292ZXJ2aWV3XCIgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7ZW1wbG95ZWUuaXRlbU5hbWV9fVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtYXZhdGFyIFtuYW1lXT1cImVtcGxveWVlLml0ZW1OYW1lIHwgcmVtb3ZlU3BlY2lhbENoYXJhY3RlcnNcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7IGVtcGxveWVlLml0ZW1OYW1lIH19XCIgW3NyY109XCJlbXBsb3llZS5wcm9maWxlSW1hZ2UgfCBmZXRjaFNpemVkQW5kQ2FjaGVkSW1hZ2U6ICcyMCc6JydcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNSb3VuZF09XCJ0cnVlXCIgc2l6ZT1cIjIwXCIgKGNsaWNrKT1cInByb2ZpbGVQYWdlKGVtcGxveWVlLnVzZXJJZCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtYXZhdGFyPiBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0wNVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVtcGxveWVlLml0ZW1OYW1lIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uc2VsZWN0LWFwcHMgbWwtMFwiXHJcbiAgICAgICAgKm5nSWY9XCJyZWNlbnRTZWFyY2hlcyAmJiAocmVjZW50U2VhcmNoZXMubGVuZ3RoPjApICAmJiAhKHNlYXJjaEJ5SWQgfHwgc2VhcmNoQnlUZXh0KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj57eyAnU0hFTEwuUkVDRU5UU0VBUkNIUycgfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnRcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlYXJjaCBvZiByZWNlbnRTZWFyY2hlcyB8IHNsaWNlOjA6OSBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwicnMgPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW25nQ2xhc3NdPVwicnMgPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIlxyXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwic2VhcmNoVGV4dD1zZWFyY2gucmVjZW50U2VhcmNoO1NlYXJjaFJlY2VudEl0ZW0oc2VhcmNoLCRldmVudClcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3tzZWFyY2gucmVjZW50U2VhcmNoIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX0gXHJcbiAgICAgICAgICAoe3sgY29udmVydFRvTG9jYWxUaW1lKHNlYXJjaC5jcmVhdGVkRGF0ZVRpbWUpIHwgdGltZWFnbyB9fSlcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInNlYXJjaC5yZWNlbnRTZWFyY2ggfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAoe3sgY29udmVydFRvTG9jYWxUaW1lKHNlYXJjaC5jcmVhdGVkRGF0ZVRpbWUpIHwgdGltZWFnbyB9fSlcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBpbi1oZWFkZXIgXCIgKm5nSWY9XCIhc2VhcmNoVGV4dCAmJiBzZWFyY2hCeUlkXCI+XHJcbiAgICAgIFBsZWFzZSBlbnRlciB1bmlxdWUgaWQgYW5kIGNsaWNrIGVudGVyIGZvciBuYXZpZ2F0aW5nIHRvIGNvcnJlc3BpbmcgcGFnZVxyXG4gIDwvZGl2PlxyXG4gIFxyXG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBpbi1oZWFkZXIgXCIgKm5nSWY9XCIhc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIiA+XHJcbiAgICBQbGVhc2UgZW50ZXIgdGV4dCB0byByZXRyZWl2ZSBkYXRhIGJ5IGZpbHRlcmluZ1xyXG4gIDwvZGl2PiAtLT5cclxuICBcclxuXHJcbiAgPHNhdC1wb3BvdmVyIGJhY2tkcm9wQ2xhc3M9XCJiYWNrZHJvcC1jb2xvclwiIGhhc0JhY2tkcm9wICNhZGRXb3Jrc3BhY2UgdmVydGljYWxBbGlnbj1cImJlbG93XCIgaG9yaXpvbnRhbEFsaWduPVwiZW5kXCJcclxuICAgIFtpbnRlcmFjdGl2ZUNsb3NlXT1cImZhbHNlXCI+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJmaWx0ZXItZGF0YSBwLTBcIj5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZS10ZXh0IG1hdC1iZy1wcmltYXJ5IHAtMDUgbWItMVwiPlxyXG4gICAgICAgICAge3sgJ0FQUC5BREREQVNIQk9BUkRUSVRMRScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ3b3Jrc3BhY2VGb3JtXCIgbm92YWxpZGF0ZSAoc3VibWl0KT1cIndvcmtzcGFjZUZvcm0udmFsaWQgJiYgdXBzZXJ0V29ya3NwYWNlKClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7ICdIUk1BTkFHQU1FTlQuTkFNRScgfCB0cmFuc2xhdGV9fSpcIiBmb3JtQ29udHJvbE5hbWU9XCJ3b3Jrc3BhY2VOYW1lXCIgLz5cclxuICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCd3b3Jrc3BhY2VOYW1lJykuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgd29ya3NwYWNlRm9ybS5nZXQoJ3dvcmtzcGFjZU5hbWUnKS50b3VjaGVkIFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0FQUC5EQVNIQk9BUkROQU1FUkVRVUlSRUQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCd3b3Jrc3BhY2VOYW1lJykuaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnQVBQLkRBU0hCT0FSRE5BTUVMRU5HVEhFWENFRUQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIiByb3dzPVwiMlwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdDT01QQU5ZU0VUVElOR1MuREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlIH19XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSAmJiB3b3Jrc3BhY2VGb3JtLmdldCgnZGVzY3JpcHRpb24nKS50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnQVBQLkNVU1RPTUFQUERFU0NSSVBUSU9OTUFYTEVOR1RIRVJST1InIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInNlbGVjdGVkUm9sZXNcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZVNlbGVjdGVkUm9sZXNGblwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdXSURHRVRTLlZJRVdST0xFUycgfCB0cmFuc2xhdGUgfX1cIiBtdWx0aXBsZSByZXF1aXJlZD5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxTZWxlY3RlZCAoY2xpY2spPVwidG9nZ2xlQWxsUm9sZXNTZWxlY3RlZCgpXCIgW3ZhbHVlXT1cIjBcIj5cclxuICAgICAgICAgICAgICAgICAge3sgJ1BFUk1JU1NJT05NQU5BR0VNRU5ULlNFTEVDVEFMTCcgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwicm9sZXMucm9sZUlkXCIgKm5nRm9yPVwibGV0IHJvbGVzIG9mIHJvbGVzRHJvcERvd25cIiAjYWxsU2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvbGVzUGVyT25lKGFsbFNlbGVjdGVkLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb2xlcy5yb2xlTmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCdzZWxlY3RlZFJvbGVzJykuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgd29ya3NwYWNlRm9ybS5nZXQoJ3NlbGVjdGVkUm9sZXMnKS50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnQVBQLlNFTEVDVEFOWVJPTEUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJlZGl0Um9sZUlkc1wiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRWRpdFNlbGVjdGVkUm9sZXNGblwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdXSURHRVRTLkVESVRST0xFUycgfCB0cmFuc2xhdGUgfX1cIiBtdWx0aXBsZT5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxFZGl0U2VsZWN0ZWQgKGNsaWNrKT1cInRvZ2dsZUVkaXRBbGxSb2xlc1NlbGVjdGVkKClcIiBbdmFsdWVdPVwiMFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnUEVSTUlTU0lPTk1BTkFHRU1FTlQuU0VMRUNUQUxMJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJyb2xlLnJvbGVJZFwiICpuZ0Zvcj1cImxldCByb2xlIG9mIHJvbGVzRHJvcERvd25cIiAjYWxsRWRpdFNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFZGl0Um9sZXNQZXJPbmUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb2xlLnJvbGVOYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZGVsZXRlUm9sZUlkc1wiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRGVsZXRlU2VsZWN0ZWRSb2xlc0ZuXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1dJREdFVFMuREVMRVRFUk9MRVMnIHwgdHJhbnNsYXRlIH19XCIgbXVsdGlwbGU+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAjYWxsRGVsZXRlU2VsZWN0ZWQgKGNsaWNrKT1cInRvZ2dsZURlbGV0ZUFsbFJvbGVzU2VsZWN0ZWQoKVwiIFt2YWx1ZV09XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7ICdQRVJNSVNTSU9OTUFOQUdFTUVOVC5TRUxFQ1RBTEwnIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInJvbGUucm9sZUlkXCIgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXNEcm9wRG93blwiICNhbGxEZWxldGVTZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGVsZXRlUm9sZXNQZXJPbmUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb2xlLnJvbGVOYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTFcIiBtYXQtYnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidXBzZXJ0V29ya3NwYWNlKClcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhd29ya3NwYWNlRm9ybS52YWxpZFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgKm5nSWY9XCJkYXNoYm9hcmRVcGRhdGVJblByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwicGx1c1wiPjwvZmEtaWNvbj4ge3sgJ1NBVkUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZUFkZFdvcmtzcGFjZURpYWxvZygpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJtci0wNVwiIGljb249XCJ0aW1lc1wiPjwvZmEtaWNvbj4ge3sgJ0NBTkNFTCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgPC9zYXQtcG9wb3Zlcj5cclxuXHJcblxyXG4gIDxzYXQtcG9wb3ZlciAjcCBoYXNCYWNrZHJvcCBbaW50ZXJhY3RpdmVDbG9zZV09XCJ0cnVlXCIgdmVydGljYWxBbGlnbj1cImFib3ZlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC13cmFwcGVyXCI+XHJcbiAgICAgIDx0YWJsZT5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICA8dGQ+Q3RybCArIFE6IDwvdGQ+XHJcbiAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD5cclxuICAgICAgICAgIDx0ZD4ge3sgJ1NIRUxMLlRPT1BFTlNFQVJDSE1FTlUnIHwgdHJhbnNsYXRlfX08L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgPHRkPkN0cmwgKyBCOiA8L3RkPlxyXG4gICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+XHJcbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT09QRU5HT0FMU0FORFVTRVJTJyB8IHRyYW5zbGF0ZX19PC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0ZD5DdHJsICsgWTogPC90ZD5cclxuICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxyXG4gICAgICAgICAgPHRkPiB7eyAnU0hFTEwuVE9TRUFSQ0hCWUlEJyB8IHRyYW5zbGF0ZX19PC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0ZD5DdHJsICsgTTogPC90ZD5cclxuICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxyXG4gICAgICAgICAgPHRkPiB7eyAnU0hFTEwuVE9DTE9TRU1FTlUnIHwgdHJhbnNsYXRlfX08L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NhdC1wb3BvdmVyPlxyXG5cclxuICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJzZWFyY2hCeVRleHRMb2FkaW5nICYmIGRpc3BsYXlcIiBjbGFzcz1cInNwaW5uZXItY2xhc3NcIiBbZGlhbWV0ZXJdPVwiMTAwXCI+PC9tYXQtc3Bpbm5lcj4iXX0=
|