@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.
Files changed (163) hide show
  1. package/README.md +11 -3
  2. package/bnsights-bbsf-admin-portal-1.0.30.tgz +0 -0
  3. package/bundles/bnsights-bbsf-admin-portal.umd.js +1945 -1154
  4. package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
  5. package/esm2015/lib/Pages/ActiveDirectories/active-directory/active-directory.component.js +1 -2
  6. package/esm2015/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.js +1 -2
  7. package/esm2015/lib/Pages/_layout/components/footer/footer.component.js +11 -2
  8. package/esm2015/lib/Pages/authentication/auth-callback/auth-callback.component.js +1 -2
  9. package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +61 -66
  10. package/esm2015/lib/Pages/departments/department/department.component.js +5 -5
  11. package/esm2015/lib/Pages/departments/department-info/department-info.component.js +3 -3
  12. package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +20 -23
  13. package/esm2015/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.js +6 -6
  14. package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +6 -6
  15. package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +51 -55
  16. package/esm2015/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.js +204 -0
  17. package/esm2015/lib/Pages/localizations/localizations.component.js +4 -3
  18. package/esm2015/lib/Pages/localizations/localizations.module.js +6 -6
  19. package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +9 -8
  20. package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +4 -4
  21. package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +7 -9
  22. package/esm2015/lib/Pages/notifications/edit/edit.component.js +5 -5
  23. package/esm2015/lib/Pages/notifications/edit-email/edit-email.component.js +16 -20
  24. package/esm2015/lib/Pages/notifications/edit-sms/edit-sms.component.js +11 -14
  25. package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +2 -2
  26. package/esm2015/lib/Pages/notifications/notifications-routing.module.js +5 -3
  27. package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +20 -24
  28. package/esm2015/lib/Pages/notifications/templates/templates.component.js +18 -21
  29. package/esm2015/lib/Pages/providers/provider/provider.component.js +112 -28
  30. package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +11 -11
  31. package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +3 -3
  32. package/esm2015/lib/Pages/roles/permissions/permissions.component.js +8 -7
  33. package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +11 -10
  34. package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +2 -2
  35. package/esm2015/lib/Pages/sectors/sector/sector.component.js +4 -5
  36. package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +3 -3
  37. package/esm2015/lib/Pages/shared/Enums/ProviderType.js +7 -0
  38. package/esm2015/lib/Pages/shared/Services/WorkflowActivityService.service.js +1 -1
  39. package/esm2015/lib/Pages/shared/Services/localizationsService.service .js +7 -1
  40. package/esm2015/lib/Pages/shared/Services/provider.service.js +7 -1
  41. package/esm2015/lib/Pages/shared/config/environment.js +2 -2
  42. package/esm2015/lib/Pages/shared/constants.js +130 -0
  43. package/esm2015/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.js +1 -1
  44. package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentModel.js +2 -5
  45. package/esm2015/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.js +1 -1
  46. package/esm2015/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.js +1 -1
  47. package/esm2015/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.js +1 -1
  48. package/esm2015/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.js +1 -1
  49. package/esm2015/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.js +6 -0
  50. package/esm2015/lib/Pages/shared/models/Lookups/LookupGroupModel.js +1 -1
  51. package/esm2015/lib/Pages/shared/models/Lookups/LookupItem.js +1 -1
  52. package/esm2015/lib/Pages/shared/models/Lookups/LookupModel.js +1 -1
  53. package/esm2015/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.js +1 -1
  54. package/esm2015/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.js +1 -1
  55. package/esm2015/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.js +1 -1
  56. package/esm2015/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.js +1 -1
  57. package/esm2015/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.js +1 -1
  58. package/esm2015/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.js +1 -1
  59. package/esm2015/lib/Pages/shared/models/NotificationsModels/TemplateDTO.js +1 -1
  60. package/esm2015/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.js +1 -1
  61. package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionModel.js +1 -1
  62. package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.js +1 -1
  63. package/esm2015/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.js +1 -1
  64. package/esm2015/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.js +1 -1
  65. package/esm2015/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.js +3 -0
  66. package/esm2015/lib/Pages/shared/models/ProviderModels/ProviderModel.js +1 -1
  67. package/esm2015/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.js +3 -0
  68. package/esm2015/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.js +1 -1
  69. package/esm2015/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.js +1 -1
  70. package/esm2015/lib/Pages/shared/models/SectorModels/SectorModel.js +1 -1
  71. package/esm2015/lib/Pages/shared/models/UserModels/AddUserModel.js +1 -3
  72. package/esm2015/lib/Pages/shared/models/UserModels/EditUserModel.js +1 -1
  73. package/esm2015/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.js +1 -1
  74. package/esm2015/lib/Pages/shared/models/WorkflowModels/WFActivityModel.js +1 -1
  75. package/esm2015/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.js +1 -1
  76. package/esm2015/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.js +1 -1
  77. package/esm2015/lib/Pages/shared/models/WorkflowModels/WFCreationModel.js +1 -1
  78. package/esm2015/lib/Pages/shared/models/WorkflowModels/WFVariableModel.js +1 -1
  79. package/esm2015/lib/Pages/users/users.component.js +14 -15
  80. package/esm2015/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.js +33 -32
  81. package/esm2015/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.js +75 -99
  82. package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +25 -25
  83. package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +5 -5
  84. package/fesm2015/bnsights-bbsf-admin-portal.js +1754 -1109
  85. package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
  86. package/lib/Pages/_layout/components/footer/footer.component.d.ts +2 -0
  87. package/lib/Pages/configurations/configuration/configuration.component.d.ts +5 -6
  88. package/lib/Pages/departments/department/department.component.d.ts +2 -2
  89. package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +2 -2
  90. package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +2 -2
  91. package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +2 -2
  92. package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +4 -4
  93. package/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.d.ts +51 -0
  94. package/lib/Pages/localizations/localizations.module.d.ts +12 -11
  95. package/lib/Pages/lookups/lookup/lookup.component.d.ts +1 -1
  96. package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +1 -1
  97. package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +1 -2
  98. package/lib/Pages/notifications/edit/edit.component.d.ts +1 -2
  99. package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +1 -2
  100. package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +1 -2
  101. package/lib/Pages/notifications/template-info/template-info.component.d.ts +1 -1
  102. package/lib/Pages/notifications/templates/templates.component.d.ts +2 -2
  103. package/lib/Pages/providers/provider/provider.component.d.ts +28 -6
  104. package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +2 -2
  105. package/lib/Pages/roles/permissions/permissions.component.d.ts +1 -1
  106. package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +1 -1
  107. package/lib/Pages/sectors/sector/sector.component.d.ts +1 -1
  108. package/lib/Pages/shared/Enums/ProviderType.d.ts +5 -0
  109. package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +2 -2
  110. package/lib/Pages/shared/Services/localizationsService.service .d.ts +3 -0
  111. package/lib/Pages/shared/Services/provider.service.d.ts +4 -0
  112. package/lib/Pages/shared/constants.d.ts +129 -0
  113. package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +8 -9
  114. package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +1 -2
  115. package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +1 -1
  116. package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +3 -5
  117. package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +1 -1
  118. package/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.d.ts +4 -4
  119. package/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.d.ts +9 -0
  120. package/lib/Pages/shared/models/Lookups/LookupGroupModel.d.ts +1 -2
  121. package/lib/Pages/shared/models/Lookups/LookupItem.d.ts +3 -4
  122. package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +3 -4
  123. package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +1 -2
  124. package/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.d.ts +3 -3
  125. package/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.d.ts +1 -1
  126. package/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.d.ts +2 -2
  127. package/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.d.ts +1 -1
  128. package/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.d.ts +1 -1
  129. package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +5 -6
  130. package/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.d.ts +1 -2
  131. package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +2 -2
  132. package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +3 -3
  133. package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +1 -1
  134. package/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.d.ts +2 -2
  135. package/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.d.ts +7 -0
  136. package/lib/Pages/shared/models/ProviderModels/ProviderModel.d.ts +3 -3
  137. package/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.d.ts +6 -0
  138. package/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.d.ts +2 -3
  139. package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +1 -1
  140. package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +1 -2
  141. package/lib/Pages/shared/models/UserModels/AddUserModel.d.ts +3 -3
  142. package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +2 -2
  143. package/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.d.ts +2 -3
  144. package/lib/Pages/shared/models/WorkflowModels/WFActivityModel.d.ts +10 -11
  145. package/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.d.ts +3 -3
  146. package/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.d.ts +3 -3
  147. package/lib/Pages/shared/models/WorkflowModels/WFCreationModel.d.ts +1 -3
  148. package/lib/Pages/shared/models/WorkflowModels/WFVariableModel.d.ts +3 -3
  149. package/lib/Pages/users/users.component.d.ts +2 -2
  150. package/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.d.ts +1 -1
  151. package/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.d.ts +3 -4
  152. package/lib/Pages/workflows/tabs/tabs.component.d.ts +4 -4
  153. package/lib/Pages/workflows/workflow/workflow.component.d.ts +2 -2
  154. package/package.json +3 -3
  155. package/bnsights-bbsf-admin-portal-1.0.26.tgz +0 -0
  156. package/esm2015/lib/Pages/shared/Enums/ConfigurationScope.js +0 -8
  157. package/esm2015/lib/Pages/shared/Enums/ConfigurationType.js +0 -8
  158. package/esm2015/lib/Pages/shared/Enums/ConfigurationValueSource.js +0 -6
  159. package/esm2015/lib/Pages/shared/Enums/ParticipantType.js +0 -8
  160. package/lib/Pages/shared/Enums/ConfigurationScope.d.ts +0 -5
  161. package/lib/Pages/shared/Enums/ConfigurationType.d.ts +0 -6
  162. package/lib/Pages/shared/Enums/ConfigurationValueSource.d.ts +0 -4
  163. 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 { ConditionRHSType } from '../../../shared/Enums/ConditionRHSType';
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';
@@ -59,14 +57,15 @@ export class WorkflowActivityAddComponent {
59
57
  this.conditionList = [];
60
58
  //Add functions
61
59
  this.getAddWFActivityModel = () => {
60
+ var _a;
62
61
  let paramArray = [];
63
62
  let ResultModel = this.addworkflowActivityForm.value;
64
63
  let addModel = new WFActivityModel();
65
64
  addModel.Name.English = ResultModel.name.English;
66
65
  addModel.Name.Arabic = ResultModel.name.Arabic;
67
66
  addModel.SysName = ResultModel.sysName;
68
- addModel.VersionID = Number(this.versionID);
69
- addModel.ActivityTypeItemID = ResultModel.activityType != null ? Number(ResultModel.activityType) : null;
67
+ addModel.VersionID_GUID = this.versionID;
68
+ addModel.ActivityTypeItemID_GUID = (_a = ResultModel.activityType) === null || _a === void 0 ? void 0 : _a.toLowerCase();
70
69
  //If participant exists
71
70
  if (ResultModel.participantTypes != undefined) {
72
71
  addModel.ParticipantDTO = new ParticipantModel();
@@ -76,10 +75,10 @@ export class WorkflowActivityAddComponent {
76
75
  addModel.ParticipantDTO.PermissionSetIDsString = ResultModel.participantPermissionSet.toString();
77
76
  }
78
77
  }
79
- switch (addModel.ActivityTypeItemID) {
80
- case WFActivityType.Approval:
81
- case WFActivityType.Action:
82
- case WFActivityType.PercentageTask:
78
+ switch (addModel.ActivityTypeItemID_GUID) {
79
+ case ActivityType.Approval:
80
+ case ActivityType.Action:
81
+ case ActivityType.PercentageTask:
83
82
  addModel.TaskName.English = ResultModel.dynamicTaskName.English;
84
83
  addModel.TaskName.Arabic = ResultModel.dynamicTaskName.Arabic;
85
84
  addModel.TaskDescription.English = ResultModel.dynamicTaskDescription.English;
@@ -88,19 +87,19 @@ export class WorkflowActivityAddComponent {
88
87
  addModel.TaskCorrlTypeID = ResultModel.dynamicTaskType != null ? Number(ResultModel.dynamicTaskType) : null;
89
88
  addModel.CanCompleteFromTME = ResultModel.dynamicCanComplete;
90
89
  break;
91
- case WFActivityType.Email:
92
- case WFActivityType.Sleep:
90
+ case ActivityType.Email:
91
+ case ActivityType.Sleep:
93
92
  addModel.NormalOutcomeName.English = ResultModel.staticOutcomeName.English;
94
93
  addModel.NormalOutcomeName.Arabic = ResultModel.staticOutcomeName.Arabic;
95
94
  addModel.OutcomeSysName = ResultModel.staticOutcomeSysName;
96
- addModel.NextActivityID = ResultModel.staticOutcomeNextActivity != null ? Number(ResultModel.staticOutcomeNextActivity) : null;
95
+ addModel.NextActivityID_GUID = ResultModel.staticOutcomeNextActivity;
97
96
  addModel.CanAddComment = ResultModel.staticOutcomeCanAddComment;
98
97
  break;
99
- case WFActivityType.Condition:
100
- addModel.LHSVariableID = ResultModel.conditionLHSDropDown != null ? Number(ResultModel.conditionLHSDropDown) : null;
101
- addModel.RHSVariableID = ResultModel.conditionRHSDropDown != null ? Number(ResultModel.conditionRHSDropDown) : null;
102
- addModel.RHSTypeItemID = ResultModel.conditionRHSTypeDropDown != null ? Number(ResultModel.conditionRHSTypeDropDown) : null;
103
- addModel.OperatorTypeItemID = ResultModel.conditionsDropDown != null ? Number(ResultModel.conditionsDropDown) : null;
98
+ case ActivityType.Condition:
99
+ addModel.LHSVariableID_GUID = ResultModel.conditionLHSDropDown;
100
+ addModel.RHSVariableID_GUID = ResultModel.conditionRHSDropDown;
101
+ addModel.RHSTypeItemID_GUID = ResultModel.conditionRHSTypeDropDown;
102
+ addModel.OperatorTypeItemID_GUID = ResultModel.conditionsDropDown;
104
103
  addModel.RHSValue = ResultModel.conditionRHSValue != undefined ? ResultModel.conditionRHSValue : null;
105
104
  break;
106
105
  }
@@ -119,11 +118,11 @@ export class WorkflowActivityAddComponent {
119
118
  let outcomeActivity = ResultModel["outcomeNextActivityTypes" + j];
120
119
  let outcomeCanAddComment = ResultModel["outcomeCanAddComment" + j];
121
120
  let activityOutcome = new WFActivityOutcomeModel();
122
- activityOutcome.Id = outcomeID;
121
+ activityOutcome.ID_GUID = outcomeID;
123
122
  activityOutcome.NameEN = outcomeName.English;
124
123
  activityOutcome.NameAR = outcomeName.Arabic;
125
124
  activityOutcome.OutcomeSysName = outcomeSysName;
126
- activityOutcome.NextActivityID = outcomeActivity != null ? Number(outcomeActivity) : null;
125
+ activityOutcome.NextActivityID_GUID = outcomeActivity;
127
126
  activityOutcome.CanAddComment = outcomeCanAddComment;
128
127
  addModel.Outcomes.push(activityOutcome);
129
128
  }
@@ -201,7 +200,7 @@ export class WorkflowActivityAddComponent {
201
200
  outcomeID.Name = "outcomeID" + i;
202
201
  outcomeID.HideLabel = true;
203
202
  outcomeID.Type = InputType.Text;
204
- outcomeID.Value = currentOutcome.id;
203
+ outcomeID.Value = currentOutcome.iD_GUID;
205
204
  let name = new EnglishArabicDTO();
206
205
  name.English = currentOutcome.nameEN;
207
206
  name.Arabic = currentOutcome.nameAR;
@@ -283,7 +282,6 @@ export class WorkflowActivityAddComponent {
283
282
  this.outcomesCount += 1;
284
283
  }
285
284
  deleteOutcome(deletedOutcome) {
286
- debugger;
287
285
  let deletedOutcomeIndex = this.outcomesOptions.indexOf(deletedOutcome);
288
286
  if (deletedOutcomeIndex !== -1) {
289
287
  this.outcomesOptions.splice(deletedOutcomeIndex, 1);
@@ -294,6 +292,7 @@ export class WorkflowActivityAddComponent {
294
292
  }
295
293
  //On changes events
296
294
  activityTypeOnChange(activityType) {
295
+ activityType = activityType === null || activityType === void 0 ? void 0 : activityType.toLowerCase();
297
296
  //Reset controls, outcomes and flags
298
297
  this.resetAllActivityTypeControls();
299
298
  this.outcomesOptions = [];
@@ -309,10 +308,10 @@ export class WorkflowActivityAddComponent {
309
308
  var model = resultObj.model;
310
309
  var list = resultObj.list;
311
310
  this.nextActivityList = list.activities;
312
- switch (Number(activityType)) {
313
- case WFActivityType.Approval:
314
- case WFActivityType.Action:
315
- case WFActivityType.PercentageTask:
311
+ switch (activityType) {
312
+ case ActivityType.Approval:
313
+ case ActivityType.Action:
314
+ case ActivityType.PercentageTask:
316
315
  this.taskTypeList = list.tasks;
317
316
  this.participantTypeList = list.participants.participantTypes;
318
317
  this.participantDataList = list.participants.participantData;
@@ -355,9 +354,9 @@ export class WorkflowActivityAddComponent {
355
354
  this.showParticipantContainer = true;
356
355
  this.showOutcomesContainer = true;
357
356
  break;
358
- case WFActivityType.Email:
359
- case WFActivityType.Sleep:
360
- if (Number(activityType) == WFActivityType.Email) {
357
+ case ActivityType.Email:
358
+ case ActivityType.Sleep:
359
+ if (activityType == ActivityType.Email) {
361
360
  this.participantTypeList = list.participants.participantTypes;
362
361
  this.participantDataList = list.participants.participantData;
363
362
  this.participantTypes = new DropdownOptions();
@@ -397,7 +396,7 @@ export class WorkflowActivityAddComponent {
397
396
  this.staticOutcomeCanAddComment.Value = model.canAddComment;
398
397
  this.showStaticControls = true;
399
398
  break;
400
- case WFActivityType.Condition:
399
+ case ActivityType.Condition:
401
400
  this.conditionLHSWFVariableList = list.wfVariables;
402
401
  this.conditionRHSWFVariableList = list.wfVariables;
403
402
  this.conditionRHSTypeList = list.rhsTypes;
@@ -417,7 +416,7 @@ export class WorkflowActivityAddComponent {
417
416
  this.conditionsDropDown.DataSource = this.conditionList;
418
417
  this.conditionsDropDown.SingleSelection = true;
419
418
  this.conditionsDropDown.IsRequired = true;
420
- let selectedRHSType = this.conditionRHSTypeList.filter((item) => { return item.key == ConditionRHSType.Variable; }).map((item) => item.key)[0];
419
+ 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];
421
420
  this.conditionRHSTypeDropDown = new DropdownOptions();
422
421
  this.conditionRHSTypeDropDown.Name = "conditionRHSTypeDropDown";
423
422
  this.conditionRHSTypeDropDown.HideLabel = true;
@@ -444,7 +443,8 @@ export class WorkflowActivityAddComponent {
444
443
  });
445
444
  }
446
445
  conditionRHSTypeOnChange(type) {
447
- if (type == ConditionRHSType.Variable) {
446
+ type = type.toLowerCase();
447
+ if (type == Righthandsidetype.Variable) {
448
448
  this.addworkflowActivityForm.removeControl("conditionRHSValue");
449
449
  this.conditionRHSDropDown = new DropdownOptions();
450
450
  this.conditionRHSDropDown.Name = "conditionRHSDropDown";
@@ -467,6 +467,7 @@ export class WorkflowActivityAddComponent {
467
467
  }
468
468
  }
469
469
  participantTypeOnChange(participantType) {
470
+ participantType = participantType === null || participantType === void 0 ? void 0 : participantType.toLowerCase();
470
471
  if (participantType == ParticipantType.PermissionSet) {
471
472
  this.participantPermissionSet = new DropdownOptions();
472
473
  this.participantPermissionSet.Name = "participantPermissionSet";
@@ -532,4 +533,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
532
533
  templateUrl: './workflow-activity-add.component.html'
533
534
  }]
534
535
  }], ctorParameters: function () { return [{ type: i1.WorkflowActivityService }, { type: i2.UtilityService }, { type: i3.ActivatedRoute }, { type: i4.PageInfoService }, { type: i3.Router }, { type: i2.RequestHandlerService }, { type: i2.BBSFTranslateService }]; } });
535
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWN0aXZpdHktYWRkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvd29ya2Zsb3dzL2FjdGl2aXR5L3dvcmtmbG93LWFjdGl2aXR5LWFkZC93b3JrZmxvdy1hY3Rpdml0eS1hZGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvYWN0aXZpdHkvd29ya2Zsb3ctYWN0aXZpdHktYWRkL3dvcmtmbG93LWFjdGl2aXR5LWFkZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHak8sT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxz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QkFBdUIsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLDBCQUEwQixHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FFeEU7SUFDSCxDQUFDO0lBRUQsUUFBUTtJQUNSLFNBQVM7UUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsWUFBWTtJQUNaLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7MEhBOW1CVSw0QkFBNEI7OEdBQTVCLDRCQUE0QixpRUNuQnpDLDQvVUF3T0E7NEZEck5hLDRCQUE0QjtrQkFKeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxXQUFXLEVBQUUsd0NBQXdDO2lCQUN0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucywgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGb3JtT3B0aW9ucywgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBCQlNGVHJhbnNsYXRlU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vcHVibGljLWFwaSc7XHJcbmltcG9ydCB7IENvbmRpdGlvblJIU1R5cGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvRW51bXMvQ29uZGl0aW9uUkhTVHlwZSc7XHJcbmltcG9ydCB7IFBhcnRpY2lwYW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9QYXJ0aWNpcGFudFR5cGUnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9XRkFjdGl2aXR5VHlwZSc7XHJcbmltcG9ydCB7IFBhcnRpY2lwYW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL1BhcnRpY2lwYW50TW9kZWwnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlNb2RlbCc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlPdXRjb21lTW9kZWwnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9Xb3JrZmxvd0FjdGl2aXR5U2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXdvcmtmbG93LWFjdGl2aXR5LWFkZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LWFjdGl2aXR5LWFkZC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93QWN0aXZpdHlBZGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBpc0FkZEZvcm1Mb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2ZXJzaW9uSUQ6IG51bWJlcjtcclxuXHJcbiAgLy9BZGQgQWN0aXZpdHkgc2hhcmVkIGNvbnRyb2xzXHJcbiAgYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgbmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgc3lzTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWN0aXZpdHlUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY2FuQWRkT3V0Y29tZTogYm9vbGVhbjtcclxuICAvL1NoYXJlZCByZXF1aXJlZCBsaXN0c1xyXG4gIEFjdGl2aXR5VHlwZUxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIC8vU2hhcmVkIFBhcnRpY2lwYW50IHR5cGUgYW5kIGRhdGFcclxuICBzaG93UGFydGljaXBhbnRDb250YWluZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXJ0aWNpcGFudFR5cGVzOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgcGFydGljaXBhbnRQZXJtaXNzaW9uU2V0OiBEcm9wZG93bk9wdGlvbnM7XHJcblxyXG4gIC8vRHluYW1pYyBUeXBlcyBDb250cm9scyAvLyhBcHByb3ZhbCxBY3Rpb24sUGVyY2VudGFnZSlcclxuICBzaG93RHluYW1pY0NvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHluYW1pY1Rhc2tOYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBkeW5hbWljVGFza0Rlc2NyaXB0aW9uOiBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnM7XHJcbiAgZHluYW1pY1Rhc2tVUkw6IFRleHRCb3hPcHRpb25zO1xyXG4gIGR5bmFtaWNUYXNrVHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGR5bmFtaWNDYW5Db21wbGV0ZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG5cclxuXHJcbiAgLy9TdGF0aWMgdHlwZXMgY29udHJvbHMgKEVtYWlsLFNsZWVwKVxyXG4gIC8vRW1haWwgVHlwZSBDb250cm9scyAvLysgaW5pdGlhbGl6ZSBwYXJ0aWNpcGFudFxyXG4gIHNob3dTdGF0aWNDb250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0YXRpY091dGNvbWVOYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBzdGF0aWNPdXRjb21lU3lzTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eTogRHJvcGRvd25PcHRpb25zO1xyXG4gIHN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50OiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcblxyXG4gIC8vQ29uZGl0aW9uIHR5cGUgY29udHJvbHNcclxuICBzaG93Q29uZGl0aW9uQ29udHJvbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjb25kaXRpb25MSFNEcm9wRG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIGNvbmRpdGlvbnNEcm9wRG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIGNvbmRpdGlvblJIU1R5cGVEcm9wRG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIGNvbmRpdGlvblJIU0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTVmFsdWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIHNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlOiBib29sZWFuPWZhbHNlO1xyXG5cclxuICAvL091dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbilcclxuICBvdXRjb21lc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgb3V0Y29tZXNDb3VudDogbnVtYmVyID0gMDtcclxuICBzaG93T3V0Y29tZXNDb250YWluZXIgPSBmYWxzZTtcclxuXHJcbiAgLy9SZXF1aXJlZExpc3RzXHJcbiAgdGFza1R5cGVMaXN0ID0gW107XHJcbiAgcGFydGljaXBhbnRUeXBlTGlzdCA9IFtdO1xyXG4gIHBhcnRpY2lwYW50RGF0YUxpc3QgPSBbXTtcclxuICBuZXh0QWN0aXZpdHlMaXN0ID0gW107XHJcblxyXG4gIC8vQ29uZGl0aW9uVHlwZVJlcXVpcmVkTGlzdHNcclxuICBjb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdCA9IFtdO1xyXG4gIGNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0ID0gW107XHJcbiAgY29uZGl0aW9uUkhTVHlwZUxpc3QgPSBbXTtcclxuICBjb25kaXRpb25MaXN0ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgd29ya2Zsb3dBY3Rpdml0eVNlcnZpY2U6IFdvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMudmVyc2lvbklEID0gcGFyYW1zWyd2aWQnXTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IFwiXCJcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRXb3JrZmxvd0FjdGl2aXR5XCIpO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtGbG93c1wiKSwgcGF0aDogJy9BZG1pbi9Xb3JrZmxvd3Mvd29ya2Zsb3cnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9Jbml0aWFsaXplIGFkZCBwYWdlIGFuZCByZXF1aXJlZCBERExzXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmxvYWRBZGREcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5BY3Rpdml0eVR5cGVMaXN0ID0gcmVzdWx0T2JqLmFjdGl2aXR5TGlzdDtcclxuXHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZFdGQWN0aXZpdHlNb2RlbDtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRXRkFjdGl2aXR5RnVuY3Rpb247XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLk9uU3VjY2Vzc0hhbmRsZXIgPSB0aGlzLm9uQWRkU3VjY2VzcztcclxuXHJcbiAgICAgIHRoaXMubmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLm5hbWUuTmFtZSA9IFwibmFtZVwiO1xyXG4gICAgICB0aGlzLm5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLm5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMubmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuc3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnN5c05hbWUuTmFtZSA9IFwic3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLnN5c05hbWUuTGFiZWxLZXkgPSBcIlN5c05hbWVcIjtcclxuICAgICAgdGhpcy5zeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5zeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hY3Rpdml0eVR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLk5hbWUgPSBcImFjdGl2aXR5VHlwZVwiXHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVR5cGVcIlxyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5EYXRhU291cmNlID0gdGhpcy5BY3Rpdml0eVR5cGVMaXN0XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmlzQWRkRm9ybUxvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0FkZCBmdW5jdGlvbnNcclxuICBnZXRBZGRXRkFjdGl2aXR5TW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0udmFsdWU7XHJcbiAgICBsZXQgYWRkTW9kZWwgPSBuZXcgV0ZBY3Rpdml0eU1vZGVsKCk7XHJcbiAgICBhZGRNb2RlbC5OYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5uYW1lLkVuZ2xpc2hcclxuICAgIGFkZE1vZGVsLk5hbWUuQXJhYmljID0gUmVzdWx0TW9kZWwubmFtZS5BcmFiaWNcclxuICAgIGFkZE1vZGVsLlN5c05hbWUgPSBSZXN1bHRNb2RlbC5zeXNOYW1lXHJcbiAgICBhZGRNb2RlbC5WZXJzaW9uSUQgPSBOdW1iZXIodGhpcy52ZXJzaW9uSUQpO1xyXG4gICAgYWRkTW9kZWwuQWN0aXZpdHlUeXBlSXRlbUlEID0gUmVzdWx0TW9kZWwuYWN0aXZpdHlUeXBlICE9IG51bGwgPyBOdW1iZXIoUmVzdWx0TW9kZWwuYWN0aXZpdHlUeXBlKSA6IG51bGxcclxuXHJcblxyXG4gICAgLy9JZiBwYXJ0aWNpcGFudCBleGlzdHNcclxuICAgIGlmIChSZXN1bHRNb2RlbC5wYXJ0aWNpcGFudFR5cGVzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBhZGRNb2RlbC5QYXJ0aWNpcGFudERUTyA9IG5ldyBQYXJ0aWNpcGFudE1vZGVsKCk7XHJcbiAgICAgIGFkZE1vZGVsLlBhcnRpY2lwYW50RFRPID0gbmV3IFBhcnRpY2lwYW50TW9kZWwoKTtcclxuICAgICAgYWRkTW9kZWwuUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZyA9IFJlc3VsdE1vZGVsLnBhcnRpY2lwYW50VHlwZXMudG9TdHJpbmcoKTtcclxuICAgICAgaWYgKFJlc3VsdE1vZGVsLnBhcnRpY2lwYW50VHlwZXMuaW5jbHVkZXMoUGFydGljaXBhbnRUeXBlLlBlcm1pc3Npb25TZXQpKSB7XHJcbiAgICAgICAgYWRkTW9kZWwuUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEc1N0cmluZyA9IFJlc3VsdE1vZGVsLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGFkZE1vZGVsLkFjdGl2aXR5VHlwZUl0ZW1JRCkge1xyXG4gICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkFwcHJvdmFsOlxyXG4gICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkFjdGlvbjpcclxuICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5QZXJjZW50YWdlVGFzazpcclxuICAgICAgICBhZGRNb2RlbC5UYXNrTmFtZS5FbmdsaXNoID0gUmVzdWx0TW9kZWwuZHluYW1pY1Rhc2tOYW1lLkVuZ2xpc2g7XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza05hbWUuQXJhYmljID0gUmVzdWx0TW9kZWwuZHluYW1pY1Rhc2tOYW1lLkFyYWJpYztcclxuICAgICAgICBhZGRNb2RlbC5UYXNrRGVzY3JpcHRpb24uRW5nbGlzaCA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uRW5nbGlzaDtcclxuICAgICAgICBhZGRNb2RlbC5UYXNrRGVzY3JpcHRpb24uQXJhYmljID0gUmVzdWx0TW9kZWwuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5BcmFiaWM7XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza1VSTCA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrVVJMO1xyXG4gICAgICAgIGFkZE1vZGVsLlRhc2tDb3JybFR5cGVJRCA9IFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrVHlwZSAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLmR5bmFtaWNUYXNrVHlwZSkgOiBudWxsO1xyXG4gICAgICAgIGFkZE1vZGVsLkNhbkNvbXBsZXRlRnJvbVRNRSA9IFJlc3VsdE1vZGVsLmR5bmFtaWNDYW5Db21wbGV0ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5TbGVlcDpcclxuICAgICAgICBhZGRNb2RlbC5Ob3JtYWxPdXRjb21lTmFtZS5FbmdsaXNoID0gUmVzdWx0TW9kZWwuc3RhdGljT3V0Y29tZU5hbWUuRW5nbGlzaDtcclxuICAgICAgICBhZGRNb2RlbC5Ob3JtYWxPdXRjb21lTmFtZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5zdGF0aWNPdXRjb21lTmFtZS5BcmFiaWM7XHJcbiAgICAgICAgYWRkTW9kZWwuT3V0Y29tZVN5c05hbWUgPSBSZXN1bHRNb2RlbC5zdGF0aWNPdXRjb21lU3lzTmFtZTtcclxuICAgICAgICBhZGRNb2RlbC5OZXh0QWN0aXZpdHlJRCA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkgIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5KSA6IG51bGw7XHJcbiAgICAgICAgYWRkTW9kZWwuQ2FuQWRkQ29tbWVudCA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICBhZGRNb2RlbC5MSFNWYXJpYWJsZUlEID0gUmVzdWx0TW9kZWwuY29uZGl0aW9uTEhTRHJvcERvd24gIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5jb25kaXRpb25MSFNEcm9wRG93bikgOiBudWxsO1xyXG4gICAgICAgIGFkZE1vZGVsLlJIU1ZhcmlhYmxlSUQgPSBSZXN1bHRNb2RlbC5jb25kaXRpb25SSFNEcm9wRG93biAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU0Ryb3BEb3duKSA6IG51bGw7XHJcbiAgICAgICAgYWRkTW9kZWwuUkhTVHlwZUl0ZW1JRCA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93biAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bikgOiBudWxsO1xyXG4gICAgICAgIGFkZE1vZGVsLk9wZXJhdG9yVHlwZUl0ZW1JRCA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvbnNEcm9wRG93biAhPSBudWxsID8gTnVtYmVyKFJlc3VsdE1vZGVsLmNvbmRpdGlvbnNEcm9wRG93bikgOiBudWxsO1xyXG4gICAgICAgIGFkZE1vZGVsLlJIU1ZhbHVlID0gUmVzdWx0TW9kZWwuY29uZGl0aW9uUkhTVmFsdWUgIT0gdW5kZWZpbmVkID8gUmVzdWx0TW9kZWwuY29uZGl0aW9uUkhTVmFsdWUgOiBudWxsO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgIH1cclxuICAgIC8vU2V0IE91dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbiB0eXBlcylcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5vdXRjb21lc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IG91dGNvbWVJRCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUlEXCIgKyBqXTtcclxuICAgICAgaWYgKG91dGNvbWVJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVOYW1lXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lU3lzTmFtZSA6c3RyaW5nO1xyXG4gICAgICBsZXQgb3V0Q29tZUNhbkVkaXRTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuRWRpdFN5c05hbWVcIiArIGpdO1xyXG4gICAgICBpZiAob3V0Q29tZUNhbkVkaXRTeXNOYW1lKVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBqXTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVBY3Rpdml0eSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBqXTtcclxuICAgICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgal07XHJcblxyXG4gICAgICBsZXQgYWN0aXZpdHlPdXRjb21lOiBXRkFjdGl2aXR5T3V0Y29tZU1vZGVsID0gbmV3IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwoKTtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLklkID0gb3V0Y29tZUlEO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuTmFtZUVOID0gb3V0Y29tZU5hbWUuRW5nbGlzaDtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk5hbWVBUiA9IG91dGNvbWVOYW1lLkFyYWJpYztcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk91dGNvbWVTeXNOYW1lID0gb3V0Y29tZVN5c05hbWU7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5OZXh0QWN0aXZpdHlJRCA9IG91dGNvbWVBY3Rpdml0eSAhPSBudWxsID8gTnVtYmVyKG91dGNvbWVBY3Rpdml0eSkgOiBudWxsO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuQ2FuQWRkQ29tbWVudCA9IG91dGNvbWVDYW5BZGRDb21tZW50O1xyXG5cclxuICAgICAgYWRkTW9kZWwuT3V0Y29tZXMucHVzaChhY3Rpdml0eU91dGNvbWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goYWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG4gIGdldEFkZFdGQWN0aXZpdHlGdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5hZGRXb3JrZmxvd0FjdGl2aXR5KEFkZE1vZGVsKVxyXG4gIH1cclxuICBvbkFkZFN1Y2Nlc3MgPSAocmVzdWx0KSA9PiB7XHJcbiAgICB0aGlzLmNhbmNlbEFkZCgpO1xyXG4gIH1cclxuXHJcbiAgLy9PdXRjb21lIGZ1bmN0aW9uc1xyXG4gIGdldEFjdGl2aXR5T3V0Y29tZXNPcHRpb25zKG91dENvbWVzOiBhbnlbXSkge1xyXG4gICAgbGV0IG91dGNvbWVzT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBvdXRjb21lc0NvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3V0Q29tZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1cnJlbnRPdXRjb21lID0gb3V0Q29tZXNbaV07XHJcbiAgICAgIGxldCBvYmplY3RPdXRjb21lT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lSUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUlELk5hbWUgPSBcIm91dGNvbWVJRFwiICsgaTtcclxuICAgICAgb3V0Y29tZUlELkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIG91dGNvbWVJRC5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLmlkO1xyXG5cclxuICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBuYW1lLkVuZ2xpc2ggPSBjdXJyZW50T3V0Y29tZS5uYW1lRU47XHJcbiAgICAgIG5hbWUuQXJhYmljID0gY3VycmVudE91dGNvbWUubmFtZUFSO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVOYW1lLk5hbWUgPSBcIm91dGNvbWVOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIG91dGNvbWVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICBvdXRjb21lTmFtZS5WYWx1ZSA9IG5hbWU7XHJcbiAgICAgIG91dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVEZWNpc2lvblN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLkxhYmVsS2V5ID0gXCJEZWNpc2lvblN5c05hbWVcIjtcclxuICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5vdXRjb21lU3lzTmFtZTtcclxuICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5Jc0Rpc2FibGVkID0gIWN1cnJlbnRPdXRjb21lLmNhbkVkaXRTeXNOYW1lO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLk5hbWUgPSBcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgaTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVwiXHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5OYW1lID0gXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgaTtcclxuICAgICAgb3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5jYW5BZGRDb21tZW50O1xyXG4gICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgICBvdXRjb21lQ2FuRWRpdCA9IGN1cnJlbnRPdXRjb21lLmNhbkVkaXQ7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUhpZGRlbmVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLm91dGNvbWVTeXNOYW1lO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5FZGl0U3lzTmFtZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgaTtcclxuICAgICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLlZhbHVlID0gY3VycmVudE91dGNvbWUuY2FuRWRpdFN5c05hbWU7XHJcblxyXG4gICAgICBvYmplY3RPdXRjb21lT3B0aW9ucy5wdXNoKG91dGNvbWVJRCwgb3V0Y29tZU5hbWUsIG91dGNvbWVEZWNpc2lvblN5c05hbWUsIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyxcclxuICAgICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudCwgb3V0Y29tZUNhbkVkaXQsIG91dGNvbWVIaWRkZW5lU3lzTmFtZSwgb3V0Y29tZUNhbkVkaXRTeXNOYW1lKTtcclxuXHJcblxyXG4gICAgICBvdXRjb21lc09wdGlvbnMucHVzaChvYmplY3RPdXRjb21lT3B0aW9ucyk7XHJcbiAgICAgIG91dGNvbWVzQ291bnQgKz0gMTtcclxuXHJcbiAgICB9XHJcbiAgICByZXR1cm4gW291dGNvbWVzT3B0aW9ucywgb3V0Y29tZXNDb3VudF07XHJcbiAgfVxyXG4gIGFkZFdGQWN0aXZpdHlPdXRjb21lKCkge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5vdXRjb21lc0NvdW50O1xyXG5cclxuICAgIGxldCBvYmplY3RPdXRjb21lT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUlEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lSUQuTmFtZSA9IFwib3V0Y29tZUlEXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVJRC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgb3V0Y29tZUlELlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIG91dGNvbWVJRC5WYWx1ZSA9IDA7XHJcblxyXG4gICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lTmFtZS5OYW1lID0gXCJvdXRjb21lTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICBvdXRjb21lTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgIG91dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lRGVjaXNpb25TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5MYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5OYW1lID0gXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVwiXHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMubmV4dEFjdGl2aXR5TGlzdFxyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50Lk5hbWUgPSBcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50LkxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcblxyXG4gICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgb3V0Y29tZUNhbkVkaXQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lSGlkZGVuZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUNhbkVkaXRTeXNOYW1lID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUuVmFsdWUgPSB0cnVlO1xyXG5cclxuICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLCBvdXRjb21lQ2FuQWRkQ29tbWVudCxcclxuICAgICAgb3V0Y29tZUNhbkVkaXQsIG91dGNvbWVIaWRkZW5lU3lzTmFtZSwgb3V0Y29tZUNhbkVkaXRTeXNOYW1lKTtcclxuXHJcbiAgICB0aGlzLm91dGNvbWVzT3B0aW9ucy5wdXNoKG9iamVjdE91dGNvbWVPcHRpb25zKTtcclxuICAgIHRoaXMub3V0Y29tZXNDb3VudCArPSAxO1xyXG5cclxuICB9XHJcbiAgZGVsZXRlT3V0Y29tZShkZWxldGVkT3V0Y29tZTogYW55KSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGxldCBkZWxldGVkT3V0Y29tZUluZGV4OiBudW1iZXIgPSB0aGlzLm91dGNvbWVzT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRPdXRjb21lKTtcclxuICAgIGlmIChkZWxldGVkT3V0Y29tZUluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLm91dGNvbWVzT3B0aW9ucy5zcGxpY2UoZGVsZXRlZE91dGNvbWVJbmRleCwgMSk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZE91dGNvbWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woZGVsZXRlZE91dGNvbWVbaV0uTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vT24gY2hhbmdlcyBldmVudHNcclxuICBhY3Rpdml0eVR5cGVPbkNoYW5nZShhY3Rpdml0eVR5cGUpIHtcclxuICAgIC8vUmVzZXQgY29udHJvbHMsIG91dGNvbWVzIGFuZCBmbGFnc1xyXG4gICAgdGhpcy5yZXNldEFsbEFjdGl2aXR5VHlwZUNvbnRyb2xzKCk7XHJcbiAgICB0aGlzLm91dGNvbWVzT3B0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy5vdXRjb21lc0NvdW50ID0gMDtcclxuICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50Q29udGFpbmVyID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dEeW5hbWljQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1N0YXRpY0NvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDb25kaXRpb25Db250cm9scyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93T3V0Y29tZXNDb250YWluZXIgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5T3V0Y29tZXModGhpcy52ZXJzaW9uSUQsIGFjdGl2aXR5VHlwZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHZhciBtb2RlbCA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgdmFyIGxpc3QgPSByZXN1bHRPYmoubGlzdDtcclxuICAgICAgdGhpcy5uZXh0QWN0aXZpdHlMaXN0ID0gbGlzdC5hY3Rpdml0aWVzO1xyXG5cclxuICAgICAgc3dpdGNoIChOdW1iZXIoYWN0aXZpdHlUeXBlKSkge1xyXG4gICAgICAgIGNhc2UgV0ZBY3Rpdml0eVR5cGUuQXBwcm92YWw6XHJcbiAgICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5BY3Rpb246XHJcbiAgICAgICAgY2FzZSBXRkFjdGl2aXR5VHlwZS5QZXJjZW50YWdlVGFzazpcclxuICAgICAgICAgIHRoaXMudGFza1R5cGVMaXN0ID0gbGlzdC50YXNrcztcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudERhdGE7XHJcblxyXG4gICAgICAgICAgLy9Jbml0aWFsaXplIHJlcXVpcmVkIGNvbnRyb2xzIGZvciBhcHByb3ZhbFxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLk5hbWUgPSBcInBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkxhYmVsS2V5ID0gXCJQYXJ0aWNpcGFudFR5cGVzXCJcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5OYW1lID0gXCJkeW5hbWljVGFza05hbWVcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJUYXNrTmFtZUluQXJhYmljXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tOYW1lSW5FbmdsaXNoXCI7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLk5hbWUgPSBcImR5bmFtaWNUYXNrRGVzY3JpcHRpb25cIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTmFtZSA9IFwiZHluYW1pY1Rhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTGFiZWxLZXkgPSBcIlRhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTmFtZSA9IFwiZHluYW1pY1Rhc2tUeXBlXCJcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkxhYmVsS2V5ID0gXCJUYXNrVHlwZVwiXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5EYXRhU291cmNlID0gdGhpcy50YXNrVHlwZUxpc3RcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLk5hbWUgPSBcImR5bmFtaWNDYW5Db21wbGV0ZVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTGFiZWxLZXkgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WYWx1ZSA9IG1vZGVsLmNhbkNvbXBsZXRlRnJvbVRNRTtcclxuXHJcbiAgICAgICAgICBsZXQgb3V0Y29tZXNSZXN1bHQ6IGFueSA9IHRoaXMuZ2V0QWN0aXZpdHlPdXRjb21lc09wdGlvbnMobW9kZWwub3V0Y29tZXMpO1xyXG4gICAgICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBvdXRjb21lc1Jlc3VsdFswXTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IG91dGNvbWVzUmVzdWx0WzFdO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkVtYWlsOlxyXG4gICAgICAgIGNhc2UgV0ZBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGFjdGl2aXR5VHlwZSkgPT0gV0ZBY3Rpdml0eVR5cGUuRW1haWwpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnRUeXBlcztcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnREYXRhO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTmFtZSA9IFwicGFydGljaXBhbnRUeXBlc1wiXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5MYWJlbEtleSA9IFwiUGFydGljaXBhbnRUeXBlc1wiXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICAgICAgbmFtZS5BcmFiaWMgPSBtb2RlbC5ub3JtYWxPdXRjb21lTmFtZS5hcmFiaWM7XHJcbiAgICAgICAgICBuYW1lLkVuZ2xpc2ggPSBtb2RlbC5ub3JtYWxPdXRjb21lTmFtZS5lbmdsaXNoO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZU5hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk91dGNvbWVOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJPdXRjb21lTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuVmFsdWUgPSBuYW1lO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZVN5c05hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5OYW1lID0gXCJzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5XCJcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5MYWJlbEtleSA9IFwiTmV4dEFjdGl2aXR5XCJcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuTmFtZSA9IFwic3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnRcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuTGFiZWxLZXkgPSBcIkNhbkFkZENvbW1lbnRcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50LlZhbHVlID0gbW9kZWwuY2FuQWRkQ29tbWVudDtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dTdGF0aWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFdGQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0ID0gbGlzdC5yaHNUeXBlcztcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTGlzdCA9IGxpc3QuY29uZGl0aW9ucztcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25MSFNEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvbnNEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiQ29uZGl0aW9uXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRSSFNUeXBlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IENvbmRpdGlvblJIU1R5cGUuVmFyaWFibGU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTVHlwZUxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFJIU1R5cGU7XHJcblxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uUkhTRHJvcERvd25cIlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIGxldCBjb25kaXRpb25PdXRjb21lc1Jlc3VsdDogYW55ID0gdGhpcy5nZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyhtb2RlbC5vdXRjb21lcyk7XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzT3B0aW9ucyA9IGNvbmRpdGlvbk91dGNvbWVzUmVzdWx0WzBdO1xyXG4gICAgICAgICAgdGhpcy5vdXRjb21lc0NvdW50ID0gY29uZGl0aW9uT3V0Y29tZXNSZXN1bHRbMV07XHJcblxyXG4gICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhbkFkZE91dGNvbWUgPSB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA/IG1vZGVsLmNhbkFkZE91dGNvbWUgOiBmYWxzZTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG4gIGNvbmRpdGlvblJIU1R5cGVPbkNoYW5nZSh0eXBlKSB7XHJcbiAgICBpZiAodHlwZSA9PSBDb25kaXRpb25SSFNUeXBlLlZhcmlhYmxlKSB7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvblJIU1ZhbHVlXCIpXHJcblxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU0Ryb3BEb3duXCJcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdFxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNEcm9wRG93blwiKVxyXG5cclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLk5hbWUgPSBcImNvbmRpdGlvblJIU1ZhbHVlXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5QbGFjZWhvbGRlciA9IFwiVmFsdWVcIjtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gZmFsc2U7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBwYXJ0aWNpcGFudFR5cGVPbkNoYW5nZShwYXJ0aWNpcGFudFR5cGUpIHtcclxuICAgIGlmIChwYXJ0aWNpcGFudFR5cGUgPT0gUGFydGljaXBhbnRUeXBlLlBlcm1pc3Npb25TZXQpIHtcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0Lk5hbWUgPSBcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiXHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnREYXRhTGlzdFxyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiKTtcclxuICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICB9XHJcblxyXG4gIC8vcmVzZXQgdHlwZVxyXG4gIHJlc2V0QWxsQWN0aXZpdHlUeXBlQ29udHJvbHMoKSB7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJwYXJ0aWNpcGFudFR5cGVzXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tOYW1lXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImR5bmFtaWNUYXNrVVJMXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tUeXBlXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY0NhbkNvbXBsZXRlXCIpO1xyXG5cclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInN0YXRpY091dGNvbWVOYW1lXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwic3RhdGljT3V0Y29tZVN5c05hbWVcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5XCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwic3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnRcIik7XHJcblxyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uTEhTRHJvcERvd25cIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25zRHJvcERvd25cIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNEcm9wRG93blwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvblJIU1ZhbHVlXCIpO1xyXG5cclxuICAgIC8vUmVtb3ZlIG91dGNvbWVzIGNvbnRyb2xzXHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnZhbHVlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm91dGNvbWVzQ291bnQ7IGkrKykge1xyXG4gICAgICBsZXQgb3V0Y29tZUlEID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lSURcIiArIGldO1xyXG4gICAgICBpZiAob3V0Y29tZUlEID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVJRFwiICsgaSk7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVOYW1lXCIgKyBpKTtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZURlY2lzaW9uU3lzTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgaSk7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0NhbmNlbFxyXG4gIGNhbmNlbEFkZCgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdy8nXSk7XHJcbiAgfVxyXG5cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiICpuZ0lmPVwiaXNBZGRGb3JtTG9hZGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnNcIj5cclxuICAgICAgICA8IS0tU3RhcnQgc2hhcmVkIGNvbnRyb2xzIGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJuYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzeXNOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFjdGl2aXR5VHlwZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIChPbkNoYW5nZSk9XCJhY3Rpdml0eVR5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHNoYXJlZCBjb250cm9scyBjb250YWluZXItLT5cclxuICAgICAgICA8IS0tU3RhcnQgcGFydGljaXBhbnQgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPGRpdiBpZD1cInBhcnRpY2lwYW50Q29udGFpbmVyXCIgKm5nSWY9XCJzaG93UGFydGljaXBhbnRDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJwYXJ0aWNpcGFudFR5cGVzXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCIgKE9uQ2hhbmdlKT1cInBhcnRpY2lwYW50VHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXRcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBwYXJ0aWNpcGFudCBjb250YWluZXItLT5cclxuICAgICAgICA8IS0tU3RhcnQgc3RhdGljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dTdGF0aWNDb250cm9sc1wiIGlkPVwic3RhdGljQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lU3lzTmFtZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5XCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHN0YXRpYyBjb250cm9scy0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBkeW5hbWljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEeW5hbWljQ29udHJvbHNcIiBpZD1cImR5bmFtaWNDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWEgW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrVVJMXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrVHlwZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZHluYW1pY0NhbkNvbXBsZXRlXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgZHluYW1pYyBjb250cm9scy0tPlxyXG5cclxuICAgICAgICA8IS0tU3RhcnQgY29uZGl0aW9uIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dDb25kaXRpb25Db250cm9sc1wiIGlkPVwiY29uZGl0aW9uQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkxlZnRIYW5kU2lkZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25kaXRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmlnaHRIYW5kU2lkZVR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmlnaHRIYW5kU2lkZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25MSFNEcm9wRG93blwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uc0Ryb3BEb3duXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIiAoT25DaGFuZ2UpPVwiY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZTsgZWxzZSBjb25kaXRpb25UeHRWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNEcm9wRG93blwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZGl0aW9uVHh0VmFsdWU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNWYWx1ZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgY29uZGl0aW9uIGNvbnRyb2xzLS0+XHJcblxyXG4gICAgICAgIDwhLS1TdGFydCBvdXRjb21lcyBjb250YWluZXItLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd091dGNvbWVzQ29udGFpbmVyXCIgaWQ9XCJvdXRjb21lc0NvbnRhaW5lclwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWNpc2lvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3V0Y29tZXNPcHRpb25zO2xldCBpPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1JRC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLU5hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsxXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLVN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1oaWRkZW4gU3lzTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzZdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWNhbiBlZGl0IFN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bN11cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tTmV4dEFjdGl2aXR5LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblszXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tQ2FuQWRkQ29tbWVudC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvbls0XVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0taWYgb3V0Y29tZSBDYW4gRWRpdC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwib3B0aW9uWzVdXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlT3V0Y29tZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIiBmYSBmYS10cmFzaCBoaWRkZW5cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImNhbkFkZE91dGNvbWVcIj5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwiYWRkV0ZBY3Rpdml0eU91dGNvbWUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkTmV3UmVjb3JkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIG91dGNvbWVzIGNvbnRhaW5lci0tPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cImNhbmNlbEFkZCgpXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
536
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWN0aXZpdHktYWRkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvd29ya2Zsb3dzL2FjdGl2aXR5L3dvcmtmbG93LWFjdGl2aXR5LWFkZC93b3JrZmxvdy1hY3Rpdml0eS1hZGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvYWN0aXZpdHkvd29ya2Zsb3ctYWN0aXZpdHktYWRkL3dvcmtmbG93LWFjdGl2aXR5LWFkZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHak8sT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHN0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7OztBQU90RyxNQUFNLE9BQU8sNEJBQTRCO0lBZ0V2QyxZ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QyxRQUFRLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFlBQVk7SUFDWixXQUFXO1FBQ1QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7OzBIQXptQlUsNEJBQTRCOzhHQUE1Qiw0QkFBNEIsaUVDbkJ6Qyw0L1VBd09BOzRGRHJOYSw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsV0FBVyxFQUFFLHdDQUF3QztpQkFDdEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDaGVja0JveE9wdGlvbnMsIENvbnRyb2xMYXlvdXQsIERyb3Bkb3duT3B0aW9ucywgRW5nbGlzaEFyYWJpY0RUTywgRm9ybU9wdGlvbnMsIElucHV0VHlwZSwgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zLCBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucywgVGV4dEJveE9wdGlvbnMsIFRvZ2dsZVNsaWRlT3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3B1YmxpYy1hcGknO1xyXG5pbXBvcnQgeyBBY3Rpdml0eVR5cGUsIFBhcnRpY2lwYW50VHlwZSwgUmlnaHRoYW5kc2lkZXR5cGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29uZGl0aW9uUkhTVHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9Db25kaXRpb25SSFNUeXBlJztcclxuaW1wb3J0IHsgV0ZBY3Rpdml0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvRW51bXMvV0ZBY3Rpdml0eVR5cGUnO1xyXG5pbXBvcnQgeyBQYXJ0aWNpcGFudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL21vZGVscy9JbXBlcnNvbmF0aW9uUnVsZU1vZGVscy9QYXJ0aWNpcGFudE1vZGVsJztcclxuaW1wb3J0IHsgV0ZBY3Rpdml0eU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL21vZGVscy9Xb3JrZmxvd01vZGVscy9XRkFjdGl2aXR5TW9kZWwnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5T3V0Y29tZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL21vZGVscy9Xb3JrZmxvd01vZGVscy9XRkFjdGl2aXR5T3V0Y29tZU1vZGVsJztcclxuaW1wb3J0IHsgV29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvU2VydmljZXMvV29ya2Zsb3dBY3Rpdml0eVNlcnZpY2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi13b3JrZmxvdy1hY3Rpdml0eS1hZGQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1hY3Rpdml0eS1hZGQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0FjdGl2aXR5QWRkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgaXNBZGRGb3JtTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmVyc2lvbklEOiBzdHJpbmc7XHJcblxyXG4gIC8vQWRkIEFjdGl2aXR5IHNoYXJlZCBjb250cm9sc1xyXG4gIGFkZHdvcmtmbG93QWN0aXZpdHlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIG5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFjdGl2aXR5VHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGNhbkFkZE91dGNvbWU6IGJvb2xlYW47XHJcbiAgLy9TaGFyZWQgcmVxdWlyZWQgbGlzdHNcclxuICBBY3Rpdml0eVR5cGVMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAvL1NoYXJlZCBQYXJ0aWNpcGFudCB0eXBlIGFuZCBkYXRhXHJcbiAgc2hvd1BhcnRpY2lwYW50Q29udGFpbmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFydGljaXBhbnRUeXBlczogRHJvcGRvd25PcHRpb25zO1xyXG4gIHBhcnRpY2lwYW50UGVybWlzc2lvblNldDogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICAvL0R5bmFtaWMgVHlwZXMgQ29udHJvbHMgLy8oQXBwcm92YWwsQWN0aW9uLFBlcmNlbnRhZ2UpXHJcbiAgc2hvd0R5bmFtaWNDb250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGR5bmFtaWNUYXNrTmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgZHluYW1pY1Rhc2tEZXNjcmlwdGlvbjogTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zO1xyXG4gIGR5bmFtaWNUYXNrVVJMOiBUZXh0Qm94T3B0aW9ucztcclxuICBkeW5hbWljVGFza1R5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBkeW5hbWljQ2FuQ29tcGxldGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcblxyXG4gIC8vU3RhdGljIHR5cGVzIGNvbnRyb2xzIChFbWFpbCxTbGVlcClcclxuICAvL0VtYWlsIFR5cGUgQ29udHJvbHMgLy8rIGluaXRpYWxpemUgcGFydGljaXBhbnRcclxuICBzaG93U3RhdGljQ29udHJvbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGF0aWNPdXRjb21lTmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgc3RhdGljT3V0Y29tZVN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIHN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHk6IERyb3Bkb3duT3B0aW9ucztcclxuICBzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG5cclxuICAvL0NvbmRpdGlvbiB0eXBlIGNvbnRyb2xzXHJcbiAgc2hvd0NvbmRpdGlvbkNvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29uZGl0aW9uTEhTRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25zRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNUeXBlRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNEcm9wRG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIGNvbmRpdGlvblJIU1ZhbHVlOiBUZXh0Qm94T3B0aW9ucztcclxuICBzaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL091dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbilcclxuICBvdXRjb21lc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgb3V0Y29tZXNDb3VudDogbnVtYmVyID0gMDtcclxuICBzaG93T3V0Y29tZXNDb250YWluZXIgPSBmYWxzZTtcclxuXHJcbiAgLy9SZXF1aXJlZExpc3RzXHJcbiAgdGFza1R5cGVMaXN0ID0gW107XHJcbiAgcGFydGljaXBhbnRUeXBlTGlzdCA9IFtdO1xyXG4gIHBhcnRpY2lwYW50RGF0YUxpc3QgPSBbXTtcclxuICBuZXh0QWN0aXZpdHlMaXN0ID0gW107XHJcblxyXG4gIC8vQ29uZGl0aW9uVHlwZVJlcXVpcmVkTGlzdHNcclxuICBjb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdCA9IFtdO1xyXG4gIGNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0ID0gW107XHJcbiAgY29uZGl0aW9uUkhTVHlwZUxpc3QgPSBbXTtcclxuICBjb25kaXRpb25MaXN0ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgd29ya2Zsb3dBY3Rpdml0eVNlcnZpY2U6IFdvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMudmVyc2lvbklEID0gcGFyYW1zWyd2aWQnXTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IFwiXCJcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRXb3JrZmxvd0FjdGl2aXR5XCIpO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtGbG93c1wiKSwgcGF0aDogJy9BZG1pbi9Xb3JrZmxvd3Mvd29ya2Zsb3cnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9Jbml0aWFsaXplIGFkZCBwYWdlIGFuZCByZXF1aXJlZCBERExzXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmxvYWRBZGREcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5BY3Rpdml0eVR5cGVMaXN0ID0gcmVzdWx0T2JqLmFjdGl2aXR5TGlzdDtcclxuXHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZFdGQWN0aXZpdHlNb2RlbDtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRXRkFjdGl2aXR5RnVuY3Rpb247XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLk9uU3VjY2Vzc0hhbmRsZXIgPSB0aGlzLm9uQWRkU3VjY2VzcztcclxuXHJcbiAgICAgIHRoaXMubmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLm5hbWUuTmFtZSA9IFwibmFtZVwiO1xyXG4gICAgICB0aGlzLm5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLm5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMubmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuc3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnN5c05hbWUuTmFtZSA9IFwic3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLnN5c05hbWUuTGFiZWxLZXkgPSBcIlN5c05hbWVcIjtcclxuICAgICAgdGhpcy5zeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5zeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hY3Rpdml0eVR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLk5hbWUgPSBcImFjdGl2aXR5VHlwZVwiXHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVR5cGVcIlxyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5EYXRhU291cmNlID0gdGhpcy5BY3Rpdml0eVR5cGVMaXN0XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmlzQWRkRm9ybUxvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0FkZCBmdW5jdGlvbnNcclxuICBnZXRBZGRXRkFjdGl2aXR5TW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0udmFsdWU7XHJcbiAgICBsZXQgYWRkTW9kZWwgPSBuZXcgV0ZBY3Rpdml0eU1vZGVsKCk7XHJcbiAgICBhZGRNb2RlbC5OYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5uYW1lLkVuZ2xpc2hcclxuICAgIGFkZE1vZGVsLk5hbWUuQXJhYmljID0gUmVzdWx0TW9kZWwubmFtZS5BcmFiaWNcclxuICAgIGFkZE1vZGVsLlN5c05hbWUgPSBSZXN1bHRNb2RlbC5zeXNOYW1lXHJcbiAgICBhZGRNb2RlbC5WZXJzaW9uSURfR1VJRCA9IHRoaXMudmVyc2lvbklEO1xyXG4gICAgYWRkTW9kZWwuQWN0aXZpdHlUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5hY3Rpdml0eVR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgLy9JZiBwYXJ0aWNpcGFudCBleGlzdHNcclxuICAgIGlmIChSZXN1bHRNb2RlbC5wYXJ0aWNpcGFudFR5cGVzICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBhZGRNb2RlbC5QYXJ0aWNpcGFudERUTyA9IG5ldyBQYXJ0aWNpcGFudE1vZGVsKCk7XHJcbiAgICAgIGFkZE1vZGVsLlBhcnRpY2lwYW50RFRPID0gbmV3IFBhcnRpY2lwYW50TW9kZWwoKTtcclxuICAgICAgYWRkTW9kZWwuUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZyA9IFJlc3VsdE1vZGVsLnBhcnRpY2lwYW50VHlwZXMudG9TdHJpbmcoKTtcclxuICAgICAgaWYgKFJlc3VsdE1vZGVsLnBhcnRpY2lwYW50VHlwZXMuaW5jbHVkZXMoUGFydGljaXBhbnRUeXBlLlBlcm1pc3Npb25TZXQpKSB7XHJcbiAgICAgICAgYWRkTW9kZWwuUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEc1N0cmluZyA9IFJlc3VsdE1vZGVsLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGFkZE1vZGVsLkFjdGl2aXR5VHlwZUl0ZW1JRF9HVUlEKSB7XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFwcHJvdmFsOlxyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BY3Rpb246XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLlBlcmNlbnRhZ2VUYXNrOlxyXG4gICAgICAgIGFkZE1vZGVsLlRhc2tOYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza05hbWUuRW5nbGlzaDtcclxuICAgICAgICBhZGRNb2RlbC5UYXNrTmFtZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza05hbWUuQXJhYmljO1xyXG4gICAgICAgIGFkZE1vZGVsLlRhc2tEZXNjcmlwdGlvbi5FbmdsaXNoID0gUmVzdWx0TW9kZWwuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5FbmdsaXNoO1xyXG4gICAgICAgIGFkZE1vZGVsLlRhc2tEZXNjcmlwdGlvbi5BcmFiaWMgPSBSZXN1bHRNb2RlbC5keW5hbWljVGFza0Rlc2NyaXB0aW9uLkFyYWJpYztcclxuICAgICAgICBhZGRNb2RlbC5UYXNrVVJMID0gUmVzdWx0TW9kZWwuZHluYW1pY1Rhc2tVUkw7XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza0NvcnJsVHlwZUlEID0gUmVzdWx0TW9kZWwuZHluYW1pY1Rhc2tUeXBlICE9IG51bGwgPyBOdW1iZXIoUmVzdWx0TW9kZWwuZHluYW1pY1Rhc2tUeXBlKSA6IG51bGw7XHJcbiAgICAgICAgYWRkTW9kZWwuQ2FuQ29tcGxldGVGcm9tVE1FID0gUmVzdWx0TW9kZWwuZHluYW1pY0NhbkNvbXBsZXRlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgYWRkTW9kZWwuTm9ybWFsT3V0Y29tZU5hbWUuRW5nbGlzaCA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVOYW1lLkVuZ2xpc2g7XHJcbiAgICAgICAgYWRkTW9kZWwuTm9ybWFsT3V0Y29tZU5hbWUuQXJhYmljID0gUmVzdWx0TW9kZWwuc3RhdGljT3V0Y29tZU5hbWUuQXJhYmljO1xyXG4gICAgICAgIGFkZE1vZGVsLk91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWwuc3RhdGljT3V0Y29tZVN5c05hbWU7XHJcbiAgICAgICAgYWRkTW9kZWwuTmV4dEFjdGl2aXR5SURfR1VJRCA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHk7XHJcbiAgICAgICAgYWRkTW9kZWwuQ2FuQWRkQ29tbWVudCA9IFJlc3VsdE1vZGVsLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5Db25kaXRpb246XHJcbiAgICAgICAgYWRkTW9kZWwuTEhTVmFyaWFibGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuY29uZGl0aW9uTEhTRHJvcERvd25cclxuICAgICAgICBhZGRNb2RlbC5SSFNWYXJpYWJsZUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5jb25kaXRpb25SSFNEcm9wRG93blxyXG4gICAgICAgIGFkZE1vZGVsLlJIU1R5cGVJdGVtSURfR1VJRCA9IFJlc3VsdE1vZGVsLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93blxyXG4gICAgICAgIGFkZE1vZGVsLk9wZXJhdG9yVHlwZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuY29uZGl0aW9uc0Ryb3BEb3duXHJcbiAgICAgICAgYWRkTW9kZWwuUkhTVmFsdWUgPSBSZXN1bHRNb2RlbC5jb25kaXRpb25SSFNWYWx1ZSAhPSB1bmRlZmluZWQgPyBSZXN1bHRNb2RlbC5jb25kaXRpb25SSFNWYWx1ZSA6IG51bGw7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgfVxyXG4gICAgLy9TZXQgT3V0Y29tZXMgKGR5bmFtaWMsY29uZGl0aW9uIHR5cGVzKVxyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLm91dGNvbWVzQ291bnQ7IGorKykge1xyXG4gICAgICBsZXQgb3V0Y29tZUlEID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lSURcIiArIGpdO1xyXG4gICAgICBpZiAob3V0Y29tZUlEID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lTmFtZSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZU5hbWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVTeXNOYW1lOiBzdHJpbmc7XHJcbiAgICAgIGxldCBvdXRDb21lQ2FuRWRpdFN5c05hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgal07XHJcbiAgICAgIGlmIChvdXRDb21lQ2FuRWRpdFN5c05hbWUpXHJcbiAgICAgICAgb3V0Y29tZVN5c05hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGpdO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgb3V0Y29tZVN5c05hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgal07XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUFjdGl2aXR5ID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGpdO1xyXG4gICAgICBsZXQgb3V0Y29tZUNhbkFkZENvbW1lbnQgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBhY3Rpdml0eU91dGNvbWU6IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgPSBuZXcgV0ZBY3Rpdml0eU91dGNvbWVNb2RlbCgpO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuSURfR1VJRCA9IG91dGNvbWVJRDtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk5hbWVFTiA9IG91dGNvbWVOYW1lLkVuZ2xpc2g7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5OYW1lQVIgPSBvdXRjb21lTmFtZS5BcmFiaWM7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5PdXRjb21lU3lzTmFtZSA9IG91dGNvbWVTeXNOYW1lO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuTmV4dEFjdGl2aXR5SURfR1VJRCA9IG91dGNvbWVBY3Rpdml0eVxyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuQ2FuQWRkQ29tbWVudCA9IG91dGNvbWVDYW5BZGRDb21tZW50O1xyXG5cclxuICAgICAgYWRkTW9kZWwuT3V0Y29tZXMucHVzaChhY3Rpdml0eU91dGNvbWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goYWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG4gIGdldEFkZFdGQWN0aXZpdHlGdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5hZGRXb3JrZmxvd0FjdGl2aXR5KEFkZE1vZGVsKVxyXG4gIH1cclxuICBvbkFkZFN1Y2Nlc3MgPSAocmVzdWx0KSA9PiB7XHJcbiAgICB0aGlzLmNhbmNlbEFkZCgpO1xyXG4gIH1cclxuXHJcbiAgLy9PdXRjb21lIGZ1bmN0aW9uc1xyXG4gIGdldEFjdGl2aXR5T3V0Y29tZXNPcHRpb25zKG91dENvbWVzOiBhbnlbXSkge1xyXG4gICAgbGV0IG91dGNvbWVzT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBvdXRjb21lc0NvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3V0Q29tZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1cnJlbnRPdXRjb21lID0gb3V0Q29tZXNbaV07XHJcbiAgICAgIGxldCBvYmplY3RPdXRjb21lT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lSUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUlELk5hbWUgPSBcIm91dGNvbWVJRFwiICsgaTtcclxuICAgICAgb3V0Y29tZUlELkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIG91dGNvbWVJRC5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLmlEX0dVSUQ7XHJcblxyXG4gICAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIG5hbWUuRW5nbGlzaCA9IGN1cnJlbnRPdXRjb21lLm5hbWVFTjtcclxuICAgICAgbmFtZS5BcmFiaWMgPSBjdXJyZW50T3V0Y29tZS5uYW1lQVI7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZU5hbWUuTmFtZSA9IFwib3V0Y29tZU5hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgb3V0Y29tZU5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIG91dGNvbWVOYW1lLlZhbHVlID0gbmFtZTtcclxuICAgICAgb3V0Y29tZU5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLm91dGNvbWVTeXNOYW1lO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLklzRGlzYWJsZWQgPSAhY3VycmVudE91dGNvbWUuY2FuRWRpdFN5c05hbWU7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuTmFtZSA9IFwib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBpO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuTGFiZWxLZXkgPSBcIkFjdGl2aXR5XCJcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkRhdGFTb3VyY2UgPSB0aGlzLm5leHRBY3Rpdml0eUxpc3RcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUNhbkFkZENvbW1lbnQgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50Lk5hbWUgPSBcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpO1xyXG4gICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLmNhbkFkZENvbW1lbnQ7XHJcbiAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50LkxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUNhbkVkaXQ6IGJvb2xlYW47XHJcbiAgICAgIG91dGNvbWVDYW5FZGl0ID0gY3VycmVudE91dGNvbWUuY2FuRWRpdDtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lSGlkZGVuZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgaTtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLlZhbHVlID0gY3VycmVudE91dGNvbWUub3V0Y29tZVN5c05hbWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUNhbkVkaXRTeXNOYW1lID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUuTmFtZSA9IFwib3V0Y29tZUNhbkVkaXRTeXNOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5jYW5FZGl0U3lzTmFtZTtcclxuXHJcbiAgICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLFxyXG4gICAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50LCBvdXRjb21lQ2FuRWRpdCwgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLCBvdXRjb21lQ2FuRWRpdFN5c05hbWUpO1xyXG5cclxuXHJcbiAgICAgIG91dGNvbWVzT3B0aW9ucy5wdXNoKG9iamVjdE91dGNvbWVPcHRpb25zKTtcclxuICAgICAgb3V0Y29tZXNDb3VudCArPSAxO1xyXG5cclxuICAgIH1cclxuICAgIHJldHVybiBbb3V0Y29tZXNPcHRpb25zLCBvdXRjb21lc0NvdW50XTtcclxuICB9XHJcbiAgYWRkV0ZBY3Rpdml0eU91dGNvbWUoKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLm91dGNvbWVzQ291bnQ7XHJcblxyXG4gICAgbGV0IG9iamVjdE91dGNvbWVPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGxldCBvdXRjb21lSUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVJRC5OYW1lID0gXCJvdXRjb21lSURcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUlELkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBvdXRjb21lSUQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgb3V0Y29tZUlELlZhbHVlID0gMDtcclxuXHJcbiAgICBsZXQgb3V0Y29tZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVOYW1lLk5hbWUgPSBcIm91dGNvbWVOYW1lXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVOYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgIG91dGNvbWVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgb3V0Y29tZU5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVEZWNpc2lvblN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuTmFtZSA9IFwib3V0Y29tZURlY2lzaW9uU3lzTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLkxhYmVsS2V5ID0gXCJEZWNpc2lvblN5c05hbWVcIjtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLk5hbWUgPSBcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuTGFiZWxLZXkgPSBcIkFjdGl2aXR5XCJcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUNhbkFkZENvbW1lbnQuTmFtZSA9IFwib3V0Y29tZUNhbkFkZENvbW1lbnRcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUNhbkFkZENvbW1lbnQuTGFiZWxLZXkgPSBcIkNhbkFkZENvbW1lbnRcIjtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUNhbkVkaXQ6IGJvb2xlYW47XHJcbiAgICBvdXRjb21lQ2FuRWRpdCA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVIaWRkZW5lU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lSGlkZGVuZVN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuICAgIGxldCBvdXRjb21lQ2FuRWRpdFN5c05hbWUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUuTmFtZSA9IFwib3V0Y29tZUNhbkVkaXRTeXNOYW1lXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVDYW5FZGl0U3lzTmFtZS5WYWx1ZSA9IHRydWU7XHJcblxyXG4gICAgb2JqZWN0T3V0Y29tZU9wdGlvbnMucHVzaChvdXRjb21lSUQsIG91dGNvbWVOYW1lLCBvdXRjb21lRGVjaXNpb25TeXNOYW1lLCBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMsIG91dGNvbWVDYW5BZGRDb21tZW50LFxyXG4gICAgICBvdXRjb21lQ2FuRWRpdCwgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLCBvdXRjb21lQ2FuRWRpdFN5c05hbWUpO1xyXG5cclxuICAgIHRoaXMub3V0Y29tZXNPcHRpb25zLnB1c2gob2JqZWN0T3V0Y29tZU9wdGlvbnMpO1xyXG4gICAgdGhpcy5vdXRjb21lc0NvdW50ICs9IDE7XHJcblxyXG4gIH1cclxuICBkZWxldGVPdXRjb21lKGRlbGV0ZWRPdXRjb21lOiBhbnkpIHtcclxuICAgIGxldCBkZWxldGVkT3V0Y29tZUluZGV4OiBudW1iZXIgPSB0aGlzLm91dGNvbWVzT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRPdXRjb21lKTtcclxuICAgIGlmIChkZWxldGVkT3V0Y29tZUluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLm91dGNvbWVzT3B0aW9ucy5zcGxpY2UoZGVsZXRlZE91dGNvbWVJbmRleCwgMSk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZE91dGNvbWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woZGVsZXRlZE91dGNvbWVbaV0uTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vT24gY2hhbmdlcyBldmVudHNcclxuICBhY3Rpdml0eVR5cGVPbkNoYW5nZShhY3Rpdml0eVR5cGUpIHtcclxuICAgIGFjdGl2aXR5VHlwZSA9IGFjdGl2aXR5VHlwZT8udG9Mb3dlckNhc2UoKTtcclxuICAgIC8vUmVzZXQgY29udHJvbHMsIG91dGNvbWVzIGFuZCBmbGFnc1xyXG4gICAgdGhpcy5yZXNldEFsbEFjdGl2aXR5VHlwZUNvbnRyb2xzKCk7XHJcbiAgICB0aGlzLm91dGNvbWVzT3B0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy5vdXRjb21lc0NvdW50ID0gMDtcclxuICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50Q29udGFpbmVyID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dEeW5hbWljQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1N0YXRpY0NvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDb25kaXRpb25Db250cm9scyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93T3V0Y29tZXNDb250YWluZXIgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5T3V0Y29tZXModGhpcy52ZXJzaW9uSUQsIGFjdGl2aXR5VHlwZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHZhciBtb2RlbCA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgdmFyIGxpc3QgPSByZXN1bHRPYmoubGlzdDtcclxuICAgICAgdGhpcy5uZXh0QWN0aXZpdHlMaXN0ID0gbGlzdC5hY3Rpdml0aWVzO1xyXG5cclxuICAgICAgc3dpdGNoIChhY3Rpdml0eVR5cGUpIHtcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BcHByb3ZhbDpcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BY3Rpb246XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgICB0aGlzLnRhc2tUeXBlTGlzdCA9IGxpc3QudGFza3M7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudFR5cGVzO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnREYXRhO1xyXG5cclxuICAgICAgICAgIC8vSW5pdGlhbGl6ZSByZXF1aXJlZCBjb250cm9scyBmb3IgYXBwcm92YWxcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5OYW1lID0gXCJwYXJ0aWNpcGFudFR5cGVzXCJcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5MYWJlbEtleSA9IFwiUGFydGljaXBhbnRUeXBlc1wiXHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTmFtZSA9IFwiZHluYW1pY1Rhc2tOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiVGFza05hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrTmFtZUluRW5nbGlzaFwiO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5OYW1lID0gXCJkeW5hbWljVGFza0Rlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLk5hbWUgPSBcImR5bmFtaWNUYXNrVVJMXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLkxhYmVsS2V5ID0gXCJUYXNrVVJMXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLk5hbWUgPSBcImR5bmFtaWNUYXNrVHlwZVwiXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5MYWJlbEtleSA9IFwiVGFza1R5cGVcIlxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuRGF0YVNvdXJjZSA9IHRoaXMudGFza1R5cGVMaXN0XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5OYW1lID0gXCJkeW5hbWljQ2FuQ29tcGxldGVcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLkxhYmVsS2V5ID0gXCJDYW5Db21wbGV0ZUZyb21UTUVcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmFsdWUgPSBtb2RlbC5jYW5Db21wbGV0ZUZyb21UTUU7XHJcblxyXG4gICAgICAgICAgbGV0IG91dGNvbWVzUmVzdWx0OiBhbnkgPSB0aGlzLmdldEFjdGl2aXR5T3V0Y29tZXNPcHRpb25zKG1vZGVsLm91dGNvbWVzKTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gb3V0Y29tZXNSZXN1bHRbMF07XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBvdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dEeW5hbWljQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93T3V0Y29tZXNDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuRW1haWw6XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgICBpZiAoYWN0aXZpdHlUeXBlID09IEFjdGl2aXR5VHlwZS5FbWFpbCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudFR5cGVzO1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudERhdGE7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLk5hbWUgPSBcInBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTGFiZWxLZXkgPSBcIlBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnRUeXBlTGlzdFxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICAgICAgbmFtZS5BcmFiaWMgPSBtb2RlbC5ub3JtYWxPdXRjb21lTmFtZS5hcmFiaWM7XHJcbiAgICAgICAgICBuYW1lLkVuZ2xpc2ggPSBtb2RlbC5ub3JtYWxPdXRjb21lTmFtZS5lbmdsaXNoO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZU5hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuQXJhYmljTGFiZWxLZXkgPSBcIk91dGNvbWVOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJPdXRjb21lTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuVmFsdWUgPSBuYW1lO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTmFtZSA9IFwic3RhdGljT3V0Y29tZVN5c05hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5OYW1lID0gXCJzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5XCJcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5MYWJlbEtleSA9IFwiTmV4dEFjdGl2aXR5XCJcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuTmFtZSA9IFwic3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnRcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuTGFiZWxLZXkgPSBcIkNhbkFkZENvbW1lbnRcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50LlZhbHVlID0gbW9kZWwuY2FuQWRkQ29tbWVudDtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dTdGF0aWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5Db25kaXRpb246XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0ID0gbGlzdC53ZlZhcmlhYmxlcztcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdCA9IGxpc3QucmhzVHlwZXM7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxpc3QgPSBsaXN0LmNvbmRpdGlvbnM7XHJcblxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uTmFtZSA9IFwiY29uZGl0aW9uTEhTRHJvcERvd25cIlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25zRHJvcERvd25cIlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIkNvbmRpdGlvblwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25MaXN0XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgbGV0IHNlbGVjdGVkUkhTVHlwZSA9IHRoaXMuY29uZGl0aW9uUkhTVHlwZUxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleT8udG9Mb3dlckNhc2UoKSA9PSBSaWdodGhhbmRzaWRldHlwZS5WYXJpYWJsZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLk5hbWUgPSBcImNvbmRpdGlvblJIU1R5cGVEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5EYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdFxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uU2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkUkhTVHlwZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25SSFNEcm9wRG93blwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgbGV0IGNvbmRpdGlvbk91dGNvbWVzUmVzdWx0OiBhbnkgPSB0aGlzLmdldEFjdGl2aXR5T3V0Y29tZXNPcHRpb25zKG1vZGVsLm91dGNvbWVzKTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gY29uZGl0aW9uT3V0Y29tZXNSZXN1bHRbMF07XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBjb25kaXRpb25PdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25Db250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FuQWRkT3V0Y29tZSA9IHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID8gbW9kZWwuY2FuQWRkT3V0Y29tZSA6IGZhbHNlO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKHR5cGUpIHtcclxuICAgIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAodHlwZSA9PSBSaWdodGhhbmRzaWRldHlwZS5WYXJpYWJsZSkge1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNWYWx1ZVwiKVxyXG5cclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5OYW1lID0gXCJjb25kaXRpb25SSFNEcm9wRG93blwiXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSGlkZUxhYmVsID0gdHJ1ZVxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLlBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uUkhTRHJvcERvd25cIilcclxuXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5OYW1lID0gXCJjb25kaXRpb25SSFNWYWx1ZVwiO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuUGxhY2Vob2xkZXIgPSBcIlZhbHVlXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgcGFydGljaXBhbnRUeXBlT25DaGFuZ2UocGFydGljaXBhbnRUeXBlKSB7XHJcbiAgICBwYXJ0aWNpcGFudFR5cGUgPSBwYXJ0aWNpcGFudFR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAocGFydGljaXBhbnRUeXBlID09IFBhcnRpY2lwYW50VHlwZS5QZXJtaXNzaW9uU2V0KSB7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5OYW1lID0gXCJwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXRcIlxyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiXHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkRhdGFTb3VyY2UgPSB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3RcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiKTtcclxuICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vcmVzZXQgdHlwZVxyXG4gIHJlc2V0QWxsQWN0aXZpdHlUeXBlQ29udHJvbHMoKSB7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJwYXJ0aWNpcGFudFR5cGVzXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tOYW1lXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImR5bmFtaWNUYXNrVVJMXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY1Rhc2tUeXBlXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiZHluYW1pY0NhbkNvbXBsZXRlXCIpO1xyXG5cclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcInN0YXRpY091dGNvbWVOYW1lXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwic3RhdGljT3V0Y29tZVN5c05hbWVcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5XCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwic3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnRcIik7XHJcblxyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiY29uZGl0aW9uTEhTRHJvcERvd25cIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25zRHJvcERvd25cIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJjb25kaXRpb25SSFNEcm9wRG93blwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcImNvbmRpdGlvblJIU1ZhbHVlXCIpO1xyXG5cclxuICAgIC8vUmVtb3ZlIG91dGNvbWVzIGNvbnRyb2xzXHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnZhbHVlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm91dGNvbWVzQ291bnQ7IGkrKykge1xyXG4gICAgICBsZXQgb3V0Y29tZUlEID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lSURcIiArIGldO1xyXG4gICAgICBpZiAob3V0Y29tZUlEID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVJRFwiICsgaSk7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVOYW1lXCIgKyBpKTtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZURlY2lzaW9uU3lzTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgaSk7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vQ2FuY2VsXHJcbiAgY2FuY2VsQWRkKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvQWRtaW4vV29ya2Zsb3dzL3dvcmtmbG93LyddKTtcclxuICB9XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCIgKm5nSWY9XCJpc0FkZEZvcm1Mb2FkZWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9uc1wiPlxyXG4gICAgICAgIDwhLS1TdGFydCBzaGFyZWQgY29udHJvbHMgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIm5hbWVcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInN5c05hbWVcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWN0aXZpdHlUeXBlXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCIgKE9uQ2hhbmdlKT1cImFjdGl2aXR5VHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgc2hhcmVkIGNvbnRyb2xzIGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBwYXJ0aWNpcGFudCBjb250YWluZXItLT5cclxuICAgICAgICA8ZGl2IGlkPVwicGFydGljaXBhbnRDb250YWluZXJcIiAqbmdJZj1cInNob3dQYXJ0aWNpcGFudENvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cInBhcnRpY2lwYW50VHlwZXNcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIiAoT25DaGFuZ2UpPVwicGFydGljaXBhbnRUeXBlT25DaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldFwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwicGFydGljaXBhbnRQZXJtaXNzaW9uU2V0XCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHBhcnRpY2lwYW50IGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBzdGF0aWMgY29udHJvbHMtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1N0YXRpY0NvbnRyb2xzXCIgaWQ9XCJzdGF0aWNDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwic3RhdGljT3V0Y29tZU5hbWVcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVTeXNOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHlcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50XCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgc3RhdGljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPCEtLVN0YXJ0IGR5bmFtaWMgY29udHJvbHMtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0R5bmFtaWNDb250cm9sc1wiIGlkPVwiZHluYW1pY0NvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJkeW5hbWljVGFza05hbWVcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYSBbb3B0aW9uc109XCJkeW5hbWljVGFza0Rlc2NyaXB0aW9uXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tVUkxcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tUeXBlXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJkeW5hbWljQ2FuQ29tcGxldGVcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBkeW5hbWljIGNvbnRyb2xzLS0+XHJcblxyXG4gICAgICAgIDwhLS1TdGFydCBjb25kaXRpb24gY29udHJvbHMtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0NvbmRpdGlvbkNvbnRyb2xzXCIgaWQ9XCJjb25kaXRpb25Db250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTGVmdEhhbmRTaWRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvbmRpdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSaWdodEhhbmRTaWRlVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSaWdodEhhbmRTaWRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImNvbmRpdGlvbkxIU0Ryb3BEb3duXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25zRHJvcERvd25cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImNvbmRpdGlvblJIU1R5cGVEcm9wRG93blwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIChPbkNoYW5nZSk9XCJjb25kaXRpb25SSFNUeXBlT25DaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlOyBlbHNlIGNvbmRpdGlvblR4dFZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImNvbmRpdGlvblJIU0Ryb3BEb3duXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25kaXRpb25UeHRWYWx1ZT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImNvbmRpdGlvblJIU1ZhbHVlXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBjb25kaXRpb24gY29udHJvbHMtLT5cclxuXHJcbiAgICAgICAgPCEtLVN0YXJ0IG91dGNvbWVzIGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93T3V0Y29tZXNDb250YWluZXJcIiBpZD1cIm91dGNvbWVzQ29udGFpbmVyXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlY2lzaW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvdXRjb21lc09wdGlvbnM7bGV0IGk9aW5kZXg7XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLUlELS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bMF1cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tU3lzTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWhpZGRlbiBTeXNOYW1lLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bNl1cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tY2FuIGVkaXQgU3lzTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvbls3XVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1OZXh0QWN0aXZpdHktLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzNdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1DYW5BZGRDb21tZW50LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwib3B0aW9uWzRdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1pZiBvdXRjb21lIENhbiBFZGl0LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJvcHRpb25bNV1cIiBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tbGlnaHQtZGFuZ2VyIGJ0bi1zbVwiIChjbGljayk9XCJkZWxldGVPdXRjb21lKG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiIGZhIGZhLXRyYXNoIGhpZGRlblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2FuQWRkT3V0Y29tZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInctMTAwIGJ0biBidG4tc3VjY2Vzc1wiIChjbGljayk9XCJhZGRXRkFjdGl2aXR5T3V0Y29tZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGROZXdSZWNvcmRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgb3V0Y29tZXMgY29udGFpbmVyLS0+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIiAoY2xpY2spPVwiY2FuY2VsQWRkKClcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L0JCU0YtRm9ybT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==