@bnsights/bbsf-admin-portal 1.0.26 → 1.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -3
- package/bnsights-bbsf-admin-portal-1.0.30.tgz +0 -0
- package/bundles/bnsights-bbsf-admin-portal.umd.js +1945 -1154
- package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
- package/esm2015/lib/Pages/ActiveDirectories/active-directory/active-directory.component.js +1 -2
- package/esm2015/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.js +1 -2
- package/esm2015/lib/Pages/_layout/components/footer/footer.component.js +11 -2
- package/esm2015/lib/Pages/authentication/auth-callback/auth-callback.component.js +1 -2
- package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +61 -66
- package/esm2015/lib/Pages/departments/department/department.component.js +5 -5
- package/esm2015/lib/Pages/departments/department-info/department-info.component.js +3 -3
- package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +20 -23
- package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +6 -6
- package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +6 -6
- package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +51 -55
- package/esm2015/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.js +204 -0
- package/esm2015/lib/Pages/localizations/localizations.component.js +4 -3
- package/esm2015/lib/Pages/localizations/localizations.module.js +6 -6
- package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +9 -8
- package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +4 -4
- package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +7 -9
- package/esm2015/lib/Pages/notifications/edit/edit.component.js +5 -5
- package/esm2015/lib/Pages/notifications/edit-email/edit-email.component.js +16 -20
- package/esm2015/lib/Pages/notifications/edit-sms/edit-sms.component.js +11 -14
- package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +2 -2
- package/esm2015/lib/Pages/notifications/notifications-routing.module.js +5 -3
- package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +20 -24
- package/esm2015/lib/Pages/notifications/templates/templates.component.js +18 -21
- package/esm2015/lib/Pages/providers/provider/provider.component.js +112 -28
- package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +11 -11
- package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +3 -3
- package/esm2015/lib/Pages/roles/permissions/permissions.component.js +8 -7
- package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +11 -10
- package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +2 -2
- package/esm2015/lib/Pages/sectors/sector/sector.component.js +4 -5
- package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +3 -3
- package/esm2015/lib/Pages/shared/Enums/ProviderType.js +7 -0
- package/esm2015/lib/Pages/shared/Services/WorkflowActivityService.service.js +1 -1
- package/esm2015/lib/Pages/shared/Services/localizationsService.service .js +7 -1
- package/esm2015/lib/Pages/shared/Services/provider.service.js +7 -1
- package/esm2015/lib/Pages/shared/config/environment.js +2 -2
- package/esm2015/lib/Pages/shared/constants.js +130 -0
- package/esm2015/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentModel.js +2 -5
- package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.js +6 -0
- package/esm2015/lib/Pages/shared/models/Lookups/LookupGroupModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/Lookups/LookupItem.js +1 -1
- package/esm2015/lib/Pages/shared/models/Lookups/LookupModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.js +1 -1
- package/esm2015/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.js +1 -1
- package/esm2015/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.js +1 -1
- package/esm2015/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/NotificationsModels/TemplateDTO.js +1 -1
- package/esm2015/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.js +3 -0
- package/esm2015/lib/Pages/shared/models/ProviderModels/ProviderModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.js +3 -0
- package/esm2015/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/SectorModels/SectorModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/UserModels/AddUserModel.js +1 -3
- package/esm2015/lib/Pages/shared/models/UserModels/EditUserModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/WorkflowModels/WFActivityModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/WorkflowModels/WFCreationModel.js +1 -1
- package/esm2015/lib/Pages/shared/models/WorkflowModels/WFVariableModel.js +1 -1
- package/esm2015/lib/Pages/users/users.component.js +14 -15
- package/esm2015/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.js +33 -32
- package/esm2015/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.js +75 -99
- package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +25 -25
- package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +5 -5
- package/fesm2015/bnsights-bbsf-admin-portal.js +1754 -1109
- package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
- package/lib/Pages/_layout/components/footer/footer.component.d.ts +2 -0
- package/lib/Pages/configurations/configuration/configuration.component.d.ts +5 -6
- package/lib/Pages/departments/department/department.component.d.ts +2 -2
- package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +2 -2
- package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +2 -2
- package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +2 -2
- package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +4 -4
- package/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.d.ts +51 -0
- package/lib/Pages/localizations/localizations.module.d.ts +12 -11
- package/lib/Pages/lookups/lookup/lookup.component.d.ts +1 -1
- package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +1 -1
- package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +1 -2
- package/lib/Pages/notifications/edit/edit.component.d.ts +1 -2
- package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +1 -2
- package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +1 -2
- package/lib/Pages/notifications/template-info/template-info.component.d.ts +1 -1
- package/lib/Pages/notifications/templates/templates.component.d.ts +2 -2
- package/lib/Pages/providers/provider/provider.component.d.ts +28 -6
- package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +2 -2
- package/lib/Pages/roles/permissions/permissions.component.d.ts +1 -1
- package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +1 -1
- package/lib/Pages/sectors/sector/sector.component.d.ts +1 -1
- package/lib/Pages/shared/Enums/ProviderType.d.ts +5 -0
- package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +2 -2
- package/lib/Pages/shared/Services/localizationsService.service .d.ts +3 -0
- package/lib/Pages/shared/Services/provider.service.d.ts +4 -0
- package/lib/Pages/shared/constants.d.ts +129 -0
- package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +8 -9
- package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +1 -2
- package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +1 -1
- package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +3 -5
- package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +1 -1
- package/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.d.ts +4 -4
- package/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.d.ts +9 -0
- package/lib/Pages/shared/models/Lookups/LookupGroupModel.d.ts +1 -2
- package/lib/Pages/shared/models/Lookups/LookupItem.d.ts +3 -4
- package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +3 -4
- package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +1 -2
- package/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.d.ts +3 -3
- package/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.d.ts +1 -1
- package/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.d.ts +2 -2
- package/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.d.ts +1 -1
- package/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.d.ts +1 -1
- package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +5 -6
- package/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.d.ts +1 -2
- package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +2 -2
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +3 -3
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +1 -1
- package/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.d.ts +2 -2
- package/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.d.ts +7 -0
- package/lib/Pages/shared/models/ProviderModels/ProviderModel.d.ts +3 -3
- package/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.d.ts +6 -0
- package/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.d.ts +2 -3
- package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +1 -1
- package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +1 -2
- package/lib/Pages/shared/models/UserModels/AddUserModel.d.ts +3 -3
- package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +2 -2
- package/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.d.ts +2 -3
- package/lib/Pages/shared/models/WorkflowModels/WFActivityModel.d.ts +10 -11
- package/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.d.ts +3 -3
- package/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.d.ts +3 -3
- package/lib/Pages/shared/models/WorkflowModels/WFCreationModel.d.ts +1 -3
- package/lib/Pages/shared/models/WorkflowModels/WFVariableModel.d.ts +3 -3
- package/lib/Pages/users/users.component.d.ts +2 -2
- package/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.d.ts +1 -1
- package/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.d.ts +3 -4
- package/lib/Pages/workflows/tabs/tabs.component.d.ts +4 -4
- package/lib/Pages/workflows/workflow/workflow.component.d.ts +2 -2
- package/package.json +3 -3
- package/bnsights-bbsf-admin-portal-1.0.26.tgz +0 -0
- package/esm2015/lib/Pages/shared/Enums/ConfigurationScope.js +0 -8
- package/esm2015/lib/Pages/shared/Enums/ConfigurationType.js +0 -8
- package/esm2015/lib/Pages/shared/Enums/ConfigurationValueSource.js +0 -6
- package/esm2015/lib/Pages/shared/Enums/ParticipantType.js +0 -8
- package/lib/Pages/shared/Enums/ConfigurationScope.d.ts +0 -5
- package/lib/Pages/shared/Enums/ConfigurationType.d.ts +0 -6
- package/lib/Pages/shared/Enums/ConfigurationValueSource.d.ts +0 -4
- package/lib/Pages/shared/Enums/ParticipantType.d.ts +0 -6
|
@@ -3,9 +3,7 @@ import { Component } from '@angular/core';
|
|
|
3
3
|
import { FormGroup } from '@angular/forms';
|
|
4
4
|
import { CheckBoxOptions, ControlLayout, DropdownOptions, EnglishArabicDTO, FormOptions, InputType, MultiLingualTextAreaOptions, MultiLingualTextBoxOptions, TextBoxOptions, ToggleSlideOptions } from '@bnsights/bbsf-controls';
|
|
5
5
|
import { PageInfoService } from '../../../../../public-api';
|
|
6
|
-
import {
|
|
7
|
-
import { ParticipantType } from '../../../shared/Enums/ParticipantType';
|
|
8
|
-
import { WFActivityType } from '../../../shared/Enums/WFActivityType';
|
|
6
|
+
import { ActivityType, ParticipantType, Righthandsidetype } from '../../../shared/constants';
|
|
9
7
|
import { ParticipantModel } from '../../../shared/models/ImpersonationRuleModels/ParticipantModel';
|
|
10
8
|
import { WFActivityModel } from '../../../shared/models/WorkflowModels/WFActivityModel';
|
|
11
9
|
import { WFActivityOutcomeModel } from '../../../shared/models/WorkflowModels/WFActivityOutcomeModel';
|
|
@@ -63,11 +61,11 @@ export class WorkflowActivityEditComponent {
|
|
|
63
61
|
let paramArray = [];
|
|
64
62
|
let ResultModel = this.editworkflowActivityForm.value;
|
|
65
63
|
let editModel = new WFActivityModel();
|
|
66
|
-
editModel.
|
|
64
|
+
editModel.ID_GUID = this.activityID;
|
|
67
65
|
editModel.Name.English = ResultModel.name.English;
|
|
68
66
|
editModel.Name.Arabic = ResultModel.name.Arabic;
|
|
69
|
-
editModel.
|
|
70
|
-
editModel.
|
|
67
|
+
editModel.VersionID_GUID = this.versionID;
|
|
68
|
+
editModel.ActivityTypeItemID_GUID = this.activityTypeID;
|
|
71
69
|
editModel.SysName = ResultModel.sysName;
|
|
72
70
|
//If participant exists
|
|
73
71
|
if (ResultModel.participantTypes != undefined) {
|
|
@@ -78,10 +76,10 @@ export class WorkflowActivityEditComponent {
|
|
|
78
76
|
editModel.ParticipantDTO.PermissionSetIDsString = ResultModel.participantPermissionSet.toString();
|
|
79
77
|
}
|
|
80
78
|
}
|
|
81
|
-
switch (
|
|
82
|
-
case
|
|
83
|
-
case
|
|
84
|
-
case
|
|
79
|
+
switch (this.activityTypeID) {
|
|
80
|
+
case ActivityType.Approval:
|
|
81
|
+
case ActivityType.Action:
|
|
82
|
+
case ActivityType.PercentageTask:
|
|
85
83
|
editModel.TaskName.English = ResultModel.dynamicTaskName.English;
|
|
86
84
|
editModel.TaskName.Arabic = ResultModel.dynamicTaskName.Arabic;
|
|
87
85
|
editModel.TaskDescription.English = ResultModel.dynamicTaskDescription.English;
|
|
@@ -90,22 +88,22 @@ export class WorkflowActivityEditComponent {
|
|
|
90
88
|
editModel.TaskCorrlTypeID = ResultModel.dynamicTaskType != null ? Number(ResultModel.dynamicTaskType) : null;
|
|
91
89
|
editModel.CanCompleteFromTME = ResultModel.dynamicCanComplete;
|
|
92
90
|
break;
|
|
93
|
-
case
|
|
94
|
-
case
|
|
95
|
-
case
|
|
91
|
+
case ActivityType.Start:
|
|
92
|
+
case ActivityType.Email:
|
|
93
|
+
case ActivityType.Sleep:
|
|
96
94
|
if (!this.isPublished) {
|
|
97
95
|
editModel.NormalOutcomeName.English = ResultModel.staticOutcomeName.English;
|
|
98
96
|
editModel.NormalOutcomeName.Arabic = ResultModel.staticOutcomeName.Arabic;
|
|
99
97
|
editModel.OutcomeSysName = ResultModel.staticOutcomeSysName;
|
|
100
|
-
editModel.
|
|
98
|
+
editModel.NextActivityID_GUID = ResultModel.staticOutcomeNextActivity;
|
|
101
99
|
editModel.CanAddComment = ResultModel.staticOutcomeCanAddComment;
|
|
102
100
|
}
|
|
103
101
|
break;
|
|
104
|
-
case
|
|
105
|
-
editModel.
|
|
106
|
-
editModel.
|
|
107
|
-
editModel.
|
|
108
|
-
editModel.
|
|
102
|
+
case ActivityType.Condition:
|
|
103
|
+
editModel.LHSVariableID_GUID = ResultModel.conditionLHSDropDown;
|
|
104
|
+
editModel.RHSVariableID_GUID = ResultModel.conditionRHSDropDown;
|
|
105
|
+
editModel.RHSTypeItemID_GUID = ResultModel.conditionRHSTypeDropDown;
|
|
106
|
+
editModel.OperatorTypeItemID_GUID = ResultModel.conditionsDropDown;
|
|
109
107
|
editModel.RHSValue = ResultModel.conditionRHSValue != undefined ? ResultModel.conditionRHSValue : null;
|
|
110
108
|
break;
|
|
111
109
|
}
|
|
@@ -124,11 +122,11 @@ export class WorkflowActivityEditComponent {
|
|
|
124
122
|
let outcomeActivity = ResultModel["outcomeNextActivityTypes" + j];
|
|
125
123
|
let outcomeCanAddComment = ResultModel["outcomeCanAddComment" + j];
|
|
126
124
|
let activityOutcome = new WFActivityOutcomeModel();
|
|
127
|
-
activityOutcome.
|
|
125
|
+
activityOutcome.ID_GUID = outcomeID;
|
|
128
126
|
activityOutcome.NameEN = outcomeName.English;
|
|
129
127
|
activityOutcome.NameAR = outcomeName.Arabic;
|
|
130
128
|
activityOutcome.OutcomeSysName = outcomeSysName;
|
|
131
|
-
activityOutcome.
|
|
129
|
+
activityOutcome.NextActivityID_GUID = outcomeActivity;
|
|
132
130
|
activityOutcome.CanAddComment = outcomeCanAddComment;
|
|
133
131
|
editModel.Outcomes.push(activityOutcome);
|
|
134
132
|
}
|
|
@@ -145,7 +143,7 @@ export class WorkflowActivityEditComponent {
|
|
|
145
143
|
this.cancelEdit();
|
|
146
144
|
};
|
|
147
145
|
this.activatedRoute.params.subscribe(params => {
|
|
148
|
-
this.
|
|
146
|
+
this.activityID = params['activityid'];
|
|
149
147
|
});
|
|
150
148
|
}
|
|
151
149
|
ngOnInit() {
|
|
@@ -167,15 +165,16 @@ export class WorkflowActivityEditComponent {
|
|
|
167
165
|
}
|
|
168
166
|
//Initialize edit model and required DDLs
|
|
169
167
|
initializePage() {
|
|
170
|
-
this.workflowActivityService.getEditWorkFlowActivityData(this.
|
|
168
|
+
this.workflowActivityService.getEditWorkFlowActivityData(this.activityID).subscribe((result) => {
|
|
169
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
171
170
|
let resultObj = result;
|
|
172
171
|
this.activityModel = resultObj.model;
|
|
173
172
|
var list = resultObj.list;
|
|
174
173
|
this.ActivityTypeList = resultObj.activityList;
|
|
175
174
|
this.nextActivityList = list.activities;
|
|
176
|
-
this.activityTypeID = this.activityModel.
|
|
175
|
+
this.activityTypeID = (_a = this.activityModel.activityTypeItemID_GUID) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
177
176
|
this.isPublished = this.activityModel.isPublished;
|
|
178
|
-
this.versionID = this.activityModel.
|
|
177
|
+
this.versionID = this.activityModel.versionID_GUID;
|
|
179
178
|
this.editworkflowActivityForm = new FormGroup({});
|
|
180
179
|
this.editworkflowActivityFormOptions = new FormOptions();
|
|
181
180
|
this.editworkflowActivityFormOptions.FormGroup = this.editworkflowActivityForm;
|
|
@@ -196,10 +195,10 @@ export class WorkflowActivityEditComponent {
|
|
|
196
195
|
this.outcomesCount = outcomesResult[1];
|
|
197
196
|
this.showActivityType = false;
|
|
198
197
|
if (this.isPublished) {
|
|
199
|
-
switch (
|
|
200
|
-
case
|
|
201
|
-
case
|
|
202
|
-
case
|
|
198
|
+
switch (this.activityTypeID) {
|
|
199
|
+
case ActivityType.Approval:
|
|
200
|
+
case ActivityType.Action:
|
|
201
|
+
case ActivityType.PercentageTask:
|
|
203
202
|
this.taskTypeList = list.tasks;
|
|
204
203
|
let taskName = new EnglishArabicDTO();
|
|
205
204
|
taskName.English = this.activityModel.taskName.english;
|
|
@@ -229,8 +228,7 @@ export class WorkflowActivityEditComponent {
|
|
|
229
228
|
this.dynamicTaskType.SingleSelection = true;
|
|
230
229
|
this.dynamicTaskType.AllowSearchFilter = true;
|
|
231
230
|
this.dynamicTaskType.IsRequired = true;
|
|
232
|
-
this.dynamicTaskType.SelectedItems = this.
|
|
233
|
-
;
|
|
231
|
+
this.dynamicTaskType.SelectedItems = (_b = this.activityModel.taskCorrlTypeID) === null || _b === void 0 ? void 0 : _b.toLowerCase();
|
|
234
232
|
this.dynamicCanComplete = new ToggleSlideOptions();
|
|
235
233
|
this.dynamicCanComplete.Name = "dynamicCanComplete";
|
|
236
234
|
this.dynamicCanComplete.LabelKey = "CanCompleteFromTME";
|
|
@@ -238,7 +236,7 @@ export class WorkflowActivityEditComponent {
|
|
|
238
236
|
this.dynamicCanComplete.Value = this.activityModel.canCompleteFromTME;
|
|
239
237
|
this.showDynamicControls = true;
|
|
240
238
|
break;
|
|
241
|
-
case
|
|
239
|
+
case ActivityType.Condition:
|
|
242
240
|
this.conditionLHSWFVariableList = list.wfVariables;
|
|
243
241
|
this.conditionRHSWFVariableList = list.wfVariables;
|
|
244
242
|
this.conditionRHSTypeList = list.rhsTypes;
|
|
@@ -251,8 +249,7 @@ export class WorkflowActivityEditComponent {
|
|
|
251
249
|
this.conditionLHSDropDown.SingleSelection = true;
|
|
252
250
|
this.conditionLHSDropDown.AllowSearchFilter = true;
|
|
253
251
|
this.conditionLHSDropDown.IsRequired = true;
|
|
254
|
-
this.conditionLHSDropDown.SelectedItems = this.
|
|
255
|
-
;
|
|
252
|
+
this.conditionLHSDropDown.SelectedItems = (_c = this.activityModel.lhsVariableID_GUID) === null || _c === void 0 ? void 0 : _c.toLowerCase();
|
|
256
253
|
this.conditionsDropDown = new DropdownOptions();
|
|
257
254
|
this.conditionsDropDown.Name = "conditionsDropDown";
|
|
258
255
|
this.conditionsDropDown.HideLabel = true;
|
|
@@ -260,17 +257,15 @@ export class WorkflowActivityEditComponent {
|
|
|
260
257
|
this.conditionsDropDown.DataSource = this.conditionList;
|
|
261
258
|
this.conditionsDropDown.SingleSelection = true;
|
|
262
259
|
this.conditionsDropDown.IsRequired = true;
|
|
263
|
-
this.conditionsDropDown.SelectedItems = this.
|
|
264
|
-
;
|
|
260
|
+
this.conditionsDropDown.SelectedItems = (_d = this.activityModel.operatorTypeItemID_GUID) === null || _d === void 0 ? void 0 : _d.toLowerCase();
|
|
265
261
|
this.conditionRHSTypeDropDown = new DropdownOptions();
|
|
266
262
|
this.conditionRHSTypeDropDown.Name = "conditionRHSTypeDropDown";
|
|
267
263
|
this.conditionRHSTypeDropDown.HideLabel = true;
|
|
268
264
|
this.conditionRHSTypeDropDown.DataSource = this.conditionRHSTypeList;
|
|
269
265
|
this.conditionRHSTypeDropDown.SingleSelection = true;
|
|
270
266
|
this.conditionRHSTypeDropDown.IsRequired = true;
|
|
271
|
-
this.conditionRHSTypeDropDown.SelectedItems = this.
|
|
272
|
-
|
|
273
|
-
if (this.activityModel.rhsTypeItemID == ConditionRHSType.Variable) {
|
|
267
|
+
this.conditionRHSTypeDropDown.SelectedItems = (_e = this.activityModel.rhsTypeItemID_GUID) === null || _e === void 0 ? void 0 : _e.toLowerCase();
|
|
268
|
+
if (((_f = this.activityModel.RHSTypeItemID_GUID) === null || _f === void 0 ? void 0 : _f.toLowerCase()) == Righthandsidetype.Variable) {
|
|
274
269
|
this.conditionRHSDropDown = new DropdownOptions();
|
|
275
270
|
this.conditionRHSDropDown.Name = "conditionRHSDropDown";
|
|
276
271
|
this.conditionRHSDropDown.HideLabel = true;
|
|
@@ -278,8 +273,7 @@ export class WorkflowActivityEditComponent {
|
|
|
278
273
|
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
279
274
|
this.conditionRHSDropDown.SingleSelection = true;
|
|
280
275
|
this.conditionRHSDropDown.IsRequired = true;
|
|
281
|
-
this.conditionRHSDropDown.SelectedItems = this.
|
|
282
|
-
;
|
|
276
|
+
this.conditionRHSDropDown.SelectedItems = (_g = this.activityModel.rhsVariableID_GUID) === null || _g === void 0 ? void 0 : _g.toLowerCase();
|
|
283
277
|
this.showConditionRHSWFVariable = true;
|
|
284
278
|
}
|
|
285
279
|
else {
|
|
@@ -304,7 +298,7 @@ export class WorkflowActivityEditComponent {
|
|
|
304
298
|
this.sysName.Type = InputType.Text;
|
|
305
299
|
this.sysName.IsRequired = true;
|
|
306
300
|
this.sysName.Value = this.activityModel.sysName;
|
|
307
|
-
if (this.
|
|
301
|
+
if (this.activityTypeID != ActivityType.Start) {
|
|
308
302
|
this.showActivityType = true;
|
|
309
303
|
this.activityType = new DropdownOptions();
|
|
310
304
|
this.activityType.Name = "activityType";
|
|
@@ -313,13 +307,12 @@ export class WorkflowActivityEditComponent {
|
|
|
313
307
|
this.activityType.SingleSelection = true;
|
|
314
308
|
this.activityType.AllowSearchFilter = true;
|
|
315
309
|
this.activityType.IsRequired = true;
|
|
316
|
-
this.activityType.SelectedItems = this.
|
|
317
|
-
;
|
|
310
|
+
this.activityType.SelectedItems = this.activityTypeID;
|
|
318
311
|
}
|
|
319
|
-
switch (
|
|
320
|
-
case
|
|
321
|
-
case
|
|
322
|
-
case
|
|
312
|
+
switch (this.activityTypeID) {
|
|
313
|
+
case ActivityType.Approval:
|
|
314
|
+
case ActivityType.Action:
|
|
315
|
+
case ActivityType.PercentageTask:
|
|
323
316
|
this.taskTypeList = list.tasks;
|
|
324
317
|
this.participantTypeList = list.participants.participantTypes;
|
|
325
318
|
this.participantDataList = list.participants.participantData;
|
|
@@ -330,7 +323,6 @@ export class WorkflowActivityEditComponent {
|
|
|
330
323
|
taskDescription.English = this.activityModel.taskDescription.english;
|
|
331
324
|
taskDescription.Arabic = this.activityModel.taskDescription.arabic;
|
|
332
325
|
//Initialize required controls for approval
|
|
333
|
-
let selectedParticipantTypes = this.activityModel.participantTypeItemIDsStringList.map((i) => Number(i));
|
|
334
326
|
this.participantTypes = new DropdownOptions();
|
|
335
327
|
this.participantTypes.Name = "participantTypes";
|
|
336
328
|
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
@@ -338,20 +330,15 @@ export class WorkflowActivityEditComponent {
|
|
|
338
330
|
this.participantTypes.SingleSelection = false;
|
|
339
331
|
this.participantTypes.AllowSearchFilter = true;
|
|
340
332
|
this.participantTypes.IsRequired = true;
|
|
341
|
-
this.participantTypes.SelectedItems = this.
|
|
342
|
-
|
|
343
|
-
}).map((item) => item.key);
|
|
344
|
-
if (selectedParticipantTypes.includes(Number(ParticipantType.PermissionSet))) {
|
|
345
|
-
let selectedPermissionSets = this.activityModel.participantPermsetsIDsString.map((i) => Number(i));
|
|
333
|
+
this.participantTypes.SelectedItems = this.activityModel.participantTypeItemIDsStringList;
|
|
334
|
+
if (this.activityModel.participantTypeItemIDsStringList.includes(ParticipantType.PermissionSet)) {
|
|
346
335
|
this.participantPermissionSet = new DropdownOptions();
|
|
347
336
|
this.participantPermissionSet.Name = "participantPermissionSet";
|
|
348
337
|
this.participantPermissionSet.LabelKey = "PermissionSet";
|
|
349
338
|
this.participantPermissionSet.DataSource = this.participantDataList;
|
|
350
339
|
this.participantPermissionSet.SingleSelection = false;
|
|
351
340
|
this.participantPermissionSet.AllowSearchFilter = true;
|
|
352
|
-
this.participantPermissionSet.SelectedItems = this.
|
|
353
|
-
return selectedPermissionSets.indexOf(parseInt(tag.key)) >= 0;
|
|
354
|
-
}).map((item) => item.key);
|
|
341
|
+
this.participantPermissionSet.SelectedItems = this.activityModel.participantPermsetsIDsString;
|
|
355
342
|
this.showParticipantPermssionSet = true;
|
|
356
343
|
}
|
|
357
344
|
this.dynamicTaskName = new MultiLingualTextBoxOptions();
|
|
@@ -376,8 +363,7 @@ export class WorkflowActivityEditComponent {
|
|
|
376
363
|
this.dynamicTaskType.SingleSelection = true;
|
|
377
364
|
this.dynamicTaskType.AllowSearchFilter = true;
|
|
378
365
|
this.dynamicTaskType.IsRequired = true;
|
|
379
|
-
this.dynamicTaskType.SelectedItems = this.
|
|
380
|
-
;
|
|
366
|
+
this.dynamicTaskType.SelectedItems = (_h = this.activityModel.taskCorrlTypeID) === null || _h === void 0 ? void 0 : _h.toString();
|
|
381
367
|
this.dynamicCanComplete = new ToggleSlideOptions();
|
|
382
368
|
this.dynamicCanComplete.Name = "dynamicCanComplete";
|
|
383
369
|
this.dynamicCanComplete.LabelKey = "CanCompleteFromTME";
|
|
@@ -387,13 +373,12 @@ export class WorkflowActivityEditComponent {
|
|
|
387
373
|
this.showParticipantContainer = true;
|
|
388
374
|
this.showOutcomesContainer = true;
|
|
389
375
|
break;
|
|
390
|
-
case
|
|
391
|
-
case
|
|
392
|
-
case
|
|
393
|
-
if (
|
|
376
|
+
case ActivityType.Start:
|
|
377
|
+
case ActivityType.Email:
|
|
378
|
+
case ActivityType.Sleep:
|
|
379
|
+
if (this.activityTypeID == ActivityType.Email) {
|
|
394
380
|
this.participantTypeList = list.participants.participantTypes;
|
|
395
381
|
this.participantDataList = list.participants.participantData;
|
|
396
|
-
let selectedParticipantTypes = this.activityModel.participantTypeItemIDsStringList.map((i) => Number(i));
|
|
397
382
|
this.participantTypes = new DropdownOptions();
|
|
398
383
|
this.participantTypes.Name = "participantTypes";
|
|
399
384
|
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
@@ -401,20 +386,15 @@ export class WorkflowActivityEditComponent {
|
|
|
401
386
|
this.participantTypes.SingleSelection = false;
|
|
402
387
|
this.participantTypes.AllowSearchFilter = true;
|
|
403
388
|
this.participantTypes.IsRequired = true;
|
|
404
|
-
this.participantTypes.SelectedItems = this.
|
|
405
|
-
|
|
406
|
-
}).map((item) => item.key);
|
|
407
|
-
if (selectedParticipantTypes.includes(Number(ParticipantType.PermissionSet))) {
|
|
408
|
-
let selectedPermissionSets = this.activityModel.participantPermsetsIDsString.map((i) => Number(i));
|
|
389
|
+
this.participantTypes.SelectedItems = this.activityModel.participantTypeItemIDsStringList;
|
|
390
|
+
if (this.activityModel.participantTypeItemIDsStringList.includes(ParticipantType.PermissionSet)) {
|
|
409
391
|
this.participantPermissionSet = new DropdownOptions();
|
|
410
392
|
this.participantPermissionSet.Name = "participantPermissionSet";
|
|
411
393
|
this.participantPermissionSet.LabelKey = "PermissionSet";
|
|
412
394
|
this.participantPermissionSet.DataSource = this.participantDataList;
|
|
413
395
|
this.participantPermissionSet.SingleSelection = false;
|
|
414
396
|
this.participantPermissionSet.AllowSearchFilter = true;
|
|
415
|
-
this.participantPermissionSet.SelectedItems = this.
|
|
416
|
-
return selectedPermissionSets.indexOf(parseInt(tag.key)) >= 0;
|
|
417
|
-
}).map((item) => item.key);
|
|
397
|
+
this.participantPermissionSet.SelectedItems = this.activityModel.participantPermsetsIDsString;
|
|
418
398
|
this.showParticipantPermssionSet = true;
|
|
419
399
|
}
|
|
420
400
|
this.showParticipantContainer = true;
|
|
@@ -441,8 +421,7 @@ export class WorkflowActivityEditComponent {
|
|
|
441
421
|
this.staticOutcomeNextActivity.SingleSelection = true;
|
|
442
422
|
this.staticOutcomeNextActivity.AllowSearchFilter = true;
|
|
443
423
|
this.staticOutcomeNextActivity.IsRequired = true;
|
|
444
|
-
this.staticOutcomeNextActivity.SelectedItems = this.
|
|
445
|
-
;
|
|
424
|
+
this.staticOutcomeNextActivity.SelectedItems = (_j = this.activityModel.nextActivityID_GUID) === null || _j === void 0 ? void 0 : _j.toLowerCase();
|
|
446
425
|
this.staticOutcomeCanAddComment = new ToggleSlideOptions();
|
|
447
426
|
this.staticOutcomeCanAddComment.Name = "staticOutcomeCanAddComment";
|
|
448
427
|
this.staticOutcomeCanAddComment.LabelKey = "CanAddComment";
|
|
@@ -450,7 +429,7 @@ export class WorkflowActivityEditComponent {
|
|
|
450
429
|
this.staticOutcomeCanAddComment.Value = this.activityModel.canAddComment;
|
|
451
430
|
this.showStaticControls = true;
|
|
452
431
|
break;
|
|
453
|
-
case
|
|
432
|
+
case ActivityType.Condition:
|
|
454
433
|
this.conditionLHSWFVariableList = list.wfVariables;
|
|
455
434
|
this.conditionRHSWFVariableList = list.wfVariables;
|
|
456
435
|
this.conditionRHSTypeList = list.rhsTypes;
|
|
@@ -463,8 +442,7 @@ export class WorkflowActivityEditComponent {
|
|
|
463
442
|
this.conditionLHSDropDown.SingleSelection = true;
|
|
464
443
|
this.conditionLHSDropDown.AllowSearchFilter = true;
|
|
465
444
|
this.conditionLHSDropDown.IsRequired = true;
|
|
466
|
-
this.conditionLHSDropDown.SelectedItems = this.
|
|
467
|
-
;
|
|
445
|
+
this.conditionLHSDropDown.SelectedItems = (_k = this.activityModel.lhsVariableID_GUID) === null || _k === void 0 ? void 0 : _k.toLowerCase();
|
|
468
446
|
this.conditionsDropDown = new DropdownOptions();
|
|
469
447
|
this.conditionsDropDown.Name = "conditionsDropDown";
|
|
470
448
|
this.conditionsDropDown.HideLabel = true;
|
|
@@ -472,17 +450,15 @@ export class WorkflowActivityEditComponent {
|
|
|
472
450
|
this.conditionsDropDown.DataSource = this.conditionList;
|
|
473
451
|
this.conditionsDropDown.SingleSelection = true;
|
|
474
452
|
this.conditionsDropDown.IsRequired = true;
|
|
475
|
-
this.conditionsDropDown.SelectedItems = this.
|
|
476
|
-
;
|
|
453
|
+
this.conditionsDropDown.SelectedItems = (_l = this.activityModel.operatorTypeItemID_GUID) === null || _l === void 0 ? void 0 : _l.toLowerCase();
|
|
477
454
|
this.conditionRHSTypeDropDown = new DropdownOptions();
|
|
478
455
|
this.conditionRHSTypeDropDown.Name = "conditionRHSTypeDropDown";
|
|
479
456
|
this.conditionRHSTypeDropDown.HideLabel = true;
|
|
480
457
|
this.conditionRHSTypeDropDown.DataSource = this.conditionRHSTypeList;
|
|
481
458
|
this.conditionRHSTypeDropDown.SingleSelection = true;
|
|
482
459
|
this.conditionRHSTypeDropDown.IsRequired = true;
|
|
483
|
-
this.conditionRHSTypeDropDown.SelectedItems = this.
|
|
484
|
-
|
|
485
|
-
if (this.activityModel.rhsTypeItemID == ConditionRHSType.Variable) {
|
|
460
|
+
this.conditionRHSTypeDropDown.SelectedItems = (_m = this.activityModel.rhsTypeItemID_GUID) === null || _m === void 0 ? void 0 : _m.toLowerCase();
|
|
461
|
+
if (((_o = this.activityModel.rhsTypeItemID_GUID) === null || _o === void 0 ? void 0 : _o.toLowerCase()) == Righthandsidetype.Variable) {
|
|
486
462
|
this.conditionRHSDropDown = new DropdownOptions();
|
|
487
463
|
this.conditionRHSDropDown.Name = "conditionRHSDropDown";
|
|
488
464
|
this.conditionRHSDropDown.HideLabel = true;
|
|
@@ -490,8 +466,7 @@ export class WorkflowActivityEditComponent {
|
|
|
490
466
|
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
491
467
|
this.conditionRHSDropDown.SingleSelection = true;
|
|
492
468
|
this.conditionRHSDropDown.IsRequired = true;
|
|
493
|
-
this.conditionRHSDropDown.SelectedItems = this.
|
|
494
|
-
;
|
|
469
|
+
this.conditionRHSDropDown.SelectedItems = (_p = this.activityModel.rhsVariableID_GUID) === null || _p === void 0 ? void 0 : _p.toLowerCase();
|
|
495
470
|
this.showConditionRHSWFVariable = true;
|
|
496
471
|
}
|
|
497
472
|
else {
|
|
@@ -514,6 +489,7 @@ export class WorkflowActivityEditComponent {
|
|
|
514
489
|
}
|
|
515
490
|
//Outcome functions
|
|
516
491
|
getActivityOutcomesOptions(outComes, isPublished) {
|
|
492
|
+
var _a;
|
|
517
493
|
let outcomesOptions = [];
|
|
518
494
|
let outcomesCount = 0;
|
|
519
495
|
for (let i = 0; i < outComes.length; i++) {
|
|
@@ -523,7 +499,7 @@ export class WorkflowActivityEditComponent {
|
|
|
523
499
|
outcomeID.Name = "outcomeID" + i;
|
|
524
500
|
outcomeID.HideLabel = true;
|
|
525
501
|
outcomeID.Type = InputType.Text;
|
|
526
|
-
outcomeID.Value = currentOutcome.
|
|
502
|
+
outcomeID.Value = currentOutcome.iD_GUID;
|
|
527
503
|
let name = new EnglishArabicDTO();
|
|
528
504
|
name.English = currentOutcome.nameEN;
|
|
529
505
|
name.Arabic = currentOutcome.nameAR;
|
|
@@ -539,8 +515,7 @@ export class WorkflowActivityEditComponent {
|
|
|
539
515
|
outcomeNextActivityTypes.DataSource = this.nextActivityList;
|
|
540
516
|
outcomeNextActivityTypes.SingleSelection = true;
|
|
541
517
|
outcomeNextActivityTypes.AllowSearchFilter = true;
|
|
542
|
-
outcomeNextActivityTypes.SelectedItems =
|
|
543
|
-
;
|
|
518
|
+
outcomeNextActivityTypes.SelectedItems = (_a = currentOutcome.nextActivityID_GUID) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
544
519
|
let outcomeCanEdit;
|
|
545
520
|
outcomeCanEdit = currentOutcome.canEdit;
|
|
546
521
|
let outcomeHiddeneSysName = new TextBoxOptions();
|
|
@@ -578,7 +553,6 @@ export class WorkflowActivityEditComponent {
|
|
|
578
553
|
outcomeID.Name = "outcomeID" + index;
|
|
579
554
|
outcomeID.HideLabel = true;
|
|
580
555
|
outcomeID.Type = InputType.Text;
|
|
581
|
-
outcomeID.Value = 0;
|
|
582
556
|
let outcomeName = new MultiLingualTextBoxOptions();
|
|
583
557
|
outcomeName.Name = "outcomeName" + index;
|
|
584
558
|
outcomeName.ArabicLabelKey = "NameInArabic";
|
|
@@ -611,7 +585,6 @@ export class WorkflowActivityEditComponent {
|
|
|
611
585
|
this.outcomesCount += 1;
|
|
612
586
|
}
|
|
613
587
|
deleteOutcome(deletedOutcome) {
|
|
614
|
-
debugger;
|
|
615
588
|
let deletedOutcomeIndex = this.outcomesOptions.indexOf(deletedOutcome);
|
|
616
589
|
if (deletedOutcomeIndex !== -1) {
|
|
617
590
|
this.outcomesOptions.splice(deletedOutcomeIndex, 1);
|
|
@@ -622,6 +595,7 @@ export class WorkflowActivityEditComponent {
|
|
|
622
595
|
}
|
|
623
596
|
//On changes events
|
|
624
597
|
activityTypeOnChange(activityType) {
|
|
598
|
+
activityType = activityType === null || activityType === void 0 ? void 0 : activityType.toLowerCase();
|
|
625
599
|
//Reset controls, outcomes and flags
|
|
626
600
|
this.resetAllActivityTypeControls();
|
|
627
601
|
this.outcomesOptions = [];
|
|
@@ -638,10 +612,10 @@ export class WorkflowActivityEditComponent {
|
|
|
638
612
|
var model = resultObj.model;
|
|
639
613
|
var list = resultObj.list;
|
|
640
614
|
this.nextActivityList = list.activities;
|
|
641
|
-
switch (
|
|
642
|
-
case
|
|
643
|
-
case
|
|
644
|
-
case
|
|
615
|
+
switch (activityType) {
|
|
616
|
+
case ActivityType.Approval:
|
|
617
|
+
case ActivityType.Action:
|
|
618
|
+
case ActivityType.PercentageTask:
|
|
645
619
|
this.taskTypeList = list.tasks;
|
|
646
620
|
this.participantTypeList = list.participants.participantTypes;
|
|
647
621
|
this.participantDataList = list.participants.participantData;
|
|
@@ -684,8 +658,8 @@ export class WorkflowActivityEditComponent {
|
|
|
684
658
|
this.showParticipantContainer = true;
|
|
685
659
|
this.showOutcomesContainer = true;
|
|
686
660
|
break;
|
|
687
|
-
case
|
|
688
|
-
case
|
|
661
|
+
case ActivityType.Email:
|
|
662
|
+
case ActivityType.Sleep:
|
|
689
663
|
let name = new EnglishArabicDTO();
|
|
690
664
|
name.Arabic = model.normalOutcomeName.arabic;
|
|
691
665
|
name.English = model.normalOutcomeName.english;
|
|
@@ -714,7 +688,7 @@ export class WorkflowActivityEditComponent {
|
|
|
714
688
|
this.staticOutcomeCanAddComment.Value = model.canAddComment;
|
|
715
689
|
this.showStaticControls = true;
|
|
716
690
|
break;
|
|
717
|
-
case
|
|
691
|
+
case ActivityType.Condition:
|
|
718
692
|
this.conditionLHSWFVariableList = list.wfVariables;
|
|
719
693
|
this.conditionRHSWFVariableList = list.wfVariables;
|
|
720
694
|
this.conditionRHSTypeList = list.rhsTypes;
|
|
@@ -734,7 +708,7 @@ export class WorkflowActivityEditComponent {
|
|
|
734
708
|
this.conditionsDropDown.DataSource = this.conditionList;
|
|
735
709
|
this.conditionsDropDown.SingleSelection = true;
|
|
736
710
|
this.conditionsDropDown.IsRequired = true;
|
|
737
|
-
let selectedRHSType = this.conditionRHSTypeList.filter((item) => { return item.key ==
|
|
711
|
+
let selectedRHSType = this.conditionRHSTypeList.filter((item) => { var _a; return ((_a = item.key) === null || _a === void 0 ? void 0 : _a.toLowerCase()) == Righthandsidetype.Variable; }).map((item) => item.key)[0];
|
|
738
712
|
this.conditionRHSTypeDropDown = new DropdownOptions();
|
|
739
713
|
this.conditionRHSTypeDropDown.Name = "conditionRHSTypeDropDown";
|
|
740
714
|
this.conditionRHSTypeDropDown.HideLabel = true;
|
|
@@ -761,7 +735,8 @@ export class WorkflowActivityEditComponent {
|
|
|
761
735
|
});
|
|
762
736
|
}
|
|
763
737
|
conditionRHSTypeOnChange(type) {
|
|
764
|
-
|
|
738
|
+
type = type === null || type === void 0 ? void 0 : type.toLowerCase();
|
|
739
|
+
if (type == Righthandsidetype.Variable) {
|
|
765
740
|
this.editworkflowActivityForm.removeControl("conditionRHSValue");
|
|
766
741
|
this.conditionRHSDropDown = new DropdownOptions();
|
|
767
742
|
this.conditionRHSDropDown.Name = "conditionRHSDropDown";
|
|
@@ -784,6 +759,7 @@ export class WorkflowActivityEditComponent {
|
|
|
784
759
|
}
|
|
785
760
|
}
|
|
786
761
|
participantTypeOnChange(participantType) {
|
|
762
|
+
participantType = participantType === null || participantType === void 0 ? void 0 : participantType.toLowerCase();
|
|
787
763
|
if (participantType == ParticipantType.PermissionSet) {
|
|
788
764
|
this.participantPermissionSet = new DropdownOptions();
|
|
789
765
|
this.participantPermissionSet.Name = "participantPermissionSet";
|
|
@@ -849,4 +825,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
849
825
|
templateUrl: './workflow-activity-edit.component.html'
|
|
850
826
|
}]
|
|
851
827
|
}], ctorParameters: function () { return [{ type: i1.WorkflowActivityService }, { type: i2.PageInfoService }, { type: i3.UtilityService }, { type: i4.ActivatedRoute }, { type: i4.Router }, { type: i3.RequestHandlerService }, { type: i3.BBSFTranslateService }]; } });
|
|
852
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWN0aXZpdHktZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3dvcmtmbG93cy9hY3Rpdml0eS93b3JrZmxvdy1hY3Rpdml0eS1lZGl0L3dvcmtmbG93LWFjdGl2aXR5LWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvYWN0aXZpdHkvd29ya2Zsb3ctYWN0aXZpdHktZWRpdC93b3JrZmxvdy1hY3Rpdml0eS1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSwwQkFBMEIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdqTyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDeEYsT0FBTyxF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Q0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLDBCQUEwQixHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FFekU7SUFDSCxDQUFDO0lBRUQsUUFBUTtJQUNSLFVBQVU7UUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsWUFBWTtJQUNaLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7MkhBajlCVSw2QkFBNkI7K0dBQTdCLDZCQUE2QixrRUNuQjFDLDgxWEEyUEE7NEZEeE9hLDZCQUE2QjtrQkFKekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxXQUFXLEVBQUUseUNBQXlDO2lCQUN2RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucywgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGb3JtT3B0aW9ucywgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBCQlNGVHJhbnNsYXRlU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vcHVibGljLWFwaSc7XHJcbmltcG9ydCB7IENvbmRpdGlvblJIU1R5cGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvRW51bXMvQ29uZGl0aW9uUkhTVHlwZSc7XHJcbmltcG9ydCB7IFBhcnRpY2lwYW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9QYXJ0aWNpcGFudFR5cGUnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9XRkFjdGl2aXR5VHlwZSc7XHJcbmltcG9ydCB7IFBhcnRpY2lwYW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL1BhcnRpY2lwYW50TW9kZWwnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlNb2RlbCc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlPdXRjb21lTW9kZWwnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9Xb3JrZmxvd0FjdGl2aXR5U2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXdvcmtmbG93LWFjdGl2aXR5LWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1hY3Rpdml0eS1lZGl0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dBY3Rpdml0eUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBpc0VkaXRGb3JtTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmVyc2lvbklEOiBudW1iZXI7XHJcbiAgYWN0aXZpdHlJRDogbnVtYmVyO1xyXG4gIGFjdGl2aXR5SURFbmM6IHN0cmluZztcclxuICBhY3Rpdml0eU1vZGVsOiBhbnk7XHJcbiAgaXNQdWJsaXNoZWQ6IGJvb2xlYW47XHJcblxyXG4gIC8vRWRpdCBBY3Rpdml0eSBzaGFyZWQgY29udHJvbHNcclxuICBlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIG5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIGNhbkFkZE91dGNvbWU6IGJvb2xlYW47XHJcbiAgYWN0aXZpdHlUeXBlSUQ6IG51bWJlcjtcclxuICBzaG93QWN0aXZpdHlUeXBlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vTm9uIHB1Ymxpc2hlZCBBY3Rpdml0eSBjb250cm9sc1xyXG4gIHN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFjdGl2aXR5VHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICAvL1NoYXJlZCBQYXJ0aWNpcGFudCB0eXBlIGFuZCBkYXRhIChOb24gUHVibGlzaGVkIG9ubHkpXHJcbiAgc2hvd1BhcnRpY2lwYW50Q29udGFpbmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFydGljaXBhbnRUeXBlczogRHJvcGRvd25PcHRpb25zO1xyXG4gIHBhcnRpY2lwYW50UGVybWlzc2lvblNldDogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICAvL0R5bmFtaWMgVHlwZXMgQ29udHJvbHMgLy8oQXBwcm92YWwsQWN0aW9uLFBlcmNlbnRhZ2UpXHJcbiAgc2hvd0R5bmFtaWNDb250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGR5bmFtaWNUYXNrTmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgZHluYW1pY1Rhc2tEZXNjcmlwdGlvbjogTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zO1xyXG4gIGR5bmFtaWNUYXNrVVJMOiBUZXh0Qm94T3B0aW9ucztcclxuICBkeW5hbWljVGFza1R5cGU6IERyb3Bkb3duT3B0aW9uczsgXHJcbiAgZHluYW1pY0NhbkNvbXBsZXRlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcblxyXG4gIC8vU3RhdGljIHR5cGVzIGNvbnRyb2xzIChFbWFpbCxTbGVlcCkgKE5vbiBwdWJsaXNoZWQgb25seSlcclxuICAvL0VtYWlsIFR5cGUgQ29udHJvbHMgLy8rIGluaXRpYWxpemUgcGFydGljaXBhbnRcclxuICBzaG93U3RhdGljQ29udHJvbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGF0aWNPdXRjb21lTmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgc3RhdGljT3V0Y29tZVN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIHN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHk6IERyb3Bkb3duT3B0aW9ucztcclxuICBzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG5cclxuICAvL0NvbmRpdGlvbiB0eXBlIGNvbnRyb2xzXHJcbiAgc2hvd0NvbmRpdGlvbkNvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29uZGl0aW9uTEhTRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25zRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNUeXBlRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNEcm9wRG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIGNvbmRpdGlvblJIU1ZhbHVlOiBUZXh0Qm94T3B0aW9ucztcclxuICBzaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL1NoYXJlZCByZXF1aXJlZCBsaXN0c1xyXG4gIEFjdGl2aXR5VHlwZUxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIC8vT3V0Y29tZXMgKGR5bmFtaWMsY29uZGl0aW9uKVxyXG4gIG91dGNvbWVzT3B0aW9uczogYW55W10gPSBbXTtcclxuICBvdXRjb21lc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIHNob3dPdXRjb21lc0NvbnRhaW5lciA9IGZhbHNlO1xyXG5cclxuICAvL1JlcXVpcmVkTGlzdHNcclxuICB0YXNrVHlwZUxpc3QgPSBbXTtcclxuICBwYXJ0aWNpcGFudFR5cGVMaXN0ID0gW107XHJcbiAgcGFydGljaXBhbnREYXRhTGlzdCA9IFtdO1xyXG4gIG5leHRBY3Rpdml0eUxpc3QgPSBbXTtcclxuXHJcbiAgLy9Db25kaXRpb25UeXBlUmVxdWlyZWRMaXN0c1xyXG4gIGNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0ID0gW107XHJcbiAgY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3QgPSBbXTtcclxuICBjb25kaXRpb25SSFNUeXBlTGlzdCA9IFtdO1xyXG4gIGNvbmRpdGlvbkxpc3QgPSBbXTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdvcmtmbG93QWN0aXZpdHlTZXJ2aWNlOiBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSwgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSwgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLmFjdGl2aXR5SURFbmMgPSBwYXJhbXNbJ2FjdGl2aXR5aWQnXTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG5cclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0V29ya2Zsb3dBY3Rpdml0eVwiKTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJXb3JrRmxvd3NcIiksIHBhdGg6ICcvQWRtaW4vV29ya2Zsb3dzL3dvcmtmbG93JywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcblxyXG4gIC8vSW5pdGlhbGl6ZSBlZGl0IG1vZGVsIGFuZCByZXF1aXJlZCBERExzXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmdldEVkaXRXb3JrRmxvd0FjdGl2aXR5RGF0YSh0aGlzLmFjdGl2aXR5SURFbmMpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB0aGlzLmFjdGl2aXR5TW9kZWwgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIHZhciBsaXN0ID0gcmVzdWx0T2JqLmxpc3Q7XHJcbiAgICAgIHRoaXMuQWN0aXZpdHlUeXBlTGlzdCA9IHJlc3VsdE9iai5hY3Rpdml0eUxpc3Q7XHJcbiAgICAgIHRoaXMubmV4dEFjdGl2aXR5TGlzdCA9IGxpc3QuYWN0aXZpdGllcztcclxuICAgICAgdGhpcy5hY3Rpdml0eVR5cGVJRCA9IHRoaXMuYWN0aXZpdHlNb2RlbC5hY3Rpdml0eVR5cGVJdGVtSUQ7XHJcbiAgICAgIHRoaXMuaXNQdWJsaXNoZWQgPSB0aGlzLmFjdGl2aXR5TW9kZWwuaXNQdWJsaXNoZWQ7XHJcbiAgICAgIHRoaXMudmVyc2lvbklEID0gdGhpcy5hY3Rpdml0eU1vZGVsLnZlcnNpb25JRDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVxyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdFdGQWN0aXZpdHlNb2RlbDtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdFdGQWN0aXZpdHlGdW5jdGlvbjtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLk9uU3VjY2Vzc0hhbmRsZXIgPSB0aGlzLm9uRWRpdFN1Y2Nlc3M7XHJcblxyXG4gICAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIG5hbWUuRW5nbGlzaCA9IHRoaXMuYWN0aXZpdHlNb2RlbC5uYW1lLmVuZ2xpc2g7XHJcbiAgICAgIG5hbWUuQXJhYmljID0gdGhpcy5hY3Rpdml0eU1vZGVsLm5hbWUuYXJhYmljO1xyXG4gICAgICB0aGlzLm5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5uYW1lLk5hbWUgPSBcIm5hbWVcIjtcclxuICAgICAgdGhpcy5uYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5uYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLm5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMubmFtZS5WYWx1ZSA9IG5hbWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZXNSZXN1bHQ6IGFueSA9IHRoaXMuZ2V0QWN0aXZpdHlPdXRjb21lc09wdGlvbnModGhpcy5hY3Rpdml0eU1vZGVsLm91dGNvbWVzLCB0aGlzLmlzUHVibGlzaGVkKTtcclxuICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBvdXRjb21lc1Jlc3VsdFswXTtcclxuICAgICAgdGhpcy5vdXRjb21lc0NvdW50ID0gb3V0Y29tZXNSZXN1bHRbMV07XHJcblxyXG4gICAgICB0aGlzLnNob3dBY3Rpdml0eVR5cGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmlzUHVibGlzaGVkKSB7XHJcbiAgICAgICAgc3dpdGNoIChOdW1iZXIodGhpcy5hY3Rpdml0eVR5cGVJRCkpIHtcclxuICAgICAgICAgIGNhc2UgV0ZBY3Rpdml0eVR5cGUuQXBwcm92YWw6XHJcbiAgICAgICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkFjdGlvbjpcclxuICAgICAgICAgIGNhc2UgV0ZBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgICAgIHRoaXMudGFza1R5cGVMaXN0ID0gbGlzdC50YXNrcztcclxuXHJcbiAgICAgICAgICAgIGxldCB0YXNrTmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICAgIHRhc2tOYW1lLkVuZ2xpc2ggPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza05hbWUuZW5nbGlzaDtcclxuICAgICAgICAgICAgdGFza05hbWUuQXJhYmljID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tOYW1lLmFyYWJpYztcclxuXHJcbiAgICAgICAgICAgIGxldCB0YXNrRGVzY3JpcHRpb24gPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICAgICAgICB0YXNrRGVzY3JpcHRpb24uRW5nbGlzaCA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrRGVzY3JpcHRpb24uZW5nbGlzaDtcclxuICAgICAgICAgICAgdGFza0Rlc2NyaXB0aW9uLkFyYWJpYyA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrRGVzY3JpcHRpb24uYXJhYmljO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTmFtZSA9IFwiZHluYW1pY1Rhc2tOYW1lXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJUYXNrTmFtZUluQXJhYmljXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiVGFza05hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuVmFsdWUgPSB0YXNrTmFtZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLk5hbWUgPSBcImR5bmFtaWNUYXNrRGVzY3JpcHRpb25cIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLkFyYWJpY0xhYmVsS2V5ID0gXCJUYXNrRGVzY3JpcHRpb25JbkFyYWJpY1wiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLlZhbHVlID0gdGFza0Rlc2NyaXB0aW9uO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLk5hbWUgPSBcImR5bmFtaWNUYXNrVVJMXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTGFiZWxLZXkgPSBcIlRhc2tVUkxcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuVmFsdWUgPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza1VSTDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5OYW1lID0gXCJkeW5hbWljVGFza1R5cGVcIlxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5MYWJlbEtleSA9IFwiVGFza1R5cGVcIlxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5EYXRhU291cmNlID0gdGhpcy50YXNrVHlwZUxpc3RcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuU2VsZWN0ZWRJdGVtcyA9IHRoaXMudGFza1R5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrQ29ycmxUeXBlSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdOztcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5OYW1lID0gXCJkeW5hbWljQ2FuQ29tcGxldGVcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTGFiZWxLZXkgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmFsdWUgPSB0aGlzLmFjdGl2aXR5TW9kZWwuY2FuQ29tcGxldGVGcm9tVE1FO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zaG93RHluYW1pY0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0ID0gbGlzdC5yaHNUeXBlcztcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MaXN0ID0gbGlzdC5jb25kaXRpb25zO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25MSFNEcm9wRG93blwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gdGhpcy5jb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSB0aGlzLmFjdGl2aXR5TW9kZWwubGhzVmFyaWFibGVJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbnNEcm9wRG93blwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIkNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmNvbmRpdGlvbkxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0gdGhpcy5hY3Rpdml0eU1vZGVsLm9wZXJhdG9yVHlwZUl0ZW1JRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU1R5cGVEcm9wRG93blwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTVHlwZUxpc3RcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IHRoaXMuYWN0aXZpdHlNb2RlbC5yaHNUeXBlSXRlbUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTs7XHJcblxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZpdHlNb2RlbC5yaHNUeXBlSXRlbUlEID09IENvbmRpdGlvblJIU1R5cGUuVmFyaWFibGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTRHJvcERvd25cIlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSB0aGlzLmFjdGl2aXR5TW9kZWwucmhzVmFyaWFibGVJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07O1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5OYW1lID0gXCJjb25kaXRpb25SSFNWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLlBsYWNlaG9sZGVyID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5WYWx1ZSA9IHRoaXMuYWN0aXZpdHlNb2RlbC5yaHNWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25Db250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zaG93T3V0Y29tZXNDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuc3lzTmFtZS5OYW1lID0gXCJzeXNOYW1lXCI7XHJcbiAgICAgICAgdGhpcy5zeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgICAgdGhpcy5zeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLnN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zeXNOYW1lLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLnN5c05hbWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2aXR5TW9kZWwuYWN0aXZpdHlUeXBlSXRlbUlEICE9IFdGQWN0aXZpdHlUeXBlLlN0YXJ0KSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dBY3Rpdml0eVR5cGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuTmFtZSA9IFwiYWN0aXZpdHlUeXBlXCJcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVR5cGVcIlxyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuQWN0aXZpdHlUeXBlTGlzdFxyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuQWN0aXZpdHlUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSB0aGlzLmFjdGl2aXR5VHlwZUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzd2l0Y2ggKE51bWJlcih0aGlzLmFjdGl2aXR5TW9kZWwuYWN0aXZpdHlUeXBlSXRlbUlEKSkge1xyXG4gICAgICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5BcHByb3ZhbDpcclxuICAgICAgICAgIGNhc2UgV0ZBY3Rpdml0eVR5cGUuQWN0aW9uOlxyXG4gICAgICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5QZXJjZW50YWdlVGFzazpcclxuICAgICAgICAgICAgdGhpcy50YXNrVHlwZUxpc3QgPSBsaXN0LnRhc2tzO1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudFR5cGVzO1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudERhdGE7XHJcblxyXG4gICAgICAgICAgICBsZXQgdGFza05hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICAgICAgICB0YXNrTmFtZS5FbmdsaXNoID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tOYW1lLmVuZ2xpc2g7XHJcbiAgICAgICAgICAgIHRhc2tOYW1lLkFyYWJpYyA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrTmFtZS5hcmFiaWM7XHJcblxyXG4gICAgICAgICAgICBsZXQgdGFza0Rlc2NyaXB0aW9uID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgICAgICAgdGFza0Rlc2NyaXB0aW9uLkVuZ2xpc2ggPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza0Rlc2NyaXB0aW9uLmVuZ2xpc2g7XHJcbiAgICAgICAgICAgIHRhc2tEZXNjcmlwdGlvbi5BcmFiaWMgPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza0Rlc2NyaXB0aW9uLmFyYWJpYztcclxuICAgICAgICAgICAgLy9Jbml0aWFsaXplIHJlcXVpcmVkIGNvbnRyb2xzIGZvciBhcHByb3ZhbFxyXG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRQYXJ0aWNpcGFudFR5cGVzOiBudW1iZXJbXSA9IHRoaXMuYWN0aXZpdHlNb2RlbC5wYXJ0aWNpcGFudFR5cGVJdGVtSURzU3RyaW5nTGlzdC5tYXAoKGkpID0+IE51bWJlcihpKSk7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLk5hbWUgPSBcInBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTGFiZWxLZXkgPSBcIlBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLlNlbGVjdGVkSXRlbXMgPSB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3QuZmlsdGVyKGZ1bmN0aW9uICh0YWcpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRQYXJ0aWNpcGFudFR5cGVzLmluZGV4T2YocGFyc2VJbnQodGFnLmtleSkpID49IDA7XHJcbiAgICAgICAgICAgIH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkUGFydGljaXBhbnRUeXBlcy5pbmNsdWRlcyhOdW1iZXIoUGFydGljaXBhbnRUeXBlLlBlcm1pc3Npb25TZXQpKSkge1xyXG4gICAgICAgICAgICAgIGxldCBzZWxlY3RlZFBlcm1pc3Npb25TZXRzOiBudW1iZXJbXSA9IHRoaXMuYWN0aXZpdHlNb2RlbC5wYXJ0aWNpcGFudFBlcm1zZXRzSURzU3RyaW5nLm1hcCgoaSkgPT4gTnVtYmVyKGkpKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuTmFtZSA9IFwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiXHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnREYXRhTGlzdFxyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5TZWxlY3RlZEl0ZW1zID0gdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0LmZpbHRlcihmdW5jdGlvbiAodGFnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRQZXJtaXNzaW9uU2V0cy5pbmRleE9mKHBhcnNlSW50KHRhZy5rZXkpKSA+PSAwO1xyXG4gICAgICAgICAgICAgIH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLk5hbWUgPSBcImR5bmFtaWNUYXNrTmFtZVwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiVGFza05hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLlZhbHVlID0gdGFza05hbWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5OYW1lID0gXCJkeW5hbWljVGFza0Rlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5WYWx1ZSA9IHRhc2tEZXNjcmlwdGlvbjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5OYW1lID0gXCJkeW5hbWljVGFza1VSTFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLkxhYmVsS2V5ID0gXCJUYXNrVVJMXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tVUkw7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTmFtZSA9IFwiZHluYW1pY1Rhc2tUeXBlXCJcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTGFiZWxLZXkgPSBcIlRhc2tUeXBlXCJcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuRGF0YVNvdXJjZSA9IHRoaXMudGFza1R5cGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLlNlbGVjdGVkSXRlbXMgPSB0aGlzLnRhc2tUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza0NvcnJsVHlwZUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTs7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTmFtZSA9IFwiZHluYW1pY0NhbkNvbXBsZXRlXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLkxhYmVsS2V5ID0gXCJDYW5Db21wbGV0ZUZyb21UTUVcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLmNhbkNvbXBsZXRlRnJvbVRNRTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50Q29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93T3V0Y29tZXNDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgV0ZBY3Rpdml0eVR5cGUuU3RhcnQ6XHJcbiAgICAgICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkVtYWlsOlxyXG4gICAgICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5TbGVlcDpcclxuICAgICAgICAgICAgaWYgKE51bWJlcih0aGlzLmFjdGl2aXR5TW9kZWwuYWN0aXZpdHlUeXBlSXRlbUlEKSA9PSBXRkFjdGl2aXR5VHlwZS5FbWFpbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnREYXRhO1xyXG5cclxuICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRQYXJ0aWNpcGFudFR5cGVzOiBudW1iZXJbXSA9IHRoaXMuYWN0aXZpdHlNb2RlbC5wYXJ0aWNpcGFudFR5cGVJdGVtSURzU3RyaW5nTGlzdC5tYXAoKGkpID0+IE51bWJlcihpKSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5OYW1lID0gXCJwYXJ0aWNpcGFudFR5cGVzXCJcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTGFiZWxLZXkgPSBcIlBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5TZWxlY3RlZEl0ZW1zID0gdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0LmZpbHRlcihmdW5jdGlvbiAodGFnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRQYXJ0aWNpcGFudFR5cGVzLmluZGV4T2YocGFyc2VJbnQodGFnLmtleSkpID49IDA7XHJcbiAgICAgICAgICAgICAgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSk7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChzZWxlY3RlZFBhcnRpY2lwYW50VHlwZXMuaW5jbHVkZXMoTnVtYmVyKFBhcnRpY2lwYW50VHlwZS5QZXJtaXNzaW9uU2V0KSkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZFBlcm1pc3Npb25TZXRzOiBudW1iZXJbXSA9IHRoaXMuYWN0aXZpdHlNb2RlbC5wYXJ0aWNpcGFudFBlcm1zZXRzSURzU3RyaW5nLm1hcCgoaSkgPT4gTnVtYmVyKGkpKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0Lk5hbWUgPSBcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LlNlbGVjdGVkSXRlbXMgPSB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3QuZmlsdGVyKGZ1bmN0aW9uICh0YWcpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUGVybWlzc2lvblNldHMuaW5kZXhPZihwYXJzZUludCh0YWcua2V5KSkgPj0gMDtcclxuICAgICAgICAgICAgICAgIH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICAgICAgICBuYW1lLkFyYWJpYyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5ub3JtYWxPdXRjb21lTmFtZS5hcmFiaWM7XHJcbiAgICAgICAgICAgIG5hbWUuRW5nbGlzaCA9IHRoaXMuYWN0aXZpdHlNb2RlbC5ub3JtYWxPdXRjb21lTmFtZS5lbmdsaXNoO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLk5hbWUgPSBcInN0YXRpY091dGNvbWVOYW1lXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk91dGNvbWVOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk91dGNvbWVOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuVmFsdWUgPSBuYW1lO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLk5hbWUgPSBcInN0YXRpY091dGNvbWVTeXNOYW1lXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5WYWx1ZSA9IHRoaXMuYWN0aXZpdHlNb2RlbC5vdXRjb21lU3lzTmFtZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5Lk5hbWUgPSBcInN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHlcIlxyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuTGFiZWxLZXkgPSBcIk5leHRBY3Rpdml0eVwiXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IHRoaXMuYWN0aXZpdHlNb2RlbC5uZXh0QWN0aXZpdHlJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5OYW1lID0gXCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50LkxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSB0aGlzLmFjdGl2aXR5TW9kZWwuY2FuQWRkQ29tbWVudDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1N0YXRpY0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0ID0gbGlzdC5yaHNUeXBlcztcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MaXN0ID0gbGlzdC5jb25kaXRpb25zO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25MSFNEcm9wRG93blwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gdGhpcy5jb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSB0aGlzLmFjdGl2aXR5TW9kZWwubGhzVmFyaWFibGVJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbnNEcm9wRG93blwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIkNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmNvbmRpdGlvbkxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0gdGhpcy5hY3Rpdml0eU1vZGVsLm9wZXJhdG9yVHlwZUl0ZW1JRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU1R5cGVEcm9wRG93blwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTVHlwZUxpc3RcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IHRoaXMuYWN0aXZpdHlNb2RlbC5yaHNUeXBlSXRlbUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTs7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpdml0eU1vZGVsLnJoc1R5cGVJdGVtSUQgPT0gQ29uZGl0aW9uUkhTVHlwZS5WYXJpYWJsZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25SSFNEcm9wRG93blwiXHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gcGFyc2VJbnQoaXRlbS5rZXkpID09IHRoaXMuYWN0aXZpdHlNb2RlbC5yaHNWYXJpYWJsZUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTs7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLk5hbWUgPSBcImNvbmRpdGlvblJIU1ZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuUGxhY2Vob2xkZXIgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLnJoc1ZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmlzRWRpdEZvcm1Mb2FkZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0VkaXQgZnVuY3Rpb25zXHJcbiAgZ2V0RWRpdFdGQWN0aXZpdHlNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0udmFsdWU7XHJcbiAgICBsZXQgZWRpdE1vZGVsID0gbmV3IFdGQWN0aXZpdHlNb2RlbCgpO1xyXG4gICAgZWRpdE1vZGVsLklEID0gdGhpcy5hY3Rpdml0eU1vZGVsLmlkO1xyXG4gICAgZWRpdE1vZGVsLk5hbWUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLm5hbWUuRW5nbGlzaDtcclxuICAgIGVkaXRNb2RlbC5OYW1lLkFyYWJpYyA9IFJlc3VsdE1vZGVsLm5hbWUuQXJhYmljO1xyXG4gICAgZWRpdE1vZGVsLlZlcnNpb25JRCA9IE51bWJlcih0aGlzLnZlcnNpb25JRCk7XHJcbiAgICBlZGl0TW9kZWwuQWN0aXZpdHlUeXBlSXRlbUlEID0gdGhpcy5hY3Rpdml0eVR5cGVJRDtcclxuXHJcbiAgICBlZGl0TW9kZWwuU3lzTmFtZSA9IFJlc3VsdE1vZGVsLnN5c05hbWVcclxuXHJcblxyXG4gICAgLy9JZiBwYXJ0aWNpcGFudCBleGlzdHNcclxuICAgIGlmIChSZXN1bHRNb2RlbC5wYXJ0aWNpcGFudFR5cGVzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBlZGl0TW9kZWwuUGFydGljaXBhbnREVE8gPSBuZXcgUGFydGljaXBhbnRNb2RlbCgpO1xyXG4gICAgICBlZGl0TW9kZWwuUGFydGljaXBhbnREVE8gPSBuZXcgUGFydGljaXBhbnRNb2RlbCgpO1xyXG4gICAgICBlZGl0TW9kZWwuUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZyA9IFJlc3VsdE1vZGVsLnBhcnRpY2lwYW50VHlwZXMudG9TdHJpbmcoKTtcclxuICAgICAgaWYgKFJlc3VsdE1vZGVsLnBhcnRpY2lwYW50VHlwZXMuaW5jbHVkZXMoUGFydGljaXBhbnRUeXBlLlBlcm1pc3Npb25TZXQpKSB7XHJcbiAgICAgICAgZWRpdE1vZGVsLlBhcnRpY2lwYW50RFRPLlBlcm1pc3Npb25TZXRJRHNTdHJpbmcgPSBSZXN1bHRNb2RlbC5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3dpdGNoIChOdW1iZXIodGhpcy5hY3Rpdml0eVR5cGVJRCkpIHtcclxuICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5BcHByb3ZhbDpcclxuICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5BY3Rpb246XHJcbiAgICAgIGNhc2UgV0ZBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgZWRpdE1vZGVsLlRhc2tOYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza05hbWUuRW5nbGlzaDtcclxuICAgICAgICBlZGl0TW9kZWwuVGFza05hbWUuQXJhYmljID0gUmVzdWx0TW9kZWwuZHluYW1pY1Rhc2tOYW1lLkFyYWJpYztcclxuICAgICAgICBlZGl0TW9kZWwuVGFza0Rlc2NyaXB0aW9uLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza0Rlc2NyaXB0aW9uLkVuZ2xpc2g7XHJcbiAgICAgICAgZWRpdE1vZGVsLlRhc2tEZXNjcmlwdGlvbi5BcmFiaWMgPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza0Rlc2NyaXB0aW9uLkFyYWJpYztcclxuICAgICAgICBlZGl0TW9kZWwuVGFza1VSTCA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrVVJMO1xyXG4gICAgICAgIGVkaXRNb2RlbC5UYXNrQ29ycmxUeXBlSUQgPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza1R5cGUgIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5keW5hbWljVGFza1R5cGUpIDogbnVsbDtcclxuICAgICAgICBlZGl0TW9kZWwuQ2FuQ29tcGxldGVGcm9tVE1FID0gUmVzdWx0TW9kZWwuZHluYW1pY0NhbkNvbXBsZXRlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLlN0YXJ0OlxyXG4gICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkVtYWlsOlxyXG4gICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLlNsZWVwOlxyXG4gICAgICAgIGlmICghdGhpcy5pc1B1Ymxpc2hlZCkge1xyXG4gICAgICAgICAgZWRpdE1vZGVsLk5vcm1hbE91dGNvbWVOYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5zdGF0aWNPdXRjb21lTmFtZS5FbmdsaXNoO1xyXG4gICAgICAgICAgZWRpdE1vZGVsLk5vcm1hbE91dGNvbWVOYW1lLkFyYWJpYyA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVOYW1lLkFyYWJpYztcclxuICAgICAgICAgIGVkaXRNb2RlbC5PdXRjb21lU3lzTmFtZSA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVTeXNOYW1lO1xyXG4gICAgICAgICAgZWRpdE1vZGVsLk5leHRBY3Rpdml0eUlEID0gUmVzdWx0TW9kZWwuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eSAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkpIDogbnVsbDtcclxuICAgICAgICAgIGVkaXRNb2RlbC5DYW5BZGRDb21tZW50ID0gUmVzdWx0TW9kZWwuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICBlZGl0TW9kZWwuTEhTVmFyaWFibGVJRCA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvbkxIU0Ryb3BEb3duICE9IG51bGwgPyBOdW1iZXIoUmVzdWx0TW9kZWwuY29uZGl0aW9uTEhTRHJvcERvd24pIDogbnVsbDtcclxuICAgICAgICBlZGl0TW9kZWwuUkhTVmFyaWFibGVJRCA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU0Ryb3BEb3duICE9IG51bGwgPyBOdW1iZXIoUmVzdWx0TW9kZWwuY29uZGl0aW9uUkhTRHJvcERvd24pIDogbnVsbDtcclxuICAgICAgICBlZGl0TW9kZWwuUkhTVHlwZUl0ZW1JRCA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93biAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bikgOiBudWxsO1xyXG4gICAgICAgIGVkaXRNb2RlbC5PcGVyYXRvclR5cGVJdGVtSUQgPSBSZXN1bHRNb2RlbC5jb25kaXRpb25zRHJvcERvd24gIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5jb25kaXRpb25zRHJvcERvd24pIDogbnVsbDtcclxuICAgICAgICBlZGl0TW9kZWwuUkhTVmFsdWUgPSBSZXN1bHRNb2RlbC5jb25kaXRpb25SSFNWYWx1ZSAhPSB1bmRlZmluZWQgPyBSZXN1bHRNb2RlbC5jb25kaXRpb25SSFNWYWx1ZSA6IG51bGw7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgfVxyXG4gICAgLy9TZXQgT3V0Y29tZXMgKGR5bmFtaWMsY29uZGl0aW9uIHR5cGVzKVxyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLm91dGNvbWVzQ291bnQ7IGorKykge1xyXG4gICAgICBsZXQgb3V0Y29tZUlEID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lSURcIiArIGpdO1xyXG4gICAgICBpZiAob3V0Y29tZUlEID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lTmFtZSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZU5hbWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVTeXNOYW1lOiBzdHJpbmc7XHJcbiAgICAgIGxldCBvdXRDb21lQ2FuRWRpdFN5c05hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgal07XHJcbiAgICAgIGlmIChvdXRDb21lQ2FuRWRpdFN5c05hbWUpXHJcbiAgICAgICAgb3V0Y29tZVN5c05hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGpdO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgb3V0Y29tZVN5c05hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgal07XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUFjdGl2aXR5ID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGpdO1xyXG4gICAgICBsZXQgb3V0Y29tZUNhbkFkZENvbW1lbnQgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBhY3Rpdml0eU91dGNvbWU6IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgPSBuZXcgV0ZBY3Rpdml0eU91dGNvbWVNb2RlbCgpO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuSWQgPSBvdXRjb21lSUQ7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5OYW1lRU4gPSBvdXRjb21lTmFtZS5FbmdsaXNoO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuTmFtZUFSID0gb3V0Y29tZU5hbWUuQXJhYmljO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuT3V0Y29tZVN5c05hbWUgPSBvdXRjb21lU3lzTmFtZTtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk5leHRBY3Rpdml0eUlEID0gb3V0Y29tZUFjdGl2aXR5ICE9IG51bGwgPyBOdW1iZXIob3V0Y29tZUFjdGl2aXR5KSA6IG51bGw7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5DYW5BZGRDb21tZW50ID0gb3V0Y29tZUNhbkFkZENvbW1lbnQ7XHJcblxyXG4gICAgICBlZGl0TW9kZWwuT3V0Y29tZXMucHVzaChhY3Rpdml0eU91dGNvbWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goZWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuICBnZXRFZGl0V0ZBY3Rpdml0eUZ1bmN0aW9uID0gKGVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICBpZiAodGhpcy5pc1B1Ymxpc2hlZClcclxuICAgICAgcmV0dXJuIHRoaXMud29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UuZWRpdFB1Ymxpc2hlZEFjdGl2aXR5KGVkaXRNb2RlbCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmVkaXRBY3Rpdml0eShlZGl0TW9kZWwpO1xyXG4gIH1cclxuICBvbkVkaXRTdWNjZXNzID0gKHJlc3VsdCkgPT4ge1xyXG4gICAgdGhpcy5jYW5jZWxFZGl0KCk7XHJcbiAgfVxyXG5cclxuICAvL091dGNvbWUgZnVuY3Rpb25zXHJcbiAgZ2V0QWN0aXZpdHlPdXRjb21lc09wdGlvbnMob3V0Q29tZXM6IGFueVtdLCBpc1B1Ymxpc2hlZDogYm9vbGVhbikge1xyXG4gICAgbGV0IG91dGNvbWVzT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBvdXRjb21lc0NvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3V0Q29tZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1cnJlbnRPdXRjb21lID0gb3V0Q29tZXNbaV07XHJcbiAgICAgIGxldCBvYmplY3RPdXRjb21lT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lSUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUlELk5hbWUgPSBcIm91dGNvbWVJRFwiICsgaTtcclxuICAgICAgb3V0Y29tZUlELkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIG91dGNvbWVJRC5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLmlkO1xyXG5cclxuICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBuYW1lLkVuZ2xpc2ggPSBjdXJyZW50T3V0Y29tZS5uYW1lRU47XHJcbiAgICAgIG5hbWUuQXJhYmljID0gY3VycmVudE91dGNvbWUubmFtZUFSO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVOYW1lLk5hbWUgPSBcIm91dGNvbWVOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIG91dGNvbWVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICBvdXRjb21lTmFtZS5WYWx1ZSA9IG5hbWU7XHJcbiAgICAgIG91dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLk5hbWUgPSBcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgaTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVwiXHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuU2VsZWN0ZWRJdGVtcyA9IHRoaXMubmV4dEFjdGl2aXR5TGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSBjdXJyZW50T3V0Y29tZS5uZXh0QWN0aXZpdHlJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07O1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgICBvdXRjb21lQ2FuRWRpdCA9IGN1cnJlbnRPdXRjb21lLmNhbkVkaXQ7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUhpZGRlbmVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLm91dGNvbWVTeXNOYW1lO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5FZGl0U3lzTmFtZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgaTtcclxuICAgICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLlZhbHVlID0gY3VycmVudE91dGNvbWUuY2FuRWRpdFN5c05hbWU7XHJcblxyXG4gICAgICBpZiAoIWlzUHVibGlzaGVkKSB7XHJcbiAgICAgICAgbGV0IG91dGNvbWVEZWNpc2lvblN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGk7XHJcbiAgICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5MYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLm91dGNvbWVTeXNOYW1lO1xyXG4gICAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuSXNEaXNhYmxlZCA9ICFjdXJyZW50T3V0Y29tZS5jYW5FZGl0U3lzTmFtZTtcclxuICAgICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICBsZXQgb3V0Y29tZUNhbkFkZENvbW1lbnQgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgb3V0Y29tZUNhbkFkZENvbW1lbnQuTmFtZSA9IFwib3V0Y29tZUNhbkFkZENvbW1lbnRcIiArIGk7XHJcbiAgICAgICAgb3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5jYW5BZGRDb21tZW50O1xyXG4gICAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50LkxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcblxyXG4gICAgICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLFxyXG4gICAgICAgICAgb3V0Y29tZUNhbkFkZENvbW1lbnQsIG91dGNvbWVDYW5FZGl0LCBvdXRjb21lSGlkZGVuZVN5c05hbWUsIG91dGNvbWVDYW5FZGl0U3lzTmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLCBvdXRjb21lQ2FuRWRpdCwgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLCBvdXRjb21lQ2FuRWRpdFN5c05hbWUpO1xyXG5cclxuICAgICAgb3V0Y29tZXNPcHRpb25zLnB1c2gob2JqZWN0T3V0Y29tZU9wdGlvbnMpO1xyXG4gICAgICBvdXRjb21lc0NvdW50ICs9IDE7XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtvdXRjb21lc09wdGlvbnMsIG91dGNvbWVzQ291bnRdO1xyXG4gIH1cclxuICBhZGRXRkFjdGl2aXR5T3V0Y29tZSgpIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMub3V0Y29tZXNDb3VudDtcclxuXHJcbiAgICBsZXQgb2JqZWN0T3V0Y29tZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgbGV0IG91dGNvbWVJRCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUlELk5hbWUgPSBcIm91dGNvbWVJRFwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lSUQuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIG91dGNvbWVJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICBvdXRjb21lSUQuVmFsdWUgPSAwO1xyXG5cclxuICAgIGxldCBvdXRjb21lTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZU5hbWUuTmFtZSA9IFwib3V0Y29tZU5hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZU5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgb3V0Y29tZU5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICBvdXRjb21lTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuTmFtZSA9IFwib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5MYWJlbEtleSA9IFwiQWN0aXZpdHlcIlxyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkRhdGFTb3VyY2UgPSB0aGlzLm5leHRBY3Rpdml0eUxpc3RcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUNhbkFkZENvbW1lbnQgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5OYW1lID0gXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG5cclxuICAgIGxldCBvdXRjb21lQ2FuRWRpdDogYm9vbGVhbjtcclxuICAgIG91dGNvbWVDYW5FZGl0ID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUhpZGRlbmVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lSGlkZGVuZVN5c05hbWUuTmFtZSA9IFwib3V0Y29tZUhpZGRlbmVTeXNOYW1lXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgbGV0IG91dGNvbWVDYW5FZGl0U3lzTmFtZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVDYW5FZGl0U3lzTmFtZS5OYW1lID0gXCJvdXRjb21lQ2FuRWRpdFN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLlZhbHVlID0gdHJ1ZTtcclxuXHJcbiAgICBvYmplY3RPdXRjb21lT3B0aW9ucy5wdXNoKG91dGNvbWVJRCwgb3V0Y29tZU5hbWUsIG91dGNvbWVEZWNpc2lvblN5c05hbWUsIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcywgb3V0Y29tZUNhbkFkZENvbW1lbnQsXHJcbiAgICAgIG91dGNvbWVDYW5FZGl0LCBvdXRjb21lSGlkZGVuZVN5c05hbWUsIG91dGNvbWVDYW5FZGl0U3lzTmFtZSk7XHJcblxyXG4gICAgdGhpcy5vdXRjb21lc09wdGlvbnMucHVzaChvYmplY3RPdXRjb21lT3B0aW9ucyk7XHJcbiAgICB0aGlzLm91dGNvbWVzQ291bnQgKz0gMTtcclxuXHJcbiAgfVxyXG4gIGRlbGV0ZU91dGNvbWUoZGVsZXRlZE91dGNvbWU6IGFueSkge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBsZXQgZGVsZXRlZE91dGNvbWVJbmRleDogbnVtYmVyID0gdGhpcy5vdXRjb21lc09wdGlvbnMuaW5kZXhPZihkZWxldGVkT3V0Y29tZSk7XHJcbiAgICBpZiAoZGVsZXRlZE91dGNvbWVJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRPdXRjb21lSW5kZXgsIDEpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRPdXRjb21lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkT3V0Y29tZVtpXS5OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9PbiBjaGFuZ2VzIGV2ZW50c1xyXG4gIGFjdGl2aXR5VHlwZU9uQ2hhbmdlKGFjdGl2aXR5VHlwZSkge1xyXG4gICAgLy9SZXNldCBjb250cm9scywgb3V0Y29tZXMgYW5kIGZsYWdzXHJcbiAgICB0aGlzLnJlc2V0QWxsQWN0aXZpdHlUeXBlQ29udHJvbHMoKTtcclxuICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gW107XHJcbiAgICB0aGlzLm91dGNvbWVzQ291bnQgPSAwO1xyXG4gICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U3RhdGljQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmRpdGlvbkNvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuYWN0aXZpdHlUeXBlSUQgPSBhY3Rpdml0eVR5cGU7XHJcbiAgICB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5T3V0Y29tZXModGhpcy52ZXJzaW9uSUQsIGFjdGl2aXR5VHlwZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHZhciBtb2RlbCA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgdmFyIGxpc3QgPSByZXN1bHRPYmoubGlzdDtcclxuICAgICAgdGhpcy5uZXh0QWN0aXZpdHlMaXN0ID0gbGlzdC5hY3Rpdml0aWVzO1xyXG5cclxuICAgICAgc3dpdGNoIChOdW1iZXIoYWN0aXZpdHlUeXBlKSkge1xyXG4gICAgICAgIGNhc2UgV0ZBY3Rpdml0eVR5cGUuQXBwcm92YWw6XHJcbiAgICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5BY3Rpb246XHJcbiAgICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5QZXJjZW50YWdlVGFzazpcclxuICAgICAgICAgIHRoaXMudGFza1R5cGVMaXN0ID0gbGlzdC50YXNrcztcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudERhdGE7XHJcblxyXG4gICAgICAgICAgLy9Jbml0aWFsaXplIHJlcXVpcmVkIGNvbnRyb2xzIGZvciBhcHByb3ZhbFxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLk5hbWUgPSBcInBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkxhYmVsS2V5ID0gXCJQYXJ0aWNpcGFudFR5cGVzXCJcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5OYW1lID0gXCJkeW5hbWljVGFza05hbWVcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJUYXNrTmFtZUluQXJhYmljXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tOYW1lSW5FbmdsaXNoXCI7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLk5hbWUgPSBcImR5bmFtaWNUYXNrRGVzY3JpcHRpb25cIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTmFtZSA9IFwiZHluYW1pY1Rhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTGFiZWxLZXkgPSBcIlRhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTmFtZSA9IFwiZHluYW1pY1Rhc2tUeXBlXCJcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkxhYmVsS2V5ID0gXCJUYXNrVHlwZVwiXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5EYXRhU291cmNlID0gdGhpcy50YXNrVHlwZUxpc3RcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLk5hbWUgPSBcImR5bmFtaWNDYW5Db21wbGV0ZVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTGFiZWxLZXkgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WYWx1ZSA9IG1vZGVsLmNhbkNvbXBsZXRlRnJvbVRNRTtcclxuXHJcbiAgICAgICAgICBsZXQgb3V0Y29tZXNSZXN1bHQ6IGFueSA9IHRoaXMuZ2V0QWN0aXZpdHlPdXRjb21lc09wdGlvbnMobW9kZWwub3V0Y29tZXMsZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBvdXRjb21lc1Jlc3VsdFswXTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IG91dGNvbWVzUmVzdWx0WzFdO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkVtYWlsOlxyXG4gICAgICAgIGNhc2UgV0ZBY3Rpdml0eVR5cGUuU2xlZXA6XHJcblxyXG4gICAgICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICAgICAgbmFtZS5BcmFiaWMgPSBtb2RlbC5ub3JtYWxPdXRjb21lTmFtZS5hcmFiaWM7XHJcbiAgICAgICAgICBuYW1lLkVuZ2xpc2ggPSBtb2RlbC5ub3JtYWxPdXRjb21lTmFtZS5lbmdsaXNoO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZU5hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk91dGNvbWVOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJPdXRjb21lTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuVmFsdWUgPSBuYW1lO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZVN5c05hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5OYW1lID0gXCJzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5XCJcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5MYWJlbEtleSA9IFwiTmV4dEFjdGl2aXR5XCJcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuTmFtZSA9IFwic3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnRcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuTGFiZWxLZXkgPSBcIkNhbkFkZENvbW1lbnRcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50LlZhbHVlID0gbW9kZWwuY2FuQWRkQ29tbWVudDtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dTdGF0aWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0ID0gbGlzdC5yaHNUeXBlcztcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTGlzdCA9IGxpc3QuY29uZGl0aW9ucztcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25MSFNEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbnNEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiQ29uZGl0aW9uXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRSSFNUeXBlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IENvbmRpdGlvblJIU1R5cGUuVmFyaWFibGU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTVHlwZUxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFJIU1R5cGU7XHJcblxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTRHJvcERvd25cIlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIGxldCBjb25kaXRpb25PdXRjb21lc1Jlc3VsdDogYW55ID0gdGhpcy5nZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyhtb2RlbC5vdXRjb21lcywgZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBjb25kaXRpb25PdXRjb21lc1Jlc3VsdFswXTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IGNvbmRpdGlvbk91dGNvbWVzUmVzdWx0WzFdO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd0NvbmRpdGlvbkNvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93T3V0Y29tZXNDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jYW5BZGRPdXRjb21lID0gdGhpcy5zaG93T3V0Y29tZXNDb250YWluZXIgPyBtb2RlbC5jYW5BZGRPdXRjb21lIDogZmFsc2U7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuICBjb25kaXRpb25SSFNUeXBlT25DaGFuZ2UodHlwZSkge1xyXG4gICAgaWYgKHR5cGUgPT0gQ29uZGl0aW9uUkhTVHlwZS5WYXJpYWJsZSkge1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uUkhTVmFsdWVcIilcclxuXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTRHJvcERvd25cIlxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIlxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNEcm9wRG93blwiKVxyXG5cclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLk5hbWUgPSBcImNvbmRpdGlvblJIU1ZhbHVlXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5QbGFjZWhvbGRlciA9IFwiVmFsdWVcIjtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gZmFsc2U7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBwYXJ0aWNpcGFudFR5cGVPbkNoYW5nZShwYXJ0aWNpcGFudFR5cGUpIHtcclxuICAgIGlmIChwYXJ0aWNpcGFudFR5cGUgPT0gUGFydGljaXBhbnRUeXBlLlBlcm1pc3Npb25TZXQpIHtcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0Lk5hbWUgPSBcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiXHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnREYXRhTGlzdFxyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXRcIik7XHJcbiAgICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0ID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIC8vUmVzZXQgdHlwZVxyXG4gIHJlc2V0QWxsQWN0aXZpdHlUeXBlQ29udHJvbHMoKSB7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwicGFydGljaXBhbnRUeXBlc1wiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXRcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImR5bmFtaWNUYXNrTmFtZVwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJkeW5hbWljVGFza0Rlc2NyaXB0aW9uXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImR5bmFtaWNUYXNrVVJMXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImR5bmFtaWNUYXNrVHlwZVwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJkeW5hbWljQ2FuQ29tcGxldGVcIik7XHJcblxyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInN0YXRpY091dGNvbWVOYW1lXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInN0YXRpY091dGNvbWVTeXNOYW1lXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHlcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwic3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnRcIik7XHJcblxyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvbkxIU0Ryb3BEb3duXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvbnNEcm9wRG93blwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uUkhTRHJvcERvd25cIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uUkhTVmFsdWVcIik7XHJcblxyXG4gICAgLy9SZW1vdmUgb3V0Y29tZXMgY29udHJvbHNcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnZhbHVlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm91dGNvbWVzQ291bnQ7IGkrKykge1xyXG4gICAgICBsZXQgb3V0Y29tZUlEID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lSURcIiArIGldO1xyXG4gICAgICBpZiAob3V0Y29tZUlEID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lSURcIiArIGkpO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZU5hbWVcIiArIGkpO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZURlY2lzaW9uU3lzTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGkpO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBpKTtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0NhbmNlbFxyXG4gIGNhbmNlbEVkaXQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9BZG1pbi9Xb3JrZmxvd3Mvd29ya2Zsb3cvJ10pO1xyXG4gIH1cclxuXHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiICpuZ0lmPVwiaXNFZGl0Rm9ybUxvYWRlZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9uc1wiPlxyXG4gICAgICAgIDwhLS1TdGFydCBzaGFyZWQgY29udHJvbHMgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIm5hbWVcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIiFpc1B1Ymxpc2hlZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInN5c05hbWVcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNob3dBY3Rpdml0eVR5cGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFjdGl2aXR5VHlwZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIiAoT25DaGFuZ2UpPVwiYWN0aXZpdHlUeXBlT25DaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBzaGFyZWQgY29udHJvbHMgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPCEtLVN0YXJ0IHBhcnRpY2lwYW50IGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDxkaXYgaWQ9XCJwYXJ0aWNpcGFudENvbnRhaW5lclwiICpuZ0lmPVwic2hvd1BhcnRpY2lwYW50Q29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwicGFydGljaXBhbnRUeXBlc1wiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIiAoT25DaGFuZ2UpPVwicGFydGljaXBhbnRUeXBlT25DaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldFwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBwYXJ0aWNpcGFudCBjb250YWluZXItLT5cclxuICAgICAgICA8IS0tU3RhcnQgc3RhdGljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dTdGF0aWNDb250cm9sc1wiIGlkPVwic3RhdGljQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVOYW1lXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic3RhdGljT3V0Y29tZVN5c05hbWVcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHlcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBzdGF0aWMgY29udHJvbHMtLT5cclxuICAgICAgICA8IS0tU3RhcnQgZHluYW1pYyBjb250cm9scy0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RHluYW1pY0NvbnRyb2xzXCIgaWQ9XCJkeW5hbWljQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrTmFtZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYSBbb3B0aW9uc109XCJkeW5hbWljVGFza0Rlc2NyaXB0aW9uXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrVVJMXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJkeW5hbWljVGFza1R5cGVcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJkeW5hbWljQ2FuQ29tcGxldGVcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgZHluYW1pYyBjb250cm9scy0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBjb25kaXRpb24gY29udHJvbHMtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0NvbmRpdGlvbkNvbnRyb2xzXCIgaWQ9XCJjb25kaXRpb25Db250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTGVmdEhhbmRTaWRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvbmRpdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSaWdodEhhbmRTaWRlVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSaWdodEhhbmRTaWRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImNvbmRpdGlvbkxIU0Ryb3BEb3duXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uc0Ryb3BEb3duXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uUkhTVHlwZURyb3BEb3duXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIChPbkNoYW5nZSk9XCJjb25kaXRpb25SSFNUeXBlT25DaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlOyBlbHNlIGNvbmRpdGlvblR4dFZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImNvbmRpdGlvblJIU0Ryb3BEb3duXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZGl0aW9uVHh0VmFsdWU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNWYWx1ZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIGNvbmRpdGlvbiBjb250cm9scy0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBvdXRjb21lcyBjb250YWluZXItLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd091dGNvbWVzQ29udGFpbmVyXCIgaWQ9XCJvdXRjb21lc0NvbnRhaW5lclwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWNpc2lvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIhaXNQdWJsaXNoZWRcIiBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWlzUHVibGlzaGVkXCIgY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFpc1B1Ymxpc2hlZFwiIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiICpuZ0lmPVwiaXNQdWJsaXNoZWQ7ZWxzZSBub3RQdWJsaXNoZWRPdXRjb21lc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8dHIgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3V0Y29tZXNPcHRpb25zO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1JRC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bMF1cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1OYW1lLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsxXVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLU5leHRBY3Rpdml0eS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3Rib2R5PlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90UHVibGlzaGVkT3V0Y29tZXM+XHJcbiAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG91dGNvbWVzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1JRC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1OYW1lLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1TeXNOYW1lLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWhpZGRlbiBTeXNOYW1lLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzZdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWNhbiBlZGl0IFN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzddXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tTmV4dEFjdGl2aXR5LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tQ2FuQWRkQ29tbWVudC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bNF1cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0taWYgb3V0Y29tZSBDYW4gRWRpdC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIm9wdGlvbls1XVwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1saWdodC1kYW5nZXIgYnRuLXNtXCIgKGNsaWNrKT1cImRlbGV0ZU91dGNvbWUob3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiIGZhIGZhLXRyYXNoIGhpZGRlblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImNhbkFkZE91dGNvbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInctMTAwIGJ0biBidG4tc3VjY2Vzc1wiIChjbGljayk9XCJhZGRXRkFjdGl2aXR5T3V0Y29tZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkTmV3UmVjb3JkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIG91dGNvbWVzIGNvbnRhaW5lci0tPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cImNhbmNlbEVkaXQoKVwiPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvQkJTRi1Gb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuIl19
|
|
828
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWN0aXZpdHktZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3dvcmtmbG93cy9hY3Rpdml0eS93b3JrZmxvdy1hY3Rpdml0eS1lZGl0L3dvcmtmbG93LWFjdGl2aXR5LWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvYWN0aXZpdHkvd29ya2Zsb3ctYWN0aXZpdHktZWRpdC93b3JrZmxvdy1hY3Rpdml0eS1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSwwQkFBMEIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdqTyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDeEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7Ozs7O0FBT3RHLE1BQU0sT0FBTyw2QkFBNkI7SUFz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QUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxZQUFZO0lBQ1osV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM5QyxDQUFDOzsySEFwN0JVLDZCQUE2QjsrR0FBN0IsNkJBQTZCLGtFQ2xCMUMsODFYQTJQQTs0RkR6T2EsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFdBQVcsRUFBRSx5Q0FBeUM7aUJBQ3ZEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bk9wdGlvbnMsIEVuZ2xpc2hBcmFiaWNEVE8sIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucywgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsIFRleHRCb3hPcHRpb25zLCBUb2dnbGVTbGlkZU9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9wdWJsaWMtYXBpJztcclxuaW1wb3J0IHsgQWN0aXZpdHlUeXBlLCBQYXJ0aWNpcGFudFR5cGUsIFJpZ2h0aGFuZHNpZGV0eXBlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbmRpdGlvblJIU1R5cGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvRW51bXMvQ29uZGl0aW9uUkhTVHlwZSc7XHJcbmltcG9ydCB7IFBhcnRpY2lwYW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL1BhcnRpY2lwYW50TW9kZWwnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlNb2RlbCc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlPdXRjb21lTW9kZWwnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9Xb3JrZmxvd0FjdGl2aXR5U2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXdvcmtmbG93LWFjdGl2aXR5LWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1hY3Rpdml0eS1lZGl0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dBY3Rpdml0eUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBpc0VkaXRGb3JtTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmVyc2lvbklEOiBzdHJpbmc7XHJcbiAgYWN0aXZpdHlJRDogc3RyaW5nO1xyXG4gIGFjdGl2aXR5TW9kZWw6IGFueTtcclxuICBpc1B1Ymxpc2hlZDogYm9vbGVhbjtcclxuXHJcbiAgLy9FZGl0IEFjdGl2aXR5IHNoYXJlZCBjb250cm9sc1xyXG4gIGVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgbmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgY2FuQWRkT3V0Y29tZTogYm9vbGVhbjtcclxuICBhY3Rpdml0eVR5cGVJRDogc3RyaW5nO1xyXG4gIHNob3dBY3Rpdml0eVR5cGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9Ob24gcHVibGlzaGVkIEFjdGl2aXR5IGNvbnRyb2xzXHJcbiAgc3lzTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWN0aXZpdHlUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcblxyXG4gIC8vU2hhcmVkIFBhcnRpY2lwYW50IHR5cGUgYW5kIGRhdGEgKE5vbiBQdWJsaXNoZWQgb25seSlcclxuICBzaG93UGFydGljaXBhbnRDb250YWluZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXJ0aWNpcGFudFR5cGVzOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgcGFydGljaXBhbnRQZXJtaXNzaW9uU2V0OiBEcm9wZG93bk9wdGlvbnM7XHJcblxyXG4gIC8vRHluYW1pYyBUeXBlcyBDb250cm9scyAvLyhBcHByb3ZhbCxBY3Rpb24sUGVyY2VudGFnZSlcclxuICBzaG93RHluYW1pY0NvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHluYW1pY1Rhc2tOYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBkeW5hbWljVGFza0Rlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgZHluYW1pY1Rhc2tVUkw6IFRleHRCb3hPcHRpb25zO1xyXG4gIGR5bmFtaWNUYXNrVHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGR5bmFtaWNDYW5Db21wbGV0ZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG5cclxuICAvL1N0YXRpYyB0eXBlcyBjb250cm9scyAoRW1haWwsU2xlZXApIChOb24gcHVibGlzaGVkIG9ubHkpXHJcbiAgLy9FbWFpbCBUeXBlIENvbnRyb2xzIC8vKyBpbml0aWFsaXplIHBhcnRpY2lwYW50XHJcbiAgc2hvd1N0YXRpY0NvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RhdGljT3V0Y29tZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHN0YXRpY091dGNvbWVTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcbiAgLy9Db25kaXRpb24gdHlwZSBjb250cm9sc1xyXG4gIHNob3dDb25kaXRpb25Db250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbmRpdGlvbkxIU0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uc0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTVHlwZURyb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNWYWx1ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9TaGFyZWQgcmVxdWlyZWQgbGlzdHNcclxuICBBY3Rpdml0eVR5cGVMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAvL091dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbilcclxuICBvdXRjb21lc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgb3V0Y29tZXNDb3VudDogbnVtYmVyID0gMDtcclxuICBzaG93T3V0Y29tZXNDb250YWluZXIgPSBmYWxzZTtcclxuXHJcbiAgLy9SZXF1aXJlZExpc3RzXHJcbiAgdGFza1R5cGVMaXN0ID0gW107XHJcbiAgcGFydGljaXBhbnRUeXBlTGlzdCA9IFtdO1xyXG4gIHBhcnRpY2lwYW50RGF0YUxpc3QgPSBbXTtcclxuICBuZXh0QWN0aXZpdHlMaXN0ID0gW107XHJcblxyXG4gIC8vQ29uZGl0aW9uVHlwZVJlcXVpcmVkTGlzdHNcclxuICBjb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdCA9IFtdO1xyXG4gIGNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0ID0gW107XHJcbiAgY29uZGl0aW9uUkhTVHlwZUxpc3QgPSBbXTtcclxuICBjb25kaXRpb25MaXN0ID0gW107XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3b3JrZmxvd0FjdGl2aXR5U2VydmljZTogV29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5hY3Rpdml0eUlEID0gcGFyYW1zWydhY3Rpdml0eWlkJ107XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFdvcmtmbG93QWN0aXZpdHlcIik7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya0Zsb3dzXCIpLCBwYXRoOiAnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdycsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXRpYWxpemUgZWRpdCBtb2RlbCBhbmQgcmVxdWlyZWQgRERMc1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5nZXRFZGl0V29ya0Zsb3dBY3Rpdml0eURhdGEodGhpcy5hY3Rpdml0eUlEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5hY3Rpdml0eU1vZGVsID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICB2YXIgbGlzdCA9IHJlc3VsdE9iai5saXN0O1xyXG4gICAgICB0aGlzLkFjdGl2aXR5VHlwZUxpc3QgPSByZXN1bHRPYmouYWN0aXZpdHlMaXN0O1xyXG4gICAgICB0aGlzLm5leHRBY3Rpdml0eUxpc3QgPSBsaXN0LmFjdGl2aXRpZXM7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlSUQgPSB0aGlzLmFjdGl2aXR5TW9kZWwuYWN0aXZpdHlUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuaXNQdWJsaXNoZWQgPSB0aGlzLmFjdGl2aXR5TW9kZWwuaXNQdWJsaXNoZWQ7XHJcbiAgICAgIHRoaXMudmVyc2lvbklEID0gdGhpcy5hY3Rpdml0eU1vZGVsLnZlcnNpb25JRF9HVUlEO1xyXG5cclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0V0ZBY3Rpdml0eU1vZGVsO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0V0ZBY3Rpdml0eUZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25FZGl0U3VjY2VzcztcclxuXHJcbiAgICAgIGxldCBuYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgbmFtZS5FbmdsaXNoID0gdGhpcy5hY3Rpdml0eU1vZGVsLm5hbWUuZW5nbGlzaDtcclxuICAgICAgbmFtZS5BcmFiaWMgPSB0aGlzLmFjdGl2aXR5TW9kZWwubmFtZS5hcmFiaWM7XHJcbiAgICAgIHRoaXMubmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLm5hbWUuTmFtZSA9IFwibmFtZVwiO1xyXG4gICAgICB0aGlzLm5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLm5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMubmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5uYW1lLlZhbHVlID0gbmFtZTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lc1Jlc3VsdDogYW55ID0gdGhpcy5nZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyh0aGlzLmFjdGl2aXR5TW9kZWwub3V0Y29tZXMsIHRoaXMuaXNQdWJsaXNoZWQpO1xyXG4gICAgICB0aGlzLm91dGNvbWVzT3B0aW9ucyA9IG91dGNvbWVzUmVzdWx0WzBdO1xyXG4gICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBvdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0FjdGl2aXR5VHlwZSA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaXNQdWJsaXNoZWQpIHtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuYWN0aXZpdHlUeXBlSUQpIHtcclxuICAgICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFwcHJvdmFsOlxyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQWN0aW9uOlxyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgICAgIHRoaXMudGFza1R5cGVMaXN0ID0gbGlzdC50YXNrcztcclxuICAgICAgICAgICAgbGV0IHRhc2tOYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgICAgICAgdGFza05hbWUuRW5nbGlzaCA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrTmFtZS5lbmdsaXNoO1xyXG4gICAgICAgICAgICB0YXNrTmFtZS5BcmFiaWMgPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza05hbWUuYXJhYmljO1xyXG5cclxuICAgICAgICAgICAgbGV0IHRhc2tEZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICAgIHRhc2tEZXNjcmlwdGlvbi5FbmdsaXNoID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tEZXNjcmlwdGlvbi5lbmdsaXNoO1xyXG4gICAgICAgICAgICB0YXNrRGVzY3JpcHRpb24uQXJhYmljID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tEZXNjcmlwdGlvbi5hcmFiaWM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5OYW1lID0gXCJkeW5hbWljVGFza05hbWVcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuQXJhYmljTGFiZWxLZXkgPSBcIlRhc2tOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5WYWx1ZSA9IHRhc2tOYW1lO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uTmFtZSA9IFwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uVmFsdWUgPSB0YXNrRGVzY3JpcHRpb247XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTmFtZSA9IFwiZHluYW1pY1Rhc2tVUkxcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5MYWJlbEtleSA9IFwiVGFza1VSTFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5WYWx1ZSA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrVVJMO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLk5hbWUgPSBcImR5bmFtaWNUYXNrVHlwZVwiXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkxhYmVsS2V5ID0gXCJUYXNrVHlwZVwiXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLnRhc2tUeXBlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tDb3JybFR5cGVJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5OYW1lID0gXCJkeW5hbWljQ2FuQ29tcGxldGVcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTGFiZWxLZXkgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmFsdWUgPSB0aGlzLmFjdGl2aXR5TW9kZWwuY2FuQ29tcGxldGVGcm9tVE1FO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zaG93RHluYW1pY0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5Db25kaXRpb246XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0ID0gbGlzdC53ZlZhcmlhYmxlcztcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdCA9IGxpc3QucmhzVHlwZXM7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTGlzdCA9IGxpc3QuY29uZGl0aW9ucztcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uTEhTRHJvcERvd25cIlxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIlxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5saHNWYXJpYWJsZUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uc0Ryb3BEb3duXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiQ29uZGl0aW9uXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uTGlzdFxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5vcGVyYXRvclR5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIlxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLnJoc1R5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpdml0eU1vZGVsLlJIU1R5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKSA9PSBSaWdodGhhbmRzaWRldHlwZS5WYXJpYWJsZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25SSFNEcm9wRG93blwiXHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwucmhzVmFyaWFibGVJRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5OYW1lID0gXCJjb25kaXRpb25SSFNWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLlBsYWNlaG9sZGVyID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5WYWx1ZSA9IHRoaXMuYWN0aXZpdHlNb2RlbC5yaHNWYWx1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0NvbmRpdGlvbkNvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zeXNOYW1lLk5hbWUgPSBcInN5c05hbWVcIjtcclxuICAgICAgICB0aGlzLnN5c05hbWUuTGFiZWxLZXkgPSBcIlN5c05hbWVcIjtcclxuICAgICAgICB0aGlzLnN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuc3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN5c05hbWUuVmFsdWUgPSB0aGlzLmFjdGl2aXR5TW9kZWwuc3lzTmFtZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZpdHlUeXBlSUQgIT0gQWN0aXZpdHlUeXBlLlN0YXJ0KSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dBY3Rpdml0eVR5cGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuTmFtZSA9IFwiYWN0aXZpdHlUeXBlXCJcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVR5cGVcIlxyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuQWN0aXZpdHlUeXBlTGlzdFxyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlUeXBlSUQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzd2l0Y2ggKHRoaXMuYWN0aXZpdHlUeXBlSUQpIHtcclxuICAgICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFwcHJvdmFsOlxyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQWN0aW9uOlxyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgICAgIHRoaXMudGFza1R5cGVMaXN0ID0gbGlzdC50YXNrcztcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnRUeXBlcztcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnREYXRhO1xyXG5cclxuICAgICAgICAgICAgbGV0IHRhc2tOYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgICAgICAgdGFza05hbWUuRW5nbGlzaCA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrTmFtZS5lbmdsaXNoO1xyXG4gICAgICAgICAgICB0YXNrTmFtZS5BcmFiaWMgPSB0aGlzLmFjdGl2aXR5TW9kZWwudGFza05hbWUuYXJhYmljO1xyXG5cclxuICAgICAgICAgICAgbGV0IHRhc2tEZXNjcmlwdGlvbiA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICAgIHRhc2tEZXNjcmlwdGlvbi5FbmdsaXNoID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tEZXNjcmlwdGlvbi5lbmdsaXNoO1xyXG4gICAgICAgICAgICB0YXNrRGVzY3JpcHRpb24uQXJhYmljID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tEZXNjcmlwdGlvbi5hcmFiaWM7XHJcbiAgICAgICAgICAgIC8vSW5pdGlhbGl6ZSByZXF1aXJlZCBjb250cm9scyBmb3IgYXBwcm92YWxcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTmFtZSA9IFwicGFydGljaXBhbnRUeXBlc1wiXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5MYWJlbEtleSA9IFwiUGFydGljaXBhbnRUeXBlc1wiXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5wYXJ0aWNpcGFudFR5cGVJdGVtSURzU3RyaW5nTGlzdDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2aXR5TW9kZWwucGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ0xpc3QuaW5jbHVkZXMoUGFydGljaXBhbnRUeXBlLlBlcm1pc3Npb25TZXQpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuTmFtZSA9IFwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiXHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnREYXRhTGlzdFxyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLnBhcnRpY2lwYW50UGVybXNldHNJRHNTdHJpbmc7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5OYW1lID0gXCJkeW5hbWljVGFza05hbWVcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuQXJhYmljTGFiZWxLZXkgPSBcIlRhc2tOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5WYWx1ZSA9IHRhc2tOYW1lO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uTmFtZSA9IFwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uVmFsdWUgPSB0YXNrRGVzY3JpcHRpb247XHJcblxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTmFtZSA9IFwiZHluYW1pY1Rhc2tVUkxcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5MYWJlbEtleSA9IFwiVGFza1VSTFwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5WYWx1ZSA9IHRoaXMuYWN0aXZpdHlNb2RlbC50YXNrVVJMO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLk5hbWUgPSBcImR5bmFtaWNUYXNrVHlwZVwiXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkxhYmVsS2V5ID0gXCJUYXNrVHlwZVwiXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkRhdGFTb3VyY2UgPSB0aGlzLnRhc2tUeXBlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLnRhc2tDb3JybFR5cGVJRD8udG9TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5OYW1lID0gXCJkeW5hbWljQ2FuQ29tcGxldGVcIjtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTGFiZWxLZXkgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmFsdWUgPSB0aGlzLmFjdGl2aXR5TW9kZWwuY2FuQ29tcGxldGVGcm9tVE1FO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zaG93RHluYW1pY0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU3RhcnQ6XHJcbiAgICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLlNsZWVwOlxyXG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpdml0eVR5cGVJRCA9PSBBY3Rpdml0eVR5cGUuRW1haWwpIHtcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudFR5cGVzO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnREYXRhTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50RGF0YTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5OYW1lID0gXCJwYXJ0aWNpcGFudFR5cGVzXCJcclxuICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTGFiZWxLZXkgPSBcIlBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLnBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmdMaXN0XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2aXR5TW9kZWwucGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ0xpc3QuaW5jbHVkZXMoUGFydGljaXBhbnRUeXBlLlBlcm1pc3Npb25TZXQpKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5OYW1lID0gXCJwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXRcIlxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIlxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnREYXRhTGlzdFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLnBhcnRpY2lwYW50UGVybXNldHNJRHNTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50Q29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICAgIG5hbWUuQXJhYmljID0gdGhpcy5hY3Rpdml0eU1vZGVsLm5vcm1hbE91dGNvbWVOYW1lLmFyYWJpYztcclxuICAgICAgICAgICAgbmFtZS5FbmdsaXNoID0gdGhpcy5hY3Rpdml0eU1vZGVsLm5vcm1hbE91dGNvbWVOYW1lLmVuZ2xpc2g7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZU5hbWVcIjtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiT3V0Y29tZU5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiT3V0Y29tZU5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5WYWx1ZSA9IG5hbWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZVN5c05hbWVcIjtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5MYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLlZhbHVlID0gdGhpcy5hY3Rpdml0eU1vZGVsLm91dGNvbWVTeXNOYW1lO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuTmFtZSA9IFwic3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eVwiXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5MYWJlbEtleSA9IFwiTmV4dEFjdGl2aXR5XCJcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LkRhdGFTb3VyY2UgPSB0aGlzLm5leHRBY3Rpdml0eUxpc3RcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwubmV4dEFjdGl2aXR5SURfR1VJRD8udG9Mb3dlckNhc2UoKVxyXG5cclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5OYW1lID0gXCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50LkxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSB0aGlzLmFjdGl2aXR5TW9kZWwuY2FuQWRkQ29tbWVudDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1N0YXRpY0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5Db25kaXRpb246XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0ID0gbGlzdC53ZlZhcmlhYmxlcztcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdCA9IGxpc3QucmhzVHlwZXM7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTGlzdCA9IGxpc3QuY29uZGl0aW9ucztcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uTEhTRHJvcERvd25cIlxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIlxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5saHNWYXJpYWJsZUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uc0Ryb3BEb3duXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiQ29uZGl0aW9uXCJcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uTGlzdFxyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uU2VsZWN0ZWRJdGVtcyA9IHRoaXMuYWN0aXZpdHlNb2RlbC5vcGVyYXRvclR5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU1R5cGVEcm9wRG93blwiXHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTVHlwZUxpc3RcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLlNlbGVjdGVkSXRlbXMgPSB0aGlzLmFjdGl2aXR5TW9kZWwucmhzVHlwZUl0ZW1JRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZpdHlNb2RlbC5yaHNUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCkgPT0gUmlnaHRoYW5kc2lkZXR5cGUuVmFyaWFibGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTRHJvcERvd25cIlxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gdGhpcy5hY3Rpdml0eU1vZGVsLnJoc1ZhcmlhYmxlSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuTmFtZSA9IFwiY29uZGl0aW9uUkhTVmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5QbGFjZWhvbGRlciA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuVmFsdWUgPSB0aGlzLmFjdGl2aXR5TW9kZWwucmhzVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25Db250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmlzRWRpdEZvcm1Mb2FkZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0VkaXQgZnVuY3Rpb25zXHJcbiAgZ2V0RWRpdFdGQWN0aXZpdHlNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0udmFsdWU7XHJcbiAgICBsZXQgZWRpdE1vZGVsID0gbmV3IFdGQWN0aXZpdHlNb2RlbCgpO1xyXG4gICAgZWRpdE1vZGVsLklEX0dVSUQgPSB0aGlzLmFjdGl2aXR5SUQ7XHJcbiAgICBlZGl0TW9kZWwuTmFtZS5FbmdsaXNoID0gUmVzdWx0TW9kZWwubmFtZS5FbmdsaXNoO1xyXG4gICAgZWRpdE1vZGVsLk5hbWUuQXJhYmljID0gUmVzdWx0TW9kZWwubmFtZS5BcmFiaWM7XHJcbiAgICBlZGl0TW9kZWwuVmVyc2lvbklEX0dVSUQgPSB0aGlzLnZlcnNpb25JRDtcclxuICAgIGVkaXRNb2RlbC5BY3Rpdml0eVR5cGVJdGVtSURfR1VJRCA9IHRoaXMuYWN0aXZpdHlUeXBlSUQ7XHJcbiAgICBlZGl0TW9kZWwuU3lzTmFtZSA9IFJlc3VsdE1vZGVsLnN5c05hbWVcclxuXHJcbiAgICAvL0lmIHBhcnRpY2lwYW50IGV4aXN0c1xyXG4gICAgaWYgKFJlc3VsdE1vZGVsLnBhcnRpY2lwYW50VHlwZXMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGVkaXRNb2RlbC5QYXJ0aWNpcGFudERUTyA9IG5ldyBQYXJ0aWNpcGFudE1vZGVsKCk7XHJcbiAgICAgIGVkaXRNb2RlbC5QYXJ0aWNpcGFudERUTyA9IG5ldyBQYXJ0aWNpcGFudE1vZGVsKCk7XHJcbiAgICAgIGVkaXRNb2RlbC5QYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSURzU3RyaW5nID0gUmVzdWx0TW9kZWwucGFydGljaXBhbnRUeXBlcy50b1N0cmluZygpO1xyXG4gICAgICBpZiAoUmVzdWx0TW9kZWwucGFydGljaXBhbnRUeXBlcy5pbmNsdWRlcyhQYXJ0aWNpcGFudFR5cGUuUGVybWlzc2lvblNldCkpIHtcclxuICAgICAgICBlZGl0TW9kZWwuUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEc1N0cmluZyA9IFJlc3VsdE1vZGVsLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKHRoaXMuYWN0aXZpdHlUeXBlSUQpIHtcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQXBwcm92YWw6XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFjdGlvbjpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgZWRpdE1vZGVsLlRhc2tOYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza05hbWUuRW5nbGlzaDtcclxuICAgICAgICBlZGl0TW9kZWwuVGFza05hbWUuQXJhYmljID0gUmVzdWx0TW9kZWwuZHluYW1pY1Rhc2tOYW1lLkFyYWJpYztcclxuICAgICAgICBlZGl0TW9kZWwuVGFza0Rlc2NyaXB0aW9uLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza0Rlc2NyaXB0aW9uLkVuZ2xpc2g7XHJcbiAgICAgICAgZWRpdE1vZGVsLlRhc2tEZXNjcmlwdGlvbi5BcmFiaWMgPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza0Rlc2NyaXB0aW9uLkFyYWJpYztcclxuICAgICAgICBlZGl0TW9kZWwuVGFza1VSTCA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrVVJMO1xyXG4gICAgICAgIGVkaXRNb2RlbC5UYXNrQ29ycmxUeXBlSUQgPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza1R5cGUgIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5keW5hbWljVGFza1R5cGUpIDogbnVsbDtcclxuICAgICAgICBlZGl0TW9kZWwuQ2FuQ29tcGxldGVGcm9tVE1FID0gUmVzdWx0TW9kZWwuZHluYW1pY0NhbkNvbXBsZXRlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5TdGFydDpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuRW1haWw6XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLlNsZWVwOlxyXG4gICAgICAgIGlmICghdGhpcy5pc1B1Ymxpc2hlZCkge1xyXG4gICAgICAgICAgZWRpdE1vZGVsLk5vcm1hbE91dGNvbWVOYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5zdGF0aWNPdXRjb21lTmFtZS5FbmdsaXNoO1xyXG4gICAgICAgICAgZWRpdE1vZGVsLk5vcm1hbE91dGNvbWVOYW1lLkFyYWJpYyA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVOYW1lLkFyYWJpYztcclxuICAgICAgICAgIGVkaXRNb2RlbC5PdXRjb21lU3lzTmFtZSA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVTeXNOYW1lO1xyXG4gICAgICAgICAgZWRpdE1vZGVsLk5leHRBY3Rpdml0eUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5O1xyXG4gICAgICAgICAgZWRpdE1vZGVsLkNhbkFkZENvbW1lbnQgPSBSZXN1bHRNb2RlbC5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICBlZGl0TW9kZWwuTEhTVmFyaWFibGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuY29uZGl0aW9uTEhTRHJvcERvd247XHJcbiAgICAgICAgZWRpdE1vZGVsLlJIU1ZhcmlhYmxlSURfR1VJRCA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU0Ryb3BEb3duO1xyXG4gICAgICAgIGVkaXRNb2RlbC5SSFNUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5jb25kaXRpb25SSFNUeXBlRHJvcERvd25cclxuICAgICAgICBlZGl0TW9kZWwuT3BlcmF0b3JUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5jb25kaXRpb25zRHJvcERvd25cclxuICAgICAgICBlZGl0TW9kZWwuUkhTVmFsdWUgPSBSZXN1bHRNb2RlbC5jb25kaXRpb25SSFNWYWx1ZSAhPSB1bmRlZmluZWQgPyBSZXN1bHRNb2RlbC5jb25kaXRpb25SSFNWYWx1ZSA6IG51bGw7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICAvL1NldCBPdXRjb21lcyAoZHluYW1pYyxjb25kaXRpb24gdHlwZXMpXHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMub3V0Y29tZXNDb3VudDsgaisrKSB7XHJcbiAgICAgIGxldCBvdXRjb21lSUQgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVJRFwiICsgal07XHJcbiAgICAgIGlmIChvdXRjb21lSUQgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lTmFtZVwiICsgal07XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZVN5c05hbWU6IHN0cmluZztcclxuICAgICAgbGV0IG91dENvbWVDYW5FZGl0U3lzTmFtZSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUNhbkVkaXRTeXNOYW1lXCIgKyBqXTtcclxuICAgICAgaWYgKG91dENvbWVDYW5FZGl0U3lzTmFtZSlcclxuICAgICAgICBvdXRjb21lU3lzTmFtZSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZURlY2lzaW9uU3lzTmFtZVwiICsgal07XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBvdXRjb21lU3lzTmFtZSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUhpZGRlbmVTeXNOYW1lXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lQWN0aXZpdHkgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgal07XHJcbiAgICAgIGxldCBvdXRjb21lQ2FuQWRkQ29tbWVudCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUNhbkFkZENvbW1lbnRcIiArIGpdO1xyXG4gICAgICBsZXQgYWN0aXZpdHlPdXRjb21lOiBXRkFjdGl2aXR5T3V0Y29tZU1vZGVsID0gbmV3IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwoKTtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLklEX0dVSUQgPSBvdXRjb21lSUQ7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5OYW1lRU4gPSBvdXRjb21lTmFtZS5FbmdsaXNoO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuTmFtZUFSID0gb3V0Y29tZU5hbWUuQXJhYmljO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuT3V0Y29tZVN5c05hbWUgPSBvdXRjb21lU3lzTmFtZTtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk5leHRBY3Rpdml0eUlEX0dVSUQgPSBvdXRjb21lQWN0aXZpdHlcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLkNhbkFkZENvbW1lbnQgPSBvdXRjb21lQ2FuQWRkQ29tbWVudDtcclxuICAgICAgZWRpdE1vZGVsLk91dGNvbWVzLnB1c2goYWN0aXZpdHlPdXRjb21lKTtcclxuICAgIH1cclxuICAgIHBhcmFtQXJyYXkucHVzaChlZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG4gIGdldEVkaXRXRkFjdGl2aXR5RnVuY3Rpb24gPSAoZWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIGlmICh0aGlzLmlzUHVibGlzaGVkKVxyXG4gICAgICByZXR1cm4gdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5lZGl0UHVibGlzaGVkQWN0aXZpdHkoZWRpdE1vZGVsKTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIHRoaXMud29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UuZWRpdEFjdGl2aXR5KGVkaXRNb2RlbCk7XHJcbiAgfVxyXG4gIG9uRWRpdFN1Y2Nlc3MgPSAocmVzdWx0KSA9PiB7XHJcbiAgICB0aGlzLmNhbmNlbEVkaXQoKTtcclxuICB9XHJcblxyXG4gIC8vT3V0Y29tZSBmdW5jdGlvbnNcclxuICBnZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyhvdXRDb21lczogYW55W10sIGlzUHVibGlzaGVkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgb3V0Y29tZXNPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IG91dGNvbWVzQ291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdXRDb21lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY3VycmVudE91dGNvbWUgPSBvdXRDb21lc1tpXTtcclxuICAgICAgbGV0IG9iamVjdE91dGNvbWVPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVJRCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lSUQuTmFtZSA9IFwib3V0Y29tZUlEXCIgKyBpO1xyXG4gICAgICBvdXRjb21lSUQuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgb3V0Y29tZUlELlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgb3V0Y29tZUlELlZhbHVlID0gY3VycmVudE91dGNvbWUuaURfR1VJRDtcclxuXHJcbiAgICAgIGxldCBuYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgbmFtZS5FbmdsaXNoID0gY3VycmVudE91dGNvbWUubmFtZUVOO1xyXG4gICAgICBuYW1lLkFyYWJpYyA9IGN1cnJlbnRPdXRjb21lLm5hbWVBUjtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lTmFtZS5OYW1lID0gXCJvdXRjb21lTmFtZVwiICsgaTtcclxuICAgICAgb3V0Y29tZU5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICBvdXRjb21lTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgb3V0Y29tZU5hbWUuVmFsdWUgPSBuYW1lO1xyXG4gICAgICBvdXRjb21lTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5OYW1lID0gXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGk7XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5MYWJlbEtleSA9IFwiQWN0aXZpdHlcIlxyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMubmV4dEFjdGl2aXR5TGlzdFxyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLlNlbGVjdGVkSXRlbXMgPSBjdXJyZW50T3V0Y29tZS5uZXh0QWN0aXZpdHlJRF9HVUlEPy50b0xvd2VyQ2FzZSgpXHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUNhbkVkaXQ6IGJvb2xlYW47XHJcbiAgICAgIG91dGNvbWVDYW5FZGl0ID0gY3VycmVudE91dGNvbWUuY2FuRWRpdDtcclxuICAgICAgbGV0IG91dGNvbWVIaWRkZW5lU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lSGlkZGVuZVN5c05hbWUuTmFtZSA9IFwib3V0Y29tZUhpZGRlbmVTeXNOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lSGlkZGVuZVN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBvdXRjb21lSGlkZGVuZVN5c05hbWUuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5vdXRjb21lU3lzTmFtZTtcclxuICAgICAgbGV0IG91dGNvbWVDYW5FZGl0U3lzTmFtZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgaTtcclxuICAgICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLlZhbHVlID0gY3VycmVudE91dGNvbWUuY2FuRWRpdFN5c05hbWU7XHJcblxyXG4gICAgICBpZiAoIWlzUHVibGlzaGVkKSB7XHJcbiAgICAgICAgbGV0IG91dGNvbWVEZWNpc2lvblN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGk7XHJcbiAgICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5MYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLm91dGNvbWVTeXNOYW1lO1xyXG4gICAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuSXNEaXNhYmxlZCA9ICFjdXJyZW50T3V0Y29tZS5jYW5FZGl0U3lzTmFtZTtcclxuICAgICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICBsZXQgb3V0Y29tZUNhbkFkZENvbW1lbnQgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgb3V0Y29tZUNhbkFkZENvbW1lbnQuTmFtZSA9IFwib3V0Y29tZUNhbkFkZENvbW1lbnRcIiArIGk7XHJcbiAgICAgICAgb3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5jYW5BZGRDb21tZW50O1xyXG4gICAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50LkxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcblxyXG4gICAgICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLCBvdXRjb21lQ2FuQWRkQ29tbWVudCwgb3V0Y29tZUNhbkVkaXQsIG91dGNvbWVIaWRkZW5lU3lzTmFtZSwgb3V0Y29tZUNhbkVkaXRTeXNOYW1lKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgb2JqZWN0T3V0Y29tZU9wdGlvbnMucHVzaChvdXRjb21lSUQsIG91dGNvbWVOYW1lLCBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMsIG91dGNvbWVDYW5FZGl0LCBvdXRjb21lSGlkZGVuZVN5c05hbWUsIG91dGNvbWVDYW5FZGl0U3lzTmFtZSk7XHJcblxyXG4gICAgICBvdXRjb21lc09wdGlvbnMucHVzaChvYmplY3RPdXRjb21lT3B0aW9ucyk7XHJcbiAgICAgIG91dGNvbWVzQ291bnQgKz0gMTtcclxuXHJcbiAgICB9XHJcbiAgICByZXR1cm4gW291dGNvbWVzT3B0aW9ucywgb3V0Y29tZXNDb3VudF07XHJcbiAgfVxyXG4gIGFkZFdGQWN0aXZpdHlPdXRjb21lKCkge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5vdXRjb21lc0NvdW50O1xyXG5cclxuICAgIGxldCBvYmplY3RPdXRjb21lT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUlEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lSUQuTmFtZSA9IFwib3V0Y29tZUlEXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVJRC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgb3V0Y29tZUlELlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuXHJcbiAgICBsZXQgb3V0Y29tZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVOYW1lLk5hbWUgPSBcIm91dGNvbWVOYW1lXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgIG91dGNvbWVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgb3V0Y29tZU5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVEZWNpc2lvblN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuTmFtZSA9IFwib3V0Y29tZURlY2lzaW9uU3lzTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLkxhYmVsS2V5ID0gXCJEZWNpc2lvblN5c05hbWVcIjtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLk5hbWUgPSBcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuTGFiZWxLZXkgPSBcIkFjdGl2aXR5XCJcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUNhbkFkZENvbW1lbnQuTmFtZSA9IFwib3V0Y29tZUNhbkFkZENvbW1lbnRcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUNhbkFkZENvbW1lbnQuTGFiZWxLZXkgPSBcIkNhbkFkZENvbW1lbnRcIjtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUNhbkVkaXQ6IGJvb2xlYW47XHJcbiAgICBvdXRjb21lQ2FuRWRpdCA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVIaWRkZW5lU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lSGlkZGVuZVN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuICAgIGxldCBvdXRjb21lQ2FuRWRpdFN5c05hbWUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUuTmFtZSA9IFwib3V0Y29tZUNhbkVkaXRTeXNOYW1lXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVDYW5FZGl0U3lzTmFtZS5WYWx1ZSA9IHRydWU7XHJcblxyXG4gICAgb2JqZWN0T3V0Y29tZU9wdGlvbnMucHVzaChvdXRjb21lSUQsIG91dGNvbWVOYW1lLCBvdXRjb21lRGVjaXNpb25TeXNOYW1lLCBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMsIG91dGNvbWVDYW5BZGRDb21tZW50LFxyXG4gICAgICBvdXRjb21lQ2FuRWRpdCwgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLCBvdXRjb21lQ2FuRWRpdFN5c05hbWUpO1xyXG5cclxuICAgIHRoaXMub3V0Y29tZXNPcHRpb25zLnB1c2gob2JqZWN0T3V0Y29tZU9wdGlvbnMpO1xyXG4gICAgdGhpcy5vdXRjb21lc0NvdW50ICs9IDE7XHJcblxyXG4gIH1cclxuICBkZWxldGVPdXRjb21lKGRlbGV0ZWRPdXRjb21lOiBhbnkpIHtcclxuICAgIGxldCBkZWxldGVkT3V0Y29tZUluZGV4OiBudW1iZXIgPSB0aGlzLm91dGNvbWVzT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRPdXRjb21lKTtcclxuICAgIGlmIChkZWxldGVkT3V0Y29tZUluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLm91dGNvbWVzT3B0aW9ucy5zcGxpY2UoZGVsZXRlZE91dGNvbWVJbmRleCwgMSk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZE91dGNvbWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRPdXRjb21lW2ldLk5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL09uIGNoYW5nZXMgZXZlbnRzXHJcbiAgYWN0aXZpdHlUeXBlT25DaGFuZ2UoYWN0aXZpdHlUeXBlKSB7XHJcbiAgICBhY3Rpdml0eVR5cGUgPSBhY3Rpdml0eVR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAvL1Jlc2V0IGNvbnRyb2xzLCBvdXRjb21lcyBhbmQgZmxhZ3NcclxuICAgIHRoaXMucmVzZXRBbGxBY3Rpdml0eVR5cGVDb250cm9scygpO1xyXG4gICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBbXTtcclxuICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IDA7XHJcbiAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RHluYW1pY0NvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTdGF0aWNDb250cm9scyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93Q29uZGl0aW9uQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5hY3Rpdml0eVR5cGVJRCA9IGFjdGl2aXR5VHlwZTtcclxuICAgIHRoaXMud29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UuZ2V0QWN0aXZpdHlPdXRjb21lcyh0aGlzLnZlcnNpb25JRCwgYWN0aXZpdHlUeXBlKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB2YXIgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdmFyIG1vZGVsID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICB2YXIgbGlzdCA9IHJlc3VsdE9iai5saXN0O1xyXG4gICAgICB0aGlzLm5leHRBY3Rpdml0eUxpc3QgPSBsaXN0LmFjdGl2aXRpZXM7XHJcblxyXG4gICAgICBzd2l0Y2ggKGFjdGl2aXR5VHlwZSkge1xyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFwcHJvdmFsOlxyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFjdGlvbjpcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5QZXJjZW50YWdlVGFzazpcclxuICAgICAgICAgIHRoaXMudGFza1R5cGVMaXN0ID0gbGlzdC50YXNrcztcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudERhdGE7XHJcblxyXG4gICAgICAgICAgLy9Jbml0aWFsaXplIHJlcXVpcmVkIGNvbnRyb2xzIGZvciBhcHByb3ZhbFxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLk5hbWUgPSBcInBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkxhYmVsS2V5ID0gXCJQYXJ0aWNpcGFudFR5cGVzXCJcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5OYW1lID0gXCJkeW5hbWljVGFza05hbWVcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJUYXNrTmFtZUluQXJhYmljXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tOYW1lSW5FbmdsaXNoXCI7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLk5hbWUgPSBcImR5bmFtaWNUYXNrRGVzY3JpcHRpb25cIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTmFtZSA9IFwiZHluYW1pY1Rhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTGFiZWxLZXkgPSBcIlRhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTmFtZSA9IFwiZHluYW1pY1Rhc2tUeXBlXCJcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkxhYmVsS2V5ID0gXCJUYXNrVHlwZVwiXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5EYXRhU291cmNlID0gdGhpcy50YXNrVHlwZUxpc3RcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLk5hbWUgPSBcImR5bmFtaWNDYW5Db21wbGV0ZVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTGFiZWxLZXkgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WYWx1ZSA9IG1vZGVsLmNhbkNvbXBsZXRlRnJvbVRNRTtcclxuXHJcbiAgICAgICAgICBsZXQgb3V0Y29tZXNSZXN1bHQ6IGFueSA9IHRoaXMuZ2V0QWN0aXZpdHlPdXRjb21lc09wdGlvbnMobW9kZWwub3V0Y29tZXMsIGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gb3V0Y29tZXNSZXN1bHRbMF07XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBvdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dEeW5hbWljQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93T3V0Y29tZXNDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuRW1haWw6XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICBuYW1lLkFyYWJpYyA9IG1vZGVsLm5vcm1hbE91dGNvbWVOYW1lLmFyYWJpYztcclxuICAgICAgICAgIG5hbWUuRW5nbGlzaCA9IG1vZGVsLm5vcm1hbE91dGNvbWVOYW1lLmVuZ2xpc2g7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5OYW1lID0gXCJzdGF0aWNPdXRjb21lTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiT3V0Y29tZU5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk91dGNvbWVOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5WYWx1ZSA9IG5hbWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5OYW1lID0gXCJzdGF0aWNPdXRjb21lU3lzTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5MYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5Lk5hbWUgPSBcInN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHlcIlxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LkxhYmVsS2V5ID0gXCJOZXh0QWN0aXZpdHlcIlxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LkRhdGFTb3VyY2UgPSB0aGlzLm5leHRBY3Rpdml0eUxpc3RcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50ID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5OYW1lID0gXCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSBtb2RlbC5jYW5BZGRDb21tZW50O1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd1N0YXRpY0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0ID0gbGlzdC5yaHNUeXBlcztcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTGlzdCA9IGxpc3QuY29uZGl0aW9ucztcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25MSFNEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbnNEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiQ29uZGl0aW9uXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRSSFNUeXBlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5Py50b0xvd2VyQ2FzZSgpID09IFJpZ2h0aGFuZHNpZGV0eXBlLlZhcmlhYmxlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTVHlwZURyb3BEb3duXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRSSFNUeXBlO1xyXG5cclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU0Ryb3BEb3duXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBsZXQgY29uZGl0aW9uT3V0Y29tZXNSZXN1bHQ6IGFueSA9IHRoaXMuZ2V0QWN0aXZpdHlPdXRjb21lc09wdGlvbnMobW9kZWwub3V0Y29tZXMsIGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gY29uZGl0aW9uT3V0Y29tZXNSZXN1bHRbMF07XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBjb25kaXRpb25PdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25Db250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FuQWRkT3V0Y29tZSA9IHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID8gbW9kZWwuY2FuQWRkT3V0Y29tZSA6IGZhbHNlO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKHR5cGUpIHtcclxuICAgIHR5cGUgPSB0eXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHR5cGUgPT0gUmlnaHRoYW5kc2lkZXR5cGUuVmFyaWFibGUpIHtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvblJIU1ZhbHVlXCIpXHJcblxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU0Ryb3BEb3duXCJcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uUkhTRHJvcERvd25cIilcclxuXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5OYW1lID0gXCJjb25kaXRpb25SSFNWYWx1ZVwiO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuUGxhY2Vob2xkZXIgPSBcIlZhbHVlXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgcGFydGljaXBhbnRUeXBlT25DaGFuZ2UocGFydGljaXBhbnRUeXBlKSB7XHJcbiAgICBwYXJ0aWNpcGFudFR5cGUgPSBwYXJ0aWNpcGFudFR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAocGFydGljaXBhbnRUeXBlID09IFBhcnRpY2lwYW50VHlwZS5QZXJtaXNzaW9uU2V0KSB7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5OYW1lID0gXCJwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXRcIlxyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiXHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkRhdGFTb3VyY2UgPSB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3RcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCIpO1xyXG4gICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICAvL1Jlc2V0IHR5cGVcclxuICByZXNldEFsbEFjdGl2aXR5VHlwZUNvbnRyb2xzKCkge1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInBhcnRpY2lwYW50VHlwZXNcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJkeW5hbWljVGFza05hbWVcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJkeW5hbWljVGFza1VSTFwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJkeW5hbWljVGFza1R5cGVcIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY0NhbkNvbXBsZXRlXCIpO1xyXG5cclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJzdGF0aWNPdXRjb21lTmFtZVwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJzdGF0aWNPdXRjb21lU3lzTmFtZVwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5XCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50XCIpO1xyXG5cclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25MSFNEcm9wRG93blwiKTtcclxuICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25zRHJvcERvd25cIik7XHJcbiAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uUkhTVHlwZURyb3BEb3duXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvblJIU0Ryb3BEb3duXCIpO1xyXG4gICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvblJIU1ZhbHVlXCIpO1xyXG5cclxuICAgIC8vUmVtb3ZlIG91dGNvbWVzIGNvbnRyb2xzXHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS52YWx1ZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdXRjb21lc0NvdW50OyBpKyspIHtcclxuICAgICAgbGV0IG91dGNvbWVJRCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUlEXCIgKyBpXTtcclxuICAgICAgaWYgKG91dGNvbWVJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZUlEXCIgKyBpKTtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVOYW1lXCIgKyBpKTtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGkpO1xyXG4gICAgICB0aGlzLmVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZUhpZGRlbmVTeXNOYW1lXCIgKyBpKTtcclxuICAgICAgdGhpcy5lZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgaSk7XHJcbiAgICAgIHRoaXMuZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgaSk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9DYW5jZWxcclxuICBjYW5jZWxFZGl0KCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvQWRtaW4vV29ya2Zsb3dzL3dvcmtmbG93LyddKTtcclxuICB9XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIiAqbmdJZj1cImlzRWRpdEZvcm1Mb2FkZWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnNcIj5cclxuICAgICAgICA8IS0tU3RhcnQgc2hhcmVkIGNvbnRyb2xzIGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJuYW1lXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhaXNQdWJsaXNoZWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzeXNOYW1lXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzaG93QWN0aXZpdHlUeXBlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhY3Rpdml0eVR5cGVcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCIgKE9uQ2hhbmdlKT1cImFjdGl2aXR5VHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgc2hhcmVkIGNvbnRyb2xzIGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBwYXJ0aWNpcGFudCBjb250YWluZXItLT5cclxuICAgICAgICA8ZGl2IGlkPVwicGFydGljaXBhbnRDb250YWluZXJcIiAqbmdJZj1cInNob3dQYXJ0aWNpcGFudENvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cInBhcnRpY2lwYW50VHlwZXNcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCIgKE9uQ2hhbmdlKT1cInBhcnRpY2lwYW50VHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXRcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgcGFydGljaXBhbnQgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPCEtLVN0YXJ0IHN0YXRpYyBjb250cm9scy0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93U3RhdGljQ29udHJvbHNcIiBpZD1cInN0YXRpY0NvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lTmFtZVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVTeXNOYW1lXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5XCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwic3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnRcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgc3RhdGljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPCEtLVN0YXJ0IGR5bmFtaWMgY29udHJvbHMtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0R5bmFtaWNDb250cm9sc1wiIGlkPVwiZHluYW1pY0NvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJkeW5hbWljVGFza05hbWVcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWEgW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWE+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJkeW5hbWljVGFza1VSTFwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tUeXBlXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZHluYW1pY0NhbkNvbXBsZXRlXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIGR5bmFtaWMgY29udHJvbHMtLT5cclxuICAgICAgICA8IS0tU3RhcnQgY29uZGl0aW9uIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dDb25kaXRpb25Db250cm9sc1wiIGlkPVwiY29uZGl0aW9uQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkxlZnRIYW5kU2lkZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25kaXRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmlnaHRIYW5kU2lkZVR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmlnaHRIYW5kU2lkZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25MSFNEcm9wRG93blwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImNvbmRpdGlvbnNEcm9wRG93blwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImNvbmRpdGlvblJIU1R5cGVEcm9wRG93blwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIiAoT25DaGFuZ2UpPVwiY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZTsgZWxzZSBjb25kaXRpb25UeHRWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNEcm9wRG93blwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmRpdGlvblR4dFZhbHVlPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiY29uZGl0aW9uUkhTVmFsdWVcIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBjb25kaXRpb24gY29udHJvbHMtLT5cclxuICAgICAgICA8IS0tU3RhcnQgb3V0Y29tZXMgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dPdXRjb21lc0NvbnRhaW5lclwiIGlkPVwib3V0Y29tZXNDb250YWluZXJcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVjaXNpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWlzUHVibGlzaGVkXCIgY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFpc1B1Ymxpc2hlZFwiIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIhaXNQdWJsaXNoZWRcIiBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIiAqbmdJZj1cImlzUHVibGlzaGVkO2Vsc2Ugbm90UHVibGlzaGVkT3V0Y29tZXNcIj5cclxuICAgICAgICAgICAgICAgICAgPHRyICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG91dGNvbWVzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tSUQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1OZXh0QWN0aXZpdHktLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdFB1Ymxpc2hlZE91dGNvbWVzPlxyXG4gICAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvdXRjb21lc09wdGlvbnM7bGV0IGk9aW5kZXg7XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tSUQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bMF1cIiBbZ3JvdXBdPVwiZWRpdHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsxXVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tU3lzTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1oaWRkZW4gU3lzTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvbls2XVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1jYW4gZWRpdCBTeXNOYW1lLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvbls3XVwiIFtncm91cF09XCJlZGl0d29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLU5leHRBY3Rpdml0eS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzNdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLUNhbkFkZENvbW1lbnQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwib3B0aW9uWzRdXCIgW2dyb3VwXT1cImVkaXR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWlmIG91dGNvbWUgQ2FuIEVkaXQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJvcHRpb25bNV1cIiBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tbGlnaHQtZGFuZ2VyIGJ0bi1zbVwiIChjbGljayk9XCJkZWxldGVPdXRjb21lKG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIiBmYSBmYS10cmFzaCBoaWRkZW5cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJjYW5BZGRPdXRjb21lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwiYWRkV0ZBY3Rpdml0eU91dGNvbWUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZE5ld1JlY29yZFwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBvdXRjb21lcyBjb250YWluZXItLT5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiIChjbGljayk9XCJjYW5jZWxFZGl0KClcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L0JCU0YtRm9ybT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
|