@bnsights/bbsf-admin-portal 1.0.2 → 1.0.6
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/bnsights-bbsf-admin-portal-1.0.6.tgz +0 -0
- package/bundles/bnsights-bbsf-admin-portal.umd.js +19377 -20042
- package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
- package/esm2015/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.js +2 -2
- package/esm2015/lib/Pages/account/account-routing.module.js +3 -1
- package/esm2015/lib/Pages/account/account.component.js +15 -6
- package/esm2015/lib/Pages/account/account.module.js +16 -8
- package/esm2015/lib/Pages/account/forgot-password/forgot-password.component.js +48 -0
- package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +392 -387
- package/esm2015/lib/Pages/core/authentication/auth.guard.js +10 -4
- package/esm2015/lib/Pages/core/authentication/auth.service.js +1 -2
- package/esm2015/lib/Pages/departments/department/department.component.js +49 -84
- package/esm2015/lib/Pages/departments/department-info/department-info.component.js +85 -94
- package/esm2015/lib/Pages/departments/departments.module.js +7 -2
- package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +224 -223
- package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +137 -146
- package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +136 -153
- package/esm2015/lib/Pages/home/home.component.js +32 -26
- package/esm2015/lib/Pages/home/home.module.js +5 -10
- package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +336 -317
- package/esm2015/lib/Pages/jobs/jobs/jobs.component.js +168 -227
- package/esm2015/lib/Pages/license/license/license.component.js +68 -99
- package/esm2015/lib/Pages/localizations/localizations.component.js +378 -341
- package/esm2015/lib/Pages/logs/log/log.component.js +18 -27
- package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +297 -288
- package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +143 -165
- package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +234 -233
- package/esm2015/lib/Pages/lookups/lookups-routing.module.js +2 -2
- package/esm2015/lib/Pages/notifications/add/add.component.js +83 -76
- package/esm2015/lib/Pages/notifications/edit/edit.component.js +60 -63
- package/esm2015/lib/Pages/notifications/edit-email/edit-email.component.js +128 -126
- package/esm2015/lib/Pages/notifications/edit-sms/edit-sms.component.js +87 -85
- package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +57 -58
- package/esm2015/lib/Pages/notifications/notifications-routing.module.js +1 -3
- package/esm2015/lib/Pages/notifications/notifications.module.js +3 -4
- package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +232 -228
- package/esm2015/lib/Pages/notifications/templates/templates.component.js +347 -310
- package/esm2015/lib/Pages/providers/provider/provider.component.js +54 -52
- package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +268 -270
- package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +136 -152
- package/esm2015/lib/Pages/roles/permissions/permissions.component.js +182 -218
- package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +223 -258
- package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +134 -142
- package/esm2015/lib/Pages/sectors/sector/sector.component.js +127 -144
- package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +123 -139
- package/esm2015/lib/Pages/shared/Enums/ConfigurationScope.js +8 -0
- package/esm2015/lib/Pages/shared/Enums/ConfigurationType.js +8 -0
- package/esm2015/lib/Pages/shared/Enums/ConfigurationValueSource.js +6 -0
- package/esm2015/lib/Pages/shared/Enums/ParticipantType.js +8 -0
- package/esm2015/lib/Pages/shared/Services/AccountService.service.js +21 -0
- package/esm2015/lib/Pages/shared/Services/ConfigurationsService.service.js +15 -12
- package/esm2015/lib/Pages/shared/Services/DepartmentService.service.js +4 -5
- package/esm2015/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.js +10 -9
- package/esm2015/lib/Pages/shared/Services/HelpCenterService.service.js +10 -7
- package/esm2015/lib/Pages/shared/Services/ImpersonationRuleService.service.js +14 -8
- package/esm2015/lib/Pages/shared/Services/LicenseService.service.js +3 -3
- package/esm2015/lib/Pages/shared/Services/LogsService.js +1 -1
- package/esm2015/lib/Pages/shared/Services/LookupGroupsService.service.js +11 -5
- package/esm2015/lib/Pages/shared/Services/LookupService.service.js +31 -15
- package/esm2015/lib/Pages/shared/Services/PermissionSetService.service.js +18 -8
- package/esm2015/lib/Pages/shared/Services/PermissionsService.service.js +12 -9
- package/esm2015/lib/Pages/shared/Services/PublicHolidayService.service.js +9 -3
- package/esm2015/lib/Pages/shared/Services/SectorService.service.js +18 -13
- package/esm2015/lib/Pages/shared/Services/TemplateService.service.js +36 -29
- package/esm2015/lib/Pages/shared/Services/localizationsService.service .js +23 -13
- package/esm2015/lib/Pages/shared/Services/provider.service.js +5 -7
- package/esm2015/lib/Pages/shared/Services/userService.service.js +10 -2
- package/esm2015/lib/Pages/shared/models/AccountModels/forgotPasswordModel.js +6 -0
- package/esm2015/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/Lookups/LookupItem.js +1 -1
- package/esm2015/lib/Pages/shared/models/Lookups/LookupModel.js +1 -2
- package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.js +1 -1
- package/esm2015/lib/Pages/users/users.component.js +398 -409
- package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +2 -2
- package/esm2015/lib/masterlayout-routing.module.js +5 -4
- package/esm2015/lib/masterlayout.component.js +22 -32
- package/esm2015/lib/masterlayout.module.js +26 -22
- package/esm2015/public-api.js +2 -1
- package/fesm2015/bnsights-bbsf-admin-portal.js +17234 -17314
- package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
- package/lib/Pages/account/account.component.d.ts +5 -1
- package/lib/Pages/account/account.module.d.ts +8 -6
- package/lib/Pages/account/forgot-password/forgot-password.component.d.ts +20 -0
- package/lib/Pages/configurations/configuration/configuration.component.d.ts +39 -31
- package/lib/Pages/core/authentication/auth.guard.d.ts +1 -0
- package/lib/Pages/departments/department/department.component.d.ts +15 -13
- package/lib/Pages/departments/department-info/department-info.component.d.ts +31 -28
- package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +34 -32
- package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +31 -34
- package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +30 -35
- package/lib/Pages/home/home.component.d.ts +4 -4
- package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +43 -42
- package/lib/Pages/jobs/jobs/jobs.component.d.ts +56 -62
- package/lib/Pages/license/license/license.component.d.ts +25 -23
- package/lib/Pages/localizations/localizations.component.d.ts +77 -65
- package/lib/Pages/logs/log/log.component.d.ts +7 -11
- package/lib/Pages/lookups/lookup/lookup.component.d.ts +64 -59
- package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +44 -45
- package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +62 -56
- package/lib/Pages/notifications/add/add.component.d.ts +13 -11
- package/lib/Pages/notifications/edit/edit.component.d.ts +14 -14
- package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +18 -20
- package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +15 -16
- package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +24 -25
- package/lib/Pages/notifications/notifications.module.d.ts +15 -16
- package/lib/Pages/notifications/template-info/template-info.component.d.ts +32 -32
- package/lib/Pages/notifications/templates/templates.component.d.ts +54 -46
- package/lib/Pages/providers/provider/provider.component.d.ts +14 -13
- package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +29 -27
- package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +39 -40
- package/lib/Pages/roles/permissions/permissions.component.d.ts +49 -54
- package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +53 -55
- package/lib/Pages/sectors/department-info/department-info.component.d.ts +41 -44
- package/lib/Pages/sectors/sector/sector.component.d.ts +35 -33
- package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +40 -44
- package/lib/Pages/shared/Enums/ConfigurationScope.d.ts +5 -0
- package/lib/Pages/shared/Enums/ConfigurationType.d.ts +6 -0
- package/lib/Pages/shared/Enums/ConfigurationValueSource.d.ts +4 -0
- package/lib/Pages/shared/Enums/ParticipantType.d.ts +6 -0
- package/lib/Pages/shared/Services/AccountService.service.d.ts +10 -0
- package/lib/Pages/shared/Services/ActiveDirectoryService.service.d.ts +8 -8
- package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +7 -8
- package/lib/Pages/shared/Services/DepartmentService.service.d.ts +7 -7
- package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +5 -5
- package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +8 -7
- package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +5 -5
- package/lib/Pages/shared/Services/JobsService.service.d.ts +1 -1
- package/lib/Pages/shared/Services/LicenseService.service.d.ts +2 -2
- package/lib/Pages/shared/Services/LogsService.d.ts +1 -1
- package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +4 -4
- package/lib/Pages/shared/Services/LookupService.service.d.ts +14 -11
- package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +8 -7
- package/lib/Pages/shared/Services/PermissionsService.service.d.ts +5 -6
- package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +6 -6
- package/lib/Pages/shared/Services/SectorService.service.d.ts +7 -7
- package/lib/Pages/shared/Services/TemplateService.service.d.ts +20 -19
- package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +3 -3
- package/lib/Pages/shared/Services/WorkflowService.service.d.ts +3 -3
- package/lib/Pages/shared/Services/WorkflowVariablesService.service.d.ts +4 -4
- package/lib/Pages/shared/Services/localizationsService.service .d.ts +12 -11
- package/lib/Pages/shared/Services/provider.service.d.ts +10 -10
- package/lib/Pages/shared/Services/userService.service.d.ts +14 -12
- package/lib/Pages/shared/models/AccountModels/forgotPasswordModel.d.ts +3 -0
- package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +0 -1
- package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +1 -0
- package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +1 -1
- package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +0 -2
- package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +1 -1
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +1 -1
- package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +1 -1
- package/lib/Pages/users/users.component.d.ts +54 -68
- package/lib/masterlayout.component.d.ts +4 -5
- package/lib/masterlayout.module.d.ts +8 -9
- package/package.json +5 -3
- package/public-api.d.ts +1 -0
- package/src/lib/assets/sass/core/components/_variables.scss +1 -1
- package/src/lib/assets/sass/custom-styles-rtl.scss +5 -0
- package/src/lib/assets/sass/custom-styles.scss +153 -0
- package/src/lib/assets/sass/style-rtl.scss +2 -0
- package/src/lib/assets/sass/style.scss +2 -2
- package/esm2015/lib/Pages/notifications/edit-template/edit-template.component.js +0 -35
- package/lib/Pages/notifications/edit-template/edit-template.component.d.ts +0 -35
package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { Component, ViewChild } from '@angular/core';
|
|
3
3
|
import { FormGroup } from '@angular/forms';
|
|
4
|
-
import { CheckBoxOptions, FilterItem, FilterType, InputType, PagingOptions, TextBoxOptions, MultiLingualHtmlEditorOptions, MultiLingualTextBoxOptions, EnglishArabicDTO } from '@bnsights/bbsf-controls';
|
|
4
|
+
import { CheckBoxOptions, FilterItem, FilterType, InputType, PagingOptions, TextBoxOptions, MultiLingualHtmlEditorOptions, MultiLingualTextBoxOptions, EnglishArabicDTO, FormOptions, ConfirmationModalOptions, PagingActionMode } from '@bnsights/bbsf-controls';
|
|
5
5
|
import { HelpCenterItemModel } from '../../shared/models/HelpCenterModels/HelpCenterItemModel';
|
|
6
6
|
import { PageInfoService } from '../../../_metronic/core/services/page-info.service';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
@@ -27,33 +27,59 @@ export class HelpCenterThirdlevelComponent {
|
|
|
27
27
|
this.activatedRoute = activatedRoute;
|
|
28
28
|
this.HelpCenterService = HelpCenterService;
|
|
29
29
|
this.modalService = modalService;
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
//BreadcrumbTitleSecond = this.utilityService.getResourceValue('helpCenter');
|
|
35
|
-
//ShowBreadcrumbSecond = true;
|
|
30
|
+
//Page requirements
|
|
31
|
+
this.ParentId = "";
|
|
32
|
+
this.ParentName = "";
|
|
33
|
+
this.PageName = "";
|
|
36
34
|
this.ApiUrl = "/api/admin/HelpCenter/";
|
|
37
|
-
this.PermissionSetsList = [];
|
|
38
35
|
this.HelpCenterForm = new FormGroup({});
|
|
39
|
-
this.showFilter = false;
|
|
40
36
|
this.HelpCenterPagingResult = [];
|
|
37
|
+
this.clientSidePagingResult = [];
|
|
41
38
|
this.IsFilterLoaded = false;
|
|
42
|
-
this.AuthToken = "";
|
|
43
|
-
this.ParentId = "";
|
|
44
|
-
this.ParentName = "";
|
|
45
|
-
this.PageName = "";
|
|
46
|
-
this.HelpCenter = new HelpCenterItemModel();
|
|
47
|
-
this.ProductionMode = false;
|
|
48
|
-
this.language = "";
|
|
49
39
|
//Add Model Controls
|
|
50
40
|
this.AddHelpCenterForm = new FormGroup({});
|
|
51
|
-
this.
|
|
41
|
+
this.AddHelpCenterFormOptions = new FormOptions;
|
|
52
42
|
//Edit Model Controls
|
|
53
43
|
this.EditHelpCenterForm = new FormGroup({});
|
|
54
|
-
this.
|
|
55
|
-
|
|
56
|
-
this.
|
|
44
|
+
this.EditHelpCenterFormOptions = new FormOptions;
|
|
45
|
+
this.deleteControlLoaded = false;
|
|
46
|
+
this.getAddHelpCenterModel = () => {
|
|
47
|
+
let paramArray = [];
|
|
48
|
+
let ResultModel = this.AddHelpCenterForm.value;
|
|
49
|
+
let AddModel = new HelpCenterItemModel();
|
|
50
|
+
AddModel.Title.Arabic = ResultModel.AddTitle.Arabic;
|
|
51
|
+
AddModel.Title.English = ResultModel.AddTitle.English;
|
|
52
|
+
AddModel.Html.Arabic = ResultModel.AddContent.Arabic;
|
|
53
|
+
AddModel.Html.English = ResultModel.AddContent.English;
|
|
54
|
+
AddModel.IsHidden = ResultModel.AddIsHidden;
|
|
55
|
+
AddModel.ParentIDEncrypted = this.ParentId;
|
|
56
|
+
AddModel.IsParent = true;
|
|
57
|
+
AddModel.IsSection = true;
|
|
58
|
+
paramArray.push(AddModel);
|
|
59
|
+
return paramArray;
|
|
60
|
+
};
|
|
61
|
+
this.getAddHelpCenterFunction = (AddModel) => {
|
|
62
|
+
return this.HelpCenterService.AddHelpCenter(AddModel);
|
|
63
|
+
};
|
|
64
|
+
this.getEditHelpCenterModel = () => {
|
|
65
|
+
let paramArray = [];
|
|
66
|
+
let ResultModel = this.EditHelpCenterForm.value;
|
|
67
|
+
let EditModel = new HelpCenterItemModel();
|
|
68
|
+
EditModel.ID = Number(this.HelpCenterItemId);
|
|
69
|
+
EditModel.Title.English = ResultModel.EditTitle.English; //(##1)
|
|
70
|
+
EditModel.Title.Arabic = ResultModel.EditTitle.Arabic;
|
|
71
|
+
EditModel.Html.English = ResultModel.EditContent.English;
|
|
72
|
+
EditModel.Html.Arabic = ResultModel.EditContent.Arabic;
|
|
73
|
+
EditModel.IsHidden = ResultModel.EditIsHidden;
|
|
74
|
+
paramArray.push(EditModel);
|
|
75
|
+
return paramArray;
|
|
76
|
+
};
|
|
77
|
+
this.getEditHelpCenterFunction = (EditModel) => {
|
|
78
|
+
return this.HelpCenterService.EditHelpCenter(EditModel);
|
|
79
|
+
};
|
|
80
|
+
this.deleteHelpCenter = (id) => {
|
|
81
|
+
return this.HelpCenterService.DeleteHelpCenter(id);
|
|
82
|
+
};
|
|
57
83
|
this.activatedRoute.params.subscribe(params => {
|
|
58
84
|
this.ParentId = params['parentID'];
|
|
59
85
|
});
|
|
@@ -73,17 +99,14 @@ export class HelpCenterThirdlevelComponent {
|
|
|
73
99
|
this.pageInfoService.calculateTitle();
|
|
74
100
|
this.pageInfoService.calculateBreadcrumbs();
|
|
75
101
|
this.bbsfTranslateService.onLangChange.subscribe((event) => {
|
|
76
|
-
this.language = event.lang;
|
|
77
102
|
this.ngOnInit();
|
|
78
103
|
});
|
|
79
|
-
this.
|
|
80
|
-
this.ProductionMode = this.environmentService.getProductionMode();
|
|
81
|
-
this.LoadList();
|
|
104
|
+
this.initializePage();
|
|
82
105
|
});
|
|
83
106
|
}
|
|
84
|
-
//initialize filters
|
|
85
|
-
|
|
86
|
-
// TextBox
|
|
107
|
+
//initialize Page filters
|
|
108
|
+
initializePage() {
|
|
109
|
+
// TextBox init
|
|
87
110
|
this.searchTextBox = new TextBoxOptions();
|
|
88
111
|
this.searchTextBox.Name = "searchTextBox";
|
|
89
112
|
this.searchTextBox.Type = InputType.Text;
|
|
@@ -105,46 +128,48 @@ export class HelpCenterThirdlevelComponent {
|
|
|
105
128
|
this.ParentIDFilter.IsFormControl = true;
|
|
106
129
|
this.ParentIDFilter.FilterType = FilterType.TextBox;
|
|
107
130
|
this.HelpCenterPaging = new PagingOptions();
|
|
108
|
-
this.HelpCenterPaging.ActionPostURL = this.
|
|
131
|
+
this.HelpCenterPaging.ActionPostURL = this.ApiUrl + 'GetHelpCenterItemsByFilter';
|
|
109
132
|
this.HelpCenterPaging.OnKeyPressFiltersControlNames = ["searchTextBox"];
|
|
110
133
|
this.HelpCenterPaging.Filters = [this.TextInputFilter, this.ParentIDFilter];
|
|
111
134
|
this.HelpCenterPaging.ValidationToken = this.authService.authorizationHeaderValue();
|
|
112
|
-
|
|
113
|
-
this.IsFilterLoaded = true;
|
|
114
|
-
}, 10);
|
|
115
|
-
}
|
|
116
|
-
ReinitializeHelpCenterPaging() {
|
|
117
|
-
let element = this.input;
|
|
118
|
-
element.ReinitializePaging();
|
|
119
|
-
}
|
|
120
|
-
UpdateHelpCenterPaging() {
|
|
121
|
-
let element = this.input;
|
|
122
|
-
element.UpdatePaging();
|
|
135
|
+
this.IsFilterLoaded = true;
|
|
123
136
|
}
|
|
137
|
+
//Paging functions
|
|
124
138
|
setHelpCenterItemListResult(result) {
|
|
125
139
|
this.HelpCenterPagingResult = result;
|
|
140
|
+
this.clientSidePagingResult = result;
|
|
126
141
|
this.utilityService.stopBlockUI();
|
|
127
142
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
143
|
+
searchClientSide(searchValue) {
|
|
144
|
+
if (searchValue)
|
|
145
|
+
this.clientSidePagingResult = this.clientSidePagingResult.filter(function (item) {
|
|
146
|
+
return (item.title.english.toLowerCase().includes(searchValue.toLowerCase())
|
|
147
|
+
|| item.title.arabic.toLowerCase().includes(searchValue.toLowerCase()));
|
|
148
|
+
});
|
|
149
|
+
else
|
|
150
|
+
this.clientSidePagingResult = this.HelpCenterPagingResult;
|
|
132
151
|
}
|
|
152
|
+
//Add helpcenter item
|
|
133
153
|
showAddHelpCenterModal(AddHelpCenterModal) {
|
|
134
154
|
this.utilityService.startBlockUI();
|
|
135
155
|
this.AddHelpCenterForm = new FormGroup({});
|
|
136
|
-
this.
|
|
137
|
-
this.
|
|
138
|
-
this.
|
|
139
|
-
this.
|
|
140
|
-
this.
|
|
141
|
-
this.
|
|
142
|
-
this.
|
|
143
|
-
this.
|
|
144
|
-
this.
|
|
145
|
-
this.
|
|
146
|
-
this.
|
|
147
|
-
this.
|
|
156
|
+
this.AddHelpCenterFormOptions = new FormOptions();
|
|
157
|
+
this.AddHelpCenterFormOptions.FormGroup = this.AddHelpCenterForm;
|
|
158
|
+
this.AddHelpCenterFormOptions.GetModelFunction = this.getAddHelpCenterModel;
|
|
159
|
+
this.AddHelpCenterFormOptions.ServiceSubmitFunction = this.getAddHelpCenterFunction;
|
|
160
|
+
this.AddHelpCenterFormOptions.PagingReference = this.pagingElement;
|
|
161
|
+
this.AddTitle = new MultiLingualTextBoxOptions();
|
|
162
|
+
this.AddTitle.Name = "AddTitle";
|
|
163
|
+
this.AddTitle.ArabicLabelKey = "TitleInArabic";
|
|
164
|
+
this.AddTitle.EnglishLabelKey = "TitleInEnglish";
|
|
165
|
+
this.AddTitle.IsRequired = true;
|
|
166
|
+
this.AddTitle.Value = null;
|
|
167
|
+
this.AddContent = new MultiLingualHtmlEditorOptions();
|
|
168
|
+
this.AddContent.Name = "AddContent";
|
|
169
|
+
this.AddContent.ArabicLabelKey = "ContentInArabic";
|
|
170
|
+
this.AddContent.EnglishLabelKey = "ContentInEnglish";
|
|
171
|
+
this.AddContent.IsRequired = true;
|
|
172
|
+
this.AddContent.Value = null;
|
|
148
173
|
this.AddIsHidden = new CheckBoxOptions();
|
|
149
174
|
this.AddIsHidden.Name = "AddIsHidden";
|
|
150
175
|
this.AddIsHidden.LabelKey = "Hidden";
|
|
@@ -152,117 +177,75 @@ export class HelpCenterThirdlevelComponent {
|
|
|
152
177
|
this.modalService.open(AddHelpCenterModal);
|
|
153
178
|
this.utilityService.stopBlockUI();
|
|
154
179
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
let ResultModel = this.AddHelpCenterForm.value;
|
|
161
|
-
let AddModel = new HelpCenterItemModel();
|
|
162
|
-
AddModel.Title.Arabic = ResultModel.Title.ArabicValue;
|
|
163
|
-
AddModel.Title.English = ResultModel.Title.EnglishValue;
|
|
164
|
-
AddModel.Html.Arabic = ResultModel.Content.ArabicHtmlEditorValue;
|
|
165
|
-
AddModel.Html.English = ResultModel.Content.EnglishHtmlEditorValue;
|
|
166
|
-
AddModel.IsHidden = ResultModel.AddIsHidden;
|
|
167
|
-
AddModel.ParentIDEncrypted = this.ParentId;
|
|
168
|
-
AddModel.IsParent = true;
|
|
169
|
-
AddModel.IsSection = true;
|
|
170
|
-
this.HelpCenterService.AddHelpCenter(AddModel).subscribe((result) => {
|
|
171
|
-
this.modalService.dismissAll();
|
|
172
|
-
let element = this.input;
|
|
173
|
-
element.ReinitializePaging();
|
|
174
|
-
}, (error) => {
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
showEditHelpCenterModal(HelpCenter, EditHelpCenterModal) {
|
|
180
|
+
//Edit HelpCenter Item
|
|
181
|
+
showEditHelpCenterModal(helpCenterID, helpCenterIDEnc, EditHelpCenterModal) {
|
|
179
182
|
this.utilityService.startBlockUI();
|
|
180
|
-
this.
|
|
181
|
-
this.
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
EditModel.Title.English = ResultModel.Title.EnglishValue; //(##1)
|
|
216
|
-
EditModel.Title.Arabic = ResultModel.Title.ArabicValue;
|
|
217
|
-
EditModel.Html.English = ResultModel.Content.EnglishHtmlEditorValue;
|
|
218
|
-
EditModel.Html.Arabic = ResultModel.Content.ArabicHtmlEditorValue;
|
|
219
|
-
EditModel.IsHidden = ResultModel.EditIsHidden;
|
|
220
|
-
this.HelpCenterService.EditHelpCenter(EditModel).subscribe((result) => {
|
|
221
|
-
this.modalService.dismissAll();
|
|
222
|
-
let element = this.input;
|
|
223
|
-
element.UpdatePaging();
|
|
224
|
-
}, (error) => {
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
showDeleteHelpCenterModal(Item, deleteHelpCenterItemModal) {
|
|
229
|
-
this.deleteHelpCenterId = Item.idEncrypted;
|
|
230
|
-
this.utilityService.startBlockUI();
|
|
231
|
-
this.modalService.open(deleteHelpCenterItemModal);
|
|
232
|
-
this.utilityService.stopBlockUI();
|
|
233
|
-
}
|
|
234
|
-
deleteHelpCenter() {
|
|
235
|
-
this.HelpCenterService.DeleteHelpCenter(this.deleteHelpCenterId).subscribe((result) => {
|
|
236
|
-
this.deleteHelpCenterId = "";
|
|
237
|
-
this.modalService.dismissAll();
|
|
238
|
-
let element = this.input;
|
|
239
|
-
element.ReinitializePaging();
|
|
240
|
-
}, (error) => {
|
|
183
|
+
this.HelpCenterItemId = helpCenterID;
|
|
184
|
+
this.HelpCenterService.getEditHelpCenterData(helpCenterIDEnc).subscribe((result) => {
|
|
185
|
+
let resultObj = result;
|
|
186
|
+
let helpCenter = resultObj.model;
|
|
187
|
+
this.EditHelpCenterForm = new FormGroup({});
|
|
188
|
+
this.EditHelpCenterFormOptions = new FormOptions();
|
|
189
|
+
this.EditHelpCenterFormOptions.FormGroup = this.EditHelpCenterForm;
|
|
190
|
+
this.EditHelpCenterFormOptions.GetModelFunction = this.getEditHelpCenterModel;
|
|
191
|
+
this.EditHelpCenterFormOptions.ServiceSubmitFunction = this.getEditHelpCenterFunction;
|
|
192
|
+
this.EditHelpCenterFormOptions.PagingReference = this.pagingElement;
|
|
193
|
+
this.EditHelpCenterFormOptions.PagingActionMode = PagingActionMode.Update;
|
|
194
|
+
let Title = new EnglishArabicDTO();
|
|
195
|
+
Title.Arabic = helpCenter.title.arabic;
|
|
196
|
+
Title.English = helpCenter.title.english;
|
|
197
|
+
this.EditTitle = new MultiLingualTextBoxOptions();
|
|
198
|
+
this.EditTitle.Name = "EditTitle";
|
|
199
|
+
this.EditTitle.ArabicLabelKey = "TitleInArabic";
|
|
200
|
+
this.EditTitle.EnglishLabelKey = "TitleInEnglish";
|
|
201
|
+
this.EditTitle.IsRequired = true;
|
|
202
|
+
this.EditTitle.Value = Title;
|
|
203
|
+
let Content = new EnglishArabicDTO();
|
|
204
|
+
Content.Arabic = helpCenter.html.arabic;
|
|
205
|
+
Content.English = helpCenter.html.english;
|
|
206
|
+
this.EditContent = new MultiLingualHtmlEditorOptions();
|
|
207
|
+
this.EditContent.Name = "EditContent";
|
|
208
|
+
this.EditContent.ArabicLabelKey = "ContentInArabic";
|
|
209
|
+
this.EditContent.EnglishLabelKey = "ContentInEnglish";
|
|
210
|
+
this.EditContent.IsRequired = true;
|
|
211
|
+
this.EditContent.Value = Content;
|
|
212
|
+
this.EditIsHidden = new CheckBoxOptions();
|
|
213
|
+
this.EditIsHidden.Name = "EditIsHidden";
|
|
214
|
+
this.EditIsHidden.LabelKey = "Hidden";
|
|
215
|
+
this.EditIsHidden.Value = helpCenter.isHidden;
|
|
216
|
+
this.modalService.open(EditHelpCenterModal);
|
|
217
|
+
this.utilityService.stopBlockUI();
|
|
241
218
|
});
|
|
242
219
|
}
|
|
243
|
-
|
|
244
|
-
|
|
220
|
+
//Delete HelpCenter
|
|
221
|
+
showDeleteHelpCenterModal(helpCenterID) {
|
|
222
|
+
this.deleteHelpCenterId = helpCenterID;
|
|
223
|
+
//array sent to service function
|
|
224
|
+
let paramArray = [];
|
|
225
|
+
paramArray.push(this.deleteHelpCenterId);
|
|
226
|
+
this.DeleteConfirmationOptions = new ConfirmationModalOptions();
|
|
227
|
+
this.DeleteConfirmationOptions.ServiceSubmitFunction = this.deleteHelpCenter;
|
|
228
|
+
this.DeleteConfirmationOptions.ServiceSubmitModel = paramArray;
|
|
229
|
+
this.DeleteConfirmationOptions.PagingReference = this.pagingElement;
|
|
230
|
+
this.deleteControlLoaded = true;
|
|
231
|
+
setTimeout(() => {
|
|
232
|
+
this.ConfirmationModalControl.showModal();
|
|
233
|
+
}, 200);
|
|
245
234
|
}
|
|
246
235
|
}
|
|
247
236
|
HelpCenterThirdlevelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HelpCenterThirdlevelComponent, deps: [{ token: i1.AuthService }, { token: i2.PageInfoService }, { token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i1.EnvironmentService }, { token: i3.ActivatedRoute }, { token: i4.HelpCenterService }, { token: i5.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
248
|
-
HelpCenterThirdlevelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: HelpCenterThirdlevelComponent, selector: "lib-help-center-thirdlevel", viewQueries: [{ propertyName: "input", first: true, predicate: ["HelpCenterPagingViewElement"], descendants: true }, { propertyName: "CloseAddHelpCenterModal", first: true, predicate: ["CloseAddHelpCenterModal"], descendants: true }, { propertyName: "CloseEditHelpCenterModal", first: true, predicate: ["CloseEditHelpCenterModal"], descendants: true }, { propertyName: "CloseDeleteHelpCenterItemModal", first: true, predicate: ["CloseDeleteHelpCenterItemModal"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\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 <form [formGroup]=\"HelpCenterForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"HelpCenterForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"ParentIdTextBox\" [group]=\"HelpCenterForm\" [hidden]=\"true\">\r\n </BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-sm btn-primary\" (click)=\"showAddHelpCenterModal(AddHelpCenterModal)\">\r\n <i class=\" fa fa-plus\"></i>{{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\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(\"Title\")}}</th>\r\n <th class=\"min-w-150px text-center\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th class=\"text-center min-w-50\">{{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\r\n <tr *ngFor=\"let Item of HelpCenterPagingResult\">\r\n\r\n <td>\r\n\r\n <span *ngIf=\"language=='en'\" class=\"text-dark\">{{Item.title.english}}</span>\r\n <span *ngIf=\"language=='ar'\" class=\"text-dark\">{{Item.title.arabic}}</span>\r\n\r\n <a *ngIf=\"language=='ar'\" (click)=\"SaveName(Item.title.arabic)\"\r\n [routerLink]=\"['/Admin/HelpCenter/ThirdLevel',Item.parentID]\"\r\n routerLinkActive=\"router-link-active\" class=\" text-dark\">{{Item.title.arabic}}</a>\r\n </td>\r\n <td class=\"text-center\">\r\n <span *ngIf=\"Item.isHidden;else other_content\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <ng-template #other_content>\r\n <i class=\"fa fa-check\"></i>\r\n </ng-template>\r\n </td>\r\n <td class=\"text-center\">\r\n <div>\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 #menu=\"matMenu\">\r\n <button class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditHelpCenterModal(Item,EditHelpCenterModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\" (click)=\"showDeleteHelpCenterModal(Item,deleteHelpCenterItemModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"HelpCenterPagingResult.length == 0\">\r\n <td colspan=\"3\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <!--end::Permission list-->\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setHelpCenterItemListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"HelpCenterPaging\" [group]=\"HelpCenterForm\" #HelpCenterPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!--delete Modal-->\r\n <ng-template #deleteHelpCenterItemModal 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\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\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(\"Delete\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}</h1>\r\n </div>\r\n <div class=\"notice d-flex bg-light-danger rounded border-danger border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"Delete_Question\")}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseDeleteHelpCenterItemModal id=\"CloseDeleteHelpCenterItemModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3 \" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"deleteHelpCenter()\"\r\n class=\"btn btn-light-danger btn-sm \">\r\n {{utilityService.getResourceValue(\"Delete\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!--Edit Modal-->\r\n <ng-template #EditHelpCenterModal 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\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n <img src=\"./src/assets/images/arr061.svg\"/>\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(\"Edit\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"EditHelpCenterForm\" (ngSubmit)=\"editHelpCenter()\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditMultiLingualTitle\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualHtmlEditor [options]=\"EditMultiLingualContent\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualHtmlEditor>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsHidden\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditHelpCenterModal id=\"CloseEditHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (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 </form>\r\n </div>\r\n </ng-template>\r\n <!--add Modal-->\r\n <ng-template #AddHelpCenterModal 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\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\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(\"Add\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"AddHelpCenterForm\" \r\n (ngSubmit)=\"addHelpCenterItem()\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"MultiLingualTitle\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualHtmlEditor [options]=\"MultiLingualContent\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualHtmlEditor>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"AddIsHidden\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseHelpCenterModal id=\"CloseAddHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (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 </form>\r\n </div>\r\n </ng-template>\r\n\r\n\r\n", components: [{ type: i6.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i7.ɵd, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i7.ɵs, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i7.ɵc, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.ɵl, selector: "BBSF-MultiLingualHtmlEditor", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.ɵg, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i11.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i5.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i12.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
|
|
237
|
+
HelpCenterThirdlevelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: HelpCenterThirdlevelComponent, selector: "lib-help-center-thirdlevel", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["HelpCenterPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\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 <form [formGroup]=\"HelpCenterForm\">\r\n <BBSF-TextBox (OnChange)=\"searchClientSide($event)\" [options]=\"searchTextBox\" [group]=\"HelpCenterForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"ParentIdTextBox\" [group]=\"HelpCenterForm\" [hidden]=\"true\">\r\n </BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" title=\"Add\" class=\"btn btn-sm btn-primary\" (click)=\"showAddHelpCenterModal(AddHelpCenterModal)\">\r\n <i class=\" fa fa-plus\"></i>{{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"table-responsive\">\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(\"Title\")}}</th>\r\n <th class=\"min-w-150px text-center\">{{utilityService.getResourceValue(\"Visible\")}}</th>\r\n <th class=\"text-center min-w-50\">{{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\r\n <tr *ngFor=\"let Item of clientSidePagingResult\">\r\n\r\n <td>\r\n <span class=\"text-dark\">{{Item.titleStr}}</span>\r\n </td>\r\n <td class=\"text-center\">\r\n <span *ngIf=\"Item.isHidden;else other_content\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n <ng-template #other_content>\r\n <i class=\"fa fa-check\"></i>\r\n </ng-template>\r\n </td>\r\n <td class=\"text-center\">\r\n <div>\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 #menu=\"matMenu\">\r\n <button class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditHelpCenterModal(Item.id,Item.idEncrypted,EditHelpCenterModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\" (click)=\"showDeleteHelpCenterModal(Item.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"3\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <!--end:: list-->\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setHelpCenterItemListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"HelpCenterPaging\" [group]=\"HelpCenterForm\" #HelpCenterPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--add Modal-->\r\n<ng-template #AddHelpCenterModal 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\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\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(\"Add\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"AddHelpCenterFormOptions\">\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"AddTitle\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualHtmlEditor [options]=\"AddContent\" [group]=\"AddHelpCenterForm\"></BBSF-MultiLingualHtmlEditor>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"AddIsHidden\" [group]=\"AddHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseHelpCenterModal id=\"CloseAddHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (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\r\n<!--Edit Modal-->\r\n<ng-template #EditHelpCenterModal 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\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\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(\"Edit\")}} {{utilityService.getResourceValue(\"HelpCenter\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditHelpCenterFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditTitle\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualHtmlEditor [options]=\"EditContent\" [group]=\"EditHelpCenterForm\"></BBSF-MultiLingualHtmlEditor>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsHidden\" [group]=\"EditHelpCenterForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditHelpCenterModal id=\"CloseEditHelpCenterModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (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\r\n<!--delete Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\" #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n\r\n\r\n", components: [{ type: i6.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i7.ɵd, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i7.ɵs, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i7.ɵv, selector: "BBSF-Form", inputs: ["options"] }, { type: i7.ɵc, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.ɵl, selector: "BBSF-MultiLingualHtmlEditor", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.ɵg, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.ɵw, selector: "BBSF-ConfirmationModal", inputs: ["options"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i11.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i5.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i12.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
|
|
249
238
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: HelpCenterThirdlevelComponent, decorators: [{
|
|
250
239
|
type: Component,
|
|
251
240
|
args: [{
|
|
252
241
|
selector: 'lib-help-center-thirdlevel',
|
|
253
242
|
templateUrl: './help-center-thirdlevel.component.html'
|
|
254
243
|
}]
|
|
255
|
-
}], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.PageInfoService }, { type: i1.UtilityService }, { type: i1.BBSFTranslateService }, { type: i1.EnvironmentService }, { type: i3.ActivatedRoute }, { type: i4.HelpCenterService }, { type: i5.NgbModal }]; }, propDecorators: {
|
|
244
|
+
}], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.PageInfoService }, { type: i1.UtilityService }, { type: i1.BBSFTranslateService }, { type: i1.EnvironmentService }, { type: i3.ActivatedRoute }, { type: i4.HelpCenterService }, { type: i5.NgbModal }]; }, propDecorators: { pagingElement: [{
|
|
256
245
|
type: ViewChild,
|
|
257
246
|
args: ['HelpCenterPagingViewElement', { static: false }]
|
|
258
|
-
}],
|
|
259
|
-
type: ViewChild,
|
|
260
|
-
args: ['CloseAddHelpCenterModal', { static: false }]
|
|
261
|
-
}], CloseEditHelpCenterModal: [{
|
|
262
|
-
type: ViewChild,
|
|
263
|
-
args: ['CloseEditHelpCenterModal', { static: false }]
|
|
264
|
-
}], CloseDeleteHelpCenterItemModal: [{
|
|
247
|
+
}], ConfirmationModalControl: [{
|
|
265
248
|
type: ViewChild,
|
|
266
|
-
args: ['
|
|
249
|
+
args: ['ConfirmationModalControl', { static: false }]
|
|
267
250
|
}] } });
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1jZW50ZXItdGhpcmRsZXZlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2hlbHBDZW50ZXIvaGVscC1jZW50ZXItdGhpcmRsZXZlbC9oZWxwLWNlbnRlci10aGlyZGxldmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaGVscENlbnRlci9oZWxwLWNlbnRlci10aGlyZGxldmVsL2hlbHAtY2VudGVyLXRoaXJkbGV2ZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLDZCQUE2QixFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFek0sT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFHL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7Ozs7Ozs7OztBQU9yRixNQUFNLE9BQU8sNkJBQTZCO0lBc0R4QyxZQUFvQixXQUF1QixFQUFTLGVBQStCLEVBQVMsY0FBNkIsRUFBUyxvQkFBeUMsRUFBUyxrQkFBcUMsRUFBUyxjQUE4QixFQUFVLGlCQUFvQyxFQUFVLFlBQXNCO1FBQTFULGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVMsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQVMsbUJBQWMsR0FBZCxjQUFj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QUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVdHLHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBS1EsOEJBQThCO3NCQUE3RixTQUFTO3VCQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDaGVja0JveE9wdGlvbnMsIEZpbHRlckl0ZW0sIEZpbHRlclR5cGUsIElucHV0VHlwZSwgUGFnaW5nT3B0aW9ucywgVGV4dEJveE9wdGlvbnMsIE11bHRpTGluZ3VhbEh0bWxFZGl0b3JPcHRpb25zLCBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucywgRW5nbGlzaEFyYWJpY0RUTyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgSGVscENlbnRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvSGVscENlbnRlclNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEhlbHBDZW50ZXJJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0hlbHBDZW50ZXJNb2RlbHMvSGVscENlbnRlckl0ZW1Nb2RlbCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWhlbHAtY2VudGVyLXRoaXJkbGV2ZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWxwLWNlbnRlci10aGlyZGxldmVsLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSGVscENlbnRlclRoaXJkbGV2ZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vU3ViaGVhZGVyVGl0bGU9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnSGVscGNlbnRlcicpO1xyXG4gIC8vU2hvd1Rvb2xiYXIgPSB0cnVlO1xyXG4gIC8vU2hvd2JyZWFkQ3J1bWIgPSB0cnVlO1xyXG4gIC8vQnJlYWRjcnVtYlRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGQVEnKTtcclxuICAvL0JyZWFkY3J1bWJUaXRsZVNlY29uZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnaGVscENlbnRlcicpO1xyXG4gIC8vU2hvd0JyZWFkY3J1bWJTZWNvbmQgPSB0cnVlO1xyXG4gIEFwaVVybCA9IFwiL2FwaS9hZG1pbi9IZWxwQ2VudGVyL1wiXHJcbiAgc2VhcmNoVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgUGFyZW50SWRUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBQZXJtaXNzaW9uU2V0c0xpc3QgPSBbXTtcclxuICBIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNob3dGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBIZWxwQ2VudGVyUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIEhlbHBDZW50ZXJQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIFBhcmVudElERmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQXV0aFRva2VuOiBzdHJpbmcgPSBcIlwiXHJcbiAgUGFyZW50SWQ6IHN0cmluZyA9IFwiXCJcclxuICBQYXJlbnROYW1lOnN0cmluZz1cIlwiXHJcbiAgUGFnZU5hbWU6IHN0cmluZyA9IFwiXCJcclxuICBIZWxwQ2VudGVyOiBIZWxwQ2VudGVySXRlbU1vZGVsID0gbmV3IEhlbHBDZW50ZXJJdGVtTW9kZWwoKTtcclxuICBQcm9kdWN0aW9uTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0hlbHBDZW50ZXJQYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dDogRWxlbWVudFJlZjtcclxuXHJcbiAgbGFuZ3VhZ2U6IHN0cmluZyA9IFwiXCJcclxuXHJcbiAgLy9BZGQgTW9kZWwgQ29udHJvbHNcclxuICBBZGRIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIE11bHRpTGluZ3VhbFRpdGxlOk11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zXHJcbiAgTXVsdGlMaW5ndWFsQ29udGVudDpNdWx0aUxpbmd1YWxIdG1sRWRpdG9yT3B0aW9uc1xyXG4gIFxyXG4gIEFkZElzSGlkZGVuOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgSXNBZGRIZWxwQ2VudGVyRm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0Nsb3NlQWRkSGVscENlbnRlck1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIENsb3NlQWRkSGVscENlbnRlck1vZGFsOiBFbGVtZW50UmVmO1xyXG5cclxuICAvL0VkaXQgTW9kZWwgQ29udHJvbHNcclxuICBFZGl0SGVscENlbnRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFZGl0TXVsdGlMaW5ndWFsVGl0bGU6TXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnNcclxuICBFZGl0TXVsdGlMaW5ndWFsQ29udGVudDpNdWx0aUxpbmd1YWxIdG1sRWRpdG9yT3B0aW9uc1xyXG4gIFxyXG4gIEVkaXRJc0hpZGRlbjogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEhlbHBDZW50ZXJJdGVtSWQ6IG51bWJlcjtcclxuXHJcbiAgSXNFZGl0SGVscENlbnRlck1vZGFsTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ2xvc2VFZGl0SGVscENlbnRlck1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIENsb3NlRWRpdEhlbHBDZW50ZXJNb2RhbDogRWxlbWVudFJlZjtcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgSXNPcGVuRGVsZXRlSGVscENlbnRlck1vZGFsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGVsZXRlSGVscENlbnRlcklkOiBzdHJpbmc7XHJcbiAgQFZpZXdDaGlsZCgnQ2xvc2VEZWxldGVIZWxwQ2VudGVySXRlbU1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIENsb3NlRGVsZXRlSGVscENlbnRlckl0ZW1Nb2RhbDogRWxlbWVudFJlZjtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6QXV0aFNlcnZpY2UscHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6UGFnZUluZm9TZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6VXRpbGl0eVNlcnZpY2UscHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTpCQlNGVHJhbnNsYXRlU2VydmljZSxwcml2YXRlIGVudmlyb25tZW50U2VydmljZTpFbnZpcm9ubWVudFNlcnZpY2UscHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgSGVscENlbnRlclNlcnZpY2U6IEhlbHBDZW50ZXJTZXJ2aWNlLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwpIHtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLlBhcmVudElkID0gcGFyYW1zWydwYXJlbnRJRCddO1xyXG4gICAgfSk7ICAgIFxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLlBhcmVudE5hbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlBhcmVudE5hbWVcIik7XHJcbiAgICAvL3RoaXMuQnJlYWRjcnVtYlRpdGxlID0gdGhpcy5QYXJlbnROYW1lO1xyXG4gICAgdGhpcy5QYWdlTmFtZSA9IHRoaXMuUGFyZW50TmFtZVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZT10aGlzLlBhZ2VOYW1lXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzPVtcclxuICAgICAgIHt0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSAsIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlfSxcclxuICAgICAgIHt0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlfSxcclxuICAgICAgIHt0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSGVscENlbnRlclwiKSAsIHBhdGg6ICcvQWRtaW4vSGVscENlbnRlci9IZWxwQ2VudGVyJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2V9LFxyXG4gICAgICAge3RpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2V9LFxyXG4gICAgICBcclxuICBcclxuICAgIF07IFxyXG5cclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCk9PntcclxuICAgICAgdGhpcy5sYW5ndWFnZSA9IGV2ZW50Lmxhbmc7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmxhbmd1YWdlID0gIGF3YWl0IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCk7XHJcbiAgICB0aGlzLlByb2R1Y3Rpb25Nb2RlID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0UHJvZHVjdGlvbk1vZGUoKVxyXG5cclxuICAgIHRoaXMuTG9hZExpc3QoKTtcclxuICB9XHJcbiBcclxuXHJcbiAgLy9pbml0aWFsaXplIGZpbHRlcnMgYW5kIGxvYWQgYW55IGRyb3AgZG93biBsaXN0XHJcbiAgTG9hZExpc3QoKSB7XHJcbiAgICAgIC8vIFRleHRCb3ggaW50aVxyXG4gICAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgICB0aGlzLnNlYXJjaFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuXHJcbiAgICAgIHRoaXMuUGFyZW50SWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuUGFyZW50SWRUZXh0Qm94Lk5hbWUgPSBcIlBhcmVudElkVGV4dEJveFwiXHJcbiAgICAgIHRoaXMuUGFyZW50SWRUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgdGhpcy5QYXJlbnRJZFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICAgIHRoaXMuUGFyZW50SWRUZXh0Qm94LlZhbHVlID0gdGhpcy5QYXJlbnRJZDtcclxuXHJcbiAgICAgIHRoaXMuVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICAgIHRoaXMuUGFyZW50SURGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgICB0aGlzLlBhcmVudElERmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwiUGFyZW50SWRUZXh0Qm94XCJcclxuICAgICAgdGhpcy5QYXJlbnRJREZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJwYXJlbnRJRFwiXHJcbiAgICAgIHRoaXMuUGFyZW50SURGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgICAgdGhpcy5QYXJlbnRJREZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcbiAgICAgIFxyXG5cclxuICAgICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIHRoaXMuQXBpVXJsICsgJ0dldEhlbHBDZW50ZXJJdGVtc0J5RmlsdGVyJztcclxuICAgICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wic2VhcmNoVGV4dEJveFwiXVxyXG4gICAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcuRmlsdGVycyA9IFt0aGlzLlRleHRJbnB1dEZpbHRlciwgdGhpcy5QYXJlbnRJREZpbHRlcl1cclxuICAgICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LCAxMCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIFJlaW5pdGlhbGl6ZUhlbHBDZW50ZXJQYWdpbmcoKSB7XHJcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuaW5wdXQgYXMgYW55O1xyXG4gICAgZWxlbWVudC5SZWluaXRpYWxpemVQYWdpbmcoKTtcclxuICB9XHJcblxyXG4gIFVwZGF0ZUhlbHBDZW50ZXJQYWdpbmcoKSB7XHJcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuaW5wdXQgYXMgYW55O1xyXG4gICAgZWxlbWVudC5VcGRhdGVQYWdpbmcoKTtcclxuICB9XHJcblxyXG4gIHNldEhlbHBDZW50ZXJJdGVtTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuXHJcbiAgfVxyXG5cclxuICByZXNldEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJGb3JtLmNvbnRyb2xzW1wic2VhcmNoVGV4dEJveFwiXS5zZXRWYWx1ZShudWxsKTtcclxuICAgIGxldCBlbGVtZW50ID0gdGhpcy5pbnB1dCBhcyBhbnk7XHJcbiAgICBlbGVtZW50LlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0FkZEhlbHBDZW50ZXJNb2RhbChBZGRIZWxwQ2VudGVyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuXHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbFRpdGxlID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbFRpdGxlLk5hbWUgPSBcIlRpdGxlXCI7XHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbFRpdGxlLkFyYWJpY0xhYmVsS2V5ID0gIFwiVGl0bGVJbkFyYWJpY1wiO1xyXG4gICAgdGhpcy5NdWx0aUxpbmd1YWxUaXRsZS5FbmdsaXNoTGFiZWxLZXkgPSBcIlRpdGxlSW5FbmdsaXNoXCI7XHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbFRpdGxlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5NdWx0aUxpbmd1YWxUaXRsZS5WYWx1ZSA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5NdWx0aUxpbmd1YWxDb250ZW50ID0gbmV3IE11bHRpTGluZ3VhbEh0bWxFZGl0b3JPcHRpb25zKCk7XHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbENvbnRlbnQuTmFtZSA9IFwiQ29udGVudFwiO1xyXG4gICAgdGhpcy5NdWx0aUxpbmd1YWxDb250ZW50LkFyYWJpY0xhYmVsS2V5ID0gIFwiQ29udGVudEluQXJhYmljXCI7XHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbENvbnRlbnQuRW5nbGlzaExhYmVsS2V5ID0gXCJDb250ZW50SW5FbmdsaXNoXCI7XHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbENvbnRlbnQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLk11bHRpTGluZ3VhbENvbnRlbnQuVmFsdWUgPSBudWxsO1xyXG5cclxuICAgIHRoaXMuQWRkSXNIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLkFkZElzSGlkZGVuLk5hbWUgPSBcIkFkZElzSGlkZGVuXCJcclxuICAgIHRoaXMuQWRkSXNIaWRkZW4uTGFiZWxLZXkgPSBcIkhpZGRlblwiXHJcbiAgICB0aGlzLkFkZElzSGlkZGVuLlZhbHVlID0gZmFsc2VcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkSGVscENlbnRlck1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuXHJcbiAgfVxyXG5cclxuICBhZGRIZWxwQ2VudGVySXRlbSgpIHtcclxuICAgIGlmICh0aGlzLkFkZEhlbHBDZW50ZXJGb3JtLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuQWRkSGVscENlbnRlckZvcm0udmFsdWU7XHJcbiAgICAgIGxldCBBZGRNb2RlbDogSGVscENlbnRlckl0ZW1Nb2RlbCA9IG5ldyBIZWxwQ2VudGVySXRlbU1vZGVsKCk7XHJcbiAgICAgIEFkZE1vZGVsLlRpdGxlLkFyYWJpYyA9IFJlc3VsdE1vZGVsLlRpdGxlLkFyYWJpY1ZhbHVlO1xyXG4gICAgICBBZGRNb2RlbC5UaXRsZS5FbmdsaXNoID0gUmVzdWx0TW9kZWwuVGl0bGUuRW5nbGlzaFZhbHVlO1xyXG4gICAgICBBZGRNb2RlbC5IdG1sLkFyYWJpYyA9IFJlc3VsdE1vZGVsLkNvbnRlbnQuQXJhYmljSHRtbEVkaXRvclZhbHVlXHJcbiAgICAgIEFkZE1vZGVsLkh0bWwuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLkNvbnRlbnQuRW5nbGlzaEh0bWxFZGl0b3JWYWx1ZVxyXG4gICAgICBBZGRNb2RlbC5Jc0hpZGRlbiA9IFJlc3VsdE1vZGVsLkFkZElzSGlkZGVuO1xyXG4gICAgICBBZGRNb2RlbC5QYXJlbnRJREVuY3J5cHRlZCA9IHRoaXMuUGFyZW50SWQ7XHJcbiAgICAgIEFkZE1vZGVsLklzUGFyZW50PXRydWU7XHJcbiAgICAgIEFkZE1vZGVsLklzU2VjdGlvbj10cnVlO1xyXG5cclxuXHJcblxyXG4gICAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkFkZEhlbHBDZW50ZXIoQWRkTW9kZWwpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5pbnB1dCBhcyBhbnk7XHJcbiAgICAgICAgZWxlbWVudC5SZWluaXRpYWxpemVQYWdpbmcoKTtcclxuICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICBcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbiAgc2hvd0VkaXRIZWxwQ2VudGVyTW9kYWwoSGVscENlbnRlcjogYW55LCBFZGl0SGVscENlbnRlck1vZGFsKSB7XHJcblxyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuXHJcbiAgICB0aGlzLkhlbHBDZW50ZXJJdGVtSWQgPSBIZWxwQ2VudGVyLmlkXHJcblxyXG5cclxuICAgIGxldCBUaXRsZT1uZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgVGl0bGUuQXJhYmljPSBIZWxwQ2VudGVyLnRpdGxlLmFyYWJpYztcclxuICAgIFRpdGxlLkVuZ2xpc2g9IEhlbHBDZW50ZXIudGl0bGUuZW5nbGlzaDtcclxuXHJcbiAgICB0aGlzLkVkaXRNdWx0aUxpbmd1YWxUaXRsZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5FZGl0TXVsdGlMaW5ndWFsVGl0bGUuTmFtZSA9IFwiVGl0bGVcIjtcclxuICAgIHRoaXMuRWRpdE11bHRpTGluZ3VhbFRpdGxlLkFyYWJpY0xhYmVsS2V5ID0gIFwiVGl0bGVJbkFyYWJpY1wiO1xyXG4gICAgdGhpcy5FZGl0TXVsdGlMaW5ndWFsVGl0bGUuRW5nbGlzaExhYmVsS2V5ID0gXCJUaXRsZUluRW5nbGlzaFwiO1xyXG4gICAgdGhpcy5FZGl0TXVsdGlMaW5ndWFsVGl0bGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLkVkaXRNdWx0aUxpbmd1YWxUaXRsZS5WYWx1ZSA9IFRpdGxlO1xyXG5cclxuICAgIGxldCBDb250ZW50PW5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICBDb250ZW50LkFyYWJpYyA9IEhlbHBDZW50ZXIuaHRtbC5hcmFiaWM7XHJcbiAgICBDb250ZW50LkVuZ2xpc2g9IEhlbHBDZW50ZXIuaHRtbC5lbmdsaXNoO1xyXG5cclxuICAgIHRoaXMuRWRpdE11bHRpTGluZ3VhbENvbnRlbnQgPSBuZXcgTXVsdGlMaW5ndWFsSHRtbEVkaXRvck9wdGlvbnMoKTtcclxuICAgIHRoaXMuRWRpdE11bHRpTGluZ3VhbENvbnRlbnQuTmFtZSA9IFwiQ29udGVudFwiO1xyXG4gICAgdGhpcy5FZGl0TXVsdGlMaW5ndWFsQ29udGVudC5BcmFiaWNMYWJlbEtleSA9ICBcIkNvbnRlbnRJbkFyYWJpY1wiO1xyXG4gICAgdGhpcy5FZGl0TXVsdGlMaW5ndWFsQ29udGVudC5FbmdsaXNoTGFiZWxLZXkgPSBcIkNvbnRlbnRJbkVuZ2xpc2hcIjtcclxuICAgIHRoaXMuRWRpdE11bHRpTGluZ3VhbENvbnRlbnQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLkVkaXRNdWx0aUxpbmd1YWxDb250ZW50LlZhbHVlID0gQ29udGVudDtcclxuICAgIFxyXG5cclxuICAgIHRoaXMuRWRpdElzSGlkZGVuID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5FZGl0SXNIaWRkZW4uTmFtZSA9IFwiRWRpdElzSGlkZGVuXCJcclxuICAgIHRoaXMuRWRpdElzSGlkZGVuLkxhYmVsS2V5ID0gXCJIaWRkZW5cIlxyXG4gICAgdGhpcy5FZGl0SXNIaWRkZW4uVmFsdWUgPSBIZWxwQ2VudGVyLmlzSGlkZGVuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEVkaXRIZWxwQ2VudGVyTW9kYWwpO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBlZGl0SGVscENlbnRlcigpIHtcclxuICAgIGlmICh0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybS52YWx1ZTtcclxuICAgICAgbGV0IEVkaXRNb2RlbCA9IG5ldyBIZWxwQ2VudGVySXRlbU1vZGVsKCk7XHJcbiAgICAgIEVkaXRNb2RlbC5JRCA9IE51bWJlcih0aGlzLkhlbHBDZW50ZXJJdGVtSWQpO1xyXG4gICAgICBFZGl0TW9kZWwuVGl0bGUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLlRpdGxlLkVuZ2xpc2hWYWx1ZTsgLy8oIyMxKVxyXG4gICAgICBFZGl0TW9kZWwuVGl0bGUuQXJhYmljID0gUmVzdWx0TW9kZWwuVGl0bGUuQXJhYmljVmFsdWU7XHJcbiAgICAgIEVkaXRNb2RlbC5IdG1sLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5Db250ZW50LkVuZ2xpc2hIdG1sRWRpdG9yVmFsdWU7XHJcbiAgICAgIEVkaXRNb2RlbC5IdG1sLkFyYWJpYyA9IFJlc3VsdE1vZGVsLkNvbnRlbnQuQXJhYmljSHRtbEVkaXRvclZhbHVlO1xyXG4gICAgICBFZGl0TW9kZWwuSXNIaWRkZW4gPSBSZXN1bHRNb2RlbC5FZGl0SXNIaWRkZW47XHJcblxyXG4gICAgICB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkVkaXRIZWxwQ2VudGVyKEVkaXRNb2RlbCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLmlucHV0IGFzIGFueTtcclxuICAgICAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgIFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0RlbGV0ZUhlbHBDZW50ZXJNb2RhbChJdGVtOiBhbnksIGRlbGV0ZUhlbHBDZW50ZXJJdGVtTW9kYWwpIHtcclxuICAgIHRoaXMuZGVsZXRlSGVscENlbnRlcklkID0gSXRlbS5pZEVuY3J5cHRlZDtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGRlbGV0ZUhlbHBDZW50ZXJJdGVtTW9kYWwpO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBkZWxldGVIZWxwQ2VudGVyKCkge1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyU2VydmljZS5EZWxldGVIZWxwQ2VudGVyKHRoaXMuZGVsZXRlSGVscENlbnRlcklkKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLmRlbGV0ZUhlbHBDZW50ZXJJZCA9IFwiXCI7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLmlucHV0IGFzIGFueTtcclxuICAgICAgZWxlbWVudC5SZWluaXRpYWxpemVQYWdpbmcoKTtcclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBTYXZlTmFtZShuYW1lKSB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIlBhcmVudE5hbWVcIiwgbmFtZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuICA8IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkhlbHBDZW50ZXJGb3JtXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2VhcmNoVGV4dEJveFwiIFtncm91cF09XCJIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlBhcmVudElkVGV4dEJveFwiIFtncm91cF09XCJIZWxwQ2VudGVyRm9ybVwiIFtoaWRkZW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cIkFkZFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzaG93QWRkSGVscENlbnRlck1vZGFsKEFkZEhlbHBDZW50ZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtcGx1c1wiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRpdGxlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHggdGV4dC1jZW50ZXJcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWaXNpYmxlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXIgbWluLXctNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcblxyXG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgSXRlbSBvZiBIZWxwQ2VudGVyUGFnaW5nUmVzdWx0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsYW5ndWFnZT09J2VuJ1wiIGNsYXNzPVwidGV4dC1kYXJrXCI+e3tJdGVtLnRpdGxlLmVuZ2xpc2h9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsYW5ndWFnZT09J2FyJ1wiIGNsYXNzPVwidGV4dC1kYXJrXCI+e3tJdGVtLnRpdGxlLmFyYWJpY319PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJsYW5ndWFnZT09J2FyJ1wiIChjbGljayk9XCJTYXZlTmFtZShJdGVtLnRpdGxlLmFyYWJpYylcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9BZG1pbi9IZWxwQ2VudGVyL1RoaXJkTGV2ZWwnLEl0ZW0ucGFyZW50SURdXCJcclxuICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiIGNsYXNzPVwiIHRleHQtZGFya1wiPnt7SXRlbS50aXRsZS5hcmFiaWN9fTwvYT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkl0ZW0uaXNIaWRkZW47ZWxzZSBvdGhlcl9jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI290aGVyX2NvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdEhlbHBDZW50ZXJNb2RhbChJdGVtLEVkaXRIZWxwQ2VudGVyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBpZD1cImJ0blJlc2V0UGFzc1wiIChjbGljayk9XCJzaG93RGVsZXRlSGVscENlbnRlck1vZGFsKEl0ZW0sZGVsZXRlSGVscENlbnRlckl0ZW1Nb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiSGVscENlbnRlclBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgICA8IS0tZW5kOjpQZXJtaXNzaW9uIGxpc3QtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0SGVscENlbnRlckl0ZW1MaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiSGVscENlbnRlclBhZ2luZ1wiIFtncm91cF09XCJIZWxwQ2VudGVyRm9ybVwiICNIZWxwQ2VudGVyUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcblxyXG4gIDwhLS1kZWxldGUgTW9kYWwtLT5cclxuICA8bmctdGVtcGxhdGUgI2RlbGV0ZUhlbHBDZW50ZXJJdGVtTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIZWxwQ2VudGVyXCIpfX08L2gxPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5vdGljZSBkLWZsZXggYmctbGlnaHQtZGFuZ2VyIHJvdW5kZWQgYm9yZGVyLWRhbmdlciBib3JkZXIgYm9yZGVyLWRhc2hlZCBtYi0xMCBwLTZcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJ0eCBzdmctaWNvbi1kYW5nZXIgbWUtNFwiPlxyXG4gICAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9nZW4wNDQuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZV9RdWVzdGlvblwiKX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlRGVsZXRlSGVscENlbnRlckl0ZW1Nb2RhbCBpZD1cIkNsb3NlRGVsZXRlSGVscENlbnRlckl0ZW1Nb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBtZS0zIFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkZWxldGVIZWxwQ2VudGVyKClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0LWRhbmdlciBidG4tc20gXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwhLS1FZGl0IE1vZGFsLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNFZGl0SGVscENlbnRlck1vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cIi4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2Z1wiLz5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSGVscENlbnRlclwiKX19PC9oMT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCIgKG5nU3VibWl0KT1cImVkaXRIZWxwQ2VudGVyKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiRWRpdE11bHRpTGluZ3VhbFRpdGxlXCIgW2dyb3VwXT1cIkVkaXRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsSHRtbEVkaXRvciBbb3B0aW9uc109XCJFZGl0TXVsdGlMaW5ndWFsQ29udGVudFwiIFtncm91cF09XCJFZGl0SGVscENlbnRlckZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsSHRtbEVkaXRvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJFZGl0SXNIaWRkZW5cIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiAjQ2xvc2VFZGl0SGVscENlbnRlck1vZGFsIGlkPVwiQ2xvc2VFZGl0SGVscENlbnRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDwhLS1hZGQgTW9kYWwtLT5cclxuICA8bmctdGVtcGxhdGUgI0FkZEhlbHBDZW50ZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhlbHBDZW50ZXJcIil9fTwvaDE+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiIFxyXG4gICAgICAgICAgICAgIChuZ1N1Ym1pdCk9XCJhZGRIZWxwQ2VudGVySXRlbSgpXCI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJNdWx0aUxpbmd1YWxUaXRsZVwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsSHRtbEVkaXRvciBbb3B0aW9uc109XCJNdWx0aUxpbmd1YWxDb250ZW50XCIgW2dyb3VwXT1cIkFkZEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbEh0bWxFZGl0b3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiQWRkSXNIaWRkZW5cIiBbZ3JvdXBdPVwiQWRkSGVscENlbnRlckZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICAgIDxidXR0b24gICNDbG9zZUhlbHBDZW50ZXJNb2RhbCBpZD1cIkNsb3NlQWRkSGVscENlbnRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiJdfQ==
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1jZW50ZXItdGhpcmRsZXZlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2hlbHBDZW50ZXIvaGVscC1jZW50ZXItdGhpcmRsZXZlbC9oZWxwLWNlbnRlci10aGlyZGxldmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvaGVscENlbnRlci9oZWxwLWNlbnRlci10aGlyZGxldmVsL2hlbHAtY2VudGVyLXRoaXJkbGV2ZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbFEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFHL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVVyRixNQUFNLE9BQU8sNkJBQTZCO0lBMkN4QyxZQUFvQixXQUF1QixFQUFTLGVBQStCLEVBQVMsY0FBNkIsRUFBUyxvQkFBeUMsRUFBUyxrQkFBcUMsRUFBUyxjQUE4QixFQUFVLGlCQUFvQyxFQUFVLFlBQXNCO1FBQTFULGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVMsb0JBQWUsR0FB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Q0FBQztJQUNWLENBQUM7OzJIQTlRVSw2QkFBNkI7K0dBQTdCLDZCQUE2Qix1VENqQjFDLDhnUUFpTEE7NEZEaEthLDZCQUE2QjtrQkFKekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxXQUFXLEVBQUUseUNBQXlDO2lCQUN2RDtxVEFrQjhELGFBQWE7c0JBQXpFLFNBQVM7dUJBQUMsNkJBQTZCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXdCRCx3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucywgRmlsdGVySXRlbSwgRmlsdGVyVHlwZSwgSW5wdXRUeXBlLCBQYWdpbmdPcHRpb25zLCBUZXh0Qm94T3B0aW9ucywgTXVsdGlMaW5ndWFsSHRtbEVkaXRvck9wdGlvbnMsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGb3JtT3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBQYWdpbmdBY3Rpb25Nb2RlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBIZWxwQ2VudGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9IZWxwQ2VudGVyU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGVscENlbnRlckl0ZW1Nb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvSGVscENlbnRlck1vZGVscy9IZWxwQ2VudGVySXRlbU1vZGVsJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL0NvbmZpcm1hdGlvbk1vZGFsL0NvbmZpcm1hdGlvbk1vZGFsLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1oZWxwLWNlbnRlci10aGlyZGxldmVsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVscC1jZW50ZXItdGhpcmRsZXZlbC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlbHBDZW50ZXJUaGlyZGxldmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgUGFyZW50SWQ6IHN0cmluZyA9IFwiXCJcclxuICBQYXJlbnROYW1lOiBzdHJpbmcgPSBcIlwiXHJcbiAgUGFnZU5hbWU6IHN0cmluZyA9IFwiXCJcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vSGVscENlbnRlci9cIlxyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBQYXJlbnRJZFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIEhlbHBDZW50ZXJQYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgVGV4dElucHV0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIFBhcmVudElERmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgSGVscENlbnRlclBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBjbGllbnRTaWRlUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIElzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnSGVscENlbnRlclBhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luZ0VsZW1lbnQ6IFBhZ2luZ0NvbXBvbmVudDxhbnk+O1xyXG5cclxuXHJcbiAgLy9BZGQgTW9kZWwgQ29udHJvbHNcclxuICBBZGRIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBBZGRUaXRsZTpNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9uc1xyXG4gIEFkZENvbnRlbnQ6TXVsdGlMaW5ndWFsSHRtbEVkaXRvck9wdGlvbnNcclxuICBBZGRJc0hpZGRlbjogQ2hlY2tCb3hPcHRpb25zO1xyXG5cclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBFZGl0VGl0bGU6TXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnNcclxuICBFZGl0Q29udGVudDpNdWx0aUxpbmd1YWxIdG1sRWRpdG9yT3B0aW9ucyBcclxuICBFZGl0SXNIaWRkZW46IENoZWNrQm94T3B0aW9ucztcclxuICBIZWxwQ2VudGVySXRlbUlkOiBudW1iZXI7XHJcblxyXG5cclxuICAvL2RlbGV0ZSAgTW9kZWwgQ29udHJvbHNcclxuICBkZWxldGVIZWxwQ2VudGVySWQ6IHN0cmluZztcclxuICBEZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOkF1dGhTZXJ2aWNlLHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOlBhZ2VJbmZvU2VydmljZSwgcHVibGljIHV0aWxpdHlTZXJ2aWNlOlV0aWxpdHlTZXJ2aWNlLHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6QkJTRlRyYW5zbGF0ZVNlcnZpY2UscHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6RW52aXJvbm1lbnRTZXJ2aWNlLHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIEhlbHBDZW50ZXJTZXJ2aWNlOiBIZWxwQ2VudGVyU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5QYXJlbnRJZCA9IHBhcmFtc1sncGFyZW50SUQnXTtcclxuICAgIH0pOyAgICBcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5QYXJlbnROYW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJQYXJlbnROYW1lXCIpO1xyXG4gICAgLy90aGlzLkJyZWFkY3J1bWJUaXRsZSA9IHRoaXMuUGFyZW50TmFtZTtcclxuICAgIHRoaXMuUGFnZU5hbWUgPSB0aGlzLlBhcmVudE5hbWVcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGU9dGhpcy5QYWdlTmFtZVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icz1bXHJcbiAgICAgICB7dGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIikgLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZX0sXHJcbiAgICAgICB7dGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZX0sXHJcbiAgICAgICB7dGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhlbHBDZW50ZXJcIikgLCBwYXRoOiAnL0FkbWluL0hlbHBDZW50ZXIvSGVscENlbnRlcicsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlfSxcclxuICAgICAgIHt0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlfSxcclxuICAgICAgXHJcbiAgXHJcbiAgICBdOyBcclxuXHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpPT57XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG4gXHJcblxyXG4gIC8vaW5pdGlhbGl6ZSBQYWdlIGZpbHRlcnMgXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICAvLyBUZXh0Qm94IGluaXRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuXHJcbiAgICB0aGlzLlBhcmVudElkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5QYXJlbnRJZFRleHRCb3guTmFtZSA9IFwiUGFyZW50SWRUZXh0Qm94XCJcclxuICAgIHRoaXMuUGFyZW50SWRUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWVcclxuICAgIHRoaXMuUGFyZW50SWRUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5QYXJlbnRJZFRleHRCb3guVmFsdWUgPSB0aGlzLlBhcmVudElkO1xyXG5cclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5QYXJlbnRJREZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlBhcmVudElERmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwiUGFyZW50SWRUZXh0Qm94XCJcclxuICAgIHRoaXMuUGFyZW50SURGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwicGFyZW50SURcIlxyXG4gICAgdGhpcy5QYXJlbnRJREZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5QYXJlbnRJREZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG5cclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmcuQWN0aW9uUG9zdFVSTCA9IHRoaXMuQXBpVXJsICsgJ0dldEhlbHBDZW50ZXJJdGVtc0J5RmlsdGVyJztcclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl1cclxuICAgIHRoaXMuSGVscENlbnRlclBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyLCB0aGlzLlBhcmVudElERmlsdGVyXVxyXG4gICAgdGhpcy5IZWxwQ2VudGVyUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuXHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgfVxyXG5cclxuICAvL1BhZ2luZyBmdW5jdGlvbnNcclxuICBzZXRIZWxwQ2VudGVySXRlbUxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLkhlbHBDZW50ZXJQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG4gIHNlYXJjaENsaWVudFNpZGUoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0LmZpbHRlcihcclxuICAgICAgICBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgcmV0dXJuIChpdGVtLnRpdGxlLmVuZ2xpc2gudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgICAgICB8fCBpdGVtLnRpdGxlLmFyYWJpYy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICB9KVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLkhlbHBDZW50ZXJQYWdpbmdSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvL0FkZCBoZWxwY2VudGVyIGl0ZW1cclxuICBzaG93QWRkSGVscENlbnRlck1vZGFsKEFkZEhlbHBDZW50ZXJNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuXHJcbiAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtXHJcbiAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRIZWxwQ2VudGVyTW9kZWw7XHJcbiAgICB0aGlzLkFkZEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZEhlbHBDZW50ZXJGdW5jdGlvbjtcclxuICAgIHRoaXMuQWRkSGVscENlbnRlckZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG5cclxuICAgIHRoaXMuQWRkVGl0bGUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuQWRkVGl0bGUuTmFtZSA9IFwiQWRkVGl0bGVcIjtcclxuICAgIHRoaXMuQWRkVGl0bGUuQXJhYmljTGFiZWxLZXkgPSAgXCJUaXRsZUluQXJhYmljXCI7XHJcbiAgICB0aGlzLkFkZFRpdGxlLkVuZ2xpc2hMYWJlbEtleSA9IFwiVGl0bGVJbkVuZ2xpc2hcIjtcclxuICAgIHRoaXMuQWRkVGl0bGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLkFkZFRpdGxlLlZhbHVlID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLkFkZENvbnRlbnQgPSBuZXcgTXVsdGlMaW5ndWFsSHRtbEVkaXRvck9wdGlvbnMoKTtcclxuICAgIHRoaXMuQWRkQ29udGVudC5OYW1lID0gXCJBZGRDb250ZW50XCI7XHJcbiAgICB0aGlzLkFkZENvbnRlbnQuQXJhYmljTGFiZWxLZXkgPSAgXCJDb250ZW50SW5BcmFiaWNcIjtcclxuICAgIHRoaXMuQWRkQ29udGVudC5FbmdsaXNoTGFiZWxLZXkgPSBcIkNvbnRlbnRJbkVuZ2xpc2hcIjtcclxuICAgIHRoaXMuQWRkQ29udGVudC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIHRoaXMuQWRkQ29udGVudC5WYWx1ZSA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5BZGRJc0hpZGRlbiA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuQWRkSXNIaWRkZW4uTmFtZSA9IFwiQWRkSXNIaWRkZW5cIlxyXG4gICAgdGhpcy5BZGRJc0hpZGRlbi5MYWJlbEtleSA9IFwiSGlkZGVuXCJcclxuICAgIHRoaXMuQWRkSXNIaWRkZW4uVmFsdWUgPSBmYWxzZVxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBZGRIZWxwQ2VudGVyTW9kYWwpO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG5cclxuICB9XHJcblxyXG4gIGdldEFkZEhlbHBDZW50ZXJNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5BZGRIZWxwQ2VudGVyRm9ybS52YWx1ZTtcclxuICAgIGxldCBBZGRNb2RlbDogSGVscENlbnRlckl0ZW1Nb2RlbCA9IG5ldyBIZWxwQ2VudGVySXRlbU1vZGVsKCk7XHJcbiAgICBBZGRNb2RlbC5UaXRsZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5BZGRUaXRsZS5BcmFiaWM7XHJcbiAgICBBZGRNb2RlbC5UaXRsZS5FbmdsaXNoID0gUmVzdWx0TW9kZWwuQWRkVGl0bGUuRW5nbGlzaDtcclxuICAgIEFkZE1vZGVsLkh0bWwuQXJhYmljID0gUmVzdWx0TW9kZWwuQWRkQ29udGVudC5BcmFiaWNcclxuICAgIEFkZE1vZGVsLkh0bWwuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLkFkZENvbnRlbnQuRW5nbGlzaFxyXG4gICAgQWRkTW9kZWwuSXNIaWRkZW4gPSBSZXN1bHRNb2RlbC5BZGRJc0hpZGRlbjtcclxuICAgIEFkZE1vZGVsLlBhcmVudElERW5jcnlwdGVkID0gdGhpcy5QYXJlbnRJZDtcclxuICAgIEFkZE1vZGVsLklzUGFyZW50ID0gdHJ1ZTtcclxuICAgIEFkZE1vZGVsLklzU2VjdGlvbiA9IHRydWU7XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkSGVscENlbnRlckZ1bmN0aW9uID0gKEFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkFkZEhlbHBDZW50ZXIoQWRkTW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL0VkaXQgSGVscENlbnRlciBJdGVtXHJcbiAgc2hvd0VkaXRIZWxwQ2VudGVyTW9kYWwoaGVscENlbnRlcklEOiBudW1iZXIsIGhlbHBDZW50ZXJJREVuYzogc3RyaW5nLCBFZGl0SGVscENlbnRlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVySXRlbUlkID0gaGVscENlbnRlcklEO1xyXG4gICAgdGhpcy5IZWxwQ2VudGVyU2VydmljZS5nZXRFZGl0SGVscENlbnRlckRhdGEoaGVscENlbnRlcklERW5jKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IGhlbHBDZW50ZXIgPSByZXN1bHRPYmoubW9kZWw7XHJcblxyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5FZGl0SGVscENlbnRlckZvcm1cclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRIZWxwQ2VudGVyTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRIZWxwQ2VudGVyRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuICAgICAgdGhpcy5FZGl0SGVscENlbnRlckZvcm1PcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlVwZGF0ZVxyXG5cclxuICAgICAgbGV0IFRpdGxlID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgVGl0bGUuQXJhYmljID0gaGVscENlbnRlci50aXRsZS5hcmFiaWM7XHJcbiAgICAgIFRpdGxlLkVuZ2xpc2ggPSBoZWxwQ2VudGVyLnRpdGxlLmVuZ2xpc2g7XHJcblxyXG4gICAgICB0aGlzLkVkaXRUaXRsZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5OYW1lID0gXCJFZGl0VGl0bGVcIjtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuQXJhYmljTGFiZWxLZXkgPSBcIlRpdGxlSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuRW5nbGlzaExhYmVsS2V5ID0gXCJUaXRsZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLkVkaXRUaXRsZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VGl0bGUuVmFsdWUgPSBUaXRsZTtcclxuXHJcbiAgICAgIGxldCBDb250ZW50ID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgQ29udGVudC5BcmFiaWMgPSBoZWxwQ2VudGVyLmh0bWwuYXJhYmljO1xyXG4gICAgICBDb250ZW50LkVuZ2xpc2ggPSBoZWxwQ2VudGVyLmh0bWwuZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdENvbnRlbnQgPSBuZXcgTXVsdGlMaW5ndWFsSHRtbEVkaXRvck9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0Q29udGVudC5OYW1lID0gXCJFZGl0Q29udGVudFwiO1xyXG4gICAgICB0aGlzLkVkaXRDb250ZW50LkFyYWJpY0xhYmVsS2V5ID0gXCJDb250ZW50SW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5FZGl0Q29udGVudC5FbmdsaXNoTGFiZWxLZXkgPSBcIkNvbnRlbnRJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5FZGl0Q29udGVudC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0Q29udGVudC5WYWx1ZSA9IENvbnRlbnQ7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0SXNIaWRkZW4gPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuLk5hbWUgPSBcIkVkaXRJc0hpZGRlblwiXHJcbiAgICAgIHRoaXMuRWRpdElzSGlkZGVuLkxhYmVsS2V5ID0gXCJIaWRkZW5cIlxyXG4gICAgICB0aGlzLkVkaXRJc0hpZGRlbi5WYWx1ZSA9IGhlbHBDZW50ZXIuaXNIaWRkZW5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihFZGl0SGVscENlbnRlck1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcblxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBnZXRFZGl0SGVscENlbnRlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRIZWxwQ2VudGVyRm9ybS52YWx1ZTtcclxuICAgIGxldCBFZGl0TW9kZWwgPSBuZXcgSGVscENlbnRlckl0ZW1Nb2RlbCgpO1xyXG4gICAgRWRpdE1vZGVsLklEID0gTnVtYmVyKHRoaXMuSGVscENlbnRlckl0ZW1JZCk7XHJcbiAgICBFZGl0TW9kZWwuVGl0bGUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLkVkaXRUaXRsZS5FbmdsaXNoOyAvLygjIzEpXHJcbiAgICBFZGl0TW9kZWwuVGl0bGUuQXJhYmljID0gUmVzdWx0TW9kZWwuRWRpdFRpdGxlLkFyYWJpYztcclxuICAgIEVkaXRNb2RlbC5IdG1sLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5FZGl0Q29udGVudC5FbmdsaXNoO1xyXG4gICAgRWRpdE1vZGVsLkh0bWwuQXJhYmljID0gUmVzdWx0TW9kZWwuRWRpdENvbnRlbnQuQXJhYmljO1xyXG4gICAgRWRpdE1vZGVsLklzSGlkZGVuID0gUmVzdWx0TW9kZWwuRWRpdElzSGlkZGVuO1xyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0SGVscENlbnRlckZ1bmN0aW9uID0gKEVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5IZWxwQ2VudGVyU2VydmljZS5FZGl0SGVscENlbnRlcihFZGl0TW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL0RlbGV0ZSBIZWxwQ2VudGVyXHJcbiAgc2hvd0RlbGV0ZUhlbHBDZW50ZXJNb2RhbChoZWxwQ2VudGVySUQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5kZWxldGVIZWxwQ2VudGVySWQgPSBoZWxwQ2VudGVySUQ7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuZGVsZXRlSGVscENlbnRlcklkKTtcclxuXHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5kZWxldGVIZWxwQ2VudGVyO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG5cclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSGVscENlbnRlciA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkhlbHBDZW50ZXJTZXJ2aWNlLkRlbGV0ZUhlbHBDZW50ZXIoaWQpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiSGVscENlbnRlckZvcm1cIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggKE9uQ2hhbmdlKT1cInNlYXJjaENsaWVudFNpZGUoJGV2ZW50KVwiIFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiSGVscENlbnRlckZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiUGFyZW50SWRUZXh0Qm94XCIgW2dyb3VwXT1cIkhlbHBDZW50ZXJGb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJBZGRcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2hvd0FkZEhlbHBDZW50ZXJNb2RhbChBZGRIZWxwQ2VudGVyTW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cIiBmYSBmYS1wbHVzXCI+PC9pPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGl0bGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHggdGV4dC1jZW50ZXJcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWaXNpYmxlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyIG1pbi13LTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG5cclxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBJdGVtIG9mIGNsaWVudFNpZGVQYWdpbmdSZXN1bHRcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e0l0ZW0udGl0bGVTdHJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkl0ZW0uaXNIaWRkZW47ZWxzZSBvdGhlcl9jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI290aGVyX2NvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0SGVscENlbnRlck1vZGFsKEl0ZW0uaWQsSXRlbS5pZEVuY3J5cHRlZCxFZGl0SGVscENlbnRlck1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgaWQ9XCJidG5SZXNldFBhc3NcIiAoY2xpY2spPVwic2hvd0RlbGV0ZUhlbHBDZW50ZXJNb2RhbChJdGVtLmlkRW5jcnlwdGVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiM1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgPCEtLWVuZDo6IGxpc3QtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldEhlbHBDZW50ZXJJdGVtTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJIZWxwQ2VudGVyUGFnaW5nXCIgW2dyb3VwXT1cIkhlbHBDZW50ZXJGb3JtXCIgI0hlbHBDZW50ZXJQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS1hZGQgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNBZGRIZWxwQ2VudGVyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhlbHBDZW50ZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiQWRkSGVscENlbnRlckZvcm1PcHRpb25zXCI+XHJcblxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiQWRkVGl0bGVcIiBbZ3JvdXBdPVwiQWRkSGVscENlbnRlckZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsSHRtbEVkaXRvciBbb3B0aW9uc109XCJBZGRDb250ZW50XCIgW2dyb3VwXT1cIkFkZEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbEh0bWxFZGl0b3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJBZGRJc0hpZGRlblwiIFtncm91cF09XCJBZGRIZWxwQ2VudGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUhlbHBDZW50ZXJNb2RhbCBpZD1cIkNsb3NlQWRkSGVscENlbnRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtICBtZS0zXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1FZGl0IE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjRWRpdEhlbHBDZW50ZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhlbHBDZW50ZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdEhlbHBDZW50ZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJFZGl0VGl0bGVcIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbEh0bWxFZGl0b3IgW29wdGlvbnNdPVwiRWRpdENvbnRlbnRcIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbEh0bWxFZGl0b3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJFZGl0SXNIaWRkZW5cIiBbZ3JvdXBdPVwiRWRpdEhlbHBDZW50ZXJGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRIZWxwQ2VudGVyTW9kYWwgaWQ9XCJDbG9zZUVkaXRIZWxwQ2VudGVyTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLWRlbGV0ZSBNb2RhbC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cImRlbGV0ZUNvbnRyb2xMb2FkZWRcIiBbb3B0aW9uc109XCJEZWxldGVDb25maXJtYXRpb25PcHRpb25zXCIgaWQ9XCJDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIiAjQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuXHJcblxyXG5cclxuIl19
|