@bnsights/bbsf-admin-portal 1.1.64 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/bnsights-bbsf-admin-portal-1.3.1.tgz +0 -0
- package/esm2022/lib/Pages/ActiveDirectories/active-directories.component.mjs +5 -5
- package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +5 -5
- package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +5 -5
- package/esm2022/lib/Pages/ActiveDirectories/active-directory-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/ActiveDirectories/active-directory.module.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/aside/aside.component.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/content/content.component.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/footer/footer.component.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/header/header.component.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/header/page-title/page-title.component.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/scripts-init/scripts-init.component.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/subheader/subheader.component.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/subheader/subheader.module.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/toolbar/toolbar.component.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/toolbar/toolbar.module.mjs +5 -5
- package/esm2022/lib/Pages/_layout/components/topbar/topbar.component.mjs +5 -5
- package/esm2022/lib/Pages/anonymouslayout/activation/activation.component.mjs +5 -5
- package/esm2022/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +11 -6
- package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +5 -5
- package/esm2022/lib/Pages/anonymouslayout/change-password/change-password.component.mjs +5 -5
- package/esm2022/lib/Pages/anonymouslayout/error/error.component.mjs +5 -5
- package/esm2022/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +5 -5
- package/esm2022/lib/Pages/anonymouslayout/login/login.component.mjs +5 -5
- package/esm2022/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +5 -5
- package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +5 -5
- package/esm2022/lib/Pages/anonymouslayout/verify-two-fa/verify-two-fa.component.mjs +5 -5
- package/esm2022/lib/Pages/authentication/auth-callback/auth-callback.component.mjs +5 -5
- package/esm2022/lib/Pages/authentication/authentication.component.mjs +5 -5
- package/esm2022/lib/Pages/authentication/authentication.module.mjs +5 -5
- package/esm2022/lib/Pages/authentication/authentication.routing.mjs +5 -5
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +5 -5
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +5 -5
- package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +5 -5
- package/esm2022/lib/Pages/configurations/configurations.component.mjs +5 -5
- package/esm2022/lib/Pages/configurations/configurations.module.mjs +5 -5
- package/esm2022/lib/Pages/configurations/configurations.routing.mjs +5 -5
- package/esm2022/lib/Pages/core/auth.module.mjs +5 -5
- package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +4 -4
- package/esm2022/lib/Pages/core/authentication/auth.guard.mjs +4 -4
- package/esm2022/lib/Pages/core/authentication/auth.service.mjs +4 -4
- package/esm2022/lib/Pages/departments/department/department.component.mjs +5 -5
- package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +5 -5
- package/esm2022/lib/Pages/departments/departments-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/departments/departments.component.mjs +5 -5
- package/esm2022/lib/Pages/departments/departments.module.mjs +5 -5
- package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +5 -5
- package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +5 -5
- package/esm2022/lib/Pages/documents/document-template-info/document-template-info.component.mjs +5 -5
- package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +5 -5
- package/esm2022/lib/Pages/documents/documents.component.mjs +5 -5
- package/esm2022/lib/Pages/documents/documents.module.mjs +5 -5
- package/esm2022/lib/Pages/documents/documents.routing.mjs +5 -5
- package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +5 -5
- package/esm2022/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +5 -5
- package/esm2022/lib/Pages/empty-data/empty-data.component.mjs +5 -5
- package/esm2022/lib/Pages/empty-data/empty-data.module.mjs +5 -5
- package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +5 -5
- package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +5 -5
- package/esm2022/lib/Pages/helpCenter/help-center-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +5 -5
- package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +5 -5
- package/esm2022/lib/Pages/helpCenter/help-center.module.mjs +5 -5
- package/esm2022/lib/Pages/helpCenter/help-centers.component.mjs +5 -5
- package/esm2022/lib/Pages/home/filter-pipe.mjs +6 -5
- package/esm2022/lib/Pages/home/home.component.mjs +5 -5
- package/esm2022/lib/Pages/home/home.module.mjs +5 -5
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +5 -5
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +5 -5
- package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +5 -5
- package/esm2022/lib/Pages/jobs/jobs.module.mjs +5 -5
- package/esm2022/lib/Pages/license/license/license.component.mjs +5 -5
- package/esm2022/lib/Pages/license/license.module.mjs +5 -5
- package/esm2022/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +5 -5
- package/esm2022/lib/Pages/localizations/localizations.component.mjs +5 -5
- package/esm2022/lib/Pages/localizations/localizations.module.mjs +5 -5
- package/esm2022/lib/Pages/logs/log/log.component.mjs +5 -5
- package/esm2022/lib/Pages/logs/logs-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/logs/logs.component.mjs +5 -5
- package/esm2022/lib/Pages/logs/logs.module.mjs +5 -5
- package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +5 -5
- package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +5 -5
- package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +5 -5
- package/esm2022/lib/Pages/lookups/lookups-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/lookups/lookups.component.mjs +5 -5
- package/esm2022/lib/Pages/lookups/lookups.module.mjs +5 -5
- package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +5 -5
- package/esm2022/lib/Pages/notifications/edit-email/edit-email.component.mjs +5 -5
- package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +5 -5
- package/esm2022/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +5 -5
- package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +5 -5
- package/esm2022/lib/Pages/notifications/notifications.component.mjs +5 -5
- package/esm2022/lib/Pages/notifications/notifications.module.mjs +5 -5
- package/esm2022/lib/Pages/notifications/notifications.routing.mjs +5 -5
- package/esm2022/lib/Pages/notifications/template-info/template-info.component.mjs +5 -5
- package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +5 -5
- package/esm2022/lib/Pages/organization/add-organization/add-organization.component.mjs +5 -5
- package/esm2022/lib/Pages/organization/edit-organization/edit-organization.component.mjs +5 -5
- package/esm2022/lib/Pages/organization/list-organization/list-organization.component.mjs +5 -5
- package/esm2022/lib/Pages/organization/organization.component.mjs +5 -5
- package/esm2022/lib/Pages/organization/organization.module.mjs +5 -5
- package/esm2022/lib/Pages/organization/organization.routing.mjs +5 -5
- package/esm2022/lib/Pages/providers/provider/provider.component.mjs +5 -5
- package/esm2022/lib/Pages/providers/providers-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/providers/providers.component.mjs +5 -5
- package/esm2022/lib/Pages/providers/providers.module.mjs +5 -5
- package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +5 -5
- package/esm2022/lib/Pages/publicHolidays/public-holidays-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/publicHolidays/public-holidays.component.mjs +5 -5
- package/esm2022/lib/Pages/publicHolidays/public-holidays.module.mjs +5 -5
- package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +5 -5
- package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +5 -5
- package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +5 -5
- package/esm2022/lib/Pages/roles/roles-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/roles/roles.component.mjs +5 -5
- package/esm2022/lib/Pages/roles/roles.module.mjs +5 -5
- package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +5 -5
- package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +5 -5
- package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +5 -5
- package/esm2022/lib/Pages/sectors/sectors-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/sectors/sectors.component.mjs +5 -5
- package/esm2022/lib/Pages/sectors/sectors.module.mjs +5 -5
- package/esm2022/lib/Pages/shared/Pipes/survey-date.pipe.mjs +6 -5
- package/esm2022/lib/Pages/shared/Services/AccountService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/ConfigurationsService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/DepartmentService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/ErrorService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/GlobalErrorHandler.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/HelpCenterService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/HttpErrorInterceptor.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/JobsService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/LicenseService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/LogsService.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/LookupGroupsService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/LookupService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/PermissionSetService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/PermissionsService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/PublicHolidayService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/SectorService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/TemplateService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/WorkflowService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/data.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/localizationsService.service .mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/organization.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/provider.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/survey-question.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/survey.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/Services/userService.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/components/AdDirective.mjs +5 -4
- package/esm2022/lib/Pages/shared/components/external-url/external-url.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/no-results/no-results.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey/survey.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/components/survey-layout/survey-layout.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/config.service.mjs +4 -4
- package/esm2022/lib/Pages/shared/filter/filter.component.mjs +5 -5
- package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +5 -5
- package/esm2022/lib/Pages/shared/modules/survey-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/shared/modules/survey.module.mjs +5 -5
- package/esm2022/lib/Pages/shared/shared.module.mjs +5 -5
- package/esm2022/lib/Pages/shared/stylesbundle.service.mjs +4 -4
- package/esm2022/lib/Pages/start/index/index.component.mjs +5 -5
- package/esm2022/lib/Pages/start/start-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/start/start.module.mjs +5 -5
- package/esm2022/lib/Pages/users/users.component.mjs +5 -5
- package/esm2022/lib/Pages/users/users.module.mjs +5 -5
- package/esm2022/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +5 -5
- package/esm2022/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +5 -5
- package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +5 -5
- package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +5 -5
- package/esm2022/lib/Pages/workflows/version-info/version-info.component.mjs +5 -5
- package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +5 -5
- package/esm2022/lib/Pages/workflows/workflows-routing.module.mjs +5 -5
- package/esm2022/lib/Pages/workflows/workflows.component.mjs +5 -5
- package/esm2022/lib/Pages/workflows/workflows.module.mjs +5 -5
- package/esm2022/lib/_metronic/core/services/layout-init.service.mjs +4 -4
- package/esm2022/lib/_metronic/core/services/layout.service.mjs +4 -4
- package/esm2022/lib/_metronic/core/services/page-info.service.mjs +4 -4
- package/esm2022/lib/masterlayout.component.mjs +5 -5
- package/esm2022/lib/masterlayout.module.mjs +5 -5
- package/esm2022/lib/masterlayout.routing.mjs +5 -5
- package/fesm2022/bnsights-bbsf-admin-portal.mjs +802 -796
- package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
- package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +2 -0
- package/package.json +12 -12
|
@@ -319,12 +319,12 @@ export class PermissionsetsComponent {
|
|
|
319
319
|
ngOnDestroy() {
|
|
320
320
|
this.requestHandlerService.destroyHandler();
|
|
321
321
|
}
|
|
322
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
323
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PermissionsetsComponent, selector: "lib-permissionsets", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["PermissionSetPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }, { propertyName: "organizationDDL", first: true, predicate: ["organizationDDL"], descendants: true }], ngImport: i0, template: "<block-ui>\r\n <!-- Subheader -->\r\n <!-- Page Content -->\r\n <div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"isFilterLoaded\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"permissionSetForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n ngbDropdown\r\n class=\"d-inline-block\"\r\n [ngStyle]=\"{ display: showPageContent == true ? 'block' : 'none' }\">\r\n <button\r\n (click)=\"loadLists()\"\r\n ngbDropdownToggle\r\n href=\"javascript:;\"\r\n type=\"button\"\r\n class=\"btn btn-sm btn-light-primary me-3\"\r\n id=\"FiltersDropdown\"\r\n title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{ utilityService.getResourceValue('Filter') }}\r\n </button>\r\n <div\r\n *ngIf=\"isFilterLoaded\"\r\n ngbDropdownMenu\r\n aria-labelledby=\"FiltersDropdown\"\r\n class=\"filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"permissionSetForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">\r\n <div>\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\" [group]=\"permissionSetForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"permissionSetResetButton\">\r\n {{ utilityService.getResourceValue('Reset') }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- begin::Menu -->\r\n\r\n <button\r\n *ngIf=\"isSuperAdmin\"\r\n type=\"button\"\r\n class=\"btn btn-sm btn-primary\"\r\n title=\"Add\"\r\n (click)=\"showAddPermissionSetModal(AddPermissionSetModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\r\n <!--begin::Permission list-->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Name') }}</th>\r\n <th class=\"min-w-150px\" *ngIf=\"!ProductionMode\">{{ utilityService.getResourceValue('SysName') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('UsersCount') }}</th>\r\n <th class=\"min-w-150\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ utilityService.getResourceValue('Organization') }}</th>\r\n <th class=\"min-w-50px\">{{ utilityService.getResourceValue('Action') }}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let PermissionSet of filteredPermissionSetPagingResult\">\r\n <td>\r\n <a\r\n href=\"javascript:void(0)\"\r\n [routerLink]=\"['/Admin/Roles/PermissionSetInfo', PermissionSet.iD_GUID]\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"text-dark\"\r\n >{{ PermissionSet.permissionSetName }}</a\r\n >\r\n </td>\r\n <td *ngIf=\"!ProductionMode\">{{ PermissionSet.sysName }}</td>\r\n <td>{{ PermissionSet.usersCount }}</td>\r\n <td *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ PermissionSet.currentOrganizationName ?? '-' }}</td>\r\n <td>\r\n <div *ngIf=\"isSuperAdmin\">\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu class=\"mat-menu-content\" #menu=\"matMenu\">\r\n <a class=\"drop-item px-3\" ngbDropdownItem (click)=\"showEditPermissionSetModal(PermissionSet.iD_GUID, EditPermissionSetModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showDeletePermissionSetModal(PermissionSet.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"filteredPermissionSetPagingResult.length == 0\">\r\n <td [attr.colspan]=\"ProductionMode ? '3' : '4'\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!--end::Permission list-->\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging\r\n (Items)=\"setPermissionSetListResult($event)\"\r\n *ngIf=\"isFilterLoaded\"\r\n [options]=\"permissionSetPaging\"\r\n [group]=\"permissionSetForm\"\r\n #PermissionSetPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- #region Add Modal -->\r\n <ng-template #AddPermissionSetModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('AddPermissionSet') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"addPermissionSetFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"multiLingualName\" [group]=\"addPermissionSetForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-TextBox [options]=\"activeDirectoryGroup\" [group]=\"addPermissionSetForm\"> </BBSF-TextBox>\r\n <BBSF-TextBox *ngIf=\"!ProductionMode\" [options]=\"sysName\" [group]=\"addPermissionSetForm\"> </BBSF-TextBox>\r\n <BBSF-DropdownList\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n [options]=\"organization\"\r\n [group]=\"addPermissionSetForm\"\r\n (onChange)=\"onChangeOrganization($event,addPermissionsDDL, true)\">\r\n </BBSF-DropdownList>\r\n <BBSF-DropdownList #addPermissionsDDL [options]=\"permissions\" [group]=\"addPermissionSetForm\"> </BBSF-DropdownList>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #ClosePermissionSetModal\r\n id=\"ClosePermissionSetModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Edit Modal -->\r\n <ng-template #EditPermissionSetModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('EditPermissionSet') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"editPermissionSetFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"editMultiLingualName\" [group]=\"editPermissionSetForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-TextBox [options]=\"editActiveDirectoryGroup\" [group]=\"editPermissionSetForm\"> </BBSF-TextBox>\r\n <div *ngIf=\"!ProductionMode\">\r\n <BBSF-TextBox [options]=\"editSysName\" [group]=\"editPermissionSetForm\"> </BBSF-TextBox>\r\n </div>\r\n <BBSF-DropdownList\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n [options]=\"editOrganization\"\r\n [group]=\"editPermissionSetForm\"\r\n (onChange)=\"onChangeOrganization($event,editPermissionsDDL)\">\r\n </BBSF-DropdownList>\r\n <BBSF-DropdownList #editPermissionsDDL [options]=\"editPermissions\" [group]=\"editPermissionSetForm\"> </BBSF-DropdownList>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #CloseEditPermissionSetModal\r\n id=\"CloseEditPermissionSetModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!--delete Modal-->\r\n <BBSF-ConfirmationModal\r\n *ngIf=\"deleteControlLoaded\"\r\n [options]=\"deleteConfirmationOptions\"\r\n id=\"ConfirmationModalControl\"\r\n #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n</block-ui>\r\n", dependencies: [{ kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "component", type: i9.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i9.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i9.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { kind: "component", type: i9.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "component", type: i9.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: i12.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] }); }
|
|
322
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: PermissionsetsComponent, deps: [{ token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i2.EnvironmentService }, { token: i3.PermissionSetService }, { token: i4.NgbModal }, { token: i2.RequestHandlerService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
323
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: PermissionsetsComponent, selector: "lib-permissionsets", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["PermissionSetPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }, { propertyName: "organizationDDL", first: true, predicate: ["organizationDDL"], descendants: true }], ngImport: i0, template: "<block-ui>\r\n <!-- Subheader -->\r\n <!-- Page Content -->\r\n <div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"isFilterLoaded\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"permissionSetForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n ngbDropdown\r\n class=\"d-inline-block\"\r\n [ngStyle]=\"{ display: showPageContent == true ? 'block' : 'none' }\">\r\n <button\r\n (click)=\"loadLists()\"\r\n ngbDropdownToggle\r\n href=\"javascript:;\"\r\n type=\"button\"\r\n class=\"btn btn-sm btn-light-primary me-3\"\r\n id=\"FiltersDropdown\"\r\n title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{ utilityService.getResourceValue('Filter') }}\r\n </button>\r\n <div\r\n *ngIf=\"isFilterLoaded\"\r\n ngbDropdownMenu\r\n aria-labelledby=\"FiltersDropdown\"\r\n class=\"filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"permissionSetForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">\r\n <div>\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\" [group]=\"permissionSetForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"permissionSetResetButton\">\r\n {{ utilityService.getResourceValue('Reset') }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- begin::Menu -->\r\n\r\n <button\r\n *ngIf=\"isSuperAdmin\"\r\n type=\"button\"\r\n class=\"btn btn-sm btn-primary\"\r\n title=\"Add\"\r\n (click)=\"showAddPermissionSetModal(AddPermissionSetModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\r\n <!--begin::Permission list-->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Name') }}</th>\r\n <th class=\"min-w-150px\" *ngIf=\"!ProductionMode\">{{ utilityService.getResourceValue('SysName') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('UsersCount') }}</th>\r\n <th class=\"min-w-150\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ utilityService.getResourceValue('Organization') }}</th>\r\n <th class=\"min-w-50px\">{{ utilityService.getResourceValue('Action') }}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let PermissionSet of filteredPermissionSetPagingResult\">\r\n <td>\r\n <a\r\n href=\"javascript:void(0)\"\r\n [routerLink]=\"['/Admin/Roles/PermissionSetInfo', PermissionSet.iD_GUID]\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"text-dark\"\r\n >{{ PermissionSet.permissionSetName }}</a\r\n >\r\n </td>\r\n <td *ngIf=\"!ProductionMode\">{{ PermissionSet.sysName }}</td>\r\n <td>{{ PermissionSet.usersCount }}</td>\r\n <td *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ PermissionSet.currentOrganizationName ?? '-' }}</td>\r\n <td>\r\n <div *ngIf=\"isSuperAdmin\">\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu class=\"mat-menu-content\" #menu=\"matMenu\">\r\n <a class=\"drop-item px-3\" ngbDropdownItem (click)=\"showEditPermissionSetModal(PermissionSet.iD_GUID, EditPermissionSetModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showDeletePermissionSetModal(PermissionSet.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"filteredPermissionSetPagingResult.length == 0\">\r\n <td [attr.colspan]=\"ProductionMode ? '3' : '4'\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!--end::Permission list-->\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging\r\n (Items)=\"setPermissionSetListResult($event)\"\r\n *ngIf=\"isFilterLoaded\"\r\n [options]=\"permissionSetPaging\"\r\n [group]=\"permissionSetForm\"\r\n #PermissionSetPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- #region Add Modal -->\r\n <ng-template #AddPermissionSetModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('AddPermissionSet') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"addPermissionSetFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"multiLingualName\" [group]=\"addPermissionSetForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-TextBox [options]=\"activeDirectoryGroup\" [group]=\"addPermissionSetForm\"> </BBSF-TextBox>\r\n <BBSF-TextBox *ngIf=\"!ProductionMode\" [options]=\"sysName\" [group]=\"addPermissionSetForm\"> </BBSF-TextBox>\r\n <BBSF-DropdownList\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n [options]=\"organization\"\r\n [group]=\"addPermissionSetForm\"\r\n (onChange)=\"onChangeOrganization($event,addPermissionsDDL, true)\">\r\n </BBSF-DropdownList>\r\n <BBSF-DropdownList #addPermissionsDDL [options]=\"permissions\" [group]=\"addPermissionSetForm\"> </BBSF-DropdownList>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #ClosePermissionSetModal\r\n id=\"ClosePermissionSetModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Edit Modal -->\r\n <ng-template #EditPermissionSetModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('EditPermissionSet') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"editPermissionSetFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"editMultiLingualName\" [group]=\"editPermissionSetForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-TextBox [options]=\"editActiveDirectoryGroup\" [group]=\"editPermissionSetForm\"> </BBSF-TextBox>\r\n <div *ngIf=\"!ProductionMode\">\r\n <BBSF-TextBox [options]=\"editSysName\" [group]=\"editPermissionSetForm\"> </BBSF-TextBox>\r\n </div>\r\n <BBSF-DropdownList\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n [options]=\"editOrganization\"\r\n [group]=\"editPermissionSetForm\"\r\n (onChange)=\"onChangeOrganization($event,editPermissionsDDL)\">\r\n </BBSF-DropdownList>\r\n <BBSF-DropdownList #editPermissionsDDL [options]=\"editPermissions\" [group]=\"editPermissionSetForm\"> </BBSF-DropdownList>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #CloseEditPermissionSetModal\r\n id=\"CloseEditPermissionSetModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!--delete Modal-->\r\n <BBSF-ConfirmationModal\r\n *ngIf=\"deleteControlLoaded\"\r\n [options]=\"deleteConfirmationOptions\"\r\n id=\"ConfirmationModalControl\"\r\n #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n</block-ui>\r\n", dependencies: [{ kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "component", type: i9.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i9.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i9.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { kind: "component", type: i9.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "component", type: i9.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: i12.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] }); }
|
|
324
324
|
}
|
|
325
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
325
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: PermissionsetsComponent, decorators: [{
|
|
326
326
|
type: Component,
|
|
327
|
-
args: [{ selector: 'lib-permissionsets', template: "<block-ui>\r\n <!-- Subheader -->\r\n <!-- Page Content -->\r\n <div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"isFilterLoaded\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"permissionSetForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n ngbDropdown\r\n class=\"d-inline-block\"\r\n [ngStyle]=\"{ display: showPageContent == true ? 'block' : 'none' }\">\r\n <button\r\n (click)=\"loadLists()\"\r\n ngbDropdownToggle\r\n href=\"javascript:;\"\r\n type=\"button\"\r\n class=\"btn btn-sm btn-light-primary me-3\"\r\n id=\"FiltersDropdown\"\r\n title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{ utilityService.getResourceValue('Filter') }}\r\n </button>\r\n <div\r\n *ngIf=\"isFilterLoaded\"\r\n ngbDropdownMenu\r\n aria-labelledby=\"FiltersDropdown\"\r\n class=\"filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"permissionSetForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">\r\n <div>\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\" [group]=\"permissionSetForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"permissionSetResetButton\">\r\n {{ utilityService.getResourceValue('Reset') }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- begin::Menu -->\r\n\r\n <button\r\n *ngIf=\"isSuperAdmin\"\r\n type=\"button\"\r\n class=\"btn btn-sm btn-primary\"\r\n title=\"Add\"\r\n (click)=\"showAddPermissionSetModal(AddPermissionSetModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\r\n <!--begin::Permission list-->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Name') }}</th>\r\n <th class=\"min-w-150px\" *ngIf=\"!ProductionMode\">{{ utilityService.getResourceValue('SysName') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('UsersCount') }}</th>\r\n <th class=\"min-w-150\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ utilityService.getResourceValue('Organization') }}</th>\r\n <th class=\"min-w-50px\">{{ utilityService.getResourceValue('Action') }}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let PermissionSet of filteredPermissionSetPagingResult\">\r\n <td>\r\n <a\r\n href=\"javascript:void(0)\"\r\n [routerLink]=\"['/Admin/Roles/PermissionSetInfo', PermissionSet.iD_GUID]\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"text-dark\"\r\n >{{ PermissionSet.permissionSetName }}</a\r\n >\r\n </td>\r\n <td *ngIf=\"!ProductionMode\">{{ PermissionSet.sysName }}</td>\r\n <td>{{ PermissionSet.usersCount }}</td>\r\n <td *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ PermissionSet.currentOrganizationName ?? '-' }}</td>\r\n <td>\r\n <div *ngIf=\"isSuperAdmin\">\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu class=\"mat-menu-content\" #menu=\"matMenu\">\r\n <a class=\"drop-item px-3\" ngbDropdownItem (click)=\"showEditPermissionSetModal(PermissionSet.iD_GUID, EditPermissionSetModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showDeletePermissionSetModal(PermissionSet.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"filteredPermissionSetPagingResult.length == 0\">\r\n <td [attr.colspan]=\"ProductionMode ? '3' : '4'\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!--end::Permission list-->\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging\r\n (Items)=\"setPermissionSetListResult($event)\"\r\n *ngIf=\"isFilterLoaded\"\r\n [options]=\"permissionSetPaging\"\r\n [group]=\"permissionSetForm\"\r\n #PermissionSetPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- #region Add Modal -->\r\n <ng-template #AddPermissionSetModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('AddPermissionSet') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"addPermissionSetFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"multiLingualName\" [group]=\"addPermissionSetForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-TextBox [options]=\"activeDirectoryGroup\" [group]=\"addPermissionSetForm\"> </BBSF-TextBox>\r\n <BBSF-TextBox *ngIf=\"!ProductionMode\" [options]=\"sysName\" [group]=\"addPermissionSetForm\"> </BBSF-TextBox>\r\n <BBSF-DropdownList\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n [options]=\"organization\"\r\n [group]=\"addPermissionSetForm\"\r\n (onChange)=\"onChangeOrganization($event,addPermissionsDDL, true)\">\r\n </BBSF-DropdownList>\r\n <BBSF-DropdownList #addPermissionsDDL [options]=\"permissions\" [group]=\"addPermissionSetForm\"> </BBSF-DropdownList>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #ClosePermissionSetModal\r\n id=\"ClosePermissionSetModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Edit Modal -->\r\n <ng-template #EditPermissionSetModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('EditPermissionSet') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"editPermissionSetFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"editMultiLingualName\" [group]=\"editPermissionSetForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-TextBox [options]=\"editActiveDirectoryGroup\" [group]=\"editPermissionSetForm\"> </BBSF-TextBox>\r\n <div *ngIf=\"!ProductionMode\">\r\n <BBSF-TextBox [options]=\"editSysName\" [group]=\"editPermissionSetForm\"> </BBSF-TextBox>\r\n </div>\r\n <BBSF-DropdownList\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n [options]=\"editOrganization\"\r\n [group]=\"editPermissionSetForm\"\r\n (onChange)=\"onChangeOrganization($event,editPermissionsDDL)\">\r\n </BBSF-DropdownList>\r\n <BBSF-DropdownList #editPermissionsDDL [options]=\"editPermissions\" [group]=\"editPermissionSetForm\"> </BBSF-DropdownList>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #CloseEditPermissionSetModal\r\n id=\"CloseEditPermissionSetModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!--delete Modal-->\r\n <BBSF-ConfirmationModal\r\n *ngIf=\"deleteControlLoaded\"\r\n [options]=\"deleteConfirmationOptions\"\r\n id=\"ConfirmationModalControl\"\r\n #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n</block-ui>\r\n" }]
|
|
327
|
+
args: [{ selector: 'lib-permissionsets', standalone: false, template: "<block-ui>\r\n <!-- Subheader -->\r\n <!-- Page Content -->\r\n <div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"isFilterLoaded\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"permissionSetForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n ngbDropdown\r\n class=\"d-inline-block\"\r\n [ngStyle]=\"{ display: showPageContent == true ? 'block' : 'none' }\">\r\n <button\r\n (click)=\"loadLists()\"\r\n ngbDropdownToggle\r\n href=\"javascript:;\"\r\n type=\"button\"\r\n class=\"btn btn-sm btn-light-primary me-3\"\r\n id=\"FiltersDropdown\"\r\n title=\"Filter\">\r\n <i class=\"fas fa-filter me-1\"></i>\r\n {{ utilityService.getResourceValue('Filter') }}\r\n </button>\r\n <div\r\n *ngIf=\"isFilterLoaded\"\r\n ngbDropdownMenu\r\n aria-labelledby=\"FiltersDropdown\"\r\n class=\"filter-container menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-800 menu-state-bg-light-primary w-250px w-md-500px fw-bold py-3 dropdown-menu dropdown-menu-right\">\r\n <form [formGroup]=\"permissionSetForm\">\r\n <div class=\"px-7 py-5\">\r\n <div class=\"row\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">\r\n <div>\r\n <BBSF-DropdownList #organizationDDL [options]=\"organizationOptions\" [group]=\"permissionSetForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <button class=\"btn btn-light btn-active-light-primary pv-reset btn-sm\" name=\"permissionSetResetButton\">\r\n {{ utilityService.getResourceValue('Reset') }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- begin::Menu -->\r\n\r\n <button\r\n *ngIf=\"isSuperAdmin\"\r\n type=\"button\"\r\n class=\"btn btn-sm btn-primary\"\r\n title=\"Add\"\r\n (click)=\"showAddPermissionSetModal(AddPermissionSetModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\r\n <!--begin::Permission list-->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Name') }}</th>\r\n <th class=\"min-w-150px\" *ngIf=\"!ProductionMode\">{{ utilityService.getResourceValue('SysName') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('UsersCount') }}</th>\r\n <th class=\"min-w-150\" *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ utilityService.getResourceValue('Organization') }}</th>\r\n <th class=\"min-w-50px\">{{ utilityService.getResourceValue('Action') }}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let PermissionSet of filteredPermissionSetPagingResult\">\r\n <td>\r\n <a\r\n href=\"javascript:void(0)\"\r\n [routerLink]=\"['/Admin/Roles/PermissionSetInfo', PermissionSet.iD_GUID]\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"text-dark\"\r\n >{{ PermissionSet.permissionSetName }}</a\r\n >\r\n </td>\r\n <td *ngIf=\"!ProductionMode\">{{ PermissionSet.sysName }}</td>\r\n <td>{{ PermissionSet.usersCount }}</td>\r\n <td *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\">{{ PermissionSet.currentOrganizationName ?? '-' }}</td>\r\n <td>\r\n <div *ngIf=\"isSuperAdmin\">\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu class=\"mat-menu-content\" #menu=\"matMenu\">\r\n <a class=\"drop-item px-3\" ngbDropdownItem (click)=\"showEditPermissionSetModal(PermissionSet.iD_GUID, EditPermissionSetModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showDeletePermissionSetModal(PermissionSet.iD_GUID)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"filteredPermissionSetPagingResult.length == 0\">\r\n <td [attr.colspan]=\"ProductionMode ? '3' : '4'\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!--end::Permission list-->\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging\r\n (Items)=\"setPermissionSetListResult($event)\"\r\n *ngIf=\"isFilterLoaded\"\r\n [options]=\"permissionSetPaging\"\r\n [group]=\"permissionSetForm\"\r\n #PermissionSetPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- #region Add Modal -->\r\n <ng-template #AddPermissionSetModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('AddPermissionSet') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"addPermissionSetFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"multiLingualName\" [group]=\"addPermissionSetForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-TextBox [options]=\"activeDirectoryGroup\" [group]=\"addPermissionSetForm\"> </BBSF-TextBox>\r\n <BBSF-TextBox *ngIf=\"!ProductionMode\" [options]=\"sysName\" [group]=\"addPermissionSetForm\"> </BBSF-TextBox>\r\n <BBSF-DropdownList\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n [options]=\"organization\"\r\n [group]=\"addPermissionSetForm\"\r\n (onChange)=\"onChangeOrganization($event,addPermissionsDDL, true)\">\r\n </BBSF-DropdownList>\r\n <BBSF-DropdownList #addPermissionsDDL [options]=\"permissions\" [group]=\"addPermissionSetForm\"> </BBSF-DropdownList>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #ClosePermissionSetModal\r\n id=\"ClosePermissionSetModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Edit Modal -->\r\n <ng-template #EditPermissionSetModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"modal.dismiss()\" class=\"btn btn-sm btn-icon btn-active-color-primary\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('EditPermissionSet') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"editPermissionSetFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"editMultiLingualName\" [group]=\"editPermissionSetForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-TextBox [options]=\"editActiveDirectoryGroup\" [group]=\"editPermissionSetForm\"> </BBSF-TextBox>\r\n <div *ngIf=\"!ProductionMode\">\r\n <BBSF-TextBox [options]=\"editSysName\" [group]=\"editPermissionSetForm\"> </BBSF-TextBox>\r\n </div>\r\n <BBSF-DropdownList\r\n *ngIf=\"isMultiTenancyAllowed && isSuperAdmin\"\r\n [options]=\"editOrganization\"\r\n [group]=\"editPermissionSetForm\"\r\n (onChange)=\"onChangeOrganization($event,editPermissionsDDL)\">\r\n </BBSF-DropdownList>\r\n <BBSF-DropdownList #editPermissionsDDL [options]=\"editPermissions\" [group]=\"editPermissionSetForm\"> </BBSF-DropdownList>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n type=\"button\"\r\n #CloseEditPermissionSetModal\r\n id=\"CloseEditPermissionSetModal\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!--delete Modal-->\r\n <BBSF-ConfirmationModal\r\n *ngIf=\"deleteControlLoaded\"\r\n [options]=\"deleteConfirmationOptions\"\r\n id=\"ConfirmationModalControl\"\r\n #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n</block-ui>\r\n" }]
|
|
328
328
|
}], ctorParameters: () => [{ type: i1.PageInfoService }, { type: i2.UtilityService }, { type: i2.EnvironmentService }, { type: i3.PermissionSetService }, { type: i4.NgbModal }, { type: i2.RequestHandlerService }, { type: i2.AuthService }], propDecorators: { pagingElement: [{
|
|
329
329
|
type: ViewChild,
|
|
330
330
|
args: ['PermissionSetPagingViewElement', { static: false }]
|
|
@@ -335,4 +335,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
335
335
|
type: ViewChild,
|
|
336
336
|
args: ['organizationDDL', { static: false }]
|
|
337
337
|
}] } });
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnNldHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9yb2xlcy9wZXJtaXNzaW9uc2V0cy9wZXJtaXNzaW9uc2V0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3JvbGVzL3Blcm1pc3Npb25zZXRzL3Blcm1pc3Npb25zZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQThCLHdCQUF3QixFQUF5QixlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFtQixhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JTLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUs5RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQU96QyxNQUFNLE9BQU8sdUJBQXVCO0lBNERsQyxZQUNVLGVBQWdDLEVBQ2pDLGNBQThCLEVBQzdCLGtCQUFzQyxFQUN0QyxvQkFBMEMsRUFDMUMsWUFBc0IsRUFDdEIscUJBQTRDLEVBQzVDLFdBQXdCO1FBTnhCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDN0IsdUJBQWtC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QUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7SUFFWiw0QkFBNEI7SUFDNUIsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM5QyxDQUFDOytHQTdZVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix1WkNoQnBDLHVvV0ErTkE7OzRGRC9NYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0Usb0JBQW9COzBRQThCa0MsYUFBYTtzQkFBNUUsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBOEJKLHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1AsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCwgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIERyb3Bkb3duT3B0aW9ucywgRW5nbGlzaEFyYWJpY0RUTywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgRm9ybU9wdGlvbnMsIElucHV0VHlwZSwgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsIFBhZ2luZ0NvbXBvbmVudCwgUGFnaW5nT3B0aW9ucywgUGVybWlzc2lvblNldHMsIFRleHRCb3hPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25TZXRNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvUGVybWlzc2lvbnNNb2RlbHMvUGVybWlzc2lvblNldE1vZGVsJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSwgQXV0aFNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25TZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL1Blcm1pc3Npb25TZXRTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXBlcm1pc3Npb25zZXRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGVybWlzc2lvbnNldHMuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uc2V0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgQXBpVXJsID0gdGhpcy5wZXJtaXNzaW9uU2V0U2VydmljZS5BcGlVcmw7XHJcbiAgUHJvZHVjdGlvbk1vZGU6IGJvb2xlYW47XHJcbiAgY3VycmVudFVzZXJQcm9maWxlOiBhbnk7XHJcbiAgcGVybWlzc2lvblNldHMgPSBQZXJtaXNzaW9uU2V0cztcclxuICBpc011bHRpVGVuYW5jeUFsbG93ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1N1cGVyQWRtaW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIHBlcm1pc3Npb25MaXN0ID0gW107XHJcbiAgb3JnYW5pemF0aW9uTGlzdCA9IFtdO1xyXG4gIGZpbHRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBwZXJtaXNzaW9uU2V0Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNob3dGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwZXJtaXNzaW9uU2V0UGFnaW5nUmVzdWx0OiBQZXJtaXNzaW9uU2V0TW9kZWxbXSA9IFtdO1xyXG4gIGZpbHRlcmVkUGVybWlzc2lvblNldFBhZ2luZ1Jlc3VsdDogUGVybWlzc2lvblNldE1vZGVsW10gPSBbXTtcclxuICBwZXJtaXNzaW9uU2V0UGFnaW5nOiBQYWdpbmdPcHRpb25zID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICB0ZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgb3JnYW5pemF0aW9uT3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIG9yZ2FuaXphdGlvbnNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgaXNGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0ZpbHRlckRhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnUGVybWlzc2lvblNldFBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG5cclxuXHJcbiAgLy8jcmVnaW9uIEFkZCBNb2RlbCBDb250cm9sc1xyXG4gIGFkZFBlcm1pc3Npb25TZXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkUGVybWlzc2lvblNldEZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucztcclxuICBtdWx0aUxpbmd1YWxOYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBzeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBhY3RpdmVEaXJlY3RvcnlHcm91cDogVGV4dEJveE9wdGlvbnM7XHJcbiAgcGVybWlzc2lvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBvcmdhbml6YXRpb246IERyb3Bkb3duT3B0aW9ucztcclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiBFZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgZWRpdFBlcm1pc3Npb25TZXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdFBlcm1pc3Npb25TZXRGb3JtT3B0aW9uczogRm9ybU9wdGlvbnM7XHJcbiAgZWRpdE11bHRpTGluZ3VhbE5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBlZGl0QWN0aXZlRGlyZWN0b3J5R3JvdXA6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRQZXJtaXNzaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIHBlcm1pc3Npb25TZXRJZDogc3RyaW5nO1xyXG4gIGVkaXRQZXJtaXNzaW9uU2V0SWQ6IHN0cmluZztcclxuICBlZGl0T3JnYW5pemF0aW9uOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZWRQZXJtaXNzaW9uU2V0SWQ6IHN0cmluZztcclxuICBkZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ29yZ2FuaXphdGlvbkRETCcsIHsgc3RhdGljOiBmYWxzZSB9KSBvcmdhbml6YXRpb25EREw6IERyb3Bkb3duTGlzdENvbXBvbmVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBlcm1pc3Npb25TZXRTZXJ2aWNlOiBQZXJtaXNzaW9uU2V0U2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy9QYWdlIGhlYWRlciAoYnJlYWRjcnVtYiBhbmQgdGl0bGUpXHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcblxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBlcm1pc3Npb25TZXRzXCIpO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuUHJvZHVjdGlvbk1vZGUgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRQcm9kdWN0aW9uTW9kZSgpO1xyXG4gICAgdGhpcy5pc011bHRpVGVuYW5jeUFsbG93ZWQgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBbGxvd011bHRpVGVuYW5jeSgpO1xyXG4gICAgdGhpcy5jdXJyZW50VXNlclByb2ZpbGUgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkucHJvZmlsZTtcclxuICAgIHRoaXMuaXNTdXBlckFkbWluID0gdGhpcy5jdXJyZW50VXNlclByb2ZpbGUucGVybWlzc2lvblNldFNJRCA9PSB0aGlzLnBlcm1pc3Npb25TZXRzLkFkbWluO1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIGluaXRpYWxpemUgcGFnZVxyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgICAvLyBUZXh0Qm94IGludGlcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dEJveC5uYW1lID0gXCJzZWFyY2hUZXh0Qm94XCI7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dEJveC5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHRCb3gucGxhY2Vob2xkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWFyY2hCeU5hbWVcIik7XHJcblxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucy5uYW1lID0gXCJvcmdhbml6YXRpb25cIjtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25PcHRpb25zLmxhYmVsS2V5ID0gXCJPcmdhbml6YXRpb25zXCI7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucy5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5mb3JtQ29udHJvbE5hbWUgPSB0aGlzLnNlYXJjaFRleHRCb3gubmFtZTtcclxuICAgICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIuYWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiO1xyXG4gICAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5pc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmlzTXVsdGlUZW5hbmN5QWxsb3dlZCAmJiB0aGlzLmlzU3VwZXJBZG1pbikge1xyXG4gICAgICAgIHRoaXMucGVybWlzc2lvblNldFBhZ2luZy5maWx0ZXJzID0gdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nLmZpbHRlcnMgPz8gW107XHJcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nLmRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcyA9IHRoaXMucGVybWlzc2lvblNldFBhZ2luZy5kcm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMgPz8gW107XHJcblxyXG4gICAgICAgIHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyLmZvcm1Db250cm9sTmFtZSA9IHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucy5uYW1lO1xyXG4gICAgICAgIHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlci5hY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJvcmdhbml6YXRpb25JZFwiO1xyXG4gICAgICAgIHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlci5pc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIuZmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuRHJvcGRvd25MaXN0O1xyXG5cclxuICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXRQYWdpbmcuZmlsdGVycy5wdXNoKHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlcik7XHJcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nLmRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcy5wdXNoKHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlci5mb3JtQ29udHJvbE5hbWUpO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nLmFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXRQZXJtaXNzaW9uU2V0c0J5RmlsdGVyJztcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nLm9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW3RoaXMuc2VhcmNoVGV4dEJveC5uYW1lXTtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nLmZpbHRlcnMucHVzaCh0aGlzLnRleHRJbnB1dEZpbHRlcik7XHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldFBhZ2luZy5yZXNldEZpbHRlckJ1dHRvbk5hbWUgPSAncGVybWlzc2lvblNldFJlc2V0QnV0dG9uJztcclxuICAgICAgdGhpcy5pc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBsb2FkTGlzdHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNGaWx0ZXJEYXRhTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldFNlcnZpY2UubG9hZERyb3Bkb3duRm9yRmlsdGVycygpLnN1YnNjcmliZSgob3JnYW5pemF0aW9uTGlzdDphbnkpID0+IHtcclxuICAgICAgICBsZXQgZmlsdGVyT3JnYW5pemF0aW9uTGlzdCA9IFt7XHJcbiAgICAgICAgICBrZXk6IENvbnN0YW50cy5Ob3RBc3NpZ25lZFRvT3JnYW5pemF0aW9uLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5vdEFzc2lnbmVkXCIpLFxyXG4gICAgICAgIH1dLmNvbmNhdChvcmdhbml6YXRpb25MaXN0KTtcclxuICAgICAgICBsZXQgb3JnYW5pemF0aW9uc0VsZW1lbnQgPSB0aGlzLm9yZ2FuaXphdGlvbkRETDtcclxuICAgICAgICBvcmdhbml6YXRpb25zRWxlbWVudC51cGRhdGVEYXRhU291cmNlKGZpbHRlck9yZ2FuaXphdGlvbkxpc3QpO1xyXG5cclxuICAgICAgICB0aGlzLmlzRmlsdGVyRGF0YUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFBhZ2luZyBmdW5jdGlvbnNcclxuICBzZXRQZXJtaXNzaW9uU2V0TGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMucGVybWlzc2lvblNldFBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuc2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMuZmlsdGVyZWRQZXJtaXNzaW9uU2V0UGFnaW5nUmVzdWx0ID0gdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nUmVzdWx0O1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFN0YXJ0IGFkZCBQZXJtaXNzaW9uU2V0IFBhcnRcclxuICBzaG93QWRkUGVybWlzc2lvblNldE1vZGFsKEFkZFBlcm1pc3Npb25TZXRNb2RhbCkge1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0U2VydmljZS5sb2FkQWRkRWRpdERyb3Bkb3duKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbkxpc3QgPSByZXN1bHQub3JnYW5pemF0aW9ucztcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uTGlzdD1yZXN1bHQucGVybWlzc2lvbnNcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgIHRoaXMuYWRkUGVybWlzc2lvblNldEZvcm1PcHRpb25zLmZvcm1Hcm91cCA9IHRoaXMuYWRkUGVybWlzc2lvblNldEZvcm07XHJcbiAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXRGb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRQZXJtaXNzaW9uU2V0TW9kZWw7XHJcbiAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXRGb3JtT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZFBlcm1pc3Npb25TZXRGdW5jdGlvbjtcclxuICAgIHRoaXMuYWRkUGVybWlzc2lvblNldEZvcm1PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLm11bHRpTGluZ3VhbE5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMubXVsdGlMaW5ndWFsTmFtZS5uYW1lID0gXCJOYW1lXCI7XHJcbiAgICB0aGlzLm11bHRpTGluZ3VhbE5hbWUuYXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgdGhpcy5tdWx0aUxpbmd1YWxOYW1lLmVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgdGhpcy5tdWx0aUxpbmd1YWxOYW1lLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5tdWx0aUxpbmd1YWxOYW1lLm1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeUdyb3VwID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeUdyb3VwLm5hbWUgPSBcIkFjdGl2ZURpcmVjdG9yeUdyb3VwXCI7XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeUdyb3VwLmxhYmVsS2V5ID0gXCJBY3RpdmVEaXJlY3RvcnlHcm91cFwiO1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlHcm91cC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeUdyb3VwLnZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5R3JvdXAubWF4TGVuZ3RoID0gNjQ7XHJcblxyXG5cclxuICAgIHRoaXMuc3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zeXNOYW1lLm5hbWUgPSBcIlN5c05hbWVcIjtcclxuICAgIHRoaXMuc3lzTmFtZS5sYWJlbEtleSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgdGhpcy5zeXNOYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuc3lzTmFtZS52YWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLnN5c05hbWUubWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgIHRoaXMucGVybWlzc2lvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25zLm5hbWUgPSBcIlBlcm1pc3Npb25JRHNcIjtcclxuICAgIHRoaXMucGVybWlzc2lvbnMubGFiZWxLZXkgPSBcIlBlcm1pc3Npb25zXCI7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25zLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9ucy5zaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIHRoaXMucGVybWlzc2lvbnMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9ucy5kYXRhU291cmNlPXRoaXMucGVybWlzc2lvbkxpc3Q7XHJcblxyXG4gICAgdGhpcy5vcmdhbml6YXRpb24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbi5uYW1lID0gXCJPcmdhbml6YXRpb25JRF9HVUlEXCI7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbi5sYWJlbEtleSA9IFwiT3JnYW5pemF0aW9uXCI7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbi5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uLmRhdGFTb3VyY2UgPSB0aGlzLm9yZ2FuaXphdGlvbkxpc3Q7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbi5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb24uYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb24uaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkUGVybWlzc2lvblNldE1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkUGVybWlzc2lvblNldE1vZGVsID0gKCk6IFBlcm1pc3Npb25TZXRNb2RlbFtdID0+IHtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkUGVybWlzc2lvblNldEZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IEFkZFBlcm1pc3Npb25TZXRNb2RlbDogUGVybWlzc2lvblNldE1vZGVsID0gbmV3IFBlcm1pc3Npb25TZXRNb2RlbCgpO1xyXG4gICAgaWYgKHRoaXMuUHJvZHVjdGlvbk1vZGUgPT0gZmFsc2UpXHJcbiAgICAgIEFkZFBlcm1pc3Npb25TZXRNb2RlbC5zeXNOYW1lID0gUmVzdWx0TW9kZWwuU3lzTmFtZTtcclxuXHJcbiAgICBBZGRQZXJtaXNzaW9uU2V0TW9kZWwubmFtZSA9IFJlc3VsdE1vZGVsLk5hbWU7XHJcbiAgICBBZGRQZXJtaXNzaW9uU2V0TW9kZWwub3JnYW5pemF0aW9uSURfR1VJRCA9IFJlc3VsdE1vZGVsW3RoaXMub3JnYW5pemF0aW9uLm5hbWVdO1xyXG4gICAgbGV0IElkcyA9IFtdO1xyXG4gICAgaWYgKFJlc3VsdE1vZGVsLlBlcm1pc3Npb25JRHMgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgUmVzdWx0TW9kZWwuUGVybWlzc2lvbklEcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gUmVzdWx0TW9kZWwuUGVybWlzc2lvbklEc1tpbmRleF07XHJcbiAgICAgICAgSWRzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIEFkZFBlcm1pc3Npb25TZXRNb2RlbC5wZXJtaXNzaW9uSURzID0gSWRzO1xyXG4gICAgQWRkUGVybWlzc2lvblNldE1vZGVsLmFjdGl2ZURpcmVjdG9yeUdyb3VwID0gUmVzdWx0TW9kZWwuQWN0aXZlRGlyZWN0b3J5R3JvdXA7XHJcbiAgICByZXR1cm4gQXJyYXkoQWRkUGVybWlzc2lvblNldE1vZGVsKTtcclxuICB9O1xyXG5cclxuICBnZXRBZGRQZXJtaXNzaW9uU2V0RnVuY3Rpb24gPSAoYWRkTW9kZWw6IFBlcm1pc3Npb25TZXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9uU2V0U2VydmljZS5hZGRQZXJtaXNzaW9uU2V0KGFkZE1vZGVsKTtcclxuICB9O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIFN0YXJ0IG9mIFBlcm1pc3Npb25TZXQgZWRpdCBwYXJ0XHJcbiAgc2hvd0VkaXRQZXJtaXNzaW9uU2V0TW9kYWwocGVybWlzc2lvblNldElEOiBzdHJpbmcsIGVkaXRQZXJtaXNzaW9uU2V0TW9kYWwpIHtcclxuXHJcbiAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cclxuICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgdGhpcy5lZGl0UGVybWlzc2lvblNldEZvcm1PcHRpb25zLmZvcm1Hcm91cCA9IHRoaXMuZWRpdFBlcm1pc3Npb25TZXRGb3JtO1xyXG4gICAgdGhpcy5lZGl0UGVybWlzc2lvblNldEZvcm1PcHRpb25zLmdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRQZXJtaXNzaW9uU2V0TW9kZWw7XHJcbiAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0Rm9ybU9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0UGVybWlzc2lvblNldEZ1bmN0aW9uO1xyXG4gICAgdGhpcy5lZGl0UGVybWlzc2lvblNldEZvcm1PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuXHJcblxyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0U2VydmljZS5nZXRQZXJtaXNzaW9uU2V0KHBlcm1pc3Npb25TZXRJRCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgUGVybWlzc2lvblNldCA9IHJlc3VsdC5tb2RlbDtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0Lmxpc3RzO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbkxpc3QgPSBsaXN0cy5vcmdhbml6YXRpb25zO1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25MaXN0PWxpc3RzLnBlcm1pc3Npb25zXHJcblxyXG4gICAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIG5hbWUuYXJhYmljID0gUGVybWlzc2lvblNldC5uYW1lLmFyYWJpYztcclxuICAgICAgbmFtZS5lbmdsaXNoID0gUGVybWlzc2lvblNldC5uYW1lLmVuZ2xpc2g7XHJcblxyXG4gICAgICB0aGlzLmVkaXRNdWx0aUxpbmd1YWxOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE11bHRpTGluZ3VhbE5hbWUubmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLmVkaXRNdWx0aUxpbmd1YWxOYW1lLmFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5lZGl0TXVsdGlMaW5ndWFsTmFtZS5lbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5lZGl0TXVsdGlMaW5ndWFsTmFtZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0TXVsdGlMaW5ndWFsTmFtZS52YWx1ZSA9IG5hbWU7XHJcbiAgICAgIHRoaXMuZWRpdE11bHRpTGluZ3VhbE5hbWUubWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRJZCA9IFBlcm1pc3Npb25TZXQuaURfR1VJRDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUdyb3VwID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUdyb3VwLm5hbWUgPSBcIkFjdGl2ZURpcmVjdG9yeUdyb3VwXCI7XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUdyb3VwLmxhYmVsS2V5ID0gXCJBY3RpdmVEaXJlY3RvcnlHcm91cFwiO1xyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlHcm91cC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUdyb3VwLnZhbHVlID0gUGVybWlzc2lvblNldC5hY3RpdmVEaXJlY3RvcnlHcm91cDtcclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5R3JvdXAubWF4TGVuZ3RoID0gNjQ7XHJcblxyXG4gICAgICB0aGlzLmVkaXRTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFN5c05hbWUubmFtZSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLmVkaXRTeXNOYW1lLmxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuZWRpdFN5c05hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmVkaXRTeXNOYW1lLnZhbHVlID0gUGVybWlzc2lvblNldC5zeXNOYW1lO1xyXG4gICAgICB0aGlzLmVkaXRTeXNOYW1lLm1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIGxldCBzZWxlY3RlZFBlcm1pc3Npb25MaXN0ID0gW107XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBQZXJtaXNzaW9uU2V0LnBlcm1pc3Npb25JRHMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgUGVybWlzc2lvbiA9IHRoaXMucGVybWlzc2lvbkxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleT8udG9Mb3dlckNhc2UoKSA9PSBQZXJtaXNzaW9uU2V0LnBlcm1pc3Npb25JRHNbaW5kZXhdPy50b0xvd2VyQ2FzZSgpOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5LnRvTG93ZXJDYXNlKCkpWzBdO1xyXG4gICAgICAgIHNlbGVjdGVkUGVybWlzc2lvbkxpc3QucHVzaChQZXJtaXNzaW9uKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25zLm5hbWUgPSBcIlBlcm1pc3Npb25JRHNcIjtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvbnMubGFiZWxLZXkgPSBcIlBlcm1pc3Npb25zXCI7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25zLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFBlcm1pc3Npb25MaXN0O1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9ucy5zaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvbnMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9ucy5kYXRhU291cmNlPXRoaXMucGVybWlzc2lvbkxpc3Q7XHJcblxyXG4gICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5uYW1lID0gXCJPcmdhbml6YXRpb25JRF9HVUlEXCI7XHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5sYWJlbEtleSA9IFwiT3JnYW5pemF0aW9uXCI7XHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5zZWxlY3RlZEl0ZW1zID0gUGVybWlzc2lvblNldC5vcmdhbml6YXRpb25JRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb24uZGF0YVNvdXJjZSA9IHRoaXMub3JnYW5pemF0aW9uTGlzdDtcclxuICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9uLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5pc1JlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGVkaXRQZXJtaXNzaW9uU2V0TW9kYWwpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdFBlcm1pc3Npb25TZXRNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5lZGl0UGVybWlzc2lvblNldEZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IEVkaXRQZXJtaXNzaW9uU2V0TW9kZWw6IFBlcm1pc3Npb25TZXRNb2RlbCA9IG5ldyBQZXJtaXNzaW9uU2V0TW9kZWwoKTtcclxuICAgIEVkaXRQZXJtaXNzaW9uU2V0TW9kZWwuaURfR1VJRCA9IHRoaXMuZWRpdFBlcm1pc3Npb25TZXRJZDtcclxuICAgIEVkaXRQZXJtaXNzaW9uU2V0TW9kZWwubmFtZSA9IFJlc3VsdE1vZGVsLk5hbWU7XHJcbiAgICBpZiAodGhpcy5Qcm9kdWN0aW9uTW9kZSA9PSBmYWxzZSlcclxuICAgICAgRWRpdFBlcm1pc3Npb25TZXRNb2RlbC5zeXNOYW1lID0gUmVzdWx0TW9kZWwuU3lzTmFtZTtcclxuXHJcbiAgICBFZGl0UGVybWlzc2lvblNldE1vZGVsLmFjdGl2ZURpcmVjdG9yeUdyb3VwID0gUmVzdWx0TW9kZWwuQWN0aXZlRGlyZWN0b3J5R3JvdXA7XHJcbiAgICBFZGl0UGVybWlzc2lvblNldE1vZGVsLm9yZ2FuaXphdGlvbklEX0dVSUQgPSBSZXN1bHRNb2RlbFt0aGlzLmVkaXRPcmdhbml6YXRpb24ubmFtZV07XHJcbiAgICBsZXQgSWRzID0gW107XHJcbiAgICBpZiAoUmVzdWx0TW9kZWwuUGVybWlzc2lvbklEcyAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBSZXN1bHRNb2RlbC5QZXJtaXNzaW9uSURzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBSZXN1bHRNb2RlbC5QZXJtaXNzaW9uSURzW2luZGV4XTtcclxuICAgICAgICBJZHMucHVzaChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgRWRpdFBlcm1pc3Npb25TZXRNb2RlbC5wZXJtaXNzaW9uSURzID0gSWRzO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKEVkaXRQZXJtaXNzaW9uU2V0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0RWRpdFBlcm1pc3Npb25TZXRGdW5jdGlvbiA9IChFZGl0UGVybWlzc2lvblNldE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25TZXRTZXJ2aWNlLmVkaXRQZXJtaXNzaW9uU2V0KEVkaXRQZXJtaXNzaW9uU2V0TW9kZWwpO1xyXG4gIH07XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBTdGFydCBvZiBkZWxldGUgUGVybWlzc2lvblNldCBwYXJ0XHJcbiAgc2hvd0RlbGV0ZVBlcm1pc3Npb25TZXRNb2RhbChQZXJtaXNzaW9uU2V0SWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5kZWxldGVDb250cm9sTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmRlbGV0ZWRQZXJtaXNzaW9uU2V0SWQgPSBQZXJtaXNzaW9uU2V0SWQ7XHJcbiAgICAvL2FycmF5IHNlbnQgdG8gc2VydmljZSBmdW5jdGlvblxyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBwYXJhbUFycmF5LnB1c2godGhpcy5kZWxldGVkUGVybWlzc2lvblNldElkKTtcclxuXHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5kZWxldGVQZXJtaXNzaW9uU2V0O1xyXG4gICAgdGhpcy5kZWxldGVDb25maXJtYXRpb25PcHRpb25zLnNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMucGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG5cclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlUGVybWlzc2lvblNldCA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25TZXRTZXJ2aWNlLmRlbGV0ZVBlcm1pc3Npb25TZXQoaWQpO1xyXG4gIH07XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyNyZWdpb24gaGVscGVyc1xyXG5cclxuICBmaWx0ZXJQZXJtaXNzaW9uU2V0TGlzdChzZWFyY2hWYWx1ZSkge1xyXG4gICAgaWYgKHNlYXJjaFZhbHVlKVxyXG4gICAgICB0aGlzLmZpbHRlcmVkUGVybWlzc2lvblNldFBhZ2luZ1Jlc3VsdCA9IHRoaXMucGVybWlzc2lvblNldFBhZ2luZ1Jlc3VsdC5maWx0ZXIoaXRlbSA9PiBpdGVtLnBlcm1pc3Npb25TZXROYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmZpbHRlcmVkUGVybWlzc2lvblNldFBhZ2luZ1Jlc3VsdCA9IHRoaXMucGVybWlzc2lvblNldFBhZ2luZ1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlT3JnYW5pemF0aW9uKGlkOiBhbnkscGVybWlzc2lvbnNEREw6RHJvcGRvd25MaXN0Q29tcG9uZW50LCBpc0FkZDogYm9vbGVhbj1mYWxzZSkge1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0U2VydmljZS5sb2FkQWRkRWRpdERyb3Bkb3duKGlkKS5zdWJzY3JpYmUoKHJlc3VsdDphbnkpID0+IHtcclxuICAgICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucy5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmVkaXRQZXJtaXNzaW9ucy5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBwZXJtaXNzaW9uc0RETC51cGRhdGVEYXRhU291cmNlKHJlc3VsdC5wZXJtaXNzaW9ucyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gRGVzdHJveSBPYnNlcnZhYmxlXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8YmxvY2stdWk+XHJcbiAgPCEtLSBTdWJoZWFkZXIgLS0+XHJcbiAgPCEtLSBQYWdlIENvbnRlbnQgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJpc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cInBlcm1pc3Npb25TZXRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cImlzTXVsdGlUZW5hbmN5QWxsb3dlZCAmJiBpc1N1cGVyQWRtaW5cIlxyXG4gICAgICAgICAgICBuZ2JEcm9wZG93blxyXG4gICAgICAgICAgICBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyBkaXNwbGF5OiBzaG93UGFnZUNvbnRlbnQgPT0gdHJ1ZSA/ICdibG9jaycgOiAnbm9uZScgfVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImxvYWRMaXN0cygpXCJcclxuICAgICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZVxyXG4gICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCJcclxuICAgICAgICAgICAgICBpZD1cIkZpbHRlcnNEcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJGaWx0ZXJcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWx0ZXIgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGaWx0ZXInKSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgIG5nYkRyb3Bkb3duTWVudVxyXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cIkZpbHRlcnNEcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItY29udGFpbmVyIG1lbnUgbWVudS1zdWIgbWVudS1zdWItZHJvcGRvd24gbWVudS1jb2x1bW4gbWVudS1yb3VuZGVkIG1lbnUtZ3JheS04MDAgbWVudS1zdGF0ZS1iZy1saWdodC1wcmltYXJ5IHctMjUwcHggdy1tZC01MDBweCBmdy1ib2xkIHB5LTMgZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJwZXJtaXNzaW9uU2V0Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTcgcHktNVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJpc011bHRpVGVuYW5jeUFsbG93ZWQgJiYgaXNTdXBlckFkbWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjb3JnYW5pemF0aW9uRERMIFtvcHRpb25zXT1cIm9yZ2FuaXphdGlvbk9wdGlvbnNcIiBbZ3JvdXBdPVwicGVybWlzc2lvblNldEZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5IHB2LXJlc2V0IGJ0bi1zbVwiIG5hbWU9XCJwZXJtaXNzaW9uU2V0UmVzZXRCdXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1Jlc2V0JykgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBiZWdpbjo6TWVudSAtLT5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNTdXBlckFkbWluXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgIHRpdGxlPVwiQWRkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dBZGRQZXJtaXNzaW9uU2V0TW9kYWwoQWRkUGVybWlzc2lvblNldE1vZGFsKVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FkZCcpIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8IS0tIGVuZDo6TWVudSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICA8IS0tYmVnaW46OlBlcm1pc3Npb24gbGlzdC0tPlxyXG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ05hbWUnKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnU3lzTmFtZScpIH19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVXNlcnNDb3VudCcpIH19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiICpuZ0lmPVwiaXNNdWx0aVRlbmFuY3lBbGxvd2VkICYmIGlzU3VwZXJBZG1pblwiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ09yZ2FuaXphdGlvbicpIH19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBY3Rpb24nKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBQZXJtaXNzaW9uU2V0IG9mIGZpbHRlcmVkUGVybWlzc2lvblNldFBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL1JvbGVzL1Blcm1pc3Npb25TZXRJbmZvJywgUGVybWlzc2lvblNldC5pRF9HVUlEXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhcmtcIlxyXG4gICAgICAgICAgICAgICAgICAgID57eyBQZXJtaXNzaW9uU2V0LnBlcm1pc3Npb25TZXROYW1lIH19PC9hXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhUHJvZHVjdGlvbk1vZGVcIj57eyBQZXJtaXNzaW9uU2V0LnN5c05hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7IFBlcm1pc3Npb25TZXQudXNlcnNDb3VudCB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJpc011bHRpVGVuYW5jeUFsbG93ZWQgJiYgaXNTdXBlckFkbWluXCI+e3sgUGVybWlzc2lvblNldC5jdXJyZW50T3JnYW5pemF0aW9uTmFtZSA/PyAnLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNTdXBlckFkbWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgY2xhc3M9XCJtYXQtbWVudS1jb250ZW50XCIgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJzaG93RWRpdFBlcm1pc3Npb25TZXRNb2RhbChQZXJtaXNzaW9uU2V0LmlEX0dVSUQsIEVkaXRQZXJtaXNzaW9uU2V0TW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFZGl0JykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIChjbGljayk9XCJzaG93RGVsZXRlUGVybWlzc2lvblNldE1vZGFsKFBlcm1pc3Npb25TZXQuaURfR1VJRClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0RlbGV0ZScpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cImZpbHRlcmVkUGVybWlzc2lvblNldFBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiUHJvZHVjdGlvbk1vZGUgPyAnMycgOiAnNCdcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPCEtLWVuZDo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgICA8QkJTRi1QYWdpbmdcclxuICAgICAgICAgIChJdGVtcyk9XCJzZXRQZXJtaXNzaW9uU2V0TGlzdFJlc3VsdCgkZXZlbnQpXCJcclxuICAgICAgICAgICpuZ0lmPVwiaXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgW29wdGlvbnNdPVwicGVybWlzc2lvblNldFBhZ2luZ1wiXHJcbiAgICAgICAgICBbZ3JvdXBdPVwicGVybWlzc2lvblNldEZvcm1cIlxyXG4gICAgICAgICAgI1Blcm1pc3Npb25TZXRQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tICNyZWdpb24gQWRkIE1vZGFsIC0tPlxyXG4gIDxuZy10ZW1wbGF0ZSAjQWRkUGVybWlzc2lvblNldE1vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnQWRkUGVybWlzc2lvblNldCcpIH19PC9oMT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiYWRkUGVybWlzc2lvblNldEZvcm1PcHRpb25zXCI+XHJcbiAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJtdWx0aUxpbmd1YWxOYW1lXCIgW2dyb3VwXT1cImFkZFBlcm1pc3Npb25TZXRGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhY3RpdmVEaXJlY3RvcnlHcm91cFwiIFtncm91cF09XCJhZGRQZXJtaXNzaW9uU2V0Rm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8QkJTRi1UZXh0Qm94ICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCIgW29wdGlvbnNdPVwic3lzTmFtZVwiIFtncm91cF09XCJhZGRQZXJtaXNzaW9uU2V0Rm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3RcclxuICAgICAgICAgICpuZ0lmPVwiaXNNdWx0aVRlbmFuY3lBbGxvd2VkICYmIGlzU3VwZXJBZG1pblwiXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJvcmdhbml6YXRpb25cIlxyXG4gICAgICAgICAgW2dyb3VwXT1cImFkZFBlcm1pc3Npb25TZXRGb3JtXCJcclxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkNoYW5nZU9yZ2FuaXphdGlvbigkZXZlbnQsYWRkUGVybWlzc2lvbnNEREwsIHRydWUpXCI+XHJcbiAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2FkZFBlcm1pc3Npb25zRERMIFtvcHRpb25zXT1cInBlcm1pc3Npb25zXCIgW2dyb3VwXT1cImFkZFBlcm1pc3Npb25TZXRGb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICNDbG9zZVBlcm1pc3Npb25TZXRNb2RhbFxyXG4gICAgICAgICAgICBpZD1cIkNsb3NlUGVybWlzc2lvblNldE1vZGFsXCJcclxuICAgICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NhbmNlbExhYmVsJykgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnU2F2ZUxhYmVsJykgfX08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgPCEtLSAjcmVnaW9uIEVkaXQgTW9kYWwgLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNFZGl0UGVybWlzc2lvblNldE1vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRWRpdFBlcm1pc3Npb25TZXQnKSB9fTwvaDE+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cImVkaXRQZXJtaXNzaW9uU2V0Rm9ybU9wdGlvbnNcIj5cclxuICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImVkaXRNdWx0aUxpbmd1YWxOYW1lXCIgW2dyb3VwXT1cImVkaXRQZXJtaXNzaW9uU2V0Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUdyb3VwXCIgW2dyb3VwXT1cImVkaXRQZXJtaXNzaW9uU2V0Rm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRTeXNOYW1lXCIgW2dyb3VwXT1cImVkaXRQZXJtaXNzaW9uU2V0Rm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3RcclxuICAgICAgICAgICpuZ0lmPVwiaXNNdWx0aVRlbmFuY3lBbGxvd2VkICYmIGlzU3VwZXJBZG1pblwiXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJlZGl0T3JnYW5pemF0aW9uXCJcclxuICAgICAgICAgIFtncm91cF09XCJlZGl0UGVybWlzc2lvblNldEZvcm1cIlxyXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlT3JnYW5pemF0aW9uKCRldmVudCxlZGl0UGVybWlzc2lvbnNEREwpXCI+XHJcbiAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2VkaXRQZXJtaXNzaW9uc0RETCBbb3B0aW9uc109XCJlZGl0UGVybWlzc2lvbnNcIiBbZ3JvdXBdPVwiZWRpdFBlcm1pc3Npb25TZXRGb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICNDbG9zZUVkaXRQZXJtaXNzaW9uU2V0TW9kYWxcclxuICAgICAgICAgICAgaWQ9XCJDbG9zZUVkaXRQZXJtaXNzaW9uU2V0TW9kYWxcIlxyXG4gICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnQ2FuY2VsTGFiZWwnKSB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTYXZlTGFiZWwnKSB9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L0JCU0YtRm9ybT5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICA8IS0tZGVsZXRlIE1vZGFsLS0+XHJcbiAgPEJCU0YtQ29uZmlybWF0aW9uTW9kYWxcclxuICAgICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiXHJcbiAgICBbb3B0aW9uc109XCJkZWxldGVDb25maXJtYXRpb25PcHRpb25zXCJcclxuICAgIGlkPVwiQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCJcclxuICAgICNDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG48L2Jsb2NrLXVpPlxyXG4iXX0=
|
|
338
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnNldHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9yb2xlcy9wZXJtaXNzaW9uc2V0cy9wZXJtaXNzaW9uc2V0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3JvbGVzL3Blcm1pc3Npb25zZXRzL3Blcm1pc3Npb25zZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQThCLHdCQUF3QixFQUF5QixlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFtQixhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JTLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUs5RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVF6QyxNQUFNLE9BQU8sdUJBQXVCO0lBNERsQyxZQUNVLGVBQWdDLEVBQ2pDLGNBQThCLEVBQzdCLGtCQUFzQyxFQUN0QyxvQkFBMEMsRUFDMUMsWUFBc0IsRUFDdEIscUJBQTRDLEVBQzVDLFdBQXdCO1FBTnhCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDN0IsdUJBQWtC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QUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7SUFFWiw0QkFBNEI7SUFDNUIsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM5QyxDQUFDOzhHQTdZVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix1WkNqQnBDLHVvV0ErTkE7OzJGRDlNYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0ksb0JBQW9CLGNBRWxCLEtBQUs7MFFBNkI2QyxhQUFhO3NCQUE1RSxTQUFTO3VCQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkE4Qkosd0JBQXdCO3NCQUFqRixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDUCxlQUFlO3NCQUEvRCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50LCBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMsIERyb3Bkb3duTGlzdENvbXBvbmVudCwgRHJvcGRvd25PcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBGb3JtT3B0aW9ucywgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucywgUGFnaW5nQ29tcG9uZW50LCBQYWdpbmdPcHRpb25zLCBQZXJtaXNzaW9uU2V0cywgVGV4dEJveE9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblNldE1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9QZXJtaXNzaW9uc01vZGVscy9QZXJtaXNzaW9uU2V0TW9kZWwnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBBdXRoU2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvUGVybWlzc2lvblNldFNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1wZXJtaXNzaW9uc2V0cycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGVybWlzc2lvbnNldHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zZXRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBBcGlVcmwgPSB0aGlzLnBlcm1pc3Npb25TZXRTZXJ2aWNlLkFwaVVybDtcclxuICBQcm9kdWN0aW9uTW9kZTogYm9vbGVhbjtcclxuICBjdXJyZW50VXNlclByb2ZpbGU6IGFueTtcclxuICBwZXJtaXNzaW9uU2V0cyA9IFBlcm1pc3Npb25TZXRzO1xyXG4gIGlzTXVsdGlUZW5hbmN5QWxsb3dlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBjb21wb25lbnRzXHJcbiAgc2VhcmNoVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgcGVybWlzc2lvbkxpc3QgPSBbXTtcclxuICBvcmdhbml6YXRpb25MaXN0ID0gW107XHJcbiAgZmlsdGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHBlcm1pc3Npb25TZXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgc2hvd0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBlcm1pc3Npb25TZXRQYWdpbmdSZXN1bHQ6IFBlcm1pc3Npb25TZXRNb2RlbFtdID0gW107XHJcbiAgZmlsdGVyZWRQZXJtaXNzaW9uU2V0UGFnaW5nUmVzdWx0OiBQZXJtaXNzaW9uU2V0TW9kZWxbXSA9IFtdO1xyXG4gIHBlcm1pc3Npb25TZXRQYWdpbmc6IFBhZ2luZ09wdGlvbnMgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gIHRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBvcmdhbml6YXRpb25PcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgb3JnYW5pemF0aW9uc0ZpbHRlcjogRmlsdGVySXRlbTtcclxuICBpc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRmlsdGVyRGF0YUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dQYWdlQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCdQZXJtaXNzaW9uU2V0UGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG5cclxuICAvLyNyZWdpb24gQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgYWRkUGVybWlzc2lvblNldEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBhZGRQZXJtaXNzaW9uU2V0Rm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zO1xyXG4gIG11bHRpTGluZ3VhbE5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFjdGl2ZURpcmVjdG9yeUdyb3VwOiBUZXh0Qm94T3B0aW9ucztcclxuICBwZXJtaXNzaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIG9yZ2FuaXphdGlvbjogRHJvcGRvd25PcHRpb25zO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIEVkaXQgTW9kZWwgQ29udHJvbHNcclxuICBlZGl0UGVybWlzc2lvblNldEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBlZGl0UGVybWlzc2lvblNldEZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucztcclxuICBlZGl0TXVsdGlMaW5ndWFsTmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdFN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRBY3RpdmVEaXJlY3RvcnlHcm91cDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdFBlcm1pc3Npb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgcGVybWlzc2lvblNldElkOiBzdHJpbmc7XHJcbiAgZWRpdFBlcm1pc3Npb25TZXRJZDogc3RyaW5nO1xyXG4gIGVkaXRPcmdhbml6YXRpb246IERyb3Bkb3duT3B0aW9ucztcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlZFBlcm1pc3Npb25TZXRJZDogc3RyaW5nO1xyXG4gIGRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBkZWxldGVDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnb3JnYW5pemF0aW9uRERMJywgeyBzdGF0aWM6IGZhbHNlIH0pIG9yZ2FuaXphdGlvbkRETDogRHJvcGRvd25MaXN0Q29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgcGVybWlzc2lvblNldFNlcnZpY2U6IFBlcm1pc3Npb25TZXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvL1BhZ2UgaGVhZGVyIChicmVhZGNydW1iIGFuZCB0aXRsZSlcclxuICAgIHRoaXMuc2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGVybWlzc2lvblNldHNcIik7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5Qcm9kdWN0aW9uTW9kZSA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldFByb2R1Y3Rpb25Nb2RlKCk7XHJcbiAgICB0aGlzLmlzTXVsdGlUZW5hbmN5QWxsb3dlZCA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFsbG93TXVsdGlUZW5hbmN5KCk7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VyUHJvZmlsZSA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKS5wcm9maWxlO1xyXG4gICAgdGhpcy5pc1N1cGVyQWRtaW4gPSB0aGlzLmN1cnJlbnRVc2VyUHJvZmlsZS5wZXJtaXNzaW9uU2V0U0lEID09IHRoaXMucGVybWlzc2lvblNldHMuQWRtaW47XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLyNyZWdpb24gaW5pdGlhbGl6ZSBwYWdlXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICAgIC8vIFRleHRCb3ggaW50aVxyXG4gICAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0Qm94Lm5hbWUgPSBcInNlYXJjaFRleHRCb3hcIjtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dEJveC5wbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKTtcclxuXHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25PcHRpb25zLm5hbWUgPSBcIm9yZ2FuaXphdGlvblwiO1xyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvbk9wdGlvbnMubGFiZWxLZXkgPSBcIk9yZ2FuaXphdGlvbnNcIjtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25PcHRpb25zLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uT3B0aW9ucy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICAgIHRoaXMudGV4dElucHV0RmlsdGVyLmZvcm1Db250cm9sTmFtZSA9IHRoaXMuc2VhcmNoVGV4dEJveC5uYW1lO1xyXG4gICAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5hY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCI7XHJcbiAgICAgIHRoaXMudGV4dElucHV0RmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94O1xyXG5cclxuICAgICAgaWYgKHRoaXMuaXNNdWx0aVRlbmFuY3lBbGxvd2VkICYmIHRoaXMuaXNTdXBlckFkbWluKSB7XHJcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nLmZpbHRlcnMgPSB0aGlzLnBlcm1pc3Npb25TZXRQYWdpbmcuZmlsdGVycyA/PyBbXTtcclxuICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXRQYWdpbmcuZHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzID0gdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nLmRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcyA/PyBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvbnNGaWx0ZXIuZm9ybUNvbnRyb2xOYW1lID0gdGhpcy5vcmdhbml6YXRpb25PcHRpb25zLm5hbWU7XHJcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyLmFjdGlvblBhcmFtZXRlck5hbWUgPSBcIm9yZ2FuaXphdGlvbklkXCI7XHJcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25zRmlsdGVyLmlzRm9ybUNvbnRyb2wgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3JnYW5pemF0aW9uc0ZpbHRlci5maWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3Q7XHJcblxyXG4gICAgICAgIHRoaXMucGVybWlzc2lvblNldFBhZ2luZy5maWx0ZXJzLnB1c2godGhpcy5vcmdhbml6YXRpb25zRmlsdGVyKTtcclxuICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXRQYWdpbmcuZHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzLnB1c2godGhpcy5vcmdhbml6YXRpb25zRmlsdGVyLmZvcm1Db250cm9sTmFtZSk7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXRQYWdpbmcuYWN0aW9uUG9zdFVSTCA9IHRoaXMuQXBpVXJsICsgJ0dldFBlcm1pc3Npb25TZXRzQnlGaWx0ZXInO1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXRQYWdpbmcub25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbdGhpcy5zZWFyY2hUZXh0Qm94Lm5hbWVdO1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXRQYWdpbmcuZmlsdGVycy5wdXNoKHRoaXMudGV4dElucHV0RmlsdGVyKTtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nLnJlc2V0RmlsdGVyQnV0dG9uTmFtZSA9ICdwZXJtaXNzaW9uU2V0UmVzZXRCdXR0b24nO1xyXG4gICAgICB0aGlzLmlzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGxvYWRMaXN0cygpIHtcclxuICAgIGlmICghdGhpcy5pc0ZpbHRlckRhdGFMb2FkZWQpIHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0U2VydmljZS5sb2FkRHJvcGRvd25Gb3JGaWx0ZXJzKCkuc3Vic2NyaWJlKChvcmdhbml6YXRpb25MaXN0OmFueSkgPT4ge1xyXG4gICAgICAgIGxldCBmaWx0ZXJPcmdhbml6YXRpb25MaXN0ID0gW3tcclxuICAgICAgICAgIGtleTogQ29uc3RhbnRzLk5vdEFzc2lnbmVkVG9Pcmdhbml6YXRpb24sXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm90QXNzaWduZWRcIiksXHJcbiAgICAgICAgfV0uY29uY2F0KG9yZ2FuaXphdGlvbkxpc3QpO1xyXG4gICAgICAgIGxldCBvcmdhbml6YXRpb25zRWxlbWVudCA9IHRoaXMub3JnYW5pemF0aW9uRERMO1xyXG4gICAgICAgIG9yZ2FuaXphdGlvbnNFbGVtZW50LnVwZGF0ZURhdGFTb3VyY2UoZmlsdGVyT3JnYW5pemF0aW9uTGlzdCk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJEYXRhTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldFBlcm1pc3Npb25TZXRMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5zaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy5maWx0ZXJlZFBlcm1pc3Npb25TZXRQYWdpbmdSZXN1bHQgPSB0aGlzLnBlcm1pc3Npb25TZXRQYWdpbmdSZXN1bHQ7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gU3RhcnQgYWRkIFBlcm1pc3Npb25TZXQgUGFydFxyXG4gIHNob3dBZGRQZXJtaXNzaW9uU2V0TW9kYWwoQWRkUGVybWlzc2lvblNldE1vZGFsKSB7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRTZXJ2aWNlLmxvYWRBZGRFZGl0RHJvcGRvd24oKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uTGlzdCA9IHJlc3VsdC5vcmdhbml6YXRpb25zO1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25MaXN0PXJlc3VsdC5wZXJtaXNzaW9uc1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMuYWRkUGVybWlzc2lvblNldEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXRGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0Rm9ybU9wdGlvbnMuZm9ybUdyb3VwID0gdGhpcy5hZGRQZXJtaXNzaW9uU2V0Rm9ybTtcclxuICAgIHRoaXMuYWRkUGVybWlzc2lvblNldEZvcm1PcHRpb25zLmdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZFBlcm1pc3Npb25TZXRNb2RlbDtcclxuICAgIHRoaXMuYWRkUGVybWlzc2lvblNldEZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkUGVybWlzc2lvblNldEZ1bmN0aW9uO1xyXG4gICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0Rm9ybU9wdGlvbnMucGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG5cclxuICAgIHRoaXMubXVsdGlMaW5ndWFsTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5tdWx0aUxpbmd1YWxOYW1lLm5hbWUgPSBcIk5hbWVcIjtcclxuICAgIHRoaXMubXVsdGlMaW5ndWFsTmFtZS5hcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICB0aGlzLm11bHRpTGluZ3VhbE5hbWUuZW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICB0aGlzLm11bHRpTGluZ3VhbE5hbWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLm11bHRpTGluZ3VhbE5hbWUubWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5R3JvdXAgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5R3JvdXAubmFtZSA9IFwiQWN0aXZlRGlyZWN0b3J5R3JvdXBcIjtcclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5R3JvdXAubGFiZWxLZXkgPSBcIkFjdGl2ZURpcmVjdG9yeUdyb3VwXCI7XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeUdyb3VwLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5R3JvdXAudmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlHcm91cC5tYXhMZW5ndGggPSA2NDtcclxuXHJcblxyXG4gICAgdGhpcy5zeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLnN5c05hbWUubmFtZSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgdGhpcy5zeXNOYW1lLmxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICB0aGlzLnN5c05hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5zeXNOYW1lLnZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuc3lzTmFtZS5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIHRoaXMucGVybWlzc2lvbnMubmFtZSA9IFwiUGVybWlzc2lvbklEc1wiO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9ucy5sYWJlbEtleSA9IFwiUGVybWlzc2lvbnNcIjtcclxuICAgIHRoaXMucGVybWlzc2lvbnMuc2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25zLnNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9ucy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25zLmRhdGFTb3VyY2U9dGhpcy5wZXJtaXNzaW9uTGlzdDtcclxuXHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbiA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uLm5hbWUgPSBcIk9yZ2FuaXphdGlvbklEX0dVSURcIjtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uLmxhYmVsS2V5ID0gXCJPcmdhbml6YXRpb25cIjtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb24uZGF0YVNvdXJjZSA9IHRoaXMub3JnYW5pemF0aW9uTGlzdDtcclxuICAgIHRoaXMub3JnYW5pemF0aW9uLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbi5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbi5pc1JlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBZGRQZXJtaXNzaW9uU2V0TW9kYWwpO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRQZXJtaXNzaW9uU2V0TW9kZWwgPSAoKTogUGVybWlzc2lvblNldE1vZGVsW10gPT4ge1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5hZGRQZXJtaXNzaW9uU2V0Rm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBsZXQgQWRkUGVybWlzc2lvblNldE1vZGVsOiBQZXJtaXNzaW9uU2V0TW9kZWwgPSBuZXcgUGVybWlzc2lvblNldE1vZGVsKCk7XHJcbiAgICBpZiAodGhpcy5Qcm9kdWN0aW9uTW9kZSA9PSBmYWxzZSlcclxuICAgICAgQWRkUGVybWlzc2lvblNldE1vZGVsLnN5c05hbWUgPSBSZXN1bHRNb2RlbC5TeXNOYW1lO1xyXG5cclxuICAgIEFkZFBlcm1pc3Npb25TZXRNb2RlbC5uYW1lID0gUmVzdWx0TW9kZWwuTmFtZTtcclxuICAgIEFkZFBlcm1pc3Npb25TZXRNb2RlbC5vcmdhbml6YXRpb25JRF9HVUlEID0gUmVzdWx0TW9kZWxbdGhpcy5vcmdhbml6YXRpb24ubmFtZV07XHJcbiAgICBsZXQgSWRzID0gW107XHJcbiAgICBpZiAoUmVzdWx0TW9kZWwuUGVybWlzc2lvbklEcyAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBSZXN1bHRNb2RlbC5QZXJtaXNzaW9uSURzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBSZXN1bHRNb2RlbC5QZXJtaXNzaW9uSURzW2luZGV4XTtcclxuICAgICAgICBJZHMucHVzaChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgQWRkUGVybWlzc2lvblNldE1vZGVsLnBlcm1pc3Npb25JRHMgPSBJZHM7XHJcbiAgICBBZGRQZXJtaXNzaW9uU2V0TW9kZWwuYWN0aXZlRGlyZWN0b3J5R3JvdXAgPSBSZXN1bHRNb2RlbC5BY3RpdmVEaXJlY3RvcnlHcm91cDtcclxuICAgIHJldHVybiBBcnJheShBZGRQZXJtaXNzaW9uU2V0TW9kZWwpO1xyXG4gIH07XHJcblxyXG4gIGdldEFkZFBlcm1pc3Npb25TZXRGdW5jdGlvbiA9IChhZGRNb2RlbDogUGVybWlzc2lvblNldE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25TZXRTZXJ2aWNlLmFkZFBlcm1pc3Npb25TZXQoYWRkTW9kZWwpO1xyXG4gIH07XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyNyZWdpb24gU3RhcnQgb2YgUGVybWlzc2lvblNldCBlZGl0IHBhcnRcclxuICBzaG93RWRpdFBlcm1pc3Npb25TZXRNb2RhbChwZXJtaXNzaW9uU2V0SUQ6IHN0cmluZywgZWRpdFBlcm1pc3Npb25TZXRNb2RhbCkge1xyXG5cclxuICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gICAgdGhpcy5lZGl0UGVybWlzc2lvblNldEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0Rm9ybU9wdGlvbnMuZm9ybUdyb3VwID0gdGhpcy5lZGl0UGVybWlzc2lvblNldEZvcm07XHJcbiAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0Rm9ybU9wdGlvbnMuZ2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdFBlcm1pc3Npb25TZXRNb2RlbDtcclxuICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRGb3JtT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRQZXJtaXNzaW9uU2V0RnVuY3Rpb247XHJcbiAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0Rm9ybU9wdGlvbnMucGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG5cclxuXHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRTZXJ2aWNlLmdldFBlcm1pc3Npb25TZXQocGVybWlzc2lvblNldElEKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGxldCBQZXJtaXNzaW9uU2V0ID0gcmVzdWx0Lm1vZGVsO1xyXG4gICAgICBsZXQgbGlzdHMgPSByZXN1bHQubGlzdHM7XHJcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uTGlzdCA9IGxpc3RzLm9yZ2FuaXphdGlvbnM7XHJcbiAgICAgIHRoaXMucGVybWlzc2lvbkxpc3Q9bGlzdHMucGVybWlzc2lvbnNcclxuXHJcbiAgICAgIGxldCBuYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgbmFtZS5hcmFiaWMgPSBQZXJtaXNzaW9uU2V0Lm5hbWUuYXJhYmljO1xyXG4gICAgICBuYW1lLmVuZ2xpc2ggPSBQZXJtaXNzaW9uU2V0Lm5hbWUuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE11bHRpTGluZ3VhbE5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0TXVsdGlMaW5ndWFsTmFtZS5uYW1lID0gXCJOYW1lXCI7XHJcbiAgICAgIHRoaXMuZWRpdE11bHRpTGluZ3VhbE5hbWUuYXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLmVkaXRNdWx0aUxpbmd1YWxOYW1lLmVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLmVkaXRNdWx0aUxpbmd1YWxOYW1lLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRNdWx0aUxpbmd1YWxOYW1lLnZhbHVlID0gbmFtZTtcclxuICAgICAgdGhpcy5lZGl0TXVsdGlMaW5ndWFsTmFtZS5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG5cclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldElkID0gUGVybWlzc2lvblNldC5pRF9HVUlEO1xyXG5cclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5R3JvdXAgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5R3JvdXAubmFtZSA9IFwiQWN0aXZlRGlyZWN0b3J5R3JvdXBcIjtcclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5R3JvdXAubGFiZWxLZXkgPSBcIkFjdGl2ZURpcmVjdG9yeUdyb3VwXCI7XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUdyb3VwLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5R3JvdXAudmFsdWUgPSBQZXJtaXNzaW9uU2V0LmFjdGl2ZURpcmVjdG9yeUdyb3VwO1xyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlHcm91cC5tYXhMZW5ndGggPSA2NDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdFN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0U3lzTmFtZS5uYW1lID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuZWRpdFN5c05hbWUubGFiZWxLZXkgPSBcIlN5c05hbWVcIjtcclxuICAgICAgdGhpcy5lZGl0U3lzTmFtZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuZWRpdFN5c05hbWUudmFsdWUgPSBQZXJtaXNzaW9uU2V0LnN5c05hbWU7XHJcbiAgICAgIHRoaXMuZWRpdFN5c05hbWUubWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgbGV0IHNlbGVjdGVkUGVybWlzc2lvbkxpc3QgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFBlcm1pc3Npb25TZXQucGVybWlzc2lvbklEcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBQZXJtaXNzaW9uID0gdGhpcy5wZXJtaXNzaW9uTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5Py50b0xvd2VyQ2FzZSgpID09IFBlcm1pc3Npb25TZXQucGVybWlzc2lvbklEc1tpbmRleF0/LnRvTG93ZXJDYXNlKCk7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkudG9Mb3dlckNhc2UoKSlbMF07XHJcbiAgICAgICAgc2VsZWN0ZWRQZXJtaXNzaW9uTGlzdC5wdXNoKFBlcm1pc3Npb24pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvbnMubmFtZSA9IFwiUGVybWlzc2lvbklEc1wiO1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9ucy5sYWJlbEtleSA9IFwiUGVybWlzc2lvbnNcIjtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvbnMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkUGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25zLnNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9ucy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25zLmRhdGFTb3VyY2U9dGhpcy5wZXJtaXNzaW9uTGlzdDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbiA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9uLm5hbWUgPSBcIk9yZ2FuaXphdGlvbklEX0dVSURcIjtcclxuICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9uLmxhYmVsS2V5ID0gXCJPcmdhbml6YXRpb25cIjtcclxuICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9uLnNlbGVjdGVkSXRlbXMgPSBQZXJtaXNzaW9uU2V0Lm9yZ2FuaXphdGlvbklEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuZWRpdE9yZ2FuaXphdGlvbi5kYXRhU291cmNlID0gdGhpcy5vcmdhbml6YXRpb25MaXN0O1xyXG4gICAgICB0aGlzLmVkaXRPcmdhbml6YXRpb24uc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9uLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0T3JnYW5pemF0aW9uLmlzUmVxdWlyZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oZWRpdFBlcm1pc3Npb25TZXRNb2RhbCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRFZGl0UGVybWlzc2lvblNldE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0Rm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBsZXQgRWRpdFBlcm1pc3Npb25TZXRNb2RlbDogUGVybWlzc2lvblNldE1vZGVsID0gbmV3IFBlcm1pc3Npb25TZXRNb2RlbCgpO1xyXG4gICAgRWRpdFBlcm1pc3Npb25TZXRNb2RlbC5pRF9HVUlEID0gdGhpcy5lZGl0UGVybWlzc2lvblNldElkO1xyXG4gICAgRWRpdFBlcm1pc3Npb25TZXRNb2RlbC5uYW1lID0gUmVzdWx0TW9kZWwuTmFtZTtcclxuICAgIGlmICh0aGlzLlByb2R1Y3Rpb25Nb2RlID09IGZhbHNlKVxyXG4gICAgICBFZGl0UGVybWlzc2lvblNldE1vZGVsLnN5c05hbWUgPSBSZXN1bHRNb2RlbC5TeXNOYW1lO1xyXG5cclxuICAgIEVkaXRQZXJtaXNzaW9uU2V0TW9kZWwuYWN0aXZlRGlyZWN0b3J5R3JvdXAgPSBSZXN1bHRNb2RlbC5BY3RpdmVEaXJlY3RvcnlHcm91cDtcclxuICAgIEVkaXRQZXJtaXNzaW9uU2V0TW9kZWwub3JnYW5pemF0aW9uSURfR1VJRCA9IFJlc3VsdE1vZGVsW3RoaXMuZWRpdE9yZ2FuaXphdGlvbi5uYW1lXTtcclxuICAgIGxldCBJZHMgPSBbXTtcclxuICAgIGlmIChSZXN1bHRNb2RlbC5QZXJtaXNzaW9uSURzICE9IG51bGwpIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFJlc3VsdE1vZGVsLlBlcm1pc3Npb25JRHMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IFJlc3VsdE1vZGVsLlBlcm1pc3Npb25JRHNbaW5kZXhdO1xyXG4gICAgICAgIElkcy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBFZGl0UGVybWlzc2lvblNldE1vZGVsLnBlcm1pc3Npb25JRHMgPSBJZHM7XHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdFBlcm1pc3Npb25TZXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9O1xyXG5cclxuICBnZXRFZGl0UGVybWlzc2lvblNldEZ1bmN0aW9uID0gKEVkaXRQZXJtaXNzaW9uU2V0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvblNldFNlcnZpY2UuZWRpdFBlcm1pc3Npb25TZXQoRWRpdFBlcm1pc3Npb25TZXRNb2RlbCk7XHJcbiAgfTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFN0YXJ0IG9mIGRlbGV0ZSBQZXJtaXNzaW9uU2V0IHBhcnRcclxuICBzaG93RGVsZXRlUGVybWlzc2lvblNldE1vZGFsKFBlcm1pc3Npb25TZXRJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbnRyb2xMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZGVsZXRlZFBlcm1pc3Npb25TZXRJZCA9IFBlcm1pc3Npb25TZXRJZDtcclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaCh0aGlzLmRlbGV0ZWRQZXJtaXNzaW9uU2V0SWQpO1xyXG5cclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZVBlcm1pc3Npb25TZXQ7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdE1vZGVsID0gcGFyYW1BcnJheTtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5kZWxldGVDb250cm9sTG9hZGVkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93TW9kYWwoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVQZXJtaXNzaW9uU2V0ID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvblNldFNlcnZpY2UuZGVsZXRlUGVybWlzc2lvblNldChpZCk7XHJcbiAgfTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiBoZWxwZXJzXHJcblxyXG4gIGZpbHRlclBlcm1pc3Npb25TZXRMaXN0KHNlYXJjaFZhbHVlKSB7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUpXHJcbiAgICAgIHRoaXMuZmlsdGVyZWRQZXJtaXNzaW9uU2V0UGFnaW5nUmVzdWx0ID0gdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nUmVzdWx0LmZpbHRlcihpdGVtID0+IGl0ZW0ucGVybWlzc2lvblNldE5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZmlsdGVyZWRQZXJtaXNzaW9uU2V0UGFnaW5nUmVzdWx0ID0gdGhpcy5wZXJtaXNzaW9uU2V0UGFnaW5nUmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VPcmdhbml6YXRpb24oaWQ6IGFueSxwZXJtaXNzaW9uc0RETDpEcm9wZG93bkxpc3RDb21wb25lbnQsIGlzQWRkOiBib29sZWFuPWZhbHNlKSB7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRTZXJ2aWNlLmxvYWRBZGRFZGl0RHJvcGRvd24oaWQpLnN1YnNjcmliZSgocmVzdWx0OmFueSkgPT4ge1xyXG4gICAgICBpZiAoaXNBZGQpIHtcclxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25zLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHBlcm1pc3Npb25zRERMLnVwZGF0ZURhdGFTb3VyY2UocmVzdWx0LnBlcm1pc3Npb25zKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBEZXN0cm95IE9ic2VydmFibGVcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiIsIjxibG9jay11aT5cclxuICA8IS0tIFN1YmhlYWRlciAtLT5cclxuICA8IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cImlzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwicGVybWlzc2lvblNldEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNNdWx0aVRlbmFuY3lBbGxvd2VkICYmIGlzU3VwZXJBZG1pblwiXHJcbiAgICAgICAgICAgIG5nYkRyb3Bkb3duXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIlxyXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGRpc3BsYXk6IHNob3dQYWdlQ29udGVudCA9PSB0cnVlID8gJ2Jsb2NrJyA6ICdub25lJyB9XCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAoY2xpY2spPVwibG9hZExpc3RzKClcIlxyXG4gICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlXHJcbiAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIlxyXG4gICAgICAgICAgICAgIGlkPVwiRmlsdGVyc0Ryb3Bkb3duXCJcclxuICAgICAgICAgICAgICB0aXRsZT1cIkZpbHRlclwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0ZpbHRlcicpIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgbmdiRHJvcGRvd25NZW51XHJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiRmlsdGVyc0Ryb3Bkb3duXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1jb250YWluZXIgbWVudSBtZW51LXN1YiBtZW51LXN1Yi1kcm9wZG93biBtZW51LWNvbHVtbiBtZW51LXJvdW5kZWQgbWVudS1ncmF5LTgwMCBtZW51LXN0YXRlLWJnLWxpZ2h0LXByaW1hcnkgdy0yNTBweCB3LW1kLTUwMHB4IGZ3LWJvbGQgcHktMyBkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIj5cclxuICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInBlcm1pc3Npb25TZXRGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNyBweS01XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImlzTXVsdGlUZW5hbmN5QWxsb3dlZCAmJiBpc1N1cGVyQWRtaW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICNvcmdhbml6YXRpb25EREwgW29wdGlvbnNdPVwib3JnYW5pemF0aW9uT3B0aW9uc1wiIFtncm91cF09XCJwZXJtaXNzaW9uU2V0Rm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnkgcHYtcmVzZXQgYnRuLXNtXCIgbmFtZT1cInBlcm1pc3Npb25TZXRSZXNldEJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnUmVzZXQnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpNZW51IC0tPlxyXG5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJpc1N1cGVyQWRtaW5cIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgdGl0bGU9XCJBZGRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvd0FkZFBlcm1pc3Npb25TZXRNb2RhbChBZGRQZXJtaXNzaW9uU2V0TW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnQWRkJykgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDwhLS0gZW5kOjpNZW51IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgIDwhLS1iZWdpbjo6UGVybWlzc2lvbiBsaXN0LS0+XHJcbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTmFtZScpIH19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCIgKm5nSWY9XCIhUHJvZHVjdGlvbk1vZGVcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTeXNOYW1lJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdVc2Vyc0NvdW50JykgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCIgKm5nSWY9XCJpc011bHRpVGVuYW5jeUFsbG93ZWQgJiYgaXNTdXBlckFkbWluXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnT3JnYW5pemF0aW9uJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweFwiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FjdGlvbicpIH19PC90aD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IFBlcm1pc3Npb25TZXQgb2YgZmlsdGVyZWRQZXJtaXNzaW9uU2V0UGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vUm9sZXMvUGVybWlzc2lvblNldEluZm8nLCBQZXJtaXNzaW9uU2V0LmlEX0dVSURdXCJcclxuICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZGFya1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPnt7IFBlcm1pc3Npb25TZXQucGVybWlzc2lvblNldE5hbWUgfX08L2FcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFQcm9kdWN0aW9uTW9kZVwiPnt7IFBlcm1pc3Npb25TZXQuc3lzTmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3sgUGVybWlzc2lvblNldC51c2Vyc0NvdW50IH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImlzTXVsdGlUZW5hbmN5QWxsb3dlZCAmJiBpc1N1cGVyQWRtaW5cIj57eyBQZXJtaXNzaW9uU2V0LmN1cnJlbnRPcmdhbml6YXRpb25OYW1lID8/ICctJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1N1cGVyQWRtaW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSBjbGFzcz1cIm1hdC1tZW51LWNvbnRlbnRcIiAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNob3dFZGl0UGVybWlzc2lvblNldE1vZGFsKFBlcm1pc3Npb25TZXQuaURfR1VJRCwgRWRpdFBlcm1pc3Npb25TZXRNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0VkaXQnKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgKGNsaWNrKT1cInNob3dEZWxldGVQZXJtaXNzaW9uU2V0TW9kYWwoUGVybWlzc2lvblNldC5pRF9HVUlEKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRGVsZXRlJykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiZmlsdGVyZWRQZXJtaXNzaW9uU2V0UGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJQcm9kdWN0aW9uTW9kZSA/ICczJyA6ICc0J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8IS0tZW5kOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgIDxCQlNGLVBhZ2luZ1xyXG4gICAgICAgICAgKEl0ZW1zKT1cInNldFBlcm1pc3Npb25TZXRMaXN0UmVzdWx0KCRldmVudClcIlxyXG4gICAgICAgICAgKm5nSWY9XCJpc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJwZXJtaXNzaW9uU2V0UGFnaW5nXCJcclxuICAgICAgICAgIFtncm91cF09XCJwZXJtaXNzaW9uU2V0Rm9ybVwiXHJcbiAgICAgICAgICAjUGVybWlzc2lvblNldFBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gI3JlZ2lvbiBBZGQgTW9kYWwgLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNBZGRQZXJtaXNzaW9uU2V0TW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBZGRQZXJtaXNzaW9uU2V0JykgfX08L2gxPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGRQZXJtaXNzaW9uU2V0Rm9ybU9wdGlvbnNcIj5cclxuICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIm11bHRpTGluZ3VhbE5hbWVcIiBbZ3JvdXBdPVwiYWRkUGVybWlzc2lvblNldEZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFjdGl2ZURpcmVjdG9yeUdyb3VwXCIgW2dyb3VwXT1cImFkZFBlcm1pc3Npb25TZXRGb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDxCQlNGLVRleHRCb3ggKm5nSWY9XCIhUHJvZHVjdGlvbk1vZGVcIiBbb3B0aW9uc109XCJzeXNOYW1lXCIgW2dyb3VwXT1cImFkZFBlcm1pc3Npb25TZXRGb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdFxyXG4gICAgICAgICAgKm5nSWY9XCJpc011bHRpVGVuYW5jeUFsbG93ZWQgJiYgaXNTdXBlckFkbWluXCJcclxuICAgICAgICAgIFtvcHRpb25zXT1cIm9yZ2FuaXphdGlvblwiXHJcbiAgICAgICAgICBbZ3JvdXBdPVwiYWRkUGVybWlzc2lvblNldEZvcm1cIlxyXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlT3JnYW5pemF0aW9uKCRldmVudCxhZGRQZXJtaXNzaW9uc0RETCwgdHJ1ZSlcIj5cclxuICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjYWRkUGVybWlzc2lvbnNEREwgW29wdGlvbnNdPVwicGVybWlzc2lvbnNcIiBbZ3JvdXBdPVwiYWRkUGVybWlzc2lvblNldEZvcm1cIj4gPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgI0Nsb3NlUGVybWlzc2lvblNldE1vZGFsXHJcbiAgICAgICAgICAgIGlkPVwiQ2xvc2VQZXJtaXNzaW9uU2V0TW9kYWxcIlxyXG4gICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAge3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnQ2FuY2VsTGFiZWwnKSB9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTYXZlTGFiZWwnKSB9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L0JCU0YtRm9ybT5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICA8IS0tICNyZWdpb24gRWRpdCBNb2RhbCAtLT5cclxuICA8bmctdGVtcGxhdGUgI0VkaXRQZXJtaXNzaW9uU2V0TW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFZGl0UGVybWlzc2lvblNldCcpIH19PC9oMT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZWRpdFBlcm1pc3Npb25TZXRGb3JtT3B0aW9uc1wiPlxyXG4gICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE11bHRpTGluZ3VhbE5hbWVcIiBbZ3JvdXBdPVwiZWRpdFBlcm1pc3Npb25TZXRGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0QWN0aXZlRGlyZWN0b3J5R3JvdXBcIiBbZ3JvdXBdPVwiZWRpdFBlcm1pc3Npb25TZXRGb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhUHJvZHVjdGlvbk1vZGVcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdFN5c05hbWVcIiBbZ3JvdXBdPVwiZWRpdFBlcm1pc3Npb25TZXRGb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdFxyXG4gICAgICAgICAgKm5nSWY9XCJpc011bHRpVGVuYW5jeUFsbG93ZWQgJiYgaXNTdXBlckFkbWluXCJcclxuICAgICAgICAgIFtvcHRpb25zXT1cImVkaXRPcmdhbml6YXRpb25cIlxyXG4gICAgICAgICAgW2dyb3VwXT1cImVkaXRQZXJtaXNzaW9uU2V0Rm9ybVwiXHJcbiAgICAgICAgICAob25DaGFuZ2UpPVwib25DaGFuZ2VPcmdhbml6YXRpb24oJGV2ZW50LGVkaXRQZXJtaXNzaW9uc0RETClcIj5cclxuICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjZWRpdFBlcm1pc3Npb25zRERMIFtvcHRpb25zXT1cImVkaXRQZXJtaXNzaW9uc1wiIFtncm91cF09XCJlZGl0UGVybWlzc2lvblNldEZvcm1cIj4gPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgI0Nsb3NlRWRpdFBlcm1pc3Npb25TZXRNb2RhbFxyXG4gICAgICAgICAgICBpZD1cIkNsb3NlRWRpdFBlcm1pc3Npb25TZXRNb2RhbFwiXHJcbiAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdDYW5jZWxMYWJlbCcpIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1NhdmVMYWJlbCcpIH19PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvQkJTRi1Gb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gIDwhLS1kZWxldGUgTW9kYWwtLT5cclxuICA8QkJTRi1Db25maXJtYXRpb25Nb2RhbFxyXG4gICAgKm5nSWY9XCJkZWxldGVDb250cm9sTG9hZGVkXCJcclxuICAgIFtvcHRpb25zXT1cImRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIlxyXG4gICAgaWQ9XCJDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIlxyXG4gICAgI0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbD48L0JCU0YtQ29uZmlybWF0aW9uTW9kYWw+XHJcbjwvYmxvY2stdWk+XHJcbiJdfQ==
|
|
@@ -32,15 +32,15 @@ const routes = [
|
|
|
32
32
|
}
|
|
33
33
|
];
|
|
34
34
|
export class RolesRoutingModule {
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
36
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.
|
|
37
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RolesRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
36
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.6", ngImport: i0, type: RolesRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] }); }
|
|
37
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RolesRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] }); }
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RolesRoutingModule, decorators: [{
|
|
40
40
|
type: NgModule,
|
|
41
41
|
args: [{
|
|
42
42
|
imports: [RouterModule.forChild(routes)],
|
|
43
43
|
exports: [RouterModule]
|
|
44
44
|
}]
|
|
45
45
|
}] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMtcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3JvbGVzL3JvbGVzLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBTW5ELE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUsY0FBYztRQUN6QixRQUFRLEVBQUU7WUFDUjtnQkFDRSxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsU0FBUyxFQUFFLG9CQUFvQjthQUNoQztZQUNEO2dCQUNFLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLFNBQVMsRUFBRSx1QkFBdUI7YUFDbkM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsdUJBQXVCO2dCQUM3QixTQUFTLEVBQUUsMEJBQTBCO2FBQ3RDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsVUFBVSxFQUFFLGFBQWE7Z0JBQ3pCLFNBQVMsRUFBRSxNQUFNO2FBQ2xCO1NBQ0Y7S0FDRjtDQUVGLENBQUM7QUFNRixNQUFNLE9BQU8sa0JBQWtCOzhHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQix3Q0FGbkIsWUFBWTsrR0FFWCxrQkFBa0IsWUFIbkIsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFDN0IsWUFBWTs7MkZBRVgsa0JBQWtCO2tCQUo5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXMsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25TZXRJbmZvQ29tcG9uZW50IH0gZnJvbSAnLi9wZXJtaXNzaW9uLXNldC1pbmZvL3Blcm1pc3Npb24tc2V0LWluZm8uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGVybWlzc2lvbnNDb21wb25lbnQgfSBmcm9tICcuL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25zZXRzQ29tcG9uZW50IH0gZnJvbSAnLi9wZXJtaXNzaW9uc2V0cy9wZXJtaXNzaW9uc2V0cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSb2xlc0NvbXBvbmVudCB9IGZyb20gJy4vcm9sZXMuY29tcG9uZW50JztcclxuXHJcblxyXG5cclxuXHJcblxyXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcclxuICB7XHJcbiAgICBwYXRoOiBcIlwiLFxyXG4gICAgY29tcG9uZW50OiBSb2xlc0NvbXBvbmVudCxcclxuICAgIGNoaWxkcmVuOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBwYXRoOiBcIlBlcm1pc3Npb25zXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiBQZXJtaXNzaW9uc0NvbXBvbmVudFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcGF0aDogXCJQZXJtaXNzaW9uU2V0c1wiLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGVybWlzc2lvbnNldHNDb21wb25lbnRcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHBhdGg6IFwiUGVybWlzc2lvblNldEluZm8vOmlkXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiBQZXJtaXNzaW9uU2V0SW5mb0NvbXBvbmVudFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcGF0aDogXCJcIixcclxuICAgICAgICByZWRpcmVjdFRvOiAnUGVybWlzc2lvbnMnLFxyXG4gICAgICAgIHBhdGhNYXRjaDogJ2Z1bGwnXHJcbiAgICAgIH0sXHJcbiAgICBdXHJcbiAgfVxyXG5cclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpXSxcclxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUm9sZXNSb3V0aW5nTW9kdWxlIHsgfVxyXG4iXX0=
|
|
@@ -5,11 +5,11 @@ export class RolesComponent {
|
|
|
5
5
|
constructor() { }
|
|
6
6
|
ngOnInit() {
|
|
7
7
|
}
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
9
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RolesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: RolesComponent, selector: "lib-roles", ngImport: i0, template: "<router-outlet></router-outlet>\r\n", dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
|
|
10
10
|
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RolesComponent, decorators: [{
|
|
12
12
|
type: Component,
|
|
13
|
-
args: [{ selector: 'lib-roles', template: "<router-outlet></router-outlet>\r\n" }]
|
|
13
|
+
args: [{ selector: 'lib-roles', standalone: false, template: "<router-outlet></router-outlet>\r\n" }]
|
|
14
14
|
}], ctorParameters: () => [] });
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9yb2xlcy9yb2xlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3JvbGVzL3JvbGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQU9sRCxNQUFNLE9BQU8sY0FBYztJQUV6QixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs4R0FMVSxjQUFjO2tHQUFkLGNBQWMsaURDUDNCLHFDQUNBOzsyRkRNYSxjQUFjO2tCQUwxQixTQUFTOytCQUNJLFdBQVcsY0FFVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItcm9sZXMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JvbGVzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb2xlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG4iXX0=
|
|
@@ -24,8 +24,8 @@ import { PermissionsService } from '../shared/Services/PermissionsService.servic
|
|
|
24
24
|
import * as i0 from "@angular/core";
|
|
25
25
|
import * as i1 from "ng-block-ui";
|
|
26
26
|
export class RolesModule {
|
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
28
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RolesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.6", ngImport: i0, type: RolesModule, declarations: [RolesComponent, PermissionsComponent, PermissionsetsComponent, PermissionSetInfoComponent], imports: [RolesRoutingModule,
|
|
29
29
|
CommonModule,
|
|
30
30
|
ReactiveFormsModule,
|
|
31
31
|
HttpClientModule,
|
|
@@ -40,7 +40,7 @@ export class RolesModule {
|
|
|
40
40
|
MatMenuModule,
|
|
41
41
|
InlineSVGModule,
|
|
42
42
|
EmptyDataModule] }); }
|
|
43
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.
|
|
43
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RolesModule, providers: [
|
|
44
44
|
EnvironmentService,
|
|
45
45
|
DataSecretService,
|
|
46
46
|
UtilityService,
|
|
@@ -67,7 +67,7 @@ export class RolesModule {
|
|
|
67
67
|
InlineSVGModule,
|
|
68
68
|
EmptyDataModule] }); }
|
|
69
69
|
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RolesModule, decorators: [{
|
|
71
71
|
type: NgModule,
|
|
72
72
|
args: [{
|
|
73
73
|
declarations: [RolesComponent, PermissionsComponent, PermissionsetsComponent, PermissionSetInfoComponent],
|
|
@@ -102,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
102
102
|
]
|
|
103
103
|
}]
|
|
104
104
|
}] });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9yb2xlcy9yb2xlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7QUFvQ25GLE1BQU0sT0FBTyxXQUFXOzhHQUFYLFdBQVc7K0dBQVgsV0FBVyxpQkFqQ1AsY0FBYyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixhQUV0RyxrQkFBa0I7WUFDbEIsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixnQkFBZ0I7WUFDaEIsVUFBVTtZQUNWLFlBQVk7WUFDWixZQUFZO1lBQ1osZUFBZSxvQkFFZixtQkFBbUI7WUFDbkIsV0FBVztZQUNYLGtCQUFrQjtZQUNsQixlQUFlO1lBQ2YsU0FBUztZQUNULGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTsrR0FlTixXQUFXLGFBYlg7WUFDVCxrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLGNBQWM7WUFDZCxXQUFXO1lBQ1gsb0JBQW9CO1lBQ3BCLFFBQVE7WUFDUixvQkFBb0I7WUFDcEIsa0JBQWtCO1NBR25CLFlBN0JDLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixVQUFVO1lBQ1YsWUFBWTtZQUNaLFlBQVk7WUFDWixlQUFlO1lBQ2YsYUFBYSxDQUFDLE9BQU8sRUFBRTtZQUN2QixtQkFBbUI7WUFDbkIsV0FBVztZQUNYLGtCQUFrQjtZQUNsQixlQUFlO1lBQ2YsU0FBUztZQUNULGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTs7MkZBZU4sV0FBVztrQkFsQ3ZCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsY0FBYyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixDQUFDO29CQUN6RyxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixlQUFlO3dCQUNmLGFBQWEsQ0FBQyxPQUFPLEVBQUU7d0JBQ3ZCLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZUFBZTtxQkFDaEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsb0JBQW9CO3dCQUNwQixRQUFRO3dCQUNSLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3FCQUduQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSb2xlc0NvbXBvbmVudCB9IGZyb20gJy4vcm9sZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGVybWlzc2lvbnNDb21wb25lbnQgfSBmcm9tICcuL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25zZXRzQ29tcG9uZW50IH0gZnJvbSAnLi9wZXJtaXNzaW9uc2V0cy9wZXJtaXNzaW9uc2V0cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQXV0aE1vZHVsZSB9IGZyb20gJy4uL2NvcmUvYXV0aC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDbGlwYm9hcmRNb2R1bGUgfSBmcm9tICduZ3gtY2xpcGJvYXJkJztcclxuaW1wb3J0IHsgQkJTRkNvbnRyb2xzTW9kdWxlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBSb2xlc1JvdXRpbmdNb2R1bGUgfSBmcm9tICcuL3JvbGVzLXJvdXRpbmcubW9kdWxlJztcclxuaW1wb3J0IHsgQmxvY2tVSU1vZHVsZSB9IGZyb20gJ25nLWJsb2NrLXVpJztcclxuaW1wb3J0IHsgRGF0YVNlY3JldFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvU2VydmljZXMvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblNldEluZm9Db21wb25lbnQgfSBmcm9tICcuL3Blcm1pc3Npb24tc2V0LWluZm8vcGVybWlzc2lvbi1zZXQtaW5mby5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdWJoZWFkZXJNb2R1bGUgfSBmcm9tICcuLi9fbGF5b3V0L2NvbXBvbmVudHMvc3ViaGVhZGVyL3N1YmhlYWRlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBOZ2JNb2R1bGUgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBJbmxpbmVTVkdNb2R1bGUgfSBmcm9tICduZy1pbmxpbmUtc3ZnLTInO1xyXG5pbXBvcnQgeyBFbXB0eURhdGFNb2R1bGUgfSBmcm9tICcuLi9lbXB0eS1kYXRhL2VtcHR5LWRhdGEubW9kdWxlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblNldFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvU2VydmljZXMvUGVybWlzc2lvblNldFNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9TZXJ2aWNlcy9QZXJtaXNzaW9uc1NlcnZpY2Uuc2VydmljZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1JvbGVzQ29tcG9uZW50LCBQZXJtaXNzaW9uc0NvbXBvbmVudCwgUGVybWlzc2lvbnNldHNDb21wb25lbnQsIFBlcm1pc3Npb25TZXRJbmZvQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBSb2xlc1JvdXRpbmdNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgSHR0cENsaWVudE1vZHVsZSxcclxuICAgIEF1dGhNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDbGlwYm9hcmRNb2R1bGUsXHJcbiAgICBCbG9ja1VJTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEJCU0ZDb250cm9sc01vZHVsZSxcclxuICAgIFN1YmhlYWRlck1vZHVsZSxcclxuICAgIE5nYk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBJbmxpbmVTVkdNb2R1bGUsXHJcbiAgICBFbXB0eURhdGFNb2R1bGVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgRGF0YVNlY3JldFNlcnZpY2UsXHJcbiAgICBVdGlsaXR5U2VydmljZSxcclxuICAgIEF1dGhTZXJ2aWNlLFxyXG4gICAgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBEYXRlUGlwZSxcclxuICAgIFBlcm1pc3Npb25TZXRTZXJ2aWNlLFxyXG4gICAgUGVybWlzc2lvbnNTZXJ2aWNlXHJcblxyXG5cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb2xlc01vZHVsZSB7IH1cclxuIl19
|