verben-authentication-ui 0.9.0 → 0.9.2

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.
@@ -149,22 +149,22 @@ export class RoleControlComponent {
149
149
  });
150
150
  }
151
151
  async getSavedContexts() {
152
- if (!this.isGlobal || !this.serviceName) {
152
+ if (!this.isGlobal || !this.application) {
153
153
  return undefined;
154
154
  }
155
155
  var payload = [
156
156
  {
157
- PropertyName: 'ServiceName',
158
- EntityValue: this.serviceName,
159
- Operator: SearchOperator.And,
160
- Sign: SearchPropertySign.EQ,
161
- },
162
- {
163
- PropertyName: 'APIKey',
164
- EntityValue: this.envSvc.environment.APIKey,
157
+ PropertyName: 'Application',
158
+ EntityValue: this.application,
165
159
  Operator: SearchOperator.And,
166
160
  Sign: SearchPropertySign.EQ,
167
161
  },
162
+ // {
163
+ // PropertyName: 'APIKey',
164
+ // EntityValue: this.envSvc.environment.APIKey,
165
+ // Operator: SearchOperator.And,
166
+ // Sign: SearchPropertySign.EQ,
167
+ // },
168
168
  ];
169
169
  this.utilService.sendBI(true);
170
170
  const res = await this.server.post(`Application/SearchApplicationRoleContexts/0/0`, payload);
@@ -256,7 +256,7 @@ export class RoleControlComponent {
256
256
  this.data = data.map((x) => {
257
257
  return {
258
258
  ...x,
259
- id: x.Id,
259
+ Id: x.Code,
260
260
  ChildrenType: ChildrenType.Permission,
261
261
  RoleContexts: this.sourceData.map((config) => {
262
262
  const existingId = x.RoleContexts.findIndex((y) => y.Name == config.Name);
@@ -273,10 +273,10 @@ export class RoleControlComponent {
273
273
  Role: x.Code,
274
274
  Context: '',
275
275
  id: existingAction > -1
276
- ? x.RoleContexts[existingId].RoleActions[existingAction].id
276
+ ? x.RoleContexts[existingId].RoleActions[existingAction].Code
277
277
  : '',
278
278
  Id: existingAction > -1
279
- ? x.RoleContexts[existingId].RoleActions[existingAction].Id
279
+ ? x.RoleContexts[existingId].RoleActions[existingAction].Code
280
280
  : '',
281
281
  CreatedAt: new Date(),
282
282
  UpdatedAt: new Date(),
@@ -300,8 +300,8 @@ export class RoleControlComponent {
300
300
  }),
301
301
  Name: config.Name,
302
302
  Role: x.Code,
303
- id: existingId > -1 ? x.RoleContexts[existingId].id : '',
304
- Id: existingId > -1 ? x.RoleContexts[existingId].Id : '',
303
+ id: existingId > -1 ? x.RoleContexts[existingId].Code : '',
304
+ Id: existingId > -1 ? x.RoleContexts[existingId].Code : '',
305
305
  CreatedAt: new Date(),
306
306
  UpdatedAt: new Date(),
307
307
  DataState: ObjectState.New,
@@ -322,7 +322,7 @@ export class RoleControlComponent {
322
322
  return data.map((x) => {
323
323
  return {
324
324
  ...x,
325
- id: x.Id,
325
+ Id: x.Code,
326
326
  ChildrenType: ChildrenType.Permission,
327
327
  RoleContexts: this.sourceData.map((config) => {
328
328
  const existingId = x.RoleContexts.findIndex((y) => y.Name == config.Name);
@@ -339,10 +339,10 @@ export class RoleControlComponent {
339
339
  Role: x.Code,
340
340
  Context: '',
341
341
  id: existingAction > -1
342
- ? x.RoleContexts[existingId].RoleActions[existingAction].id
342
+ ? x.RoleContexts[existingId].RoleActions[existingAction].Code
343
343
  : '',
344
344
  Id: existingAction > -1
345
- ? x.RoleContexts[existingId].RoleActions[existingAction].Id
345
+ ? x.RoleContexts[existingId].RoleActions[existingAction].Code
346
346
  : '',
347
347
  CreatedAt: new Date(),
348
348
  UpdatedAt: new Date(),
@@ -366,8 +366,8 @@ export class RoleControlComponent {
366
366
  }),
367
367
  Name: config.Name,
368
368
  Role: x.Code,
369
- id: existingId > -1 ? x.RoleContexts[existingId].id : '',
370
- Id: existingId > -1 ? x.RoleContexts[existingId].Id : '',
369
+ id: existingId > -1 ? x.RoleContexts[existingId].Code : '',
370
+ Id: existingId > -1 ? x.RoleContexts[existingId].Code : '',
371
371
  CreatedAt: new Date(),
372
372
  UpdatedAt: new Date(),
373
373
  DataState: ObjectState.New,
@@ -450,6 +450,8 @@ export class RoleControlComponent {
450
450
  }
451
451
  viewDetailsFromTable(data) {
452
452
  const cardData = this.cardData.find((x) => x.data == data);
453
+ console.log({ Data: data });
454
+ console.log({ CardData: this.cardData });
453
455
  if (cardData) {
454
456
  this.viewDetails(cardData);
455
457
  }
@@ -495,7 +497,7 @@ export class RoleControlComponent {
495
497
  return;
496
498
  }
497
499
  this.dataView.toggleView();
498
- const id = this.currentData.data ? this.currentData.data.Id : '';
500
+ const id = this.currentData.data ? this.currentData.data.Code : '';
499
501
  if (id.trim().length > 0 && !this.tableView.isRowEditing(id)) {
500
502
  this.tableView.toggleRowEdit(id);
501
503
  }
@@ -526,7 +528,7 @@ export class RoleControlComponent {
526
528
  newRole.DataState == ObjectState.New
527
529
  ? ObjectState.New
528
530
  : ObjectState.Changed;
529
- newRole.Id = newRole.DataState == ObjectState.New ? '' : newRole.Id;
531
+ newRole.Id = '';
530
532
  return newRole;
531
533
  }
532
534
  async saveRole() {
@@ -566,10 +568,10 @@ export class RoleControlComponent {
566
568
  Role: roleResult.Code,
567
569
  Context: '',
568
570
  id: existingAction > -1
569
- ? roleResult.RoleContexts[existingId].RoleActions[existingAction].id
571
+ ? roleResult.RoleContexts[existingId].RoleActions[existingAction].Code
570
572
  : '',
571
573
  Id: existingAction > -1
572
- ? roleResult.RoleContexts[existingId].RoleActions[existingAction].Id
574
+ ? roleResult.RoleContexts[existingId].RoleActions[existingAction].Code
573
575
  : '',
574
576
  CreatedAt: new Date(),
575
577
  UpdatedAt: new Date(),
@@ -590,8 +592,8 @@ export class RoleControlComponent {
590
592
  }),
591
593
  Name: config.Name,
592
594
  Role: roleResult.Code,
593
- id: existingId > -1 ? roleResult.RoleContexts[existingId].id : '',
594
- Id: existingId > -1 ? roleResult.RoleContexts[existingId].Id : '',
595
+ id: existingId > -1 ? roleResult.RoleContexts[existingId].Code : '',
596
+ Id: existingId > -1 ? roleResult.RoleContexts[existingId].Code : '',
595
597
  CreatedAt: new Date(),
596
598
  UpdatedAt: new Date(),
597
599
  DataState: ObjectState.New,
@@ -613,7 +615,7 @@ export class RoleControlComponent {
613
615
  const itemIndex = this.data.findIndex((x) => x == this.currentData?.data);
614
616
  if (itemIndex > -1) {
615
617
  this.data[itemIndex].Code = mappedRoleSave.Code;
616
- this.data[itemIndex].Id = mappedRoleSave.Id;
618
+ this.data[itemIndex].Id = mappedRoleSave.Code;
617
619
  this.data[itemIndex].DataState = mappedRoleSave.DataState;
618
620
  this.data[itemIndex].TenantId = mappedRoleSave.TenantId;
619
621
  this.data[itemIndex].ServiceName = mappedRoleSave.ServiceName;
@@ -693,10 +695,10 @@ export class RoleControlComponent {
693
695
  Role: roleResult.Code,
694
696
  Context: '',
695
697
  id: existingAction > -1
696
- ? roleResult.RoleContexts[existingId].RoleActions[existingAction].id
698
+ ? roleResult.RoleContexts[existingId].RoleActions[existingAction].Code
697
699
  : '',
698
700
  Id: existingAction > -1
699
- ? roleResult.RoleContexts[existingId].RoleActions[existingAction].Id
701
+ ? roleResult.RoleContexts[existingId].RoleActions[existingAction].Code
700
702
  : '',
701
703
  CreatedAt: new Date(),
702
704
  UpdatedAt: new Date(),
@@ -717,8 +719,8 @@ export class RoleControlComponent {
717
719
  }),
718
720
  Name: config.Name,
719
721
  Role: roleResult.Code,
720
- id: existingId > -1 ? roleResult.RoleContexts[existingId].id : '',
721
- Id: existingId > -1 ? roleResult.RoleContexts[existingId].Id : '',
722
+ id: existingId > -1 ? roleResult.RoleContexts[existingId].Code : '',
723
+ Id: existingId > -1 ? roleResult.RoleContexts[existingId].Code : '',
722
724
  CreatedAt: new Date(),
723
725
  UpdatedAt: new Date(),
724
726
  DataState: ObjectState.New,
@@ -738,7 +740,7 @@ export class RoleControlComponent {
738
740
  const itemIndex = this.data.findIndex((x) => x == this.currentData?.data);
739
741
  if (itemIndex > -1) {
740
742
  this.data[itemIndex].Code = mappedRoleSave.Code;
741
- this.data[itemIndex].Id = mappedRoleSave.Id;
743
+ this.data[itemIndex].Id = mappedRoleSave.Code;
742
744
  this.data[itemIndex].DataState = mappedRoleSave.DataState;
743
745
  this.data[itemIndex].TenantId = mappedRoleSave.TenantId;
744
746
  this.data[itemIndex].ServiceName = mappedRoleSave.ServiceName;
@@ -820,10 +822,10 @@ export class RoleControlComponent {
820
822
  Role: roleResult.Code,
821
823
  Context: '',
822
824
  id: existingAction > -1
823
- ? roleResult.RoleContexts[existingId].RoleActions[existingAction].id
825
+ ? roleResult.RoleContexts[existingId].RoleActions[existingAction].Code
824
826
  : '',
825
827
  Id: existingAction > -1
826
- ? roleResult.RoleContexts[existingId].RoleActions[existingAction].Id
828
+ ? roleResult.RoleContexts[existingId].RoleActions[existingAction].Code
827
829
  : '',
828
830
  CreatedAt: new Date(),
829
831
  UpdatedAt: new Date(),
@@ -844,8 +846,8 @@ export class RoleControlComponent {
844
846
  }),
845
847
  Name: config.Name,
846
848
  Role: roleResult.Code,
847
- id: existingId > -1 ? roleResult.RoleContexts[existingId].id : '',
848
- Id: existingId > -1 ? roleResult.RoleContexts[existingId].Id : '',
849
+ id: existingId > -1 ? roleResult.RoleContexts[existingId].Code : '',
850
+ Id: existingId > -1 ? roleResult.RoleContexts[existingId].Code : '',
849
851
  CreatedAt: new Date(),
850
852
  UpdatedAt: new Date(),
851
853
  DataState: ObjectState.New,
@@ -867,7 +869,7 @@ export class RoleControlComponent {
867
869
  : -1;
868
870
  if (itemIndex > -1) {
869
871
  this.data[itemIndex].Code = mappedRoleSave.Code;
870
- this.data[itemIndex].Id = mappedRoleSave.Id;
872
+ this.data[itemIndex].Id = mappedRoleSave.Code;
871
873
  this.data[itemIndex].DataState = mappedRoleSave.DataState;
872
874
  this.data[itemIndex].TenantId = mappedRoleSave.TenantId;
873
875
  this.data[itemIndex].ServiceName = mappedRoleSave.ServiceName;
@@ -1323,4 +1325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1323
1325
  }], searchDebounceTime: [{
1324
1326
  type: Input
1325
1327
  }] } });
1326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvcm9sZS1jb250cm9sL3JvbGUtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3JvbGUtY29udHJvbC9yb2xlLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBR0wsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBSUwsY0FBYyxHQUtmLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBUXhDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSXJFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUs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YW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9sZUNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9yb2xlLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQge1xuICBDYXJkRGF0YSxcbiAgQ2FyZERhdGFWaWV3Q29tcG9uZW50LFxuICBDb2x1bW5EZWZpbml0aW9uLFxuICBEYXRhRmlsdGVyVHlwZSxcbiAgRGF0YVRhYmxlQ29tcG9uZW50LFxuICBEYXRhVmlld0NvbXBvbmVudCxcbiAgSURhdGFGaWx0ZXIsXG4gIFZlcmJlblBvcFVwQ29tcG9uZW50LFxufSBmcm9tICd2ZXJiZW4tbmctdWknO1xuaW1wb3J0IHsgUm9sZSB9IGZyb20gJy4uLy4uL21vZGVscy9Sb2xlJztcbmltcG9ydCB7IGJhc2VTdHlsZSB9IGZyb20gJy4vYmFzZS10YWJsZS1zdHlsZSc7XG5pbXBvcnQgeyBPYmplY3RTdGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy9vYmplY3Qtc3RhdGUnO1xuaW1wb3J0IHsgUm9sZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvUm9sZUNvbnRleHQnO1xuaW1wb3J0IHsgVUlzIH0gZnJvbSAnLi9VSXMnO1xuaW1wb3J0IHsgUm9sZUFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9Sb2xlQWN0aW9uJztcbmltcG9ydCB7IFVJQWN0aW9ucyB9IGZyb20gJy4vVUlBY3Rpb25zJztcbmltcG9ydCB7IE1hcHBlZFJvbGUgfSBmcm9tICcuL01hcHBlZFJvbGUnO1xuaW1wb3J0IHtcbiAgQXV0aG9yaXphdGlvbkNvbmZpZyxcbiAgQXV0aG9yaXphdGlvblNlcnZpY2UsXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGhvcml6YXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNYXBwZWRSb2xlQ29udGV4dCB9IGZyb20gJy4vTWFwcGVkUm9sZUNvbnRleHQnO1xuaW1wb3J0IHsgTWFwcGVkUm9sZUFjdGlvbiB9IGZyb20gJy4vTWFwcGVkUm9sZUFjdGlvbic7XG5pbXBvcnQgeyBDaGlsZHJlblR5cGUgfSBmcm9tICcuL0NoaWxkcmVuVHlwZSc7XG5pbXBvcnQge1xuICBGb3JtQnVpbGRlcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cFdlYlJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC13ZWItcmVxdWVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvRXJyb3JSZXNwb25zZSc7XG5pbXBvcnQgeyBQYWdlZFJlc3VsdCB9IGZyb20gJy4uLy4uL21vZGVscy9QYWdlZFJlc3VsdCc7XG5pbXBvcnQgeyBTZWFyY2hQcm9wZXJ0eVZhbHVlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1NlYXJjaFByb3BlcnR5VmFsdWUnO1xuaW1wb3J0IHsgU2VhcmNoT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9tb2RlbHMvU2VhcmNoT3BlcmF0b3InO1xuaW1wb3J0IHsgU2VhcmNoUHJvcGVydHlTaWduIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1NlYXJjaFByb3BlcnR5U2lnbic7XG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uUm9sZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvQXBwbGljYXRpb25Sb2xlQ29udGV4dCc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblJvbGVBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvQXBwbGljYXRpb25Sb2xlQWN0aW9uJztcbmltcG9ydCB7IFNlYXJjaFByb3BlcnR5VmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1NlYXJjaFByb3BlcnR5VmFsdWVUeXBlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9Tb3J0RGlyZWN0aW9uJztcblxuZW51bSBEYXRlRmlsdGVyVHlwZXMge1xuICBCZWZvcmUgPSBTZWFyY2hQcm9wZXJ0eVNpZ24uTFQsXG4gIE9uID0gU2VhcmNoUHJvcGVydHlTaWduLkVRLFxuICBBZnRlciA9IFNlYXJjaFByb3BlcnR5U2lnbi5HVCxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXJvbGUtY29udHJvbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb2xlLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcm9sZS1jb250cm9sLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBSb2xlQ29udHJvbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHZpc2libGVDb2x1bW5EZWY6IENvbHVtbkRlZmluaXRpb248TWFwcGVkUm9sZT5bXSA9IFtdO1xuICBzdHlsZXMgPSBiYXNlU3R5bGU7XG4gIGRhdGE6IE1hcHBlZFJvbGVbXSA9IFtdO1xuICBjYXJkRGF0YTogQ2FyZERhdGFbXSA9IFtdO1xuICBjdXJyZW50RGF0YTogQ2FyZERhdGEgfCBudWxsID0gbnVsbDtcbiAgY3VycmVudEV4cGFuZGVkQ2FyZDogQ2FyZERhdGEgfCBudWxsID0gbnVsbDtcbiAgY2FyZENvbnRleHQ6IENhcmREYXRhIHwgbnVsbCA9IG51bGw7XG4gIGNhcmRDb250ZXh0SGlzdG9yeTogQ2FyZERhdGFbXSA9IFtdO1xuICBjYXJkQ29udGV4dEhpc3RvcnlEYXRhOiBDYXJkRGF0YVtdW10gPSBbXTtcbiAgQFZpZXdDaGlsZCgndmRjdicpIGNhcmREYXRhVmlldyE6IENhcmREYXRhVmlld0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgndmR2JykgZGF0YVZpZXchOiBEYXRhVmlld0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZHJlbigncG9wdXAnKSBwb3BVcHMhOiBRdWVyeUxpc3Q8VmVyYmVuUG9wVXBDb21wb25lbnQ+O1xuICBAVmlld0NoaWxkKCdkdCcpIHRhYmxlVmlldyE6IERhdGFUYWJsZUNvbXBvbmVudDxNYXBwZWRSb2xlPjtcbiAgQElucHV0KCkgaXNHbG9iYWw6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzZXJ2aWNlTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDEwO1xuICBASW5wdXQoKSBzZWFyY2hEZWJvdW5jZVRpbWU6IG51bWJlciA9IDUwMDtcbiAgcGFnZVN0YXRlOiBQYWdlZFJlc3VsdDxSb2xlPiB8IG51bGwgPSBudWxsO1xuICBzb3VyY2VEYXRhOiBBdXRob3JpemF0aW9uQ29uZmlnW10gPSBbXTtcbiAgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIG9wZW5Ecm9wZG93bklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgY3VycmVudEZpbHRlcnM6IElEYXRhRmlsdGVyW10gPSBbXTtcbiAgY3VycmVudFNvcnRzOiBJRGF0YUZpbHRlcltdID0gW107XG4gIHNlYXJjaFRlcm0kID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIHZpc2libGVDb2x1bW5zOiBJRGF0YUZpbHRlcltdID0gW107XG5cbiAgZmlsdGVyQXJyYXk6IElEYXRhRmlsdGVyW10gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ0NyZWF0ZWRBdCcsXG4gICAgICB0eXBlOiBEYXRhRmlsdGVyVHlwZS5EYXRlLFxuICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnVXBkYXRlZEF0JyxcbiAgICAgIHR5cGU6IERhdGFGaWx0ZXJUeXBlLkRhdGUsXG4gICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICB9LFxuICBdO1xuXG4gIHNvcnRPcHRpb25zOiBJRGF0YUZpbHRlcltdID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdDcmVhdGVkQXQnLFxuICAgICAgdHlwZTogRGF0YUZpbHRlclR5cGUuRGF0ZSxcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ1VwZGF0ZWRBdCcsXG4gICAgICB0eXBlOiBEYXRhRmlsdGVyVHlwZS5EYXRlLFxuICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgfSxcbiAgXTtcblxuICAvLyBwcml2YXRlIF9zZWFyY2hJdGVtOiBzdHJpbmcgPSAnJztcbiAgLy8gZ2V0IHNlYXJjaEl0ZW0oKTogc3RyaW5nIHtcbiAgLy8gICByZXR1cm4gdGhpcy5fc2VhcmNoSXRlbVxuICAvLyB9XG4gIC8vIHNldCBzZWFyY2hJdGVtKHZhbHVlOiBzdHJpbmcpIHtcbiAgLy8gICB0aGlzLl9zZWFyY2hJdGVtID0gdmFsdWU7XG4gIC8vICAgdGhpcy5zZWFyY2hUZXJtJC5uZXh0KHZhbHVlKTtcbiAgLy8gfVxuXG4gIC8vIGZvcm06IEZvcm1Hcm91cDtcbiAgY2hpbGRQZXJtaXNzaW9uUmVmOiBDaGlsZHJlblR5cGUgPSBDaGlsZHJlblR5cGUuUGVybWlzc2lvbjtcblxuICByb2xlQ29udGV4dHNTdG9yZTogQXBwbGljYXRpb25Sb2xlQ29udGV4dFtdID0gW107XG4gIHJvbGVBY3Rpb25zU3RvcmU6IEFwcGxpY2F0aW9uUm9sZUFjdGlvbltdID0gW107XG4gIHByaXZhdGUgY3VycmVudFNlYXJjaFRlcm06IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhvcml6YXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcm9sZUNvbnRyb2xTdmM6IFJvbGVDb250cm9sU2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxTZXJ2aWNlOiBVdGlsU2VydmljZSxcbiAgICBwcml2YXRlIHNlcnZlcjogSHR0cFdlYlJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGVudlN2YzogRW52aXJvbm1lbnRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMudmlzaWJsZUNvbHVtbkRlZiA9IHJvbGVDb250cm9sU3ZjLnJvbGVDb2x1bW5zO1xuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMgPSByb2xlQ29udHJvbFN2Yy5yb2xlQ29sdW1ucy5tYXAoKGNvbCkgPT4gKHtcbiAgICAgIGNoZWNrZWQ6IHRydWUsXG4gICAgICBuYW1lOiB0eXBlb2YgY29sLmhlYWRlciA9PT0gJ3N0cmluZycgPyBjb2wuaGVhZGVyIDogY29sLmlkLFxuICAgICAgdHlwZTogRGF0YUZpbHRlclR5cGUuQm9vbCxcbiAgICB9KSk7XG4gICAgLy8gdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgLy8gICBOYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgLy8gfSk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtb2NrRGF0YSA9IHRoaXMuZ2V0TW9ja1JvbGVzKCk7XG4gICAgY29uc3Qgcm9sZXMgPSBhd2FpdCB0aGlzLmdldEFsbFJvbGVzKCk7XG4gICAgaWYgKHRoaXMuaXNHbG9iYWwpIHtcbiAgICAgIGNvbnN0IGNvbnRleHRzUmVzID0gYXdhaXQgdGhpcy5nZXRTYXZlZENvbnRleHRzKCk7XG4gICAgICBpZiAoY29udGV4dHNSZXMpIHtcbiAgICAgICAgdGhpcy5yb2xlQ29udGV4dHNTdG9yZSA9IGNvbnRleHRzUmVzO1xuICAgICAgICB0aGlzLnJvbGVBY3Rpb25zU3RvcmUgPSBjb250ZXh0c1Jlcy5mbGF0TWFwKCh4KSA9PiB4LlJvbGVBY3Rpb25zKTtcbiAgICAgICAgY29uc3QgYXV0aENvbmZpZzogQXV0aG9yaXphdGlvbkNvbmZpZ1tdID0gY29udGV4dHNSZXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIE5hbWU6IHguTmFtZSxcbiAgICAgICAgICAgIEFjdGlvbnM6IHguUm9sZUFjdGlvbnMubWFwKCh5KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB5Lk5hbWU7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zb3VyY2VEYXRhID0gYXV0aENvbmZpZztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3VyY2VEYXRhID0gdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uQ29uZmlnO1xuICAgIH1cbiAgICBpZiAocm9sZXMpIHtcbiAgICAgIHRoaXMuc2V0VXBNYXBwZWREYXRhKHJvbGVzKTtcbiAgICAgIHRoaXMuc2V0VXBDYXJkRGF0YSgpO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaFRlcm0kXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5zZWFyY2hEZWJvdW5jZVRpbWUpKSAvLyBBZGp1c3QgZGVib3VuY2UgdGltZSBoZXJlIChpbiBtcylcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHNlYXJjaFRlcm0pID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2VhcmNoVGVybSA9IHNlYXJjaFRlcm07XG4gICAgICAgIHRoaXMudXBkYXRlRmlsdGVyc0FuZFNvcnRzKHRydWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRTYXZlZENvbnRleHRzKCk6IFByb21pc2U8QXBwbGljYXRpb25Sb2xlQ29udGV4dFtdIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLmlzR2xvYmFsIHx8ICF0aGlzLnNlcnZpY2VOYW1lKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB2YXIgcGF5bG9hZDogU2VhcmNoUHJvcGVydHlWYWx1ZVtdID0gW1xuICAgICAge1xuICAgICAgICBQcm9wZXJ0eU5hbWU6ICdTZXJ2aWNlTmFtZScsXG4gICAgICAgIEVudGl0eVZhbHVlOiB0aGlzLnNlcnZpY2VOYW1lLFxuICAgICAgICBPcGVyYXRvcjogU2VhcmNoT3BlcmF0b3IuQW5kLFxuICAgICAgICBTaWduOiBTZWFyY2hQcm9wZXJ0eVNpZ24uRVEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBQcm9wZXJ0eU5hbWU6ICdBUElLZXknLFxuICAgICAgICBFbnRpdHlWYWx1ZTogdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5LFxuICAgICAgICBPcGVyYXRvcjogU2VhcmNoT3BlcmF0b3IuQW5kLFxuICAgICAgICBTaWduOiBTZWFyY2hQcm9wZXJ0eVNpZ24uRVEsXG4gICAgICB9LFxuICAgIF07XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChcbiAgICAgIGBBcHBsaWNhdGlvbi9TZWFyY2hBcHBsaWNhdGlvblJvbGVDb250ZXh0cy8wLzBgLFxuICAgICAgcGF5bG9hZFxuICAgICk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmVzdWx0ID0gKHJlcyBhcyBQYWdlZFJlc3VsdDxBcHBsaWNhdGlvblJvbGVDb250ZXh0PikuUmVzdWx0O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cbiAgYXN5bmMgZ2V0QWxsUm9sZXMoKTogUHJvbWlzZTxSb2xlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAvLyAgIHZhciBwYXlsb2FkOiBTZWFyY2hQcm9wZXJ0eVZhbHVlW10gPSBbXG4gICAgLy8gICAgIHtcbiAgICAvLyAgICAgICBQcm9wZXJ0eU5hbWU6ICdBUElLZXknLFxuICAgIC8vICAgICAgIEVudGl0eVZhbHVlOiB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXksXG4gICAgLy8gICAgICAgT3BlcmF0b3I6IFNlYXJjaE9wZXJhdG9yLkFuZCxcbiAgICAvLyAgICAgICBTaWduOiBTZWFyY2hQcm9wZXJ0eVNpZ24uRVFcbiAgICAvLyAgICAgfVxuICAgIC8vIF1cbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5nZXQoYFJvbGUvR2V0Um9sZXMvMC8ke3RoaXMucGFnZVNpemV9YCk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhZ2VTdGF0ZSA9IHJlcyBhcyBQYWdlZFJlc3VsdDxSb2xlPjtcbiAgICAgIHZhciByZXN1bHQgPSAocmVzIGFzIFBhZ2VkUmVzdWx0PFJvbGU+KS5SZXN1bHQ7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRNb3JlKCkge1xuICAgIGlmICghdGhpcy5wYWdlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gICAgY29uc3QgcmVzID1cbiAgICAgIHRoaXMuY3VycmVudEZpbHRlcnMubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5jdXJyZW50U29ydHMubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5jdXJyZW50U2VhcmNoVGVybS50cmltKCkubGVuZ3RoID4gMFxuICAgICAgICA/IGF3YWl0IHRoaXMubG9hZE1vcmVGaWx0ZXJzQW5kU29ydHMoKVxuICAgICAgICA6IGF3YWl0IHRoaXMuc2VydmVyLmdldChcbiAgICAgICAgICAgIGBSb2xlL0dldFJvbGVzLyR7dGhpcy5wYWdlU3RhdGUuU2tpcH0vJHt0aGlzLnBhZ2VTaXplfWBcbiAgICAgICAgICApO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhZ2VTdGF0ZSA9IHJlcyBhcyBQYWdlZFJlc3VsdDxSb2xlPjtcbiAgICAgIHZhciByZXN1bHQgPSAocmVzIGFzIFBhZ2VkUmVzdWx0PFJvbGU+KS5SZXN1bHQ7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5zZXRVcE1hcHBlZERhdGFFeHRyYShyZXN1bHQpO1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmNvbmNhdChkYXRhKTtcbiAgICAgIHRoaXMuc2V0VXBDYXJkRGF0YUV4dHJhKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGdldEFwcGxpY2F0aW9uQ29udGV4dENvZGUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5yb2xlQ29udGV4dHNTdG9yZS5maW5kKCh4KSA9PiB4Lk5hbWUgPT0gbmFtZSk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLkNvZGUgOiAnJztcbiAgfVxuICBnZXRBcHBsaWNhdGlvbkFjdGlvbkNvZGUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5yb2xlQWN0aW9uc1N0b3JlLmZpbmQoKHgpID0+IHguTmFtZSA9PSBuYW1lKTtcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0uQ29kZSA6ICcnO1xuICB9XG5cbiAgZmluZFBhcmVudChjYXJkRGF0YTogQ2FyZERhdGFbXSwgdGFyZ2V0OiBDYXJkRGF0YSk6IENhcmREYXRhIHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGNhcmREYXRhKSB7XG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbi5pbmNsdWRlcyh0YXJnZXQpKSB7XG4gICAgICAgIHJldHVybiBpdGVtOyAvLyBJbW1lZGlhdGUgcGFyZW50IGZvdW5kXG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnQoaXRlbS5jaGlsZHJlbiwgdGFyZ2V0KTtcbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7IC8vIE5vdCBmb3VuZFxuICB9XG5cbiAgaXNDaGVja2JveERpc2FibGVkKGl0ZW06IENhcmREYXRhKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGFyZW50ID1cbiAgICAgIHRoaXMuY2FyZENvbnRleHRIaXN0b3J5RGF0YS5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5maW5kUGFyZW50KHRoaXMuY2FyZENvbnRleHRIaXN0b3J5RGF0YVswXSwgaXRlbSlcbiAgICAgICAgOiB0aGlzLmZpbmRQYXJlbnQodGhpcy5jYXJkRGF0YSwgaXRlbSk7XG4gICAgaWYgKFxuICAgICAgcGFyZW50ICYmXG4gICAgICBwYXJlbnQuZGF0YS5DaGlsZHJlblR5cGUgJiZcbiAgICAgIHBhcmVudC5kYXRhLkNoaWxkcmVuVHlwZSA9PSBDaGlsZHJlblR5cGUuQWN0aW9uICYmXG4gICAgICBwYXJlbnQuZGF0YS5TZWxlY3RlZCA9PSBmYWxzZVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNldFVwTWFwcGVkRGF0YShkYXRhOiBSb2xlW10pIHtcbiAgICB0aGlzLmRhdGEgPSBkYXRhLm1hcCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ueCxcbiAgICAgICAgaWQ6IHguSWQsXG4gICAgICAgIENoaWxkcmVuVHlwZTogQ2hpbGRyZW5UeXBlLlBlcm1pc3Npb24sXG4gICAgICAgIFJvbGVDb250ZXh0czogdGhpcy5zb3VyY2VEYXRhLm1hcCgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZCA9IHguUm9sZUNvbnRleHRzLmZpbmRJbmRleChcbiAgICAgICAgICAgICh5KSA9PiB5Lk5hbWUgPT0gY29uZmlnLk5hbWVcbiAgICAgICAgICApO1xuICAgICAgICAgIHZhciBjb250ZXh0OiBNYXBwZWRSb2xlQ29udGV4dCA9IHtcbiAgICAgICAgICAgIENoaWxkcmVuVHlwZTogQ2hpbGRyZW5UeXBlLkFjdGlvbixcbiAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0lkID4gLTEgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICBSb2xlQWN0aW9uczogY29uZmlnLkFjdGlvbnMubWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdBY3Rpb24gPVxuICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMVxuICAgICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgICAgKGMpID0+IGMuTmFtZSA9PSBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgOiAtMTtcblxuICAgICAgICAgICAgICB2YXIgYWN0OiBNYXBwZWRSb2xlQWN0aW9uID0ge1xuICAgICAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0FjdGlvbiA+IC0xID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIE5hbWU6IGFjdGlvbixcbiAgICAgICAgICAgICAgICBSb2xlOiB4LkNvZGUsXG4gICAgICAgICAgICAgICAgQ29udGV4dDogJycsXG4gICAgICAgICAgICAgICAgaWQ6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbZXhpc3RpbmdBY3Rpb25dLmlkXG4gICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgSWQ6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbZXhpc3RpbmdBY3Rpb25dLklkXG4gICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICAgICAgICBUZW5hbnRJZDogeC5UZW5hbnRJZCxcbiAgICAgICAgICAgICAgICBDb2RlOlxuICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICA/IHguUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zW2V4aXN0aW5nQWN0aW9uXVxuICAgICAgICAgICAgICAgICAgICAgICAgLkNvZGVcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICBTZXJ2aWNlTmFtZTpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tleGlzdGluZ0FjdGlvbl1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5TZXJ2aWNlTmFtZVxuICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgIEFQSUtleTpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tleGlzdGluZ0FjdGlvbl1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5BUElLZXlcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXksXG4gICAgICAgICAgICAgICAgQXBwbGljYXRpb25Sb2xlQWN0aW9uOiB0aGlzLmdldEFwcGxpY2F0aW9uQWN0aW9uQ29kZShhY3Rpb24pLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gYWN0O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBOYW1lOiBjb25maWcuTmFtZSxcbiAgICAgICAgICAgIFJvbGU6IHguQ29kZSxcbiAgICAgICAgICAgIGlkOiBleGlzdGluZ0lkID4gLTEgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5pZCA6ICcnLFxuICAgICAgICAgICAgSWQ6IGV4aXN0aW5nSWQgPiAtMSA/IHguUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLklkIDogJycsXG4gICAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICAgIFRlbmFudElkOiB4LlRlbmFudElkLFxuICAgICAgICAgICAgQ29kZTogZXhpc3RpbmdJZCA+IC0xID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uQ29kZSA6ICcnLFxuICAgICAgICAgICAgU2VydmljZU5hbWU6XG4gICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMSA/IHguUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlNlcnZpY2VOYW1lIDogJycsXG4gICAgICAgICAgICBBUElLZXk6XG4gICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMVxuICAgICAgICAgICAgICAgID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uQVBJS2V5XG4gICAgICAgICAgICAgICAgOiB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXksXG4gICAgICAgICAgICBBcHBsaWNhdGlvblJvbGVDb250ZXh0OiB0aGlzLmdldEFwcGxpY2F0aW9uQ29udGV4dENvZGUoY29uZmlnLk5hbWUpLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIHNldFVwTWFwcGVkRGF0YUV4dHJhKGRhdGE6IFJvbGVbXSk6IE1hcHBlZFJvbGVbXSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKCh4KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi54LFxuICAgICAgICBpZDogeC5JZCxcbiAgICAgICAgQ2hpbGRyZW5UeXBlOiBDaGlsZHJlblR5cGUuUGVybWlzc2lvbixcbiAgICAgICAgUm9sZUNvbnRleHRzOiB0aGlzLnNvdXJjZURhdGEubWFwKChjb25maWcpID0+IHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkID0geC5Sb2xlQ29udGV4dHMuZmluZEluZGV4KFxuICAgICAgICAgICAgKHkpID0+IHkuTmFtZSA9PSBjb25maWcuTmFtZVxuICAgICAgICAgICk7XG4gICAgICAgICAgdmFyIGNvbnRleHQ6IE1hcHBlZFJvbGVDb250ZXh0ID0ge1xuICAgICAgICAgICAgQ2hpbGRyZW5UeXBlOiBDaGlsZHJlblR5cGUuQWN0aW9uLFxuICAgICAgICAgICAgU2VsZWN0ZWQ6IGV4aXN0aW5nSWQgPiAtMSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgIFJvbGVBY3Rpb25zOiBjb25maWcuQWN0aW9ucy5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0FjdGlvbiA9XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgICA/IHguUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgICAgICAoYykgPT4gYy5OYW1lID09IGFjdGlvblxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6IC0xO1xuXG4gICAgICAgICAgICAgIHZhciBhY3Q6IE1hcHBlZFJvbGVBY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgU2VsZWN0ZWQ6IGV4aXN0aW5nQWN0aW9uID4gLTEgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgTmFtZTogYWN0aW9uLFxuICAgICAgICAgICAgICAgIFJvbGU6IHguQ29kZSxcbiAgICAgICAgICAgICAgICBDb250ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICBpZDpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tleGlzdGluZ0FjdGlvbl0uaWRcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICBJZDpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tleGlzdGluZ0FjdGlvbl0uSWRcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICAgICAgICAgIFRlbmFudElkOiB4LlRlbmFudElkLFxuICAgICAgICAgICAgICAgIENvZGU6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbZXhpc3RpbmdBY3Rpb25dXG4gICAgICAgICAgICAgICAgICAgICAgICAuQ29kZVxuICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgIFNlcnZpY2VOYW1lOlxuICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICA/IHguUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zW2V4aXN0aW5nQWN0aW9uXVxuICAgICAgICAgICAgICAgICAgICAgICAgLlNlcnZpY2VOYW1lXG4gICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgQVBJS2V5OlxuICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICA/IHguUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zW2V4aXN0aW5nQWN0aW9uXVxuICAgICAgICAgICAgICAgICAgICAgICAgLkFQSUtleVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgICAgICAgICAgICBBcHBsaWNhdGlvblJvbGVBY3Rpb246IHRoaXMuZ2V0QXBwbGljYXRpb25BY3Rpb25Db2RlKGFjdGlvbiksXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHJldHVybiBhY3Q7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIE5hbWU6IGNvbmZpZy5OYW1lLFxuICAgICAgICAgICAgUm9sZTogeC5Db2RlLFxuICAgICAgICAgICAgaWQ6IGV4aXN0aW5nSWQgPiAtMSA/IHguUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLmlkIDogJycsXG4gICAgICAgICAgICBJZDogZXhpc3RpbmdJZCA+IC0xID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uSWQgOiAnJyxcbiAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICAgICAgVGVuYW50SWQ6IHguVGVuYW50SWQsXG4gICAgICAgICAgICBDb2RlOiBleGlzdGluZ0lkID4gLTEgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Db2RlIDogJycsXG4gICAgICAgICAgICBTZXJ2aWNlTmFtZTpcbiAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uU2VydmljZU5hbWUgOiAnJyxcbiAgICAgICAgICAgIEFQSUtleTpcbiAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5BUElLZXlcbiAgICAgICAgICAgICAgICA6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUNvbnRleHQ6IHRoaXMuZ2V0QXBwbGljYXRpb25Db250ZXh0Q29kZShjb25maWcuTmFtZSksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzZXRVcENhcmREYXRhKCkge1xuICAgIGNvbnN0IGNhcmREYXRhOiBDYXJkRGF0YVtdID0gdGhpcy5kYXRhLm1hcCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICB0aXRsZTogeC5OYW1lLFxuICAgICAgICBkYXRhOiB4LFxuICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgY2hpbGRyZW46IHguUm9sZUNvbnRleHRzLm1hcCgoYykgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRGb3JtYXR0ZWROYW1lKGMuTmFtZSksXG4gICAgICAgICAgICBkYXRhOiBjLFxuICAgICAgICAgICAgYm9keTogW10sXG4gICAgICAgICAgICBjaGlsZHJlbjogYy5Sb2xlQWN0aW9ucy5tYXAoKGEpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuZ2V0Rm9ybWF0dGVkTmFtZShhLk5hbWUpLFxuICAgICAgICAgICAgICAgIGRhdGE6IGEsXG4gICAgICAgICAgICAgICAgYm9keTogW10sXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuY2FyZERhdGEgPSBjYXJkRGF0YTtcbiAgfVxuICBzZXRVcENhcmREYXRhRXh0cmEoYmFzZURhdGE6IE1hcHBlZFJvbGVbXSkge1xuICAgIGNvbnN0IGNhcmREYXRhOiBDYXJkRGF0YVtdID0gYmFzZURhdGEubWFwKCh4KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIHRpdGxlOiB4Lk5hbWUsXG4gICAgICAgIGRhdGE6IHgsXG4gICAgICAgIGJvZHk6IFtdLFxuICAgICAgICBjaGlsZHJlbjogeC5Sb2xlQ29udGV4dHMubWFwKChjKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmdldEZvcm1hdHRlZE5hbWUoYy5OYW1lKSxcbiAgICAgICAgICAgIGRhdGE6IGMsXG4gICAgICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBjLlJvbGVBY3Rpb25zLm1hcCgoYSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRGb3JtYXR0ZWROYW1lKGEuTmFtZSksXG4gICAgICAgICAgICAgICAgZGF0YTogYSxcbiAgICAgICAgICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy5jYXJkRGF0YSA9IHRoaXMuY2FyZERhdGEuY29uY2F0KGNhcmREYXRhKTtcbiAgfVxuXG4gIGdldEZvcm1hdHRlZE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBTcGxpdCB0aGUga2V5IG9uIGNhcGl0YWwgbGV0dGVycywgaGFuZGxpbmcgXCJBbmRcIiBhcyBsb3dlcmNhc2VcbiAgICBjb25zdCB3b3JkcyA9IG5hbWVcbiAgICAgIC5zcGxpdCgvKD89W0EtWl0pLylcbiAgICAgIC5tYXAoKHdvcmQpID0+ICh3b3JkID09PSAnQW5kJyA/ICdhbmQnIDogd29yZCkpO1xuICAgIC8vIEpvaW4gdGhlIHdvcmRzIHdpdGggc3BhY2VzXG4gICAgcmV0dXJuIHdvcmRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHZpZXdEZXRhaWxzRnJvbVRhYmxlKGRhdGE6IE1hcHBlZFJvbGUpIHtcbiAgICBjb25zdCBjYXJkRGF0YSA9IHRoaXMuY2FyZERhdGEuZmluZCgoeCkgPT4geC5kYXRhID09IGRhdGEpO1xuICAgIGlmIChjYXJkRGF0YSkge1xuICAgICAgdGhpcy52aWV3RGV0YWlscyhjYXJkRGF0YSk7XG4gICAgfVxuICAgIHRoaXMuY2xvc2VQb3BVcCgpO1xuICB9XG5cbiAgdmlld0RldGFpbHMoY29udGV4dDogQ2FyZERhdGEpIHtcbiAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5wdXNoKGNvbnRleHQpO1xuICAgIHRoaXMuY2FyZENvbnRleHRIaXN0b3J5RGF0YS5wdXNoKHRoaXMuY2FyZERhdGEpO1xuICAgIHRoaXMuY2FyZERhdGEgPSBjb250ZXh0LmNoaWxkcmVuO1xuICAgIHRoaXMuY2FyZERhdGFWaWV3LmNsZWFyRGF0YSgpO1xuICB9XG4gIHZpZXdEZXRhaWxzQ2hpbGQoY29udGV4dDogQ2FyZERhdGEpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50RXhwYW5kZWRDYXJkKSB7XG4gICAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5wdXNoKHRoaXMuY3VycmVudEV4cGFuZGVkQ2FyZCk7XG4gICAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5wdXNoKGNvbnRleHQpO1xuICAgICAgdGhpcy5jYXJkQ29udGV4dEhpc3RvcnlEYXRhLnB1c2godGhpcy5jYXJkRGF0YSk7XG4gICAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeURhdGEucHVzaCh0aGlzLmN1cnJlbnRFeHBhbmRlZENhcmQuY2hpbGRyZW4pO1xuICAgICAgdGhpcy5jYXJkRGF0YSA9IGNvbnRleHQuY2hpbGRyZW47XG4gICAgICB0aGlzLmNhcmREYXRhVmlldy5jbGVhckRhdGEoKTtcbiAgICB9XG4gIH1cblxuICByb2xlQ2FyZENsaWNrZWQoaXRlbTogQ2FyZERhdGEpIHtcbiAgICB0aGlzLmN1cnJlbnREYXRhID0gdGhpcy5jYXJkRGF0YVZpZXcub25JdGVtQ2xpY2soaXRlbSk7XG4gICAgLy8gaWYgKHRoaXMuY3VycmVudERhdGEpIHtcbiAgICAvLyAgIHRoaXMuZm9ybS5jb250cm9sc1snTmFtZSddLnNldFZhbHVlKHRoaXMuY3VycmVudERhdGEuZGF0YT8uTmFtZSk7XG4gICAgLy8gfVxuICB9XG5cbiAgdG9nZ2xlQ2hpbGRyZW4oaXRlbTogQ2FyZERhdGEpIHtcbiAgICB2YXIgY3VyclRvZ2dsZVN0YXRlID0gaXRlbS5pc0NoaWxkcmVuRXhwYW5kZWQ7XG4gICAgdGhpcy5jYXJkRGF0YS5mb3JFYWNoKChfKSA9PiB7XG4gICAgICBfLmlzQ2hpbGRyZW5FeHBhbmRlZCA9IGZhbHNlO1xuICAgIH0pO1xuICAgIGl0ZW0uaXNDaGlsZHJlbkV4cGFuZGVkID0gIWN1cnJUb2dnbGVTdGF0ZTtcbiAgICBpZiAoaXRlbS5pc0NoaWxkcmVuRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudEV4cGFuZGVkQ2FyZCA9IGl0ZW07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudEV4cGFuZGVkQ2FyZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ29Ub1RhYmxlVmlldygpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudERhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kYXRhVmlldy50b2dnbGVWaWV3KCk7XG4gICAgY29uc3QgaWQgPSB0aGlzLmN1cnJlbnREYXRhLmRhdGEgPyB0aGlzLmN1cnJlbnREYXRhLmRhdGEuSWQgOiAnJztcbiAgICBpZiAoaWQudHJpbSgpLmxlbmd0aCA+IDAgJiYgIXRoaXMudGFibGVWaWV3LmlzUm93RWRpdGluZyhpZCkpIHtcbiAgICAgIHRoaXMudGFibGVWaWV3LnRvZ2dsZVJvd0VkaXQoaWQpO1xuICAgIH1cbiAgfVxuICBjbG9zZURldGFpbHMoKSB7XG4gICAgdGhpcy5jYXJkRGF0YSA9XG4gICAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeURhdGFbdGhpcy5jYXJkQ29udGV4dEhpc3RvcnlEYXRhLmxlbmd0aCAtIDFdO1xuICAgIHRoaXMuY2FyZENvbnRleHRIaXN0b3J5RGF0YS5wb3AoKTtcbiAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5wb3AoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGFWaWV3LmlzVGFibGVWaWV3KSB7XG4gICAgICAgIHRoaXMuZGF0YVZpZXcudG9nZ2xlVmlldygpO1xuICAgICAgfVxuICAgIH0sIDIwMCk7XG4gIH1cblxuICBnZXRDYXJkU3ViQ2FwdGlvbihpdGVtOiBDYXJkRGF0YSkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gaXRlbS5jaGlsZHJlbi5maWx0ZXIoKHgpID0+IHguZGF0YS5TZWxlY3RlZCkubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsID0gaXRlbS5jaGlsZHJlbi5sZW5ndGg7XG4gICAgcmV0dXJuIGAke3NlbGVjdGVkfSBvZiAke3RvdGFsfSAke1xuICAgICAgdG90YWwgPiAxID8gaXRlbS5kYXRhLkNoaWxkcmVuVHlwZSArICdzJyA6IGl0ZW0uZGF0YS5DaGlsZHJlblR5cGVcbiAgICB9YDtcbiAgfVxuXG4gIGdldFVwZGF0ZWRSb2xlKHJvbGU6IE1hcHBlZFJvbGUpOiBSb2xlIHtcbiAgICBjb25zdCBuZXdSb2xlID0gcm9sZTtcbiAgICBuZXdSb2xlLlJvbGVDb250ZXh0cyA9IHJvbGUuUm9sZUNvbnRleHRzLmZpbHRlcigoeCkgPT4geC5TZWxlY3RlZCkubWFwKFxuICAgICAgKHkpID0+IHtcbiAgICAgICAgeS5Sb2xlQWN0aW9ucyA9IHkuUm9sZUFjdGlvbnMuZmlsdGVyKCh6KSA9PiB6LlNlbGVjdGVkKTtcbiAgICAgICAgcmV0dXJuIHk7XG4gICAgICB9XG4gICAgKTtcbiAgICBuZXdSb2xlLkRhdGFTdGF0ZSA9XG4gICAgICBuZXdSb2xlLkRhdGFTdGF0ZSA9PSBPYmplY3RTdGF0ZS5OZXdcbiAgICAgICAgPyBPYmplY3RTdGF0ZS5OZXdcbiAgICAgICAgOiBPYmplY3RTdGF0ZS5DaGFuZ2VkO1xuICAgIG5ld1JvbGUuSWQgPSBuZXdSb2xlLkRhdGFTdGF0ZSA9PSBPYmplY3RTdGF0ZS5OZXcgPyAnJyA6IG5ld1JvbGUuSWQ7XG4gICAgcmV0dXJuIG5ld1JvbGUgYXMgUm9sZTtcbiAgfVxuICBhc3luYyBzYXZlUm9sZSgpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50RGF0YSkge1xuICAgICAgdmFyIHJvbGU6IE1hcHBlZFJvbGUgPSB0aGlzLmN1cnJlbnREYXRhLmRhdGEgYXMgTWFwcGVkUm9sZTtcbiAgICAgIC8vIHJvbGUuTmFtZSA9IHRoaXMuZm9ybS5jb250cm9sc1snTmFtZSddLnZhbHVlO1xuICAgICAgaWYgKHRoaXMuY3VycmVudERhdGEuZGF0YS5OYW1lLnRyaW0oKS5sZW5ndGggPT0gMCkge1xuICAgICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dJbmZvKCdSb2xlIG5hbWUgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1hcHBlZFJvbGUgPSB0aGlzLmdldFVwZGF0ZWRSb2xlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocm9sZSkpKTtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChgUm9sZS9TYXZlUm9sZXNgLCBbbWFwcGVkUm9sZV0pO1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1JvbGUgc2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcyBhcyBSb2xlW107XG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHZhciByb2xlUmVzdWx0ID0gcmVzdWx0WzBdO1xuICAgICAgICAgIHZhciBtYXBwZWRSb2xlU2F2ZTogTWFwcGVkUm9sZSA9IHtcbiAgICAgICAgICAgIC4uLnJvbGVSZXN1bHQsXG4gICAgICAgICAgICBDaGlsZHJlblR5cGU6IENoaWxkcmVuVHlwZS5QZXJtaXNzaW9uLFxuICAgICAgICAgICAgUm9sZUNvbnRleHRzOiB0aGlzLnNvdXJjZURhdGEubWFwKChjb25maWcpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdJZCA9IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAoeSkgPT4geS5OYW1lID09IGNvbmZpZy5OYW1lXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHZhciBjb250ZXh0OiBNYXBwZWRSb2xlQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICBDaGlsZHJlblR5cGU6IENoaWxkcmVuVHlwZS5BY3Rpb24sXG4gICAgICAgICAgICAgICAgU2VsZWN0ZWQ6IGV4aXN0aW5nSWQgPiAtMSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBSb2xlQWN0aW9uczogY29uZmlnLkFjdGlvbnMubWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQWN0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdJZFxuICAgICAgICAgICAgICAgICAgICAgICAgXS5Sb2xlQWN0aW9ucy5maW5kSW5kZXgoKGMpID0+IGMuTmFtZSA9PSBhY3Rpb24pXG4gICAgICAgICAgICAgICAgICAgICAgOiAtMTtcblxuICAgICAgICAgICAgICAgICAgdmFyIGFjdDogTWFwcGVkUm9sZUFjdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWQ6IGV4aXN0aW5nQWN0aW9uID4gLTEgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIE5hbWU6IGFjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgUm9sZTogcm9sZVJlc3VsdC5Db2RlLFxuICAgICAgICAgICAgICAgICAgICBDb250ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgaWQ6XG4gICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgICAgICBJZDpcbiAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0uSWRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICAgICAgICAgICAgVGVuYW50SWQ6IHJvbGVSZXN1bHQuVGVuYW50SWQsXG4gICAgICAgICAgICAgICAgICAgIENvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgICAgIFNlcnZpY2VOYW1lOlxuICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXS5TZXJ2aWNlTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgQVBJS2V5OlxuICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXS5BUElLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5LFxuICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvblJvbGVBY3Rpb246XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBcHBsaWNhdGlvbkFjdGlvbkNvZGUoYWN0aW9uKSxcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICByZXR1cm4gYWN0O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIE5hbWU6IGNvbmZpZy5OYW1lLFxuICAgICAgICAgICAgICAgIFJvbGU6IHJvbGVSZXN1bHQuQ29kZSxcbiAgICAgICAgICAgICAgICBpZDpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMSA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLmlkIDogJycsXG4gICAgICAgICAgICAgICAgSWQ6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0lkID4gLTEgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5JZCA6ICcnLFxuICAgICAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgICAgICAgVGVuYW50SWQ6IHJvbGVSZXN1bHQuVGVuYW50SWQsXG4gICAgICAgICAgICAgICAgQ29kZTpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMVxuICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkNvZGVcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICBTZXJ2aWNlTmFtZTpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMVxuICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlNlcnZpY2VOYW1lXG4gICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgQVBJS2V5OlxuICAgICAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uQVBJS2V5XG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5LFxuICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUNvbnRleHQ6IHRoaXMuZ2V0QXBwbGljYXRpb25Db250ZXh0Q29kZShcbiAgICAgICAgICAgICAgICAgIGNvbmZpZy5OYW1lXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmRhdGEuZmluZEluZGV4KFxuICAgICAgICAgICAgKHgpID0+IHggPT0gdGhpcy5jdXJyZW50RGF0YT8uZGF0YVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5Db2RlID0gbWFwcGVkUm9sZVNhdmUuQ29kZTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLklkID0gbWFwcGVkUm9sZVNhdmUuSWQ7XG4gICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5EYXRhU3RhdGUgPSBtYXBwZWRSb2xlU2F2ZS5EYXRhU3RhdGU7XG4gICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5UZW5hbnRJZCA9IG1hcHBlZFJvbGVTYXZlLlRlbmFudElkO1xuICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uU2VydmljZU5hbWUgPSBtYXBwZWRSb2xlU2F2ZS5TZXJ2aWNlTmFtZTtcbiAgICAgICAgICAgIG1hcHBlZFJvbGVTYXZlLlJvbGVDb250ZXh0cy5mb3JFYWNoKCh4LCBpKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlID0gbWFwcGVkUm9sZVNhdmUuQ29kZTtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLkNvZGUgPSB4LkNvZGU7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5TZXJ2aWNlTmFtZSA9IHguU2VydmljZU5hbWU7XG4gICAgICAgICAgICAgIHguUm9sZUFjdGlvbnMuZm9yRWFjaCgoeSwgaikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlQWN0aW9uc1tqXS5Sb2xlID1cbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvbGVTYXZlLkNvZGU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLlJvbGVBY3Rpb25zW2pdLkNvZGUgPVxuICAgICAgICAgICAgICAgICAgeS5Db2RlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgIGpcbiAgICAgICAgICAgICAgICBdLlNlcnZpY2VOYW1lID0geS5TZXJ2aWNlTmFtZTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5tYXAoKHgpID0+IHgpO1xuICAgICAgICAgICAgLy8gdGhpcy5jdXJyZW50RGF0YSA9IHtcbiAgICAgICAgICAgIC8vICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICAvLyAgIHRpdGxlOiBtYXBwZWRSb2xlU2F2ZS5OYW1lLFxuICAgICAgICAgICAgLy8gICBkYXRhOiBtYXBwZWRSb2xlU2F2ZSxcbiAgICAgICAgICAgIC8vICAgaXNDaGlsZHJlbkV4cGFuZGVkOiB0aGlzLmN1cnJlbnREYXRhLmlzQ2hpbGRyZW5FeHBhbmRlZCxcbiAgICAgICAgICAgIC8vICAgYm9keTogW10sXG4gICAgICAgICAgICAvLyAgIGNoaWxkcmVuOiBtYXBwZWRSb2xlU2F2ZS5Sb2xlQ29udGV4dHMubWFwKChjKSA9PiB7XG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIC8vICAgICAgIHRpdGxlOiB0aGlzLmdldEZvcm1hdHRlZE5hbWUoYy5OYW1lKSxcbiAgICAgICAgICAgIC8vICAgICAgIGRhdGE6IGMsXG4gICAgICAgICAgICAvLyAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICAgIC8vICAgICAgIGNoaWxkcmVuOiBjLlJvbGVBY3Rpb25zLm1hcCgoYSkgPT4ge1xuICAgICAgICAgICAgLy8gICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLy8gICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIC8vICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRGb3JtYXR0ZWROYW1lKGEuTmFtZSksXG4gICAgICAgICAgICAvLyAgICAgICAgICAgZGF0YTogYSxcbiAgICAgICAgICAgIC8vICAgICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICAgIC8vICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAvLyAgICAgICAgIH07XG4gICAgICAgICAgICAvLyAgICAgICB9KSxcbiAgICAgICAgICAgIC8vICAgICB9O1xuICAgICAgICAgICAgLy8gICB9KSxcbiAgICAgICAgICAgIC8vIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGFzeW5jIHRhYmxlU2F2ZVJvbGUocm9sZTogTWFwcGVkUm9sZSwgY2FsbEJhY2s6ICgpID0+IGFueSkge1xuICAgIGlmIChyb2xlLk5hbWUudHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dJbmZvKCdSb2xlIG5hbWUgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1hcHBlZFJvbGUgPSB0aGlzLmdldFVwZGF0ZWRSb2xlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocm9sZSkpKTtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KGBSb2xlL1NhdmVSb2xlc2AsIFttYXBwZWRSb2xlXSk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1JvbGUgc2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXMgYXMgUm9sZVtdO1xuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciByb2xlUmVzdWx0ID0gcmVzdWx0WzBdO1xuICAgICAgICB2YXIgbWFwcGVkUm9sZVNhdmU6IE1hcHBlZFJvbGUgPSB7XG4gICAgICAgICAgLi4ucm9sZVJlc3VsdCxcbiAgICAgICAgICBDaGlsZHJlblR5cGU6IENoaWxkcmVuVHlwZS5QZXJtaXNzaW9uLFxuICAgICAgICAgIFJvbGVDb250ZXh0czogdGhpcy5zb3VyY2VEYXRhLm1hcCgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0lkID0gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAoeSkgPT4geS5OYW1lID09IGNvbmZpZy5OYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFyIGNvbnRleHQ6IE1hcHBlZFJvbGVDb250ZXh0ID0ge1xuICAgICAgICAgICAgICBDaGlsZHJlblR5cGU6IENoaWxkcmVuVHlwZS5BY3Rpb24sXG4gICAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0lkID4gLTEgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgIFJvbGVBY3Rpb25zOiBjb25maWcuQWN0aW9ucy5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQWN0aW9uID1cbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMVxuICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjKSA9PiBjLk5hbWUgPT0gYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IC0xO1xuXG4gICAgICAgICAgICAgICAgdmFyIGFjdDogTWFwcGVkUm9sZUFjdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0FjdGlvbiA+IC0xID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgTmFtZTogYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgUm9sZTogcm9sZVJlc3VsdC5Db2RlLFxuICAgICAgICAgICAgICAgICAgQ29udGV4dDogJycsXG4gICAgICAgICAgICAgICAgICBpZDpcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBdLmlkXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgIElkOlxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIF0uSWRcbiAgICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgICAgICAgICBUZW5hbnRJZDogcm9sZVJlc3VsdC5UZW5hbnRJZCxcbiAgICAgICAgICAgICAgICAgIENvZGU6XG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgXS5Db2RlXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgIFNlcnZpY2VOYW1lOlxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIF0uU2VydmljZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgICAgQVBJS2V5OlxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIF0uQVBJS2V5XG4gICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXksXG4gICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvblJvbGVBY3Rpb246IHRoaXMuZ2V0QXBwbGljYXRpb25BY3Rpb25Db2RlKGFjdGlvbiksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWN0O1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgTmFtZTogY29uZmlnLk5hbWUsXG4gICAgICAgICAgICAgIFJvbGU6IHJvbGVSZXN1bHQuQ29kZSxcbiAgICAgICAgICAgICAgaWQ6IGV4aXN0aW5nSWQgPiAtMSA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLmlkIDogJycsXG4gICAgICAgICAgICAgIElkOiBleGlzdGluZ0lkID4gLTEgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5JZCA6ICcnLFxuICAgICAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgICAgIFRlbmFudElkOiByb2xlUmVzdWx0LlRlbmFudElkLFxuICAgICAgICAgICAgICBDb2RlOlxuICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMSA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkNvZGUgOiAnJyxcbiAgICAgICAgICAgICAgU2VydmljZU5hbWU6XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlNlcnZpY2VOYW1lXG4gICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICBBUElLZXk6XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkFQSUtleVxuICAgICAgICAgICAgICAgICAgOiB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXksXG4gICAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUNvbnRleHQ6IHRoaXMuZ2V0QXBwbGljYXRpb25Db250ZXh0Q29kZShcbiAgICAgICAgICAgICAgICBjb25maWcuTmFtZVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5kYXRhLmZpbmRJbmRleChcbiAgICAgICAgICAoeCkgPT4geCA9PSB0aGlzLmN1cnJlbnREYXRhPy5kYXRhXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpdGVtSW5kZXggPiAtMSkge1xuICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLkNvZGUgPSBtYXBwZWRSb2xlU2F2ZS5Db2RlO1xuICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLklkID0gbWFwcGVkUm9sZVNhdmUuSWQ7XG4gICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uRGF0YVN0YXRlID0gbWFwcGVkUm9sZVNhdmUuRGF0YVN0YXRlO1xuICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlRlbmFudElkID0gbWFwcGVkUm9sZVNhdmUuVGVuYW50SWQ7XG4gICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uU2VydmljZU5hbWUgPSBtYXBwZWRSb2xlU2F2ZS5TZXJ2aWNlTmFtZTtcbiAgICAgICAgICBtYXBwZWRSb2xlU2F2ZS5Sb2xlQ29udGV4dHMuZm9yRWFjaCgoeCwgaSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLlJvbGUgPSBtYXBwZWRSb2xlU2F2ZS5Db2RlO1xuICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLkNvZGUgPSB4LkNvZGU7XG4gICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5Sb2xlQ29udGV4dHNbaV0uU2VydmljZU5hbWUgPSB4LlNlcnZpY2VOYW1lO1xuICAgICAgICAgICAgeC5Sb2xlQWN0aW9ucy5mb3JFYWNoKCh5LCBqKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlQWN0aW9uc1tqXS5Sb2xlID1cbiAgICAgICAgICAgICAgICBtYXBwZWRSb2xlU2F2ZS5Db2RlO1xuICAgICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5Sb2xlQ29udGV4dHNbaV0uUm9sZUFjdGlvbnNbal0uQ29kZSA9IHkuQ29kZTtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLlJvbGVBY3Rpb25zW2pdLlNlcnZpY2VOYW1lID1cbiAgICAgICAgICAgICAgICB5LlNlcnZpY2VOYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLm1hcCgoeCkgPT4geCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsbEJhY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlUm9sZUR5bmFtaWMoaXRlbTogQ2FyZERhdGEpIHtcbiAgICBpZiAodGhpcy5pc0NoZWNrYm94RGlzYWJsZWQoaXRlbSkpIHtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd0luZm8oJ1BhcmVudCBVSSBub3Qgc2VsZWN0ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcm9sZTogQ2FyZERhdGEgfCBudWxsID1cbiAgICAgIHRoaXMuY2FyZENvbnRleHRIaXN0b3J5Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeVswXVxuICAgICAgICA6IHRoaXMuY3VycmVudEV4cGFuZGVkQ2FyZFxuICAgICAgICA/IHRoaXMuY3VycmVudEV4cGFuZGVkQ2FyZFxuICAgICAgICA6IG51bGw7XG4gICAgdmFyIGNhcmREYXRhUmVmOiBDYXJkRGF0YVtdIHwgbnVsbCA9XG4gICAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeURhdGEubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuY2FyZENvbnRleHRIaXN0b3J5RGF0YVswXVxuICAgICAgICA6IHRoaXMuY3VycmVudEV4cGFuZGVkQ2FyZFxuICAgICAgICA/IHRoaXMuY2FyZERhdGFcbiAgICAgICAgOiBudWxsO1xuICAgIC8vIGNvbnN0IGlzRXhwYW5kZWRDYXJkOiBib29sZWFuID1cbiAgICAvLyAgIHRoaXMuY2FyZENvbnRleHRIaXN0b3J5Lmxlbmd0aCA+IDBcbiAgICAvLyAgICAgPyBmYWxzZVxuICAgIC8vICAgICA6IHRoaXMuY3VycmVudEV4cGFuZGVkQ2FyZFxuICAgIC8vICAgICA/IHRydWVcbiAgICAvLyAgICAgOiBmYWxzZTtcbiAgICBpZiAoIXJvbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJvbGUuZGF0YS5OYW1lLnRyaW0oKS5sZW5ndGggPT0gMCkge1xuICAgICAgaXRlbS5kYXRhLlNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dJbmZvKCdSb2xlIG5hbWUgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGl0ZW0uZGF0YS5TZWxlY3RlZCA9ICFpdGVtLmRhdGEuU2VsZWN0ZWQ7XG4gICAgY29uc3QgbWFwcGVkUm9sZSA9IHRoaXMuZ2V0VXBkYXRlZFJvbGUoXG4gICAgICBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJvbGUuZGF0YSkpXG4gICAgKTtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KGBSb2xlL1NhdmVSb2xlc2AsIFttYXBwZWRSb2xlXSk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICBpdGVtLmRhdGEuU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93U3VjY2VzcygnUm9sZSBzYXZlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcyBhcyBSb2xlW107XG4gICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIHJvbGVSZXN1bHQgPSByZXN1bHRbMF07XG4gICAgICAgIHZhciBtYXBwZWRSb2xlU2F2ZTogTWFwcGVkUm9sZSA9IHtcbiAgICAgICAgICAuLi5yb2xlUmVzdWx0LFxuICAgICAgICAgIENoaWxkcmVuVHlwZTogQ2hpbGRyZW5UeXBlLlBlcm1pc3Npb24sXG4gICAgICAgICAgUm9sZUNvbnRleHRzOiB0aGlzLnNvdXJjZURhdGEubWFwKChjb25maWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWQgPSByb2xlUmVzdWx0LlJvbGVDb250ZXh0cy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICh5KSA9PiB5Lk5hbWUgPT0gY29uZmlnLk5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB2YXIgY29udGV4dDogTWFwcGVkUm9sZUNvbnRleHQgPSB7XG4gICAgICAgICAgICAgIENoaWxkcmVuVHlwZTogQ2hpbGRyZW5UeXBlLkFjdGlvbixcbiAgICAgICAgICAgICAgU2VsZWN0ZWQ6IGV4aXN0aW5nSWQgPiAtMSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgUm9sZUFjdGlvbnM6IGNvbmZpZy5BY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdBY3Rpb24gPVxuICAgICAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgICAgICAgICAgKGMpID0+IGMuTmFtZSA9PSBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgICAgICAgICAgdmFyIGFjdDogTWFwcGVkUm9sZUFjdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0FjdGlvbiA+IC0xID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgTmFtZTogYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgUm9sZTogcm9sZVJlc3VsdC5Db2RlLFxuICAgICAgICAgICAgICAgICAgQ29udGV4dDogJycsXG4gICAgICAgICAgICAgICAgICBpZDpcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBdLmlkXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgIElkOlxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIF0uSWRcbiAgICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgICAgICAgICBUZW5hbnRJZDogcm9sZVJlc3VsdC5UZW5hbnRJZCxcbiAgICAgICAgICAgICAgICAgIENvZGU6XG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgXS5Db2RlXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgIFNlcnZpY2VOYW1lOlxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIF0uU2VydmljZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgICAgQVBJS2V5OlxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIF0uQVBJS2V5XG4gICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXksXG4gICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvblJvbGVBY3Rpb246IHRoaXMuZ2V0QXBwbGljYXRpb25BY3Rpb25Db2RlKGFjdGlvbiksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWN0O1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgTmFtZTogY29uZmlnLk5hbWUsXG4gICAgICAgICAgICAgIFJvbGU6IHJvbGVSZXN1bHQuQ29kZSxcbiAgICAgICAgICAgICAgaWQ6IGV4aXN0aW5nSWQgPiAtMSA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLmlkIDogJycsXG4gICAgICAgICAgICAgIElkOiBleGlzdGluZ0lkID4gLTEgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5JZCA6ICcnLFxuICAgICAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgICAgIFRlbmFudElkOiByb2xlUmVzdWx0LlRlbmFudElkLFxuICAgICAgICAgICAgICBDb2RlOlxuICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMSA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkNvZGUgOiAnJyxcbiAgICAgICAgICAgICAgU2VydmljZU5hbWU6XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlNlcnZpY2VOYW1lXG4gICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICBBUElLZXk6XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkFQSUtleVxuICAgICAgICAgICAgICAgICAgOiB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXksXG4gICAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUNvbnRleHQ6IHRoaXMuZ2V0QXBwbGljYXRpb25Db250ZXh0Q29kZShcbiAgICAgICAgICAgICAgICBjb25maWcuTmFtZVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSBjYXJkRGF0YVJlZlxuICAgICAgICAgID8gY2FyZERhdGFSZWYuZmluZEluZGV4KCh4KSA9PiB4LmRhdGEgPT0gcm9sZT8uZGF0YSlcbiAgICAgICAgICA6IC0xO1xuICAgICAgICBpZiAoaXRlbUluZGV4ID4gLTEpIHtcbiAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5Db2RlID0gbWFwcGVkUm9sZVNhdmUuQ29kZTtcbiAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5JZCA9IG1hcHBlZFJvbGVTYXZlLklkO1xuICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLkRhdGFTdGF0ZSA9IG1hcHBlZFJvbGVTYXZlLkRhdGFTdGF0ZTtcbiAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5UZW5hbnRJZCA9IG1hcHBlZFJvbGVTYXZlLlRlbmFudElkO1xuICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlNlcnZpY2VOYW1lID0gbWFwcGVkUm9sZVNhdmUuU2VydmljZU5hbWU7XG4gICAgICAgICAgbWFwcGVkUm9sZVNhdmUuUm9sZUNvbnRleHRzLmZvckVhY2goKHgsIGkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlID0gbWFwcGVkUm9sZVNhdmUuQ29kZTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Db2RlID0geC5Db2RlO1xuICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLlNlcnZpY2VOYW1lID0geC5TZXJ2aWNlTmFtZTtcbiAgICAgICAgICAgIHguUm9sZUFjdGlvbnMuZm9yRWFjaCgoeSwgaikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5Sb2xlQ29udGV4dHNbaV0uUm9sZUFjdGlvbnNbal0uUm9sZSA9XG4gICAgICAgICAgICAgICAgbWFwcGVkUm9sZVNhdmUuQ29kZTtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLlJvbGVBY3Rpb25zW2pdLkNvZGUgPSB5LkNvZGU7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlQWN0aW9uc1tqXS5TZXJ2aWNlTmFtZSA9XG4gICAgICAgICAgICAgICAgeS5TZXJ2aWNlTmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0cyA9IG1hcHBlZFJvbGVTYXZlLlJvbGVDb250ZXh0cztcblxuICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5tYXAoKHgpID0+IHgpO1xuICAgICAgICAgIC8vIGlmIChjYXJkRGF0YVJlZikge1xuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coe1xuICAgICAgICAgIC8vICAgICBYRGF0YUlzSGVyZTogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjYXJkRGF0YVJlZikpLFxuICAgICAgICAgIC8vICAgfSk7XG4gICAgICAgICAgLy8gICBjYXJkRGF0YVJlZltpdGVtSW5kZXhdID0ge1xuICAgICAgICAgIC8vICAgICBzZWxlY3RlZDogY2FyZERhdGFSZWZbaXRlbUluZGV4XS5zZWxlY3RlZCxcbiAgICAgICAgICAvLyAgICAgaXNDaGlsZHJlbkV4cGFuZGVkOiBjYXJkRGF0YVJlZltpdGVtSW5kZXhdLmlzQ2hpbGRyZW5FeHBhbmRlZCxcbiAgICAgICAgICAvLyAgICAgdGl0bGU6IG1hcHBlZFJvbGVTYXZlLk5hbWUsXG4gICAgICAgICAgLy8gICAgIGRhdGE6IG1hcHBlZFJvbGVTYXZlLFxuICAgICAgICAgIC8vICAgICBib2R5OiBbXSxcbiAgICAgICAgICAvLyAgICAgY2hpbGRyZW46IG1hcHBlZFJvbGVTYXZlLlJvbGVDb250ZXh0cy5tYXAoKGMpID0+IHtcbiAgICAgICAgICAvLyAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC8vICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgIC8vICAgICAgICAgdGl0bGU6IHRoaXMuZ2V0Rm9ybWF0dGVkTmFtZShjLk5hbWUpLFxuICAgICAgICAgIC8vICAgICAgICAgZGF0YTogYyxcbiAgICAgICAgICAvLyAgICAgICAgIGJvZHk6IFtdLFxuICAgICAgICAgIC8vICAgICAgICAgY2hpbGRyZW46IGMuUm9sZUFjdGlvbnMubWFwKChhKSA9PiB7XG4gICAgICAgICAgLy8gICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLy8gICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgIC8vICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmdldEZvcm1hdHRlZE5hbWUoYS5OYW1lKSxcbiAgICAgICAgICAvLyAgICAgICAgICAgICBkYXRhOiBhLFxuICAgICAgICAgIC8vICAgICAgICAgICAgIGJvZHk6IFtdLFxuICAgICAgICAgIC8vICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAvLyAgICAgICAgICAgfTtcbiAgICAgICAgICAvLyAgICAgICAgIH0pLFxuICAgICAgICAgIC8vICAgICAgIH07XG4gICAgICAgICAgLy8gICAgIH0pLFxuICAgICAgICAgIC8vICAgfTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzYXZlRGF0YUFsbCgpIHtcbiAgICBjb25zdCByb2xlczogUm9sZVtdID0gdGhpcy5kYXRhLm1hcCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ueCxcbiAgICAgICAgUm9sZUNvbnRleHRzOiB4LlJvbGVDb250ZXh0cy5maWx0ZXIoKHkpID0+IHkuU2VsZWN0ZWQpLm1hcCgoeikgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi56LFxuICAgICAgICAgICAgUm9sZUFjdGlvbnM6IHouUm9sZUFjdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAoYSkgPT4gYS5TZWxlY3RlZFxuICAgICAgICAgICAgKSBhcyBSb2xlQWN0aW9uW10sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSkgYXMgUm9sZUNvbnRleHRbXSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVUYWJsZSgpIHtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEubWFwKCh4KSA9PiB4KTtcbiAgfVxuXG4gIG9uVmlld0NoYW5nZShpc0dyaWRWaWV3OiBib29sZWFuKTogdm9pZCB7fVxuICBvblN0YXRlQ2hhbmdlKGV2ZW50OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ2NyZWF0ZSc6XG4gICAgICAgIHZhciBuZXdNYXBwZWRSb2xlOiBNYXBwZWRSb2xlID0ge1xuICAgICAgICAgIFJvbGVDb250ZXh0czogdGhpcy5zb3VyY2VEYXRhLm1hcCgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgICB2YXIgY29udGV4dDogTWFwcGVkUm9sZUNvbnRleHQgPSB7XG4gICAgICAgICAgICAgIENoaWxkcmVuVHlwZTogQ2hpbGRyZW5UeXBlLkFjdGlvbixcbiAgICAgICAgICAgICAgU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBSb2xlQWN0aW9uczogY29uZmlnLkFjdGlvbnMubWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgYWN0OiBNYXBwZWRSb2xlQWN0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgU2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgTmFtZTogYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgUm9sZTogJycsXG4gICAgICAgICAgICAgICAgICBDb250ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgICAgICAgIElkOiAnJyxcbiAgICAgICAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICAgICAgICAgICAgVGVuYW50SWQ6ICcnLFxuICAgICAgICAgICAgICAgICAgQ29kZTogJycsXG4gICAgICAgICAgICAgICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICAgICAgICAgICAgICBBUElLZXk6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUFjdGlvbjogdGhpcy5nZXRBcHBsaWNhdGlvbkFjdGlvbkNvZGUoYWN0aW9uKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3Q7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBOYW1lOiBjb25maWcuTmFtZSxcbiAgICAgICAgICAgICAgUm9sZTogJycsXG4gICAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgICAgSWQ6ICcnLFxuICAgICAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgICAgIFRlbmFudElkOiAnJyxcbiAgICAgICAgICAgICAgQ29kZTogJycsXG4gICAgICAgICAgICAgIFNlcnZpY2VOYW1lOiAnJyxcbiAgICAgICAgICAgICAgQVBJS2V5OiB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXksXG4gICAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUNvbnRleHQ6IHRoaXMuZ2V0QXBwbGljYXRpb25Db250ZXh0Q29kZShcbiAgICAgICAgICAgICAgICBjb25maWcuTmFtZVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgQ2hpbGRyZW5UeXBlOiBDaGlsZHJlblR5cGUuUGVybWlzc2lvbixcbiAgICAgICAgICBOYW1lOiAnJyxcbiAgICAgICAgICBpZDogKHRoaXMuY2FyZERhdGEubGVuZ3RoICsgMSkudG9TdHJpbmcoKSxcbiAgICAgICAgICBJZDogKHRoaXMuY2FyZERhdGEubGVuZ3RoICsgMSkudG9TdHJpbmcoKSxcbiAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICAgIFRlbmFudElkOiAnJyxcbiAgICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICAgICAgQXBwbGljYXRpb246IHRoaXMuYXBwbGljYXRpb24gPyB0aGlzLmFwcGxpY2F0aW9uIDogdW5kZWZpbmVkLFxuICAgICAgICAgIEFQSUtleTogdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjYXJkRGF0YTogQ2FyZERhdGEgPSB7XG4gICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgIHRpdGxlOiBuZXdNYXBwZWRSb2xlLk5hbWUsXG4gICAgICAgICAgZGF0YTogbmV3TWFwcGVkUm9sZSxcbiAgICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICBjaGlsZHJlbjogbmV3TWFwcGVkUm9sZS5Sb2xlQ29udGV4dHMubWFwKChjKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmdldEZvcm1hdHRlZE5hbWUoYy5OYW1lKSxcbiAgICAgICAgICAgICAgZGF0YTogYyxcbiAgICAgICAgICAgICAgYm9keTogW10sXG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBjLlJvbGVBY3Rpb25zLm1hcCgoYSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRGb3JtYXR0ZWROYW1lKGEuTmFtZSksXG4gICAgICAgICAgICAgICAgICBkYXRhOiBhLFxuICAgICAgICAgICAgICAgICAgYm9keTogW10sXG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuY29uY2F0KFtuZXdNYXBwZWRSb2xlXSk7XG4gICAgICAgIHRoaXMuY2FyZERhdGEucHVzaChjYXJkRGF0YSk7XG4gICAgICAgIHRoaXMucm9sZUNhcmRDbGlja2VkKGNhcmREYXRhKTtcbiAgICAgICAgdGhpcy5kYXRhVmlldy5pc1RhYmxlVmlldyA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNob3dUYWJsZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0ZWRSb3dzOiBSb2xlW10pIHt9XG4gIHJldHJ5TWVzc2FnZSgpIHt9XG4gIG9uQ29sdW1uc1VwZGF0ZWQodXBkYXRlZENvbHVtbnM6IElEYXRhRmlsdGVyW10pIHtcbiAgICBjb25zdCB1cGRhdGVkQ29sdW1uRGVmOiBDb2x1bW5EZWZpbml0aW9uPE1hcHBlZFJvbGU+W10gPSBbXTtcbiAgICB1cGRhdGVkQ29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoaW5nQ29sID0gdGhpcy5yb2xlQ29udHJvbFN2Yy5yb2xlQ29sdW1ucy5maW5kKFxuICAgICAgICAoY29sdW1uKSA9PiBjb2x1bW4uaGVhZGVyID09PSBjb2wubmFtZSB8fCBjb2x1bW4uaWQgPT09IGNvbC5uYW1lXG4gICAgICApO1xuICAgICAgaWYgKG1hdGNoaW5nQ29sKSB7XG4gICAgICAgIHVwZGF0ZWRDb2x1bW5EZWYucHVzaChtYXRjaGluZ0NvbCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnZpc2libGVDb2x1bW5EZWYgPSBbLi4udXBkYXRlZENvbHVtbkRlZl07XG4gIH1cblxuICBhc3luYyB1cGRhdGVGaWx0ZXJzQW5kU29ydHMoaXNTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICghaXNTZWFyY2gpIHtcbiAgICAgIHRoaXMuZGF0YVZpZXcub25DbGVhclNlYXJjaCgpO1xuICAgICAgdGhpcy5jdXJyZW50U2VhcmNoVGVybSA9ICcnO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgY29uc3QgY2xpY2tFdmVudCA9IG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIHtcbiAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgdmlldzogd2luZG93LFxuICAgICAgfSk7XG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGNsaWNrRXZlbnQpO1xuICAgIH1cbiAgICB2YXIgcGF5bG9hZDogU2VhcmNoUHJvcGVydHlWYWx1ZVtdID0gdGhpcy5jdXJyZW50RmlsdGVycy5tYXAoKHgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFByb3BlcnR5TmFtZTogeC5uYW1lLFxuICAgICAgICBFbnRpdHlWYWx1ZTogeC52YWx1ZSxcbiAgICAgICAgT3BlcmF0b3I6IFNlYXJjaE9wZXJhdG9yLkFuZCxcbiAgICAgICAgU2lnbjpcbiAgICAgICAgICB4LmNvbmRpdGlvbiAmJiBPYmplY3Qua2V5cyhEYXRlRmlsdGVyVHlwZXMpLmluY2x1ZGVzKHguY29uZGl0aW9uKVxuICAgICAgICAgICAgPyAoRGF0ZUZpbHRlclR5cGVzW1xuICAgICAgICAgICAgICAgIHguY29uZGl0aW9uIGFzIGtleW9mIHR5cGVvZiBEYXRlRmlsdGVyVHlwZXNcbiAgICAgICAgICAgICAgXSBhcyB1bmtub3duIGFzIFNlYXJjaFByb3BlcnR5U2lnbilcbiAgICAgICAgICAgIDogU2VhcmNoUHJvcGVydHlTaWduLkVRLFxuICAgICAgICBUeXBlOiBTZWFyY2hQcm9wZXJ0eVZhbHVlVHlwZS5EYXRlLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBwYXlsb2FkLnB1c2goe1xuICAgICAgUHJvcGVydHlOYW1lOiAnQVBJS2V5JyxcbiAgICAgIEVudGl0eVZhbHVlOiB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXksXG4gICAgICBPcGVyYXRvcjogU2VhcmNoT3BlcmF0b3IuQW5kLFxuICAgICAgU2lnbjogU2VhcmNoUHJvcGVydHlTaWduLkVRLFxuICAgIH0pO1xuICAgIGZvciAobGV0IHNvcnQgb2YgdGhpcy5jdXJyZW50U29ydHMpIHtcbiAgICAgIHBheWxvYWQucHVzaCh7XG4gICAgICAgIFByb3BlcnR5TmFtZTogc29ydC5uYW1lLFxuICAgICAgICBFbnRpdHlWYWx1ZTogJycsXG4gICAgICAgIE9wZXJhdG9yOiBTZWFyY2hPcGVyYXRvci5BbmQsXG4gICAgICAgIFNpZ246IFNlYXJjaFByb3BlcnR5U2lnbi5FUSxcbiAgICAgICAgU29ydDpcbiAgICAgICAgICBzb3J0LnZhbHVlLnRvTG93ZXJDYXNlKCkgPT0gU29ydERpcmVjdGlvbi5Bc2MudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgPyBTb3J0RGlyZWN0aW9uLkFzY1xuICAgICAgICAgICAgOiBzb3J0LnZhbHVlLnRvTG93ZXJDYXNlKCkgPT0gU29ydERpcmVjdGlvbi5EZXNjLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgID8gU29ydERpcmVjdGlvbi5EZXNjXG4gICAgICAgICAgICA6IFNvcnREaXJlY3Rpb24uTm9uZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBzZWFyY2hUZXJtRXhpc3RzID0gdGhpcy5jdXJyZW50U2VhcmNoVGVybS50cmltKCkubGVuZ3RoID4gMDtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICBjb25zdCByZXMgPSBzZWFyY2hUZXJtRXhpc3RzXG4gICAgICA/IGF3YWl0IHRoaXMuc2VydmVyLmdldChcbiAgICAgICAgICBgUm9sZS9HZXRSb2xlc1dpdGhQYXJhbS8ke3RoaXMuY3VycmVudFNlYXJjaFRlcm0udHJpbSgpfS8wLyR7XG4gICAgICAgICAgICB0aGlzLnBhZ2VTaXplXG4gICAgICAgICAgfWBcbiAgICAgICAgKVxuICAgICAgOiBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KGBSb2xlL1NlYXJjaFJvbGVzLzAvJHt0aGlzLnBhZ2VTaXplfWAsIHBheWxvYWQpO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVycyA9IFtdO1xuICAgICAgdGhpcy5jdXJyZW50U29ydHMgPSBbXTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FyZERhdGFWaWV3LmNsZWFyRGF0YSgpO1xuICAgICAgdGhpcy5jdXJyZW50RGF0YSA9IG51bGw7XG4gICAgICB0aGlzLnBhZ2VTdGF0ZSA9IHJlcyBhcyBQYWdlZFJlc3VsdDxSb2xlPjtcbiAgICAgIHZhciByZXN1bHQgPSAocmVzIGFzIFBhZ2VkUmVzdWx0PFJvbGU+KS5SZXN1bHQ7XG4gICAgICB0aGlzLnNldFVwTWFwcGVkRGF0YShyZXN1bHQpO1xuICAgICAgdGhpcy5zZXRVcENhcmREYXRhKCk7XG4gICAgfVxuICB9XG4gIGFzeW5jIGxvYWRNb3JlRmlsdGVyc0FuZFNvcnRzKCk6IFByb21pc2U8UGFnZWRSZXN1bHQ8Um9sZT4gfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMucGFnZVN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBwYXlsb2FkOiBTZWFyY2hQcm9wZXJ0eVZhbHVlW10gPSB0aGlzLmN1cnJlbnRGaWx0ZXJzLm1hcCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgUHJvcGVydHlOYW1lOiB4Lm5hbWUsXG4gICAgICAgIEVudGl0eVZhbHVlOiB4LnZhbHVlLFxuICAgICAgICBPcGVyYXRvcjogU2VhcmNoT3BlcmF0b3IuQW5kLFxuICAgICAgICBTaWduOlxuICAgICAgICAgIHguY29uZGl0aW9uICYmIE9iamVjdC5rZXlzKERhdGVGaWx0ZXJUeXBlcykuaW5jbHVkZXMoeC5jb25kaXRpb24pXG4gICAgICAgICAgICA/IChEYXRlRmlsdGVyVHlwZXNbXG4gICAgICAgICAgICAgICAgeC5jb25kaXRpb24gYXMga2V5b2YgdHlwZW9mIERhdGVGaWx0ZXJUeXBlc1xuICAgICAgICAgICAgICBdIGFzIHVua25vd24gYXMgU2VhcmNoUHJvcGVydHlTaWduKVxuICAgICAgICAgICAgOiBTZWFyY2hQcm9wZXJ0eVNpZ24uRVEsXG4gICAgICAgIFR5cGU6IFNlYXJjaFByb3BlcnR5VmFsdWVUeXBlLkRhdGUsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHBheWxvYWQucHVzaCh7XG4gICAgICBQcm9wZXJ0eU5hbWU6ICdBUElLZXknLFxuICAgICAgRW50aXR5VmFsdWU6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgIE9wZXJhdG9yOiBTZWFyY2hPcGVyYXRvci5BbmQsXG4gICAgICBTaWduOiBTZWFyY2hQcm9wZXJ0eVNpZ24uRVEsXG4gICAgfSk7XG4gICAgZm9yIChsZXQgc29ydCBvZiB0aGlzLmN1cnJlbnRTb3J0cykge1xuICAgICAgcGF5bG9hZC5wdXNoKHtcbiAgICAgICAgUHJvcGVydHlOYW1lOiBzb3J0Lm5hbWUsXG4gICAgICAgIEVudGl0eVZhbHVlOiAnJyxcbiAgICAgICAgT3BlcmF0b3I6IFNlYXJjaE9wZXJhdG9yLkFuZCxcbiAgICAgICAgU2lnbjogU2VhcmNoUHJvcGVydHlTaWduLkVRLFxuICAgICAgICBTb3J0OlxuICAgICAgICAgIHNvcnQudmFsdWUudG9Mb3dlckNhc2UoKSA9PSBTb3J0RGlyZWN0aW9uLkFzYy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICA/IFNvcnREaXJlY3Rpb24uQXNjXG4gICAgICAgICAgICA6IHNvcnQudmFsdWUudG9Mb3dlckNhc2UoKSA9PSBTb3J0RGlyZWN0aW9uLkRlc2MudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgPyBTb3J0RGlyZWN0aW9uLkRlc2NcbiAgICAgICAgICAgIDogU29ydERpcmVjdGlvbi5Ob25lLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHNlYXJjaFRlcm1FeGlzdHMgPSB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtLnRyaW0oKS5sZW5ndGggPiAwO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuICAgIGNvbnN0IHJlcyA9IHNlYXJjaFRlcm1FeGlzdHNcbiAgICAgID8gYXdhaXQgdGhpcy5zZXJ2ZXIuZ2V0KFxuICAgICAgICAgIGBSb2xlL0dldFJvbGVzV2l0aFBhcmFtLyR7dGhpcy5jdXJyZW50U2VhcmNoVGVybS50cmltKCl9LyR7XG4gICAgICAgICAgICB0aGlzLnBhZ2VTdGF0ZS5Ta2lwXG4gICAgICAgICAgfS8ke3RoaXMucGFnZVNpemV9YFxuICAgICAgICApXG4gICAgICA6IGF3YWl0IHRoaXMuc2VydmVyLnBvc3QoXG4gICAgICAgICAgYFJvbGUvU2VhcmNoUm9sZXMvJHt0aGlzLnBhZ2VTdGF0ZS5Ta2lwfS8ke3RoaXMucGFnZVNpemV9YCxcbiAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmVzdWx0ID0gcmVzIGFzIFBhZ2VkUmVzdWx0PFJvbGU+O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cbiAgb25GaWx0ZXJVcGRhdGVkKHVwZGF0ZWRGaWx0ZXJzOiBJRGF0YUZpbHRlcltdIHwgc3RyaW5nKSB7XG4gICAgLy8gRW5zdXJlIHVwZGF0ZWRGaWx0ZXJzIGlzIGFuIGFycmF5XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodXBkYXRlZEZpbHRlcnMpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJzID0gdXBkYXRlZEZpbHRlcnM7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcnNBbmRTb3J0cygpO1xuICAgIH1cbiAgfVxuICBvblNvcnRVcGRhdGVkKHVwZGF0ZWRTb3J0czogSURhdGFGaWx0ZXJbXSkge1xuICAgIHRoaXMuY3VycmVudFNvcnRzID0gdXBkYXRlZFNvcnRzO1xuICAgIGNvbnNvbGUubG9nKHsgQ3VyclNvcnRzOiB0aGlzLmN1cnJlbnRTb3J0cyB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnNBbmRTb3J0cygpO1xuICB9XG5cbiAgaGFuZGxlU2VhcmNoKGV2ZW50OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoZXZlbnQudmFsdWUpO1xuICB9XG5cbiAgaGFuZGxlRXhwb3J0KGV4cG9ydGVkRGF0YTogUGFydGlhbDxhbnk+W10pIHtcbiAgICAvLyBjb25zb2xlLmxvZygnRXhwb3J0ZWQgZGF0YTonLCBleHBvcnRlZERhdGEpO1xuICAgIHRoaXMuZG93bmxvYWRDU1YoZXhwb3J0ZWREYXRhKTtcbiAgfVxuICBwcml2YXRlIGRvd25sb2FkQ1NWKGRhdGE6IFBhcnRpYWw8YW55PltdKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IE9iamVjdC5rZXlzKGRhdGFbMF0pO1xuICAgIGNvbnN0IGNzdkNvbnRlbnQgPSBbXG4gICAgICBoZWFkZXJzLmpvaW4oJywnKSxcbiAgICAgIC4uLmRhdGEubWFwKChyb3cpID0+IGhlYWRlcnMubWFwKChoZWFkZXIpID0+IHJvd1toZWFkZXJdKS5qb2luKCcsJykpLFxuICAgIF0uam9pbignXFxuJyk7XG5cbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NzdkNvbnRlbnRdLCB7IHR5cGU6ICd0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04OycgfSk7XG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBpZiAobGluay5kb3dubG9hZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1cmwpO1xuICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgJ2V4cG9ydC5jc3YnKTtcbiAgICAgIGxpbmsuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9ja1JvbGVzKCk6IFJvbGVbXSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheSgxMCkuZmlsbCgxKS5tYXAoKGlkLCBpKSA9PiAoe1xuICAgICAgSWQ6IGlkICsgaSxcbiAgICAgIGlkOiAoaWQgKyBpKS50b1N0cmluZygpLFxuICAgICAgTmFtZTogdGhpcy5tb2NrTmFtZXNbaV0gfHwgJycsXG4gICAgICBSb2xlQ29udGV4dHM6IHRoaXMucmFuZG9tQ29udGV4dHMoKSxcbiAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgVGVuYW50SWQ6IGBUZW5hbnQke2lkICsgaX1gLFxuICAgICAgQ29kZTogJycsXG4gICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICBBUElLZXk6ICcnLFxuICAgIH0pKTtcbiAgfVxuXG4gIG1vY2tOYW1lczogc3RyaW5nW10gPSBbXG4gICAgJ0FkbWluJyxcbiAgICAnU3VwZXIgQWRtaW4nLFxuICAgICdNYW5hZ2VyJyxcbiAgICAnSW50ZXJuJyxcbiAgICAnUHJvZHVjdGlvbiBNYW5hZ2VyJyxcbiAgICAnQ0VPJyxcbiAgICAnQ1RPJyxcbiAgICAnQ09PJyxcbiAgICAnRGV2ZWxvcGVyJyxcbiAgICAnRW5naW5lZXInLFxuICBdO1xuXG4gIHJhbmRvbU5hbWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMubW9ja05hbWVzLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMubW9ja05hbWVzW3JhbmRvbUluZGV4XTtcbiAgfVxuXG4gIHJhbmRvbUNvbnRleHRzKCk6IFJvbGVDb250ZXh0W10ge1xuICAgIGNvbnN0IHJhbmRvbU51bWJlciA9IE1hdGguZmxvb3IoXG4gICAgICBNYXRoLnJhbmRvbSgpICogT2JqZWN0LmtleXMoVUlzKS5sZW5ndGggKyAxXG4gICAgKTtcbiAgICB2YXIgcmV0dXJuQXJyYXk6IFJvbGVDb250ZXh0W10gPSBbXTtcbiAgICBjb25zdCB1c2VkTGlzdDogbnVtYmVyW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmRvbU51bWJlcjsgaSsrKSB7XG4gICAgICBsZXQgcmFuZG9tSW5kZXg7XG4gICAgICBkbyB7XG4gICAgICAgIHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogT2JqZWN0LmtleXMoVUlzKS5sZW5ndGgpO1xuICAgICAgfSB3aGlsZSAodXNlZExpc3QuaW5jbHVkZXMocmFuZG9tSW5kZXgpKTtcblxuICAgICAgcmV0dXJuQXJyYXkucHVzaCh7XG4gICAgICAgIElkOiAnY29udGV4dCcgKyBpLFxuICAgICAgICBpZDogKCdjb250ZXh0JyArIGkpLnRvU3RyaW5nKCksXG4gICAgICAgIE5hbWU6IE9iamVjdC5rZXlzKFVJcylbcmFuZG9tSW5kZXhdLFxuICAgICAgICBSb2xlOiAnJyxcbiAgICAgICAgUm9sZUFjdGlvbnM6IHRoaXMucmFuZG9tQWN0aW9ucygpLFxuICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgIFRlbmFudElkOiBgVGVuYW50JHsnY29udGV4dCcgKyBpfWAsXG4gICAgICAgIENvZGU6ICcnLFxuICAgICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICAgIEFQSUtleTogJycsXG4gICAgICAgIEFwcGxpY2F0aW9uUm9sZUNvbnRleHQ6ICcnLFxuICAgICAgfSk7XG4gICAgICB1c2VkTGlzdC5wdXNoKHJhbmRvbUluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVybkFycmF5O1xuICB9XG5cbiAgcmFuZG9tQWN0aW9ucygpOiBSb2xlQWN0aW9uW10ge1xuICAgIGNvbnN0IHJhbmRvbU51bWJlciA9IE1hdGguZmxvb3IoXG4gICAgICBNYXRoLnJhbmRvbSgpICogT2JqZWN0LmtleXMoVUlBY3Rpb25zKS5sZW5ndGggKyAxXG4gICAgKTtcbiAgICB2YXIgcmV0dXJuQXJyYXk6IFJvbGVBY3Rpb25bXSA9IFtdO1xuICAgIGNvbnN0IHVzZWRMaXN0OiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZG9tTnVtYmVyOyBpKyspIHtcbiAgICAgIGxldCByYW5kb21JbmRleDtcbiAgICAgIGRvIHtcbiAgICAgICAgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBPYmplY3Qua2V5cyhVSUFjdGlvbnMpLmxlbmd0aCk7XG4gICAgICB9IHdoaWxlICh1c2VkTGlzdC5pbmNsdWRlcyhyYW5kb21JbmRleCkpO1xuXG4gICAgICByZXR1cm5BcnJheS5wdXNoKHtcbiAgICAgICAgSWQ6ICdhY3Rpb24nICsgaSxcbiAgICAgICAgaWQ6ICgnYWN0aW9uJyArIGkpLnRvU3RyaW5nKCksXG4gICAgICAgIE5hbWU6IE9iamVjdC5rZXlzKFVJQWN0aW9ucylbcmFuZG9tSW5kZXhdLFxuICAgICAgICBSb2xlOiAnJyxcbiAgICAgICAgQ29udGV4dDogJycsXG4gICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgVGVuYW50SWQ6IGBUZW5hbnQkeydhY3Rpb24nICsgaX1gLFxuICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgU2VydmljZU5hbWU6ICcnLFxuICAgICAgICBBUElLZXk6ICcnLFxuICAgICAgICBBcHBsaWNhdGlvblJvbGVBY3Rpb246ICcnLFxuICAgICAgfSk7XG4gICAgICB1c2VkTGlzdC5wdXNoKHJhbmRvbUluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVybkFycmF5O1xuICB9XG5cbiAgY2xvc2VQb3BVcCgpIHtcbiAgICB0aGlzLm9wZW5Ecm9wZG93bklkID0gbnVsbDtcbiAgICB0aGlzLnBvcFVwcy5mb3JFYWNoKChwb3BVcCkgPT4ge1xuICAgICAgaWYgKHBvcFVwLmRyb3Bkb3duT3Blbikge1xuICAgICAgICBwb3BVcC50b2dnbGVEcm9wZG93bigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlSXRlbSh2YWx1ZTogYW55LCBrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtrZXldOiB2YWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgZWRpdFZhbHVlKHZhbHVlOiBNYXBwZWRSb2xlKSB7XG4gICAgY29uc3QgY2FyZCA9IHRoaXMuY2FyZERhdGEuZmluZCgoeCkgPT4geC5kYXRhLklkID09IHZhbHVlLklkKTtcbiAgICBpZiAoY2FyZCAmJiB0aGlzLmNhcmREYXRhVmlldykge1xuICAgICAgdGhpcy5kYXRhVmlldy50b2dnbGVWaWV3KCk7XG4gICAgICBjYXJkLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY3VycmVudERhdGEgPSB0aGlzLmNhcmREYXRhVmlldy5vbkl0ZW1DbGljayhjYXJkKTtcbiAgICAgIHRoaXMuY2xvc2VQb3BVcCgpO1xuICAgICAgLy8gaWYgKHRoaXMuY3VycmVudERhdGEpIHtcbiAgICAgIC8vICAgdGhpcy5mb3JtLmNvbnRyb2xzWydOYW1lJ10uc2V0VmFsdWUodGhpcy5jdXJyZW50RGF0YS5kYXRhPy5OYW1lKTtcbiAgICAgIC8vIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgI21lc3NhZ2VMb2cgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00IG1lc3NhZ2UtbG9nLWNvbnRhaW5lclwiPlxuICA8ZGl2ICpuZ0lmPVwidGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID4gMFwiXG4gICAgY2xhc3M9XCJjb250ZXh0LWJhbm5lciBweS0zIHB4LTQgcm91bmRlZC14bCBmbGV4IGl0ZW0tY2VudGVyIGp1c3RpZnktc3BhY2UtYmV0d2VlbiBnYXAtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGZsZXgtMSBjb250ZXh0LWJhbm5lci1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGV4dC1jb250ZW50IGl0ZW1zLWNlbnRlciBmbGV4IGdhcC0yXCIgKm5nRm9yPVwibGV0IGNvbnRleHQgb2YgdGhpcy5jYXJkQ29udGV4dEhpc3Rvcnk7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRleHQtbWFpbi1jb250ZW50LWNvbnRhaW5lciBmbGV4IGdhcC00XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250ZXh0LWNhcHRpb24gZm9udC1ib2xkIHRleHQtWyM0MDQwNDBdXCI+e3tjb250ZXh0LmRhdGEuQ2hpbGRyZW5UeXBlICYmXG4gICAgICAgICAgICBjb250ZXh0LmRhdGEuQ2hpbGRyZW5UeXBlID09IGNoaWxkUGVybWlzc2lvblJlZj8gY29udGV4dC5kYXRhLk5hbWU6IGNvbnRleHQudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImkgPT0gdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoIC0xXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGV4dC1zdWJjYXB0aW9uXCI+e3t0aGlzLmdldENhcmRTdWJDYXB0aW9uKGNvbnRleHQpfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA8IHRoaXMuY2FyZENvbnRleHRIaXN0b3J5Lmxlbmd0aCAtMVwiPi88L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kXCI+XG4gICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwiY2xvc2VEZXRhaWxzKClcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgaWNvbj1cImNsb3NlLWNpcmNsZS1mdWxsXCIgW3dpZHRoXT1cIjIwXCJcbiAgICAgICAgW2hlaWdodF09XCIyMFwiPjwvdmVyYmVuLXN2Zz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDx2ZXJiZW4tZGF0YS12aWV3ICN2ZHYgW3ZpZXdTdGF0ZV09XCJ7XG4gICAgICBpc1NlYXJjaDogdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDAsXG4gICAgICBpc0NvbHVtbjogdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDAsXG4gICAgICBpc0ZpbHRlcjogdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDAsXG4gICAgICBpc1NvcnQ6IHRoaXMuY2FyZENvbnRleHRIaXN0b3J5Lmxlbmd0aCA9PSAwLFxuICAgICAgaXNFeHBvcnQ6IHRoaXMuY2FyZENvbnRleHRIaXN0b3J5Lmxlbmd0aCA9PSAwLFxuICAgICAgaXNTZWxlY3Q6IHRoaXMuY2FyZENvbnRleHRIaXN0b3J5Lmxlbmd0aCA9PSAwLFxuICAgICAgaXNDcmVhdGU6IHRoaXMuY2FyZENvbnRleHRIaXN0b3J5Lmxlbmd0aCA9PSAwLFxuICAgICAgaXNUb2dnbGU6dGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDAsXG4gICAgfVwiIFtidXR0b25DbGFzc109XCInbXktY3VzdG9tLWJ1dHRvbi1jbGFzcydcIiBbaWNvbkNsYXNzXT1cIidteS1pY29uLWNsYXNzJ1wiXG4gICAgW2FjdGl2ZUljb25DbGFzc109XCInbXktYWN0aXZlLWljb24tY2xhc3MnXCIgW2lzVGFibGVWaWV3XT1cInRoaXMuY2FyZENvbnRleHRIaXN0b3J5Lmxlbmd0aCA9PSAwXCJcbiAgICBbc2VsZWN0ZWRDb2x1bW5Db3VudF09XCIwXCIgW3NlbGVjdGVkU29ydENvdW50XT1cIjBcIiBbc2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50XT1cIjBcIiAodmlld0NoYW5nZSk9XCJvblZpZXdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKHN0YXRlQ2hhbmdlKT1cIm9uU3RhdGVDaGFuZ2UoJGV2ZW50KVwiIChvblNlYXJjaENoYW5nZSk9XCJoYW5kbGVTZWFyY2goJGV2ZW50KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtdC0yXCIgdGFibGUtY29udGVudD5cbiAgICAgIDxsaWItZGF0YS10YWJsZSAjZHQgW2RhdGFdPVwiZGF0YVwiIFtjb2x1bW5zXT1cInZpc2libGVDb2x1bW5EZWZcIiBbc3R5bGVDb25maWddPVwic3R5bGVzXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwic2VsZWN0XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pc1NlbGVjdGVkPVwiaXNTZWxlY3RlZFwiIGxldC10b2dnbGVSb3dTZWxlY3Rpb249XCJ0b2dnbGVSb3dTZWxlY3Rpb25cIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkXCIgKGNoYW5nZSk9XCJ0b2dnbGVSb3dTZWxlY3Rpb24oKVwiIC8+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlciBsZXQtYWxsUm93c1NlbGVjdGVkPVwiYWxsUm93c1NlbGVjdGVkXCIgbGV0LXNvbWVSb3dzU2VsZWN0ZWQ9XCJzb21lUm93c1NlbGVjdGVkXCJcbiAgICAgICAgICAgIGxldC10b2dnbGVBbGxSb3dzPVwidG9nZ2xlQWxsUm93c1wiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImFsbFJvd3NTZWxlY3RlZCgpXCIgW2luZGV0ZXJtaW5hdGVdPVwic29tZVJvd3NTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxSb3dzKClcIiAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImNyZWF0ZWRBdFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtdmFsdWU+XG4gICAgICAgICAgICB7eyB2YWx1ZSB8IGRhdGUgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJ1cGRhdGVkQXRcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXZhbHVlPlxuICAgICAgICAgICAge3sgdmFsdWUgfCBkYXRlIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwibmFtZVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAge3t2YWx1ZS5OYW1lfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbEVkaXQgbGV0LXJvdz1cInJvd1wiIGxldC11cGRhdGVWYWx1ZT1cInVwZGF0ZVZhbHVlXCIgbGV0LXVwZGF0ZURhdGE9XCJ1cGRhdGVEYXRhXCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndpZHRoLW1heFwiPlxuICAgICAgICAgICAgICA8dmVyYmVuYS1pbnB1dCBbKG5nTW9kZWwpXT1cInZhbHVlLk5hbWVcIj48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImFjdGlvbnNcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWlzRWRpdGluZz1cImlzRWRpdGluZ1wiIGxldC10b2dnbGVSb3dFZGl0PVwidG9nZ2xlUm93RWRpdFwiIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU+XG4gICAgICAgICAgICA8dmVyYmVuLXBvcC1VcCAjcG9wdXAgW2N1c3RvbVN0eWxlc109XCJ7J3otaW5kZXgnOiAnOTknfVwiIFtlbmFibGVNb3VzZUxlYXZlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYWN0aW9ucy1pY29uXCIgZHJvcGRvd24tdHJpZ2dlciBpY29uPVwibGlzdFwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcC11cC1jb250ZW50IGZsZXggZmxleC1jb2xcIiBkcm9wZG93bi1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZVJvd0VkaXQoKTsgY2xvc2VQb3BVcCgpOyBcIiBjbGFzcz1cInBvcC11cC12YWx1ZSBjdXJzb3ItcG9pbnRlclwiPkVkaXQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ2aWV3RGV0YWlsc0Zyb21UYWJsZSh2YWx1ZSlcIiBjbGFzcz1cInBvcC11cC12YWx1ZSBjdXJzb3ItcG9pbnRlclwiPlZpZXcgRGV0YWlsczwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3AtdXAtdmFsdWUgY3Vyc29yLXBvaW50ZXJcIj5WaWV3IFVzZXJzPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC92ZXJiZW4tcG9wLVVwPlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgKGNsaWNrKT1cImVkaXRWYWx1ZSh2YWx1ZSlcIiBpY29uPVwiZWRpdFwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJ2aWV3RGV0YWlsc0Zyb21UYWJsZSh2YWx1ZSlcIiBjbGFzcz1cInZpZXctbGlua3Mgdmlldy1kZXRhaWxzXCI+dmlldyBkZXRhaWxzPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpZXctbGlua3Mgdmlldy11c2Vyc1wiPnZpZXcgdXNlcnM8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC1pc0VkaXRpbmc9XCJpc0VkaXRpbmdcIiBsZXQtdG9nZ2xlUm93RWRpdD1cInRvZ2dsZVJvd0VkaXRcIiBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJ0aWNrXCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRhYmxlU2F2ZVJvbGUodmFsdWUsIHRvZ2dsZVJvd0VkaXQpXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwiZGVsZXRlXCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgaWNvbj1cImNhcmRWaWV3QWx0XCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiIChjbGljayk9XCJlZGl0VmFsdWUodmFsdWUpXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpYi1kYXRhLXRhYmxlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2FyZC1jb250ZW50PlxuICAgICAgPHZlcmJlbi1jYXJkLWRhdGEtdmlldyBib3JkZXJSYWRpdXM9XCIxMnB4XCIgI3ZkY3YgZGF0YUlkPVwiSWRcIiBib3JkZXI9XCI1cHhcIiBbY2FyZERhdGFMaXN0XT1cImNhcmREYXRhXCJcbiAgICAgICAgcmJnQ29sb3I9XCIjZjVmNmY5XCIgbWc9XCIwcHhcIj5cbiAgICAgICAgPHZlcmJlbi1sZWZ0LWNhcmQtZGF0YS12aWV3IGNsYXNzPVwic3BhY2UteS03XCI+XG4gICAgICAgICAgPHZlcmJlbi1sZWZ0LWNhcmQtZGF0YSAjdmxjZCBbcGFyZW50XT1cInZkY3ZcIiBkYXRhSWQ9XCJNYWlsQWRkcmVzc1wiXG4gICAgICAgICAgICBjbGFzcz1cImJnLXNlY29uZGFyeS0xMDAgcm91bmRlZC14bCBib3JkZXItcHJpbWFyeSBib3JkZXItWzFweF1cIiBbY2FyZERhdGFMaXN0XT1cImNhcmREYXRhXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NhcmQgbGV0LWl0ZW0+XG4gICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInJvbGVDYXJkQ2xpY2tlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmRhdGEuQ2hpbGRyZW5UeXBlICYmIGl0ZW0uZGF0YS5DaGlsZHJlblR5cGUgPT0gY2hpbGRQZXJtaXNzaW9uUmVmXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggY3Vyc29yLXBvaW50ZXIgaC1bbWF4LWNvbnRlbnRdXCI+XG4gICAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiIChjbGljayk9XCJ0b2dnbGVDaGlsZHJlbihpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGg/J3Zpc2libGUnOidpbnZpc2libGUnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbXMtY2VudGVyIGZsZXggIHByLTEgY3Vyc29yLXBvaW50ZXJcIiBbaWNvbl09XCJpdGVtLmlzQ2hpbGRyZW5FeHBhbmRlZD8nbWludXMnOidwbHVzJ1wiIC8+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggIHctZnVsbCBiZy1zZWNvbmRhcnkgcm91bmRlZC14bFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMyByb3VuZGVkLXhsIHJvdW5kZWQtdHItbm9uZSByb3VuZGVkLWJyLW5vbmVcIiBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNlbGVjdGVkID8gJ2JnLXByaW1hcnknIDogJ2JnLXNlY29uZGFyeS0yMDAnXG4gICAgICAgICAgICAgICAgICAgIFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTMgcHgtNCBmbGV4LTEgaC1bMTAwJV1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtc3RhcnQgZmxleC0xIGdhcC0xIGp1c3RpZnktYmV0d2VlbiBoLVsxMDAlXVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtMSBjYXJkLW1pbi1oZWlnaHQganVzdGlmeS1iZXR3ZWVuIGgtWzEwMCVdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJteS0wIGZvbnQtYm9sZCB0ZXh0LVsjNDA0MDQwXSBsZWFkaW5nLVsxOS41cHhdXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5kYXRhLk5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIhdGV4dC1bMTBweF0gZm9udC1saWdodCB0ZXh0LVsjNDA0MDQwXSBsZWFkaW5nLVsxMi4xcHhdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2dldENhcmRTdWJDYXB0aW9uKGl0ZW0pfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMFwiIGNsYXNzPVwiZmxleCBpdGVtcy1lbmQgaC1bMTAwJV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIChjbGljayk9XCJ2aWV3RGV0YWlscyhpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteS0wIHVuZGVybGluZSB0ZXh0LVsjMzQ3OUU5XSB0ZXh0LVsxMnB4XSBsZWFkaW5nLVsxNi42cHhdIGN1cnNvci1wb2ludGVyIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcgZGV0YWlsczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXRlbS5kYXRhLkNoaWxkcmVuVHlwZSB8fCBpdGVtLmRhdGEuQ2hpbGRyZW5UeXBlICE9PSBjaGlsZFBlcm1pc3Npb25SZWZcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBoLVttYXgtY29udGVudF1cIj5cbiAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBbbmdDbGFzc109XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoPyd2aXNpYmxlJzonaW52aXNpYmxlJ1wiIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCIgKGNsaWNrKT1cInRvZ2dsZUNoaWxkcmVuKGl0ZW0pXCIgY2xhc3M9XCJpdGVtcy1jZW50ZXIgZmxleCAgcHItMSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICBbaWNvbl09XCJpdGVtLmlzQ2hpbGRyZW5FeHBhbmRlZD8nbWludXMnOidwbHVzJ1wiIC8+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggIHctZnVsbCBiZy1zZWNvbmRhcnkgcm91bmRlZC14bFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMyByb3VuZGVkLXhsIHJvdW5kZWQtdHItbm9uZSByb3VuZGVkLWJyLW5vbmVcIiBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNlbGVjdGVkID8gJ2JnLXByaW1hcnknIDogJ2JnLXNlY29uZGFyeS0yMDAnXG4gICAgICAgICAgICAgICAgICAgIFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTMgcHgtNCBmbGV4LTEgZmxleCBnYXAtMiBoLVsxMDAlXSBpdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJpdGVtLmRhdGE/LlNlbGVjdGVkICE9IHVuZGVmaW5lZFwiIFtkaXNhYmxlZF09XCJ0aGlzLmlzQ2hlY2tib3hEaXNhYmxlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyXCIgWyhuZ01vZGVsKV09XCJpdGVtLmRhdGEuU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgdGhpcy5zYXZlUm9sZUR5bmFtaWMoaXRlbSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBmbGV4LTEgZ2FwLTEganVzdGlmeS1iZXR3ZWVuIGgtWzEwMCVdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC0xIGNhcmQtbWluLWhlaWdodCBqdXN0aWZ5LWJldHdlZW4gaC1bMTAwJV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm15LTAgZm9udC1ib2xkIHRleHQtWyM0MDQwNDBdIGxlYWRpbmctWzE5LjVweF1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiIXRleHQtWzEwcHhdIGZvbnQtbGlnaHQgdGV4dC1bIzQwNDA0MF0gbGVhZGluZy1bMTIuMXB4XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRDYXJkU3ViQ2FwdGlvbihpdGVtKX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDBcIiBjbGFzcz1cImZsZXggaXRlbXMtZW5kIGgtWzEwMCVdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAoY2xpY2spPVwidmlld0RldGFpbHMoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTAgdW5kZXJsaW5lIHRleHQtWyMzNDc5RTldIHRleHQtWzEycHhdIGxlYWRpbmctWzE2LjZweF0gY3Vyc29yLXBvaW50ZXIgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldyBkZXRhaWxzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NhcmRDaGlsZCBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaC1bbWF4LWNvbnRlbnRdXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggIHctZnVsbCBiZy1zZWNvbmRhcnkgcm91bmRlZC14bFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMyByb3VuZGVkLXhsIHJvdW5kZWQtdHItbm9uZSByb3VuZGVkLWJyLW5vbmVcIiBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNlbGVjdGVkID8gJ2JnLXByaW1hcnknIDogJ2JnLXNlY29uZGFyeS0yMDAnXG4gICAgICAgICAgICAgICAgICAgIFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTMgcHgtNCBmbGV4LTEgZmxleCBnYXAtMiBoLVsxMDAlXSBpdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJpdGVtLmRhdGE/LlNlbGVjdGVkICE9IHVuZGVmaW5lZFwiIFtkaXNhYmxlZF09XCJ0aGlzLmlzQ2hlY2tib3hEaXNhYmxlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyXCIgWyhuZ01vZGVsKV09XCJpdGVtLmRhdGEuU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgdGhpcy5zYXZlUm9sZUR5bmFtaWMoaXRlbSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBmbGV4LTEgZ2FwLTEganVzdGlmeS1iZXR3ZWVuIGgtWzEwMCVdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC0xIGNhcmQtbWluLWhlaWdodCBqdXN0aWZ5LWJldHdlZW4gaC1bMTAwJV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm15LTAgZm9udC1ib2xkIHRleHQtWyM0MDQwNDBdIGxlYWRpbmctWzE5LjVweF1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiIXRleHQtWzEwcHhdIGZvbnQtbGlnaHQgdGV4dC1bIzQwNDA0MF0gbGVhZGluZy1bMTIuMXB4XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRDYXJkU3ViQ2FwdGlvbihpdGVtKX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDBcIiBjbGFzcz1cImZsZXggaXRlbXMtZW5kIGgtWzEwMCVdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAoY2xpY2spPVwidmlld0RldGFpbHNDaGlsZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXktMCB1bmRlcmxpbmUgdGV4dC1bIzM0NzlFOV0gdGV4dC1bMTJweF0gbGVhZGluZy1bMTYuNnB4XSBjdXJzb3ItcG9pbnRlciBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3IGRldGFpbHM8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3ZlcmJlbi1sZWZ0LWNhcmQtZGF0YT5cbiAgICAgICAgPC92ZXJiZW4tbGVmdC1jYXJkLWRhdGEtdmlldz5cbiAgICAgICAgPHZlcmJlbi1yaWdodC1jYXJkLWRhdGEtdmlldyAqbmdJZj1cInRoaXMuY2FyZENvbnRleHRIaXN0b3J5Lmxlbmd0aCA9PSAwXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwYXJlbnQ+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhpcy5jdXJyZW50RGF0YVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCByb3VuZGVkLXhsIGgtZnVsbCB3LWZ1bGwganVzdGlmeS1iZXR3ZWVuIHJlbGF0aXZlIHNwYWNlLXktNFwiPlxuICAgICAgICAgICAgICA8dmVyYmVuYS1pbnB1dCBuYW1lPVwiTmFtZVwiIGxhYmVsPVwiTmFtZVwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVRhYmxlKClcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGhpcy5jdXJyZW50RGF0YS5kYXRhLk5hbWVcIiAvPlxuXG4gICAgICAgICAgICAgIDwhLS0gYnV0dG9ucyAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGJvdHRvbS04IGxlZnQtMCByaWdodC0wXCI+XG4gICAgICAgICAgICAgICAgPHZlcmJlbmEtYnV0dG9uIGNsYXNzPVwidmVyYmVuLWRlbGV0ZS1idXR0b25cIiB0ZXh0PVwiRGVsZXRlXCI+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgPHZlcmJlbmEtYnV0dG9uIGNsYXNzPVwidmVyYmVuLXN3aXRjaC1idXR0b25cIiAoY2xpY2spPVwiZ29Ub1RhYmxlVmlldygpXCJcbiAgICAgICAgICAgICAgICAgICAgdGV4dD1cIlN3aXRjaCBUbyBUYWJsZVwiPjwvdmVyYmVuYS1idXR0b24+XG4gICAgICAgICAgICAgICAgICA8dmVyYmVuYS1idXR0b24gY2xhc3M9XCJ2ZXJiZW4tcHJpbWFyeS1idXR0b25cIiAoY2xpY2spPVwidGhpcy5zYXZlUm9sZSgpXCIgdGV4dD1cIlNhdmVcIj48L3ZlcmJlbmEtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC92ZXJiZW4tcmlnaHQtY2FyZC1kYXRhLXZpZXc+XG4gICAgICAgIDwhLS0gPHZlcmJlbi1yaWdodC1jYXJkLWRhdGEtdmlldz5cbiAgICAgICAgICB5ZXNoaGhoaGhcbiAgICAgICAgPC92ZXJiZW4tcmlnaHQtY2FyZC1kYXRhLXZpZXc+IC0tPlxuXG4gICAgICAgIDx2ZXJiZW4tY2FyZC1kYXRhLXZpZXctZm9vdGVyICpuZ0lmPVwidGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhdmRjdi5oYXNDdXJyZW50SXRlbSgpICYmIHRoaXMuY2FyZENvbnRleHRIaXN0b3J5Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZXNzYWdlLWxvZy1idXR0b24tY29udGFpbmVyIGZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgIDx2ZXJiZW5hLWJ1dHRvbiBbZm9udFdlaWdodF09XCInYm9sZCdcIiBbYmdDb2xvcl09XCInIzhFOEQ4NydcIiBbYm9yZGVyUmFkaXVzXT1cIic0cHgnXCIgW3RleHRDb2xvcl09XCInI2ZmZidcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidEZWxldGUnXCI+XG4gICAgICAgICAgICAgIDwvdmVyYmVuYS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHt7dmRjdi5oYXNDdXJyZW50SXRlbSgpPydmbGV4LTEnOicnfX0ganVzdGlmeS1lbmQgaXRlbXMtY2VudGVyIGdhcC01XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnaW5hdG9yLXRleHRcIj57eyBjYXJkRGF0YS5sZW5ndGggfX0gcmVjb3JkcyBsb2FkZWQ8L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRNb3JlKClcIiBjbGFzcz1cImxvYWQtbW9yZSB2aWV3LWxpbmtzXCI+TG9hZCBtb3JlPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92ZXJiZW4tY2FyZC1kYXRhLXZpZXctZm9vdGVyPlxuICAgICAgPC92ZXJiZW4tY2FyZC1kYXRhLXZpZXc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjb2x1bW4tY29udGVudD5cbiAgICAgIDx2ZXJiZW4tdmlzaWJsZS1jb2x1bW4gKGNvbHVtbnNVcGRhdGVkKT1cIm9uQ29sdW1uc1VwZGF0ZWQoJGV2ZW50KVwiIFtib3JkZXJdPVwiJzFweCBzb2xpZCByZ2JhKDIxMiwgMTYwLCA3LCAxKSdcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCIxMHB4XCIgYm94U2hhZG93PVwiMnB4IDJweCAycHggMHB4IHNpbHZlclwiIGJnQ29sb3I9XCJ3aGl0ZVwiIHdpZHRoPVwiNDAwcHhcIiB0ZXh0Q29sb3I9XCJibGFja1wiIHBkPVwiMXJlbVwiXG4gICAgICAgIHByaW1hcnlDb2xvcj1cIiNGRkU2ODFcIiBzZWNvbmRhcnlDb2xvcj1cIiMzNDc5RTlcIiBbY29sdW1uc109XCJ2aXNpYmxlQ29sdW1uc1wiXG4gICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cIjVcIj48L3ZlcmJlbi12aXNpYmxlLWNvbHVtbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGZpbHRlci1jb250ZW50PlxuICAgICAgPHZlcmJlbi10YWJsZS1maWx0ZXIgKGZpbHRlcnNBcHBsaWVkKT1cIm9uRmlsdGVyVXBkYXRlZCgkZXZlbnQpXCIgW2JvcmRlcl09XCInMXB4IHNvbGlkIHJnYmEoMjEyLCAxNjAsIDcsIDEpJ1wiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjEwcHhcIiBib3hTaGFkb3c9XCIycHggMnB4IDJweCAwcHggc2lsdmVyXCIgYmdDb2xvcj1cIndoaXRlXCIgd2lkdGg9XCI0MjBweFwiIHRleHRDb2xvcj1cImJsYWNrXCIgcGQ9XCIxcmVtXCJcbiAgICAgICAgcHJpbWFyeUNvbG9yPVwiI0ZGRTY4MVwiIHNlY29uZGFyeUNvbG9yPVwiIzM0NzlFOVwiIHRlcnRpYXJ5Q29sb3I9XCIjNDA0MDQwXCIgW2ZpbHRlck9wdGlvbnNdPVwiZmlsdGVyQXJyYXlcIlxuICAgICAgICBbbWF4RmlsdGVyTGVuZ3RoXT1cIjNcIj48L3ZlcmJlbi10YWJsZS1maWx0ZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzb3J0LWNvbnRlbnQ+XG4gICAgICA8dmVyYmVuLXNvcnQtdGFibGUgKHNlbGVjdGVkT3B0aW9ucyk9XCJvblNvcnRVcGRhdGVkKCRldmVudClcIiBbYm9yZGVyXT1cIicxcHggc29saWQgcmdiYSgyMTIsIDE2MCwgNywgMSknXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiMTBweFwiIGJveFNoYWRvdz1cIjJweCAycHggMnB4IDBweCBzaWx2ZXJcIiBiZ0NvbG9yPVwid2hpdGVcIiB3aWR0aD1cIjQwMHB4XCIgdGV4dENvbG9yPVwiYmxhY2tcIiBwZD1cIjFyZW1cIlxuICAgICAgICBwcmltYXJ5Q29sb3I9XCIjRkZFNjgxXCIgc2Vjb25kYXJ5Q29sb3I9XCIjMzQ3OUU5XCIgdGVydGlhcnlDb2xvcj1cIiM0MDQwNDBcIiBbZW5hYmxlRHJhZ0FuZERyb3BdPVwidHJ1ZVwiXG4gICAgICAgIFtzb3J0T3B0aW9uc109XCJzb3J0T3B0aW9uc1wiPjwvdmVyYmVuLXNvcnQtdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBleHBvcnQtY29udGVudD5cbiAgICAgIDxsaWItZGF0YS1leHBvcnQgW2RhdGFdPVwiZGF0YVwiIChleHBvcnREYXRhRXZlbnQpPVwiaGFuZGxlRXhwb3J0KCRldmVudClcIj5cbiAgICAgIDwvbGliLWRhdGEtZXhwb3J0PlxuICAgIDwvZGl2PlxuICA8L3ZlcmJlbi1kYXRhLXZpZXc+XG4gIDxkaXYgKm5nSWY9XCJ2ZHYuaXNUYWJsZVZpZXdcIiBjbGFzcz1cImZsZXggZ2FwLTIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtbG9nLWJ1dHRvbi1jb250YWluZXIgZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgIDx2ZXJiZW5hLWJ1dHRvbiBbZm9udFdlaWdodF09XCInYm9sZCdcIiBbYmdDb2xvcl09XCInIzhFOEQ4NydcIiBbYm9yZGVyUmFkaXVzXT1cIic0cHgnXCIgW3RleHRDb2xvcl09XCInI2ZmZidcIlxuICAgICAgICBbdGV4dF09XCInRGVsZXRlJ1wiPlxuICAgICAgPC92ZXJiZW5hLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgZ2FwLTVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicGFnaW5hdG9yLXRleHRcIj57eyBjYXJkRGF0YS5sZW5ndGggfX0gcmVjb3JkcyBsb2FkZWQ8L3NwYW4+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJsb2FkTW9yZSgpXCIgY2xhc3M9XCJsb2FkLW1vcmUgdmlldy1saW5rc1wiPkxvYWQgbW9yZTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
1328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL2NvbXBvbmVudHMvcm9sZS1jb250cm9sL3JvbGUtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9jb21wb25lbnRzL3JvbGUtY29udHJvbC9yb2xlLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBR0wsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBSUwsY0FBYyxHQUtmLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBUXhDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSXJFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUs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ZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvbGVDb250cm9sU2VydmljZSB9IGZyb20gJy4vcm9sZS1jb250cm9sLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ2FyZERhdGEsXG4gIENhcmREYXRhVmlld0NvbXBvbmVudCxcbiAgQ29sdW1uRGVmaW5pdGlvbixcbiAgRGF0YUZpbHRlclR5cGUsXG4gIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgRGF0YVZpZXdDb21wb25lbnQsXG4gIElEYXRhRmlsdGVyLFxuICBWZXJiZW5Qb3BVcENvbXBvbmVudCxcbn0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IFJvbGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvUm9sZSc7XG5pbXBvcnQgeyBiYXNlU3R5bGUgfSBmcm9tICcuL2Jhc2UtdGFibGUtc3R5bGUnO1xuaW1wb3J0IHsgT2JqZWN0U3RhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvb2JqZWN0LXN0YXRlJztcbmltcG9ydCB7IFJvbGVDb250ZXh0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL1JvbGVDb250ZXh0JztcbmltcG9ydCB7IFVJcyB9IGZyb20gJy4vVUlzJztcbmltcG9ydCB7IFJvbGVBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvUm9sZUFjdGlvbic7XG5pbXBvcnQgeyBVSUFjdGlvbnMgfSBmcm9tICcuL1VJQWN0aW9ucyc7XG5pbXBvcnQgeyBNYXBwZWRSb2xlIH0gZnJvbSAnLi9NYXBwZWRSb2xlJztcbmltcG9ydCB7XG4gIEF1dGhvcml6YXRpb25Db25maWcsXG4gIEF1dGhvcml6YXRpb25TZXJ2aWNlLFxufSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRob3JpemF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFwcGVkUm9sZUNvbnRleHQgfSBmcm9tICcuL01hcHBlZFJvbGVDb250ZXh0JztcbmltcG9ydCB7IE1hcHBlZFJvbGVBY3Rpb24gfSBmcm9tICcuL01hcHBlZFJvbGVBY3Rpb24nO1xuaW1wb3J0IHsgQ2hpbGRyZW5UeXBlIH0gZnJvbSAnLi9DaGlsZHJlblR5cGUnO1xuaW1wb3J0IHtcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBXZWJSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAtd2ViLXJlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0Vycm9yUmVzcG9uc2UnO1xuaW1wb3J0IHsgUGFnZWRSZXN1bHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvUGFnZWRSZXN1bHQnO1xuaW1wb3J0IHsgU2VhcmNoUHJvcGVydHlWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVscy9TZWFyY2hQcm9wZXJ0eVZhbHVlJztcbmltcG9ydCB7IFNlYXJjaE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1NlYXJjaE9wZXJhdG9yJztcbmltcG9ydCB7IFNlYXJjaFByb3BlcnR5U2lnbiB9IGZyb20gJy4uLy4uL21vZGVscy9TZWFyY2hQcm9wZXJ0eVNpZ24nO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblJvbGVDb250ZXh0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL0FwcGxpY2F0aW9uUm9sZUNvbnRleHQnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Sb2xlQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0FwcGxpY2F0aW9uUm9sZUFjdGlvbic7XG5pbXBvcnQgeyBTZWFyY2hQcm9wZXJ0eVZhbHVlVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9TZWFyY2hQcm9wZXJ0eVZhbHVlVHlwZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvU29ydERpcmVjdGlvbic7XG5cbmVudW0gRGF0ZUZpbHRlclR5cGVzIHtcbiAgQmVmb3JlID0gU2VhcmNoUHJvcGVydHlTaWduLkxULFxuICBPbiA9IFNlYXJjaFByb3BlcnR5U2lnbi5FUSxcbiAgQWZ0ZXIgPSBTZWFyY2hQcm9wZXJ0eVNpZ24uR1QsXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1yb2xlLWNvbnRyb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vcm9sZS1jb250cm9sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3JvbGUtY29udHJvbC5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgUm9sZUNvbnRyb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB2aXNpYmxlQ29sdW1uRGVmOiBDb2x1bW5EZWZpbml0aW9uPE1hcHBlZFJvbGU+W10gPSBbXTtcbiAgc3R5bGVzID0gYmFzZVN0eWxlO1xuICBkYXRhOiBNYXBwZWRSb2xlW10gPSBbXTtcbiAgY2FyZERhdGE6IENhcmREYXRhW10gPSBbXTtcbiAgY3VycmVudERhdGE6IENhcmREYXRhIHwgbnVsbCA9IG51bGw7XG4gIGN1cnJlbnRFeHBhbmRlZENhcmQ6IENhcmREYXRhIHwgbnVsbCA9IG51bGw7XG4gIGNhcmRDb250ZXh0OiBDYXJkRGF0YSB8IG51bGwgPSBudWxsO1xuICBjYXJkQ29udGV4dEhpc3Rvcnk6IENhcmREYXRhW10gPSBbXTtcbiAgY2FyZENvbnRleHRIaXN0b3J5RGF0YTogQ2FyZERhdGFbXVtdID0gW107XG4gIEBWaWV3Q2hpbGQoJ3ZkY3YnKSBjYXJkRGF0YVZpZXchOiBDYXJkRGF0YVZpZXdDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3ZkdicpIGRhdGFWaWV3ITogRGF0YVZpZXdDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGRyZW4oJ3BvcHVwJykgcG9wVXBzITogUXVlcnlMaXN0PFZlcmJlblBvcFVwQ29tcG9uZW50PjtcbiAgQFZpZXdDaGlsZCgnZHQnKSB0YWJsZVZpZXchOiBEYXRhVGFibGVDb21wb25lbnQ8TWFwcGVkUm9sZT47XG4gIEBJbnB1dCgpIGlzR2xvYmFsOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2VydmljZU5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBhcHBsaWNhdGlvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSAxMDtcbiAgQElucHV0KCkgc2VhcmNoRGVib3VuY2VUaW1lOiBudW1iZXIgPSA1MDA7XG4gIHBhZ2VTdGF0ZTogUGFnZWRSZXN1bHQ8Um9sZT4gfCBudWxsID0gbnVsbDtcbiAgc291cmNlRGF0YTogQXV0aG9yaXphdGlvbkNvbmZpZ1tdID0gW107XG4gIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBvcGVuRHJvcGRvd25JZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGN1cnJlbnRGaWx0ZXJzOiBJRGF0YUZpbHRlcltdID0gW107XG4gIGN1cnJlbnRTb3J0czogSURhdGFGaWx0ZXJbXSA9IFtdO1xuICBzZWFyY2hUZXJtJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICB2aXNpYmxlQ29sdW1uczogSURhdGFGaWx0ZXJbXSA9IFtdO1xuXG4gIGZpbHRlckFycmF5OiBJRGF0YUZpbHRlcltdID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdDcmVhdGVkQXQnLFxuICAgICAgdHlwZTogRGF0YUZpbHRlclR5cGUuRGF0ZSxcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ1VwZGF0ZWRBdCcsXG4gICAgICB0eXBlOiBEYXRhRmlsdGVyVHlwZS5EYXRlLFxuICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgfSxcbiAgXTtcblxuICBzb3J0T3B0aW9uczogSURhdGFGaWx0ZXJbXSA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnQ3JlYXRlZEF0JyxcbiAgICAgIHR5cGU6IERhdGFGaWx0ZXJUeXBlLkRhdGUsXG4gICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdVcGRhdGVkQXQnLFxuICAgICAgdHlwZTogRGF0YUZpbHRlclR5cGUuRGF0ZSxcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIH0sXG4gIF07XG5cbiAgLy8gcHJpdmF0ZSBfc2VhcmNoSXRlbTogc3RyaW5nID0gJyc7XG4gIC8vIGdldCBzZWFyY2hJdGVtKCk6IHN0cmluZyB7XG4gIC8vICAgcmV0dXJuIHRoaXMuX3NlYXJjaEl0ZW1cbiAgLy8gfVxuICAvLyBzZXQgc2VhcmNoSXRlbSh2YWx1ZTogc3RyaW5nKSB7XG4gIC8vICAgdGhpcy5fc2VhcmNoSXRlbSA9IHZhbHVlO1xuICAvLyAgIHRoaXMuc2VhcmNoVGVybSQubmV4dCh2YWx1ZSk7XG4gIC8vIH1cblxuICAvLyBmb3JtOiBGb3JtR3JvdXA7XG4gIGNoaWxkUGVybWlzc2lvblJlZjogQ2hpbGRyZW5UeXBlID0gQ2hpbGRyZW5UeXBlLlBlcm1pc3Npb247XG5cbiAgcm9sZUNvbnRleHRzU3RvcmU6IEFwcGxpY2F0aW9uUm9sZUNvbnRleHRbXSA9IFtdO1xuICByb2xlQWN0aW9uc1N0b3JlOiBBcHBsaWNhdGlvblJvbGVBY3Rpb25bXSA9IFtdO1xuICBwcml2YXRlIGN1cnJlbnRTZWFyY2hUZXJtOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRob3JpemF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvbGVDb250cm9sU3ZjOiBSb2xlQ29udHJvbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZXJ2ZXI6IEh0dHBXZWJSZXF1ZXN0U2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZVxuICApIHtcbiAgICB0aGlzLnZpc2libGVDb2x1bW5EZWYgPSByb2xlQ29udHJvbFN2Yy5yb2xlQ29sdW1ucztcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gcm9sZUNvbnRyb2xTdmMucm9sZUNvbHVtbnMubWFwKChjb2wpID0+ICh7XG4gICAgICBjaGVja2VkOiB0cnVlLFxuICAgICAgbmFtZTogdHlwZW9mIGNvbC5oZWFkZXIgPT09ICdzdHJpbmcnID8gY29sLmhlYWRlciA6IGNvbC5pZCxcbiAgICAgIHR5cGU6IERhdGFGaWx0ZXJUeXBlLkJvb2wsXG4gICAgfSkpO1xuICAgIC8vIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIC8vICAgTmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIC8vIH0pO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbW9ja0RhdGEgPSB0aGlzLmdldE1vY2tSb2xlcygpO1xuICAgIGNvbnN0IHJvbGVzID0gYXdhaXQgdGhpcy5nZXRBbGxSb2xlcygpO1xuICAgIGlmICh0aGlzLmlzR2xvYmFsKSB7XG4gICAgICBjb25zdCBjb250ZXh0c1JlcyA9IGF3YWl0IHRoaXMuZ2V0U2F2ZWRDb250ZXh0cygpO1xuICAgICAgaWYgKGNvbnRleHRzUmVzKSB7XG4gICAgICAgIHRoaXMucm9sZUNvbnRleHRzU3RvcmUgPSBjb250ZXh0c1JlcztcbiAgICAgICAgdGhpcy5yb2xlQWN0aW9uc1N0b3JlID0gY29udGV4dHNSZXMuZmxhdE1hcCgoeCkgPT4geC5Sb2xlQWN0aW9ucyk7XG4gICAgICAgIGNvbnN0IGF1dGhDb25maWc6IEF1dGhvcml6YXRpb25Db25maWdbXSA9IGNvbnRleHRzUmVzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBOYW1lOiB4Lk5hbWUsXG4gICAgICAgICAgICBBY3Rpb25zOiB4LlJvbGVBY3Rpb25zLm1hcCgoeSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4geS5OYW1lO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc291cmNlRGF0YSA9IGF1dGhDb25maWc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc291cmNlRGF0YSA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkNvbmZpZztcbiAgICB9XG4gICAgaWYgKHJvbGVzKSB7XG4gICAgICB0aGlzLnNldFVwTWFwcGVkRGF0YShyb2xlcyk7XG4gICAgICB0aGlzLnNldFVwQ2FyZERhdGEoKTtcbiAgICB9XG4gICAgdGhpcy5zZWFyY2hUZXJtJFxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuc2VhcmNoRGVib3VuY2VUaW1lKSkgLy8gQWRqdXN0IGRlYm91bmNlIHRpbWUgaGVyZSAoaW4gbXMpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChzZWFyY2hUZXJtKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtO1xuICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcnNBbmRTb3J0cyh0cnVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2F2ZWRDb250ZXh0cygpOiBQcm9taXNlPEFwcGxpY2F0aW9uUm9sZUNvbnRleHRbXSB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5pc0dsb2JhbCB8fCAhdGhpcy5hcHBsaWNhdGlvbikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIHBheWxvYWQ6IFNlYXJjaFByb3BlcnR5VmFsdWVbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgUHJvcGVydHlOYW1lOiAnQXBwbGljYXRpb24nLFxuICAgICAgICBFbnRpdHlWYWx1ZTogdGhpcy5hcHBsaWNhdGlvbixcbiAgICAgICAgT3BlcmF0b3I6IFNlYXJjaE9wZXJhdG9yLkFuZCxcbiAgICAgICAgU2lnbjogU2VhcmNoUHJvcGVydHlTaWduLkVRLFxuICAgICAgfSxcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgUHJvcGVydHlOYW1lOiAnQVBJS2V5JyxcbiAgICAgIC8vICAgRW50aXR5VmFsdWU6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgIC8vICAgT3BlcmF0b3I6IFNlYXJjaE9wZXJhdG9yLkFuZCxcbiAgICAgIC8vICAgU2lnbjogU2VhcmNoUHJvcGVydHlTaWduLkVRLFxuICAgICAgLy8gfSxcbiAgICBdO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuc2VydmVyLnBvc3QoXG4gICAgICBgQXBwbGljYXRpb24vU2VhcmNoQXBwbGljYXRpb25Sb2xlQ29udGV4dHMvMC8wYCxcbiAgICAgIHBheWxvYWRcbiAgICApO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHJlc3VsdCA9IChyZXMgYXMgUGFnZWRSZXN1bHQ8QXBwbGljYXRpb25Sb2xlQ29udGV4dD4pLlJlc3VsdDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG4gIGFzeW5jIGdldEFsbFJvbGVzKCk6IFByb21pc2U8Um9sZVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgLy8gICB2YXIgcGF5bG9hZDogU2VhcmNoUHJvcGVydHlWYWx1ZVtdID0gW1xuICAgIC8vICAgICB7XG4gICAgLy8gICAgICAgUHJvcGVydHlOYW1lOiAnQVBJS2V5JyxcbiAgICAvLyAgICAgICBFbnRpdHlWYWx1ZTogdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5LFxuICAgIC8vICAgICAgIE9wZXJhdG9yOiBTZWFyY2hPcGVyYXRvci5BbmQsXG4gICAgLy8gICAgICAgU2lnbjogU2VhcmNoUHJvcGVydHlTaWduLkVRXG4gICAgLy8gICAgIH1cbiAgICAvLyBdXG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIuZ2V0KGBSb2xlL0dldFJvbGVzLzAvJHt0aGlzLnBhZ2VTaXplfWApO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYWdlU3RhdGUgPSByZXMgYXMgUGFnZWRSZXN1bHQ8Um9sZT47XG4gICAgICB2YXIgcmVzdWx0ID0gKHJlcyBhcyBQYWdlZFJlc3VsdDxSb2xlPikuUmVzdWx0O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkTW9yZSgpIHtcbiAgICBpZiAoIXRoaXMucGFnZVN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuICAgIGNvbnN0IHJlcyA9XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJzLmxlbmd0aCA+IDAgfHxcbiAgICAgIHRoaXMuY3VycmVudFNvcnRzLmxlbmd0aCA+IDAgfHxcbiAgICAgIHRoaXMuY3VycmVudFNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA+IDBcbiAgICAgICAgPyBhd2FpdCB0aGlzLmxvYWRNb3JlRmlsdGVyc0FuZFNvcnRzKClcbiAgICAgICAgOiBhd2FpdCB0aGlzLnNlcnZlci5nZXQoXG4gICAgICAgICAgICBgUm9sZS9HZXRSb2xlcy8ke3RoaXMucGFnZVN0YXRlLlNraXB9LyR7dGhpcy5wYWdlU2l6ZX1gXG4gICAgICAgICAgKTtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG4gICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYWdlU3RhdGUgPSByZXMgYXMgUGFnZWRSZXN1bHQ8Um9sZT47XG4gICAgICB2YXIgcmVzdWx0ID0gKHJlcyBhcyBQYWdlZFJlc3VsdDxSb2xlPikuUmVzdWx0O1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuc2V0VXBNYXBwZWREYXRhRXh0cmEocmVzdWx0KTtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5jb25jYXQoZGF0YSk7XG4gICAgICB0aGlzLnNldFVwQ2FyZERhdGFFeHRyYShkYXRhKTtcbiAgICB9XG4gIH1cblxuICBnZXRBcHBsaWNhdGlvbkNvbnRleHRDb2RlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMucm9sZUNvbnRleHRzU3RvcmUuZmluZCgoeCkgPT4geC5OYW1lID09IG5hbWUpO1xuICAgIHJldHVybiBpdGVtID8gaXRlbS5Db2RlIDogJyc7XG4gIH1cbiAgZ2V0QXBwbGljYXRpb25BY3Rpb25Db2RlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMucm9sZUFjdGlvbnNTdG9yZS5maW5kKCh4KSA9PiB4Lk5hbWUgPT0gbmFtZSk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLkNvZGUgOiAnJztcbiAgfVxuXG4gIGZpbmRQYXJlbnQoY2FyZERhdGE6IENhcmREYXRhW10sIHRhcmdldDogQ2FyZERhdGEpOiBDYXJkRGF0YSB8IG51bGwge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBjYXJkRGF0YSkge1xuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4uaW5jbHVkZXModGFyZ2V0KSkge1xuICAgICAgICByZXR1cm4gaXRlbTsgLy8gSW1tZWRpYXRlIHBhcmVudCBmb3VuZFxuICAgICAgfVxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5maW5kUGFyZW50KGl0ZW0uY2hpbGRyZW4sIHRhcmdldCk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsOyAvLyBOb3QgZm91bmRcbiAgfVxuXG4gIGlzQ2hlY2tib3hEaXNhYmxlZChpdGVtOiBDYXJkRGF0YSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhcmVudCA9XG4gICAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeURhdGEubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuZmluZFBhcmVudCh0aGlzLmNhcmRDb250ZXh0SGlzdG9yeURhdGFbMF0sIGl0ZW0pXG4gICAgICAgIDogdGhpcy5maW5kUGFyZW50KHRoaXMuY2FyZERhdGEsIGl0ZW0pO1xuICAgIGlmIChcbiAgICAgIHBhcmVudCAmJlxuICAgICAgcGFyZW50LmRhdGEuQ2hpbGRyZW5UeXBlICYmXG4gICAgICBwYXJlbnQuZGF0YS5DaGlsZHJlblR5cGUgPT0gQ2hpbGRyZW5UeXBlLkFjdGlvbiAmJlxuICAgICAgcGFyZW50LmRhdGEuU2VsZWN0ZWQgPT0gZmFsc2VcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzZXRVcE1hcHBlZERhdGEoZGF0YTogUm9sZVtdKSB7XG4gICAgdGhpcy5kYXRhID0gZGF0YS5tYXAoKHgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLngsXG4gICAgICAgIElkOiB4LkNvZGUsXG4gICAgICAgIENoaWxkcmVuVHlwZTogQ2hpbGRyZW5UeXBlLlBlcm1pc3Npb24sXG4gICAgICAgIFJvbGVDb250ZXh0czogdGhpcy5zb3VyY2VEYXRhLm1hcCgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZCA9IHguUm9sZUNvbnRleHRzLmZpbmRJbmRleChcbiAgICAgICAgICAgICh5KSA9PiB5Lk5hbWUgPT0gY29uZmlnLk5hbWVcbiAgICAgICAgICApO1xuICAgICAgICAgIHZhciBjb250ZXh0OiBNYXBwZWRSb2xlQ29udGV4dCA9IHtcbiAgICAgICAgICAgIENoaWxkcmVuVHlwZTogQ2hpbGRyZW5UeXBlLkFjdGlvbixcbiAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0lkID4gLTEgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICBSb2xlQWN0aW9uczogY29uZmlnLkFjdGlvbnMubWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdBY3Rpb24gPVxuICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMVxuICAgICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgICAgKGMpID0+IGMuTmFtZSA9PSBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgOiAtMTtcblxuICAgICAgICAgICAgICB2YXIgYWN0OiBNYXBwZWRSb2xlQWN0aW9uID0ge1xuICAgICAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0FjdGlvbiA+IC0xID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIE5hbWU6IGFjdGlvbixcbiAgICAgICAgICAgICAgICBSb2xlOiB4LkNvZGUsXG4gICAgICAgICAgICAgICAgQ29udGV4dDogJycsXG4gICAgICAgICAgICAgICAgaWQ6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbZXhpc3RpbmdBY3Rpb25dLkNvZGVcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICBJZDpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tleGlzdGluZ0FjdGlvbl0uQ29kZVxuICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgICAgICAgVGVuYW50SWQ6IHguVGVuYW50SWQsXG4gICAgICAgICAgICAgICAgQ29kZTpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tleGlzdGluZ0FjdGlvbl1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5Db2RlXG4gICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgU2VydmljZU5hbWU6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbZXhpc3RpbmdBY3Rpb25dXG4gICAgICAgICAgICAgICAgICAgICAgICAuU2VydmljZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICBBUElLZXk6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbZXhpc3RpbmdBY3Rpb25dXG4gICAgICAgICAgICAgICAgICAgICAgICAuQVBJS2V5XG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5LFxuICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUFjdGlvbjogdGhpcy5nZXRBcHBsaWNhdGlvbkFjdGlvbkNvZGUoYWN0aW9uKSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjdDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgTmFtZTogY29uZmlnLk5hbWUsXG4gICAgICAgICAgICBSb2xlOiB4LkNvZGUsXG4gICAgICAgICAgICBpZDogZXhpc3RpbmdJZCA+IC0xID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uQ29kZSA6ICcnLFxuICAgICAgICAgICAgSWQ6IGV4aXN0aW5nSWQgPiAtMSA/IHguUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkNvZGUgOiAnJyxcbiAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICAgICAgVGVuYW50SWQ6IHguVGVuYW50SWQsXG4gICAgICAgICAgICBDb2RlOiBleGlzdGluZ0lkID4gLTEgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Db2RlIDogJycsXG4gICAgICAgICAgICBTZXJ2aWNlTmFtZTpcbiAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uU2VydmljZU5hbWUgOiAnJyxcbiAgICAgICAgICAgIEFQSUtleTpcbiAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5BUElLZXlcbiAgICAgICAgICAgICAgICA6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUNvbnRleHQ6IHRoaXMuZ2V0QXBwbGljYXRpb25Db250ZXh0Q29kZShjb25maWcuTmFtZSksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgc2V0VXBNYXBwZWREYXRhRXh0cmEoZGF0YTogUm9sZVtdKTogTWFwcGVkUm9sZVtdIHtcbiAgICByZXR1cm4gZGF0YS5tYXAoKHgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLngsXG4gICAgICAgIElkOiB4LkNvZGUsXG4gICAgICAgIENoaWxkcmVuVHlwZTogQ2hpbGRyZW5UeXBlLlBlcm1pc3Npb24sXG4gICAgICAgIFJvbGVDb250ZXh0czogdGhpcy5zb3VyY2VEYXRhLm1hcCgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZCA9IHguUm9sZUNvbnRleHRzLmZpbmRJbmRleChcbiAgICAgICAgICAgICh5KSA9PiB5Lk5hbWUgPT0gY29uZmlnLk5hbWVcbiAgICAgICAgICApO1xuICAgICAgICAgIHZhciBjb250ZXh0OiBNYXBwZWRSb2xlQ29udGV4dCA9IHtcbiAgICAgICAgICAgIENoaWxkcmVuVHlwZTogQ2hpbGRyZW5UeXBlLkFjdGlvbixcbiAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0lkID4gLTEgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICBSb2xlQWN0aW9uczogY29uZmlnLkFjdGlvbnMubWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdBY3Rpb24gPVxuICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMVxuICAgICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAgICAgKGMpID0+IGMuTmFtZSA9PSBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgOiAtMTtcblxuICAgICAgICAgICAgICB2YXIgYWN0OiBNYXBwZWRSb2xlQWN0aW9uID0ge1xuICAgICAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0FjdGlvbiA+IC0xID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIE5hbWU6IGFjdGlvbixcbiAgICAgICAgICAgICAgICBSb2xlOiB4LkNvZGUsXG4gICAgICAgICAgICAgICAgQ29udGV4dDogJycsXG4gICAgICAgICAgICAgICAgaWQ6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbZXhpc3RpbmdBY3Rpb25dLkNvZGVcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICBJZDpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tleGlzdGluZ0FjdGlvbl0uQ29kZVxuICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgICAgICAgVGVuYW50SWQ6IHguVGVuYW50SWQsXG4gICAgICAgICAgICAgICAgQ29kZTpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tleGlzdGluZ0FjdGlvbl1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5Db2RlXG4gICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgU2VydmljZU5hbWU6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbZXhpc3RpbmdBY3Rpb25dXG4gICAgICAgICAgICAgICAgICAgICAgICAuU2VydmljZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICBBUElLZXk6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbZXhpc3RpbmdBY3Rpb25dXG4gICAgICAgICAgICAgICAgICAgICAgICAuQVBJS2V5XG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5LFxuICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUFjdGlvbjogdGhpcy5nZXRBcHBsaWNhdGlvbkFjdGlvbkNvZGUoYWN0aW9uKSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIGFjdDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgTmFtZTogY29uZmlnLk5hbWUsXG4gICAgICAgICAgICBSb2xlOiB4LkNvZGUsXG4gICAgICAgICAgICBpZDogZXhpc3RpbmdJZCA+IC0xID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uQ29kZSA6ICcnLFxuICAgICAgICAgICAgSWQ6IGV4aXN0aW5nSWQgPiAtMSA/IHguUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkNvZGUgOiAnJyxcbiAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICAgICAgVGVuYW50SWQ6IHguVGVuYW50SWQsXG4gICAgICAgICAgICBDb2RlOiBleGlzdGluZ0lkID4gLTEgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Db2RlIDogJycsXG4gICAgICAgICAgICBTZXJ2aWNlTmFtZTpcbiAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xID8geC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uU2VydmljZU5hbWUgOiAnJyxcbiAgICAgICAgICAgIEFQSUtleTpcbiAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgPyB4LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5BUElLZXlcbiAgICAgICAgICAgICAgICA6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUNvbnRleHQ6IHRoaXMuZ2V0QXBwbGljYXRpb25Db250ZXh0Q29kZShjb25maWcuTmFtZSksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzZXRVcENhcmREYXRhKCkge1xuICAgIGNvbnN0IGNhcmREYXRhOiBDYXJkRGF0YVtdID0gdGhpcy5kYXRhLm1hcCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICB0aXRsZTogeC5OYW1lLFxuICAgICAgICBkYXRhOiB4LFxuICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgY2hpbGRyZW46IHguUm9sZUNvbnRleHRzLm1hcCgoYykgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRGb3JtYXR0ZWROYW1lKGMuTmFtZSksXG4gICAgICAgICAgICBkYXRhOiBjLFxuICAgICAgICAgICAgYm9keTogW10sXG4gICAgICAgICAgICBjaGlsZHJlbjogYy5Sb2xlQWN0aW9ucy5tYXAoKGEpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuZ2V0Rm9ybWF0dGVkTmFtZShhLk5hbWUpLFxuICAgICAgICAgICAgICAgIGRhdGE6IGEsXG4gICAgICAgICAgICAgICAgYm9keTogW10sXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuY2FyZERhdGEgPSBjYXJkRGF0YTtcbiAgfVxuICBzZXRVcENhcmREYXRhRXh0cmEoYmFzZURhdGE6IE1hcHBlZFJvbGVbXSkge1xuICAgIGNvbnN0IGNhcmREYXRhOiBDYXJkRGF0YVtdID0gYmFzZURhdGEubWFwKCh4KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIHRpdGxlOiB4Lk5hbWUsXG4gICAgICAgIGRhdGE6IHgsXG4gICAgICAgIGJvZHk6IFtdLFxuICAgICAgICBjaGlsZHJlbjogeC5Sb2xlQ29udGV4dHMubWFwKChjKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmdldEZvcm1hdHRlZE5hbWUoYy5OYW1lKSxcbiAgICAgICAgICAgIGRhdGE6IGMsXG4gICAgICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBjLlJvbGVBY3Rpb25zLm1hcCgoYSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRGb3JtYXR0ZWROYW1lKGEuTmFtZSksXG4gICAgICAgICAgICAgICAgZGF0YTogYSxcbiAgICAgICAgICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy5jYXJkRGF0YSA9IHRoaXMuY2FyZERhdGEuY29uY2F0KGNhcmREYXRhKTtcbiAgfVxuXG4gIGdldEZvcm1hdHRlZE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBTcGxpdCB0aGUga2V5IG9uIGNhcGl0YWwgbGV0dGVycywgaGFuZGxpbmcgXCJBbmRcIiBhcyBsb3dlcmNhc2VcbiAgICBjb25zdCB3b3JkcyA9IG5hbWVcbiAgICAgIC5zcGxpdCgvKD89W0EtWl0pLylcbiAgICAgIC5tYXAoKHdvcmQpID0+ICh3b3JkID09PSAnQW5kJyA/ICdhbmQnIDogd29yZCkpO1xuICAgIC8vIEpvaW4gdGhlIHdvcmRzIHdpdGggc3BhY2VzXG4gICAgcmV0dXJuIHdvcmRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHZpZXdEZXRhaWxzRnJvbVRhYmxlKGRhdGE6IE1hcHBlZFJvbGUpIHtcbiAgICBjb25zdCBjYXJkRGF0YSA9IHRoaXMuY2FyZERhdGEuZmluZCgoeCkgPT4geC5kYXRhID09IGRhdGEpO1xuICAgIGNvbnNvbGUubG9nKHtEYXRhOiBkYXRhfSk7XG4gICAgY29uc29sZS5sb2coe0NhcmREYXRhOiB0aGlzLmNhcmREYXRhfSlcbiAgICBpZiAoY2FyZERhdGEpIHtcbiAgICAgIHRoaXMudmlld0RldGFpbHMoY2FyZERhdGEpO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlUG9wVXAoKTtcbiAgfVxuXG4gIHZpZXdEZXRhaWxzKGNvbnRleHQ6IENhcmREYXRhKSB7XG4gICAgdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkucHVzaChjb250ZXh0KTtcbiAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeURhdGEucHVzaCh0aGlzLmNhcmREYXRhKTtcbiAgICB0aGlzLmNhcmREYXRhID0gY29udGV4dC5jaGlsZHJlbjtcbiAgICB0aGlzLmNhcmREYXRhVmlldy5jbGVhckRhdGEoKTtcbiAgfVxuICB2aWV3RGV0YWlsc0NoaWxkKGNvbnRleHQ6IENhcmREYXRhKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudEV4cGFuZGVkQ2FyZCkge1xuICAgICAgdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkucHVzaCh0aGlzLmN1cnJlbnRFeHBhbmRlZENhcmQpO1xuICAgICAgdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkucHVzaChjb250ZXh0KTtcbiAgICAgIHRoaXMuY2FyZENvbnRleHRIaXN0b3J5RGF0YS5wdXNoKHRoaXMuY2FyZERhdGEpO1xuICAgICAgdGhpcy5jYXJkQ29udGV4dEhpc3RvcnlEYXRhLnB1c2godGhpcy5jdXJyZW50RXhwYW5kZWRDYXJkLmNoaWxkcmVuKTtcbiAgICAgIHRoaXMuY2FyZERhdGEgPSBjb250ZXh0LmNoaWxkcmVuO1xuICAgICAgdGhpcy5jYXJkRGF0YVZpZXcuY2xlYXJEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgcm9sZUNhcmRDbGlja2VkKGl0ZW06IENhcmREYXRhKSB7XG4gICAgdGhpcy5jdXJyZW50RGF0YSA9IHRoaXMuY2FyZERhdGFWaWV3Lm9uSXRlbUNsaWNrKGl0ZW0pO1xuICAgIC8vIGlmICh0aGlzLmN1cnJlbnREYXRhKSB7XG4gICAgLy8gICB0aGlzLmZvcm0uY29udHJvbHNbJ05hbWUnXS5zZXRWYWx1ZSh0aGlzLmN1cnJlbnREYXRhLmRhdGE/Lk5hbWUpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHRvZ2dsZUNoaWxkcmVuKGl0ZW06IENhcmREYXRhKSB7XG4gICAgdmFyIGN1cnJUb2dnbGVTdGF0ZSA9IGl0ZW0uaXNDaGlsZHJlbkV4cGFuZGVkO1xuICAgIHRoaXMuY2FyZERhdGEuZm9yRWFjaCgoXykgPT4ge1xuICAgICAgXy5pc0NoaWxkcmVuRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgICBpdGVtLmlzQ2hpbGRyZW5FeHBhbmRlZCA9ICFjdXJyVG9nZ2xlU3RhdGU7XG4gICAgaWYgKGl0ZW0uaXNDaGlsZHJlbkV4cGFuZGVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRFeHBhbmRlZENhcmQgPSBpdGVtO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRFeHBhbmRlZENhcmQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9UYWJsZVZpZXcoKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnREYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGF0YVZpZXcudG9nZ2xlVmlldygpO1xuICAgIGNvbnN0IGlkID0gdGhpcy5jdXJyZW50RGF0YS5kYXRhID8gdGhpcy5jdXJyZW50RGF0YS5kYXRhLkNvZGUgOiAnJztcbiAgICBpZiAoaWQudHJpbSgpLmxlbmd0aCA+IDAgJiYgIXRoaXMudGFibGVWaWV3LmlzUm93RWRpdGluZyhpZCkpIHtcbiAgICAgIHRoaXMudGFibGVWaWV3LnRvZ2dsZVJvd0VkaXQoaWQpO1xuICAgIH1cbiAgfVxuICBjbG9zZURldGFpbHMoKSB7XG4gICAgdGhpcy5jYXJkRGF0YSA9XG4gICAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeURhdGFbdGhpcy5jYXJkQ29udGV4dEhpc3RvcnlEYXRhLmxlbmd0aCAtIDFdO1xuICAgIHRoaXMuY2FyZENvbnRleHRIaXN0b3J5RGF0YS5wb3AoKTtcbiAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5wb3AoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRhdGFWaWV3LmlzVGFibGVWaWV3KSB7XG4gICAgICAgIHRoaXMuZGF0YVZpZXcudG9nZ2xlVmlldygpO1xuICAgICAgfVxuICAgIH0sIDIwMCk7XG4gIH1cblxuICBnZXRDYXJkU3ViQ2FwdGlvbihpdGVtOiBDYXJkRGF0YSkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gaXRlbS5jaGlsZHJlbi5maWx0ZXIoKHgpID0+IHguZGF0YS5TZWxlY3RlZCkubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsID0gaXRlbS5jaGlsZHJlbi5sZW5ndGg7XG4gICAgcmV0dXJuIGAke3NlbGVjdGVkfSBvZiAke3RvdGFsfSAke1xuICAgICAgdG90YWwgPiAxID8gaXRlbS5kYXRhLkNoaWxkcmVuVHlwZSArICdzJyA6IGl0ZW0uZGF0YS5DaGlsZHJlblR5cGVcbiAgICB9YDtcbiAgfVxuXG4gIGdldFVwZGF0ZWRSb2xlKHJvbGU6IE1hcHBlZFJvbGUpOiBSb2xlIHtcbiAgICBjb25zdCBuZXdSb2xlID0gcm9sZTtcbiAgICBuZXdSb2xlLlJvbGVDb250ZXh0cyA9IHJvbGUuUm9sZUNvbnRleHRzLmZpbHRlcigoeCkgPT4geC5TZWxlY3RlZCkubWFwKFxuICAgICAgKHkpID0+IHtcbiAgICAgICAgeS5Sb2xlQWN0aW9ucyA9IHkuUm9sZUFjdGlvbnMuZmlsdGVyKCh6KSA9PiB6LlNlbGVjdGVkKTtcbiAgICAgICAgcmV0dXJuIHk7XG4gICAgICB9XG4gICAgKTtcbiAgICBuZXdSb2xlLkRhdGFTdGF0ZSA9XG4gICAgICBuZXdSb2xlLkRhdGFTdGF0ZSA9PSBPYmplY3RTdGF0ZS5OZXdcbiAgICAgICAgPyBPYmplY3RTdGF0ZS5OZXdcbiAgICAgICAgOiBPYmplY3RTdGF0ZS5DaGFuZ2VkO1xuICAgIG5ld1JvbGUuSWQgPSAnJztcbiAgICByZXR1cm4gbmV3Um9sZSBhcyBSb2xlO1xuICB9XG4gIGFzeW5jIHNhdmVSb2xlKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnREYXRhKSB7XG4gICAgICB2YXIgcm9sZTogTWFwcGVkUm9sZSA9IHRoaXMuY3VycmVudERhdGEuZGF0YSBhcyBNYXBwZWRSb2xlO1xuICAgICAgLy8gcm9sZS5OYW1lID0gdGhpcy5mb3JtLmNvbnRyb2xzWydOYW1lJ10udmFsdWU7XG4gICAgICBpZiAodGhpcy5jdXJyZW50RGF0YS5kYXRhLk5hbWUudHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd0luZm8oJ1JvbGUgbmFtZSBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbWFwcGVkUm9sZSA9IHRoaXMuZ2V0VXBkYXRlZFJvbGUoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyb2xlKSkpO1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KGBSb2xlL1NhdmVSb2xlc2AsIFttYXBwZWRSb2xlXSk7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93U3VjY2VzcygnUm9sZSBzYXZlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzIGFzIFJvbGVbXTtcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIHJvbGVSZXN1bHQgPSByZXN1bHRbMF07XG4gICAgICAgICAgdmFyIG1hcHBlZFJvbGVTYXZlOiBNYXBwZWRSb2xlID0ge1xuICAgICAgICAgICAgLi4ucm9sZVJlc3VsdCxcbiAgICAgICAgICAgIENoaWxkcmVuVHlwZTogQ2hpbGRyZW5UeXBlLlBlcm1pc3Npb24sXG4gICAgICAgICAgICBSb2xlQ29udGV4dHM6IHRoaXMuc291cmNlRGF0YS5tYXAoKGNvbmZpZykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0lkID0gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgICh5KSA9PiB5Lk5hbWUgPT0gY29uZmlnLk5hbWVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdmFyIGNvbnRleHQ6IE1hcHBlZFJvbGVDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgIENoaWxkcmVuVHlwZTogQ2hpbGRyZW5UeXBlLkFjdGlvbixcbiAgICAgICAgICAgICAgICBTZWxlY3RlZDogZXhpc3RpbmdJZCA+IC0xID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIFJvbGVBY3Rpb25zOiBjb25maWcuQWN0aW9ucy5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdBY3Rpb24gPVxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0lkID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0lkXG4gICAgICAgICAgICAgICAgICAgICAgICBdLlJvbGVBY3Rpb25zLmZpbmRJbmRleCgoYykgPT4gYy5OYW1lID09IGFjdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICA6IC0xO1xuXG4gICAgICAgICAgICAgICAgICB2YXIgYWN0OiBNYXBwZWRSb2xlQWN0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZDogZXhpc3RpbmdBY3Rpb24gPiAtMSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgTmFtZTogYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBSb2xlOiByb2xlUmVzdWx0LkNvZGUsXG4gICAgICAgICAgICAgICAgICAgIENvbnRleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICBpZDpcbiAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0uQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICAgICAgICAgICAgVGVuYW50SWQ6IHJvbGVSZXN1bHQuVGVuYW50SWQsXG4gICAgICAgICAgICAgICAgICAgIENvZGU6XG4gICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgICAgIFNlcnZpY2VOYW1lOlxuICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXS5TZXJ2aWNlTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgQVBJS2V5OlxuICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXS5BUElLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5LFxuICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvblJvbGVBY3Rpb246XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBcHBsaWNhdGlvbkFjdGlvbkNvZGUoYWN0aW9uKSxcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICByZXR1cm4gYWN0O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIE5hbWU6IGNvbmZpZy5OYW1lLFxuICAgICAgICAgICAgICAgIFJvbGU6IHJvbGVSZXN1bHQuQ29kZSxcbiAgICAgICAgICAgICAgICBpZDpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMSA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkNvZGUgOiAnJyxcbiAgICAgICAgICAgICAgICBJZDpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMSA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkNvZGUgOiAnJyxcbiAgICAgICAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICAgICAgICAgIFRlbmFudElkOiByb2xlUmVzdWx0LlRlbmFudElkLFxuICAgICAgICAgICAgICAgIENvZGU6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0lkID4gLTFcbiAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Db2RlXG4gICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgU2VydmljZU5hbWU6XG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0lkID4gLTFcbiAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5TZXJ2aWNlTmFtZVxuICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgIEFQSUtleTpcbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMVxuICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkFQSUtleVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgICAgICAgICAgICBBcHBsaWNhdGlvblJvbGVDb250ZXh0OiB0aGlzLmdldEFwcGxpY2F0aW9uQ29udGV4dENvZGUoXG4gICAgICAgICAgICAgICAgICBjb25maWcuTmFtZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5kYXRhLmZpbmRJbmRleChcbiAgICAgICAgICAgICh4KSA9PiB4ID09IHRoaXMuY3VycmVudERhdGE/LmRhdGFcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChpdGVtSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uQ29kZSA9IG1hcHBlZFJvbGVTYXZlLkNvZGU7XG4gICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5JZCA9IG1hcHBlZFJvbGVTYXZlLkNvZGU7XG4gICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5EYXRhU3RhdGUgPSBtYXBwZWRSb2xlU2F2ZS5EYXRhU3RhdGU7XG4gICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5UZW5hbnRJZCA9IG1hcHBlZFJvbGVTYXZlLlRlbmFudElkO1xuICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uU2VydmljZU5hbWUgPSBtYXBwZWRSb2xlU2F2ZS5TZXJ2aWNlTmFtZTtcbiAgICAgICAgICAgIG1hcHBlZFJvbGVTYXZlLlJvbGVDb250ZXh0cy5mb3JFYWNoKCh4LCBpKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlID0gbWFwcGVkUm9sZVNhdmUuQ29kZTtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLkNvZGUgPSB4LkNvZGU7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5TZXJ2aWNlTmFtZSA9IHguU2VydmljZU5hbWU7XG4gICAgICAgICAgICAgIHguUm9sZUFjdGlvbnMuZm9yRWFjaCgoeSwgaikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlQWN0aW9uc1tqXS5Sb2xlID1cbiAgICAgICAgICAgICAgICAgIG1hcHBlZFJvbGVTYXZlLkNvZGU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLlJvbGVBY3Rpb25zW2pdLkNvZGUgPVxuICAgICAgICAgICAgICAgICAgeS5Db2RlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgIGpcbiAgICAgICAgICAgICAgICBdLlNlcnZpY2VOYW1lID0geS5TZXJ2aWNlTmFtZTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5tYXAoKHgpID0+IHgpO1xuICAgICAgICAgICAgLy8gdGhpcy5jdXJyZW50RGF0YSA9IHtcbiAgICAgICAgICAgIC8vICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICAvLyAgIHRpdGxlOiBtYXBwZWRSb2xlU2F2ZS5OYW1lLFxuICAgICAgICAgICAgLy8gICBkYXRhOiBtYXBwZWRSb2xlU2F2ZSxcbiAgICAgICAgICAgIC8vICAgaXNDaGlsZHJlbkV4cGFuZGVkOiB0aGlzLmN1cnJlbnREYXRhLmlzQ2hpbGRyZW5FeHBhbmRlZCxcbiAgICAgICAgICAgIC8vICAgYm9keTogW10sXG4gICAgICAgICAgICAvLyAgIGNoaWxkcmVuOiBtYXBwZWRSb2xlU2F2ZS5Sb2xlQ29udGV4dHMubWFwKChjKSA9PiB7XG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIC8vICAgICAgIHRpdGxlOiB0aGlzLmdldEZvcm1hdHRlZE5hbWUoYy5OYW1lKSxcbiAgICAgICAgICAgIC8vICAgICAgIGRhdGE6IGMsXG4gICAgICAgICAgICAvLyAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICAgIC8vICAgICAgIGNoaWxkcmVuOiBjLlJvbGVBY3Rpb25zLm1hcCgoYSkgPT4ge1xuICAgICAgICAgICAgLy8gICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLy8gICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIC8vICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRGb3JtYXR0ZWROYW1lKGEuTmFtZSksXG4gICAgICAgICAgICAvLyAgICAgICAgICAgZGF0YTogYSxcbiAgICAgICAgICAgIC8vICAgICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICAgIC8vICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAvLyAgICAgICAgIH07XG4gICAgICAgICAgICAvLyAgICAgICB9KSxcbiAgICAgICAgICAgIC8vICAgICB9O1xuICAgICAgICAgICAgLy8gICB9KSxcbiAgICAgICAgICAgIC8vIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGFzeW5jIHRhYmxlU2F2ZVJvbGUocm9sZTogTWFwcGVkUm9sZSwgY2FsbEJhY2s6ICgpID0+IGFueSkge1xuICAgIGlmIChyb2xlLk5hbWUudHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dJbmZvKCdSb2xlIG5hbWUgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1hcHBlZFJvbGUgPSB0aGlzLmdldFVwZGF0ZWRSb2xlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocm9sZSkpKTtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KGBSb2xlL1NhdmVSb2xlc2AsIFttYXBwZWRSb2xlXSk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1JvbGUgc2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXMgYXMgUm9sZVtdO1xuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciByb2xlUmVzdWx0ID0gcmVzdWx0WzBdO1xuICAgICAgICB2YXIgbWFwcGVkUm9sZVNhdmU6IE1hcHBlZFJvbGUgPSB7XG4gICAgICAgICAgLi4ucm9sZVJlc3VsdCxcbiAgICAgICAgICBDaGlsZHJlblR5cGU6IENoaWxkcmVuVHlwZS5QZXJtaXNzaW9uLFxuICAgICAgICAgIFJvbGVDb250ZXh0czogdGhpcy5zb3VyY2VEYXRhLm1hcCgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0lkID0gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAoeSkgPT4geS5OYW1lID09IGNvbmZpZy5OYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFyIGNvbnRleHQ6IE1hcHBlZFJvbGVDb250ZXh0ID0ge1xuICAgICAgICAgICAgICBDaGlsZHJlblR5cGU6IENoaWxkcmVuVHlwZS5BY3Rpb24sXG4gICAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0lkID4gLTEgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgIFJvbGVBY3Rpb25zOiBjb25maWcuQWN0aW9ucy5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQWN0aW9uID1cbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMVxuICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjKSA9PiBjLk5hbWUgPT0gYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IC0xO1xuXG4gICAgICAgICAgICAgICAgdmFyIGFjdDogTWFwcGVkUm9sZUFjdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0FjdGlvbiA+IC0xID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgTmFtZTogYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgUm9sZTogcm9sZVJlc3VsdC5Db2RlLFxuICAgICAgICAgICAgICAgICAgQ29udGV4dDogJycsXG4gICAgICAgICAgICAgICAgICBpZDpcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBdLkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgICAgSWQ6XG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgXS5Db2RlXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICAgICAgICAgICAgVGVuYW50SWQ6IHJvbGVSZXN1bHQuVGVuYW50SWQsXG4gICAgICAgICAgICAgICAgICBDb2RlOlxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIF0uQ29kZVxuICAgICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgICBTZXJ2aWNlTmFtZTpcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBdLlNlcnZpY2VOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgIEFQSUtleTpcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBdLkFQSUtleVxuICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5LFxuICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25Sb2xlQWN0aW9uOiB0aGlzLmdldEFwcGxpY2F0aW9uQWN0aW9uQ29kZShhY3Rpb24pLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdDtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIE5hbWU6IGNvbmZpZy5OYW1lLFxuICAgICAgICAgICAgICBSb2xlOiByb2xlUmVzdWx0LkNvZGUsXG4gICAgICAgICAgICAgIGlkOiBleGlzdGluZ0lkID4gLTEgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Db2RlIDogJycsXG4gICAgICAgICAgICAgIElkOiBleGlzdGluZ0lkID4gLTEgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Db2RlIDogJycsXG4gICAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICAgICAgVGVuYW50SWQ6IHJvbGVSZXN1bHQuVGVuYW50SWQsXG4gICAgICAgICAgICAgIENvZGU6XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uQ29kZSA6ICcnLFxuICAgICAgICAgICAgICBTZXJ2aWNlTmFtZTpcbiAgICAgICAgICAgICAgICBleGlzdGluZ0lkID4gLTFcbiAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uU2VydmljZU5hbWVcbiAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgIEFQSUtleTpcbiAgICAgICAgICAgICAgICBleGlzdGluZ0lkID4gLTFcbiAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uQVBJS2V5XG4gICAgICAgICAgICAgICAgICA6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgICAgICAgICAgQXBwbGljYXRpb25Sb2xlQ29udGV4dDogdGhpcy5nZXRBcHBsaWNhdGlvbkNvbnRleHRDb2RlKFxuICAgICAgICAgICAgICAgIGNvbmZpZy5OYW1lXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmRhdGEuZmluZEluZGV4KFxuICAgICAgICAgICh4KSA9PiB4ID09IHRoaXMuY3VycmVudERhdGE/LmRhdGFcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XG4gICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uQ29kZSA9IG1hcHBlZFJvbGVTYXZlLkNvZGU7XG4gICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uSWQgPSBtYXBwZWRSb2xlU2F2ZS5Db2RlO1xuICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLkRhdGFTdGF0ZSA9IG1hcHBlZFJvbGVTYXZlLkRhdGFTdGF0ZTtcbiAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5UZW5hbnRJZCA9IG1hcHBlZFJvbGVTYXZlLlRlbmFudElkO1xuICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlNlcnZpY2VOYW1lID0gbWFwcGVkUm9sZVNhdmUuU2VydmljZU5hbWU7XG4gICAgICAgICAgbWFwcGVkUm9sZVNhdmUuUm9sZUNvbnRleHRzLmZvckVhY2goKHgsIGkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlID0gbWFwcGVkUm9sZVNhdmUuQ29kZTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Db2RlID0geC5Db2RlO1xuICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLlNlcnZpY2VOYW1lID0geC5TZXJ2aWNlTmFtZTtcbiAgICAgICAgICAgIHguUm9sZUFjdGlvbnMuZm9yRWFjaCgoeSwgaikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5Sb2xlQ29udGV4dHNbaV0uUm9sZUFjdGlvbnNbal0uUm9sZSA9XG4gICAgICAgICAgICAgICAgbWFwcGVkUm9sZVNhdmUuQ29kZTtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLlJvbGVBY3Rpb25zW2pdLkNvZGUgPSB5LkNvZGU7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlQWN0aW9uc1tqXS5TZXJ2aWNlTmFtZSA9XG4gICAgICAgICAgICAgICAgeS5TZXJ2aWNlTmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5tYXAoKHgpID0+IHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxCYWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZVJvbGVEeW5hbWljKGl0ZW06IENhcmREYXRhKSB7XG4gICAgaWYgKHRoaXMuaXNDaGVja2JveERpc2FibGVkKGl0ZW0pKSB7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dJbmZvKCdQYXJlbnQgVUkgbm90IHNlbGVjdGVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHJvbGU6IENhcmREYXRhIHwgbnVsbCA9XG4gICAgICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5jYXJkQ29udGV4dEhpc3RvcnlbMF1cbiAgICAgICAgOiB0aGlzLmN1cnJlbnRFeHBhbmRlZENhcmRcbiAgICAgICAgPyB0aGlzLmN1cnJlbnRFeHBhbmRlZENhcmRcbiAgICAgICAgOiBudWxsO1xuICAgIHZhciBjYXJkRGF0YVJlZjogQ2FyZERhdGFbXSB8IG51bGwgPVxuICAgICAgdGhpcy5jYXJkQ29udGV4dEhpc3RvcnlEYXRhLmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeURhdGFbMF1cbiAgICAgICAgOiB0aGlzLmN1cnJlbnRFeHBhbmRlZENhcmRcbiAgICAgICAgPyB0aGlzLmNhcmREYXRhXG4gICAgICAgIDogbnVsbDtcbiAgICAvLyBjb25zdCBpc0V4cGFuZGVkQ2FyZDogYm9vbGVhbiA9XG4gICAgLy8gICB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5sZW5ndGggPiAwXG4gICAgLy8gICAgID8gZmFsc2VcbiAgICAvLyAgICAgOiB0aGlzLmN1cnJlbnRFeHBhbmRlZENhcmRcbiAgICAvLyAgICAgPyB0cnVlXG4gICAgLy8gICAgIDogZmFsc2U7XG4gICAgaWYgKCFyb2xlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyb2xlLmRhdGEuTmFtZS50cmltKCkubGVuZ3RoID09IDApIHtcbiAgICAgIGl0ZW0uZGF0YS5TZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93SW5mbygnUm9sZSBuYW1lIGNhbm5vdCBiZSBlbXB0eScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpdGVtLmRhdGEuU2VsZWN0ZWQgPSAhaXRlbS5kYXRhLlNlbGVjdGVkO1xuICAgIGNvbnN0IG1hcHBlZFJvbGUgPSB0aGlzLmdldFVwZGF0ZWRSb2xlKFxuICAgICAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyb2xlLmRhdGEpKVxuICAgICk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChgUm9sZS9TYXZlUm9sZXNgLCBbbWFwcGVkUm9sZV0pO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgaXRlbS5kYXRhLlNlbGVjdGVkID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1JvbGUgc2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXMgYXMgUm9sZVtdO1xuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciByb2xlUmVzdWx0ID0gcmVzdWx0WzBdO1xuICAgICAgICB2YXIgbWFwcGVkUm9sZVNhdmU6IE1hcHBlZFJvbGUgPSB7XG4gICAgICAgICAgLi4ucm9sZVJlc3VsdCxcbiAgICAgICAgICBDaGlsZHJlblR5cGU6IENoaWxkcmVuVHlwZS5QZXJtaXNzaW9uLFxuICAgICAgICAgIFJvbGVDb250ZXh0czogdGhpcy5zb3VyY2VEYXRhLm1hcCgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0lkID0gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHMuZmluZEluZGV4KFxuICAgICAgICAgICAgICAoeSkgPT4geS5OYW1lID09IGNvbmZpZy5OYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFyIGNvbnRleHQ6IE1hcHBlZFJvbGVDb250ZXh0ID0ge1xuICAgICAgICAgICAgICBDaGlsZHJlblR5cGU6IENoaWxkcmVuVHlwZS5BY3Rpb24sXG4gICAgICAgICAgICAgIFNlbGVjdGVkOiBleGlzdGluZ0lkID4gLTEgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgIFJvbGVBY3Rpb25zOiBjb25maWcuQWN0aW9ucy5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQWN0aW9uID1cbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMVxuICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjKSA9PiBjLk5hbWUgPT0gYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IC0xO1xuICAgICAgICAgICAgICAgIHZhciBhY3Q6IE1hcHBlZFJvbGVBY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgICBTZWxlY3RlZDogZXhpc3RpbmdBY3Rpb24gPiAtMSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIE5hbWU6IGFjdGlvbixcbiAgICAgICAgICAgICAgICAgIFJvbGU6IHJvbGVSZXN1bHQuQ29kZSxcbiAgICAgICAgICAgICAgICAgIENvbnRleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgaWQ6XG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgXS5Db2RlXG4gICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgIElkOlxuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvbiA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgPyByb2xlUmVzdWx0LlJvbGVDb250ZXh0c1tleGlzdGluZ0lkXS5Sb2xlQWN0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIF0uQ29kZVxuICAgICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICAgICAgICAgIFRlbmFudElkOiByb2xlUmVzdWx0LlRlbmFudElkLFxuICAgICAgICAgICAgICAgICAgQ29kZTpcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdBY3Rpb24gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uUm9sZUFjdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBdLkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgICAgU2VydmljZU5hbWU6XG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgXS5TZXJ2aWNlTmFtZVxuICAgICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgICBBUElLZXk6XG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQWN0aW9uID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlJvbGVBY3Rpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0FjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgXS5BUElLZXlcbiAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUFjdGlvbjogdGhpcy5nZXRBcHBsaWNhdGlvbkFjdGlvbkNvZGUoYWN0aW9uKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3Q7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBOYW1lOiBjb25maWcuTmFtZSxcbiAgICAgICAgICAgICAgUm9sZTogcm9sZVJlc3VsdC5Db2RlLFxuICAgICAgICAgICAgICBpZDogZXhpc3RpbmdJZCA+IC0xID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uQ29kZSA6ICcnLFxuICAgICAgICAgICAgICBJZDogZXhpc3RpbmdJZCA+IC0xID8gcm9sZVJlc3VsdC5Sb2xlQ29udGV4dHNbZXhpc3RpbmdJZF0uQ29kZSA6ICcnLFxuICAgICAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgICAgIFRlbmFudElkOiByb2xlUmVzdWx0LlRlbmFudElkLFxuICAgICAgICAgICAgICBDb2RlOlxuICAgICAgICAgICAgICAgIGV4aXN0aW5nSWQgPiAtMSA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkNvZGUgOiAnJyxcbiAgICAgICAgICAgICAgU2VydmljZU5hbWU6XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLlNlcnZpY2VOYW1lXG4gICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICBBUElLZXk6XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdJZCA+IC0xXG4gICAgICAgICAgICAgICAgICA/IHJvbGVSZXN1bHQuUm9sZUNvbnRleHRzW2V4aXN0aW5nSWRdLkFQSUtleVxuICAgICAgICAgICAgICAgICAgOiB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXksXG4gICAgICAgICAgICAgIEFwcGxpY2F0aW9uUm9sZUNvbnRleHQ6IHRoaXMuZ2V0QXBwbGljYXRpb25Db250ZXh0Q29kZShcbiAgICAgICAgICAgICAgICBjb25maWcuTmFtZVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSBjYXJkRGF0YVJlZlxuICAgICAgICAgID8gY2FyZERhdGFSZWYuZmluZEluZGV4KCh4KSA9PiB4LmRhdGEgPT0gcm9sZT8uZGF0YSlcbiAgICAgICAgICA6IC0xO1xuICAgICAgICBpZiAoaXRlbUluZGV4ID4gLTEpIHtcbiAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5Db2RlID0gbWFwcGVkUm9sZVNhdmUuQ29kZTtcbiAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5JZCA9IG1hcHBlZFJvbGVTYXZlLkNvZGU7XG4gICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uRGF0YVN0YXRlID0gbWFwcGVkUm9sZVNhdmUuRGF0YVN0YXRlO1xuICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlRlbmFudElkID0gbWFwcGVkUm9sZVNhdmUuVGVuYW50SWQ7XG4gICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uU2VydmljZU5hbWUgPSBtYXBwZWRSb2xlU2F2ZS5TZXJ2aWNlTmFtZTtcbiAgICAgICAgICBtYXBwZWRSb2xlU2F2ZS5Sb2xlQ29udGV4dHMuZm9yRWFjaCgoeCwgaSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLlJvbGUgPSBtYXBwZWRSb2xlU2F2ZS5Db2RlO1xuICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLkNvZGUgPSB4LkNvZGU7XG4gICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5Sb2xlQ29udGV4dHNbaV0uU2VydmljZU5hbWUgPSB4LlNlcnZpY2VOYW1lO1xuICAgICAgICAgICAgeC5Sb2xlQWN0aW9ucy5mb3JFYWNoKCh5LCBqKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVtpdGVtSW5kZXhdLlJvbGVDb250ZXh0c1tpXS5Sb2xlQWN0aW9uc1tqXS5Sb2xlID1cbiAgICAgICAgICAgICAgICBtYXBwZWRSb2xlU2F2ZS5Db2RlO1xuICAgICAgICAgICAgICB0aGlzLmRhdGFbaXRlbUluZGV4XS5Sb2xlQ29udGV4dHNbaV0uUm9sZUFjdGlvbnNbal0uQ29kZSA9IHkuQ29kZTtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzW2ldLlJvbGVBY3Rpb25zW2pdLlNlcnZpY2VOYW1lID1cbiAgICAgICAgICAgICAgICB5LlNlcnZpY2VOYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gdGhpcy5kYXRhW2l0ZW1JbmRleF0uUm9sZUNvbnRleHRzID0gbWFwcGVkUm9sZVNhdmUuUm9sZUNvbnRleHRzO1xuXG4gICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLm1hcCgoeCkgPT4geCk7XG4gICAgICAgICAgLy8gaWYgKGNhcmREYXRhUmVmKSB7XG4gICAgICAgICAgLy8gICBjb25zb2xlLmxvZyh7XG4gICAgICAgICAgLy8gICAgIFhEYXRhSXNIZXJlOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNhcmREYXRhUmVmKSksXG4gICAgICAgICAgLy8gICB9KTtcbiAgICAgICAgICAvLyAgIGNhcmREYXRhUmVmW2l0ZW1JbmRleF0gPSB7XG4gICAgICAgICAgLy8gICAgIHNlbGVjdGVkOiBjYXJkRGF0YVJlZltpdGVtSW5kZXhdLnNlbGVjdGVkLFxuICAgICAgICAgIC8vICAgICBpc0NoaWxkcmVuRXhwYW5kZWQ6IGNhcmREYXRhUmVmW2l0ZW1JbmRleF0uaXNDaGlsZHJlbkV4cGFuZGVkLFxuICAgICAgICAgIC8vICAgICB0aXRsZTogbWFwcGVkUm9sZVNhdmUuTmFtZSxcbiAgICAgICAgICAvLyAgICAgZGF0YTogbWFwcGVkUm9sZVNhdmUsXG4gICAgICAgICAgLy8gICAgIGJvZHk6IFtdLFxuICAgICAgICAgIC8vICAgICBjaGlsZHJlbjogbWFwcGVkUm9sZVNhdmUuUm9sZUNvbnRleHRzLm1hcCgoYykgPT4ge1xuICAgICAgICAgIC8vICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLy8gICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgLy8gICAgICAgICB0aXRsZTogdGhpcy5nZXRGb3JtYXR0ZWROYW1lKGMuTmFtZSksXG4gICAgICAgICAgLy8gICAgICAgICBkYXRhOiBjLFxuICAgICAgICAgIC8vICAgICAgICAgYm9keTogW10sXG4gICAgICAgICAgLy8gICAgICAgICBjaGlsZHJlbjogYy5Sb2xlQWN0aW9ucy5tYXAoKGEpID0+IHtcbiAgICAgICAgICAvLyAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAvLyAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgLy8gICAgICAgICAgICAgdGl0bGU6IHRoaXMuZ2V0Rm9ybWF0dGVkTmFtZShhLk5hbWUpLFxuICAgICAgICAgIC8vICAgICAgICAgICAgIGRhdGE6IGEsXG4gICAgICAgICAgLy8gICAgICAgICAgICAgYm9keTogW10sXG4gICAgICAgICAgLy8gICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgIC8vICAgICAgICAgICB9O1xuICAgICAgICAgIC8vICAgICAgICAgfSksXG4gICAgICAgICAgLy8gICAgICAgfTtcbiAgICAgICAgICAvLyAgICAgfSksXG4gICAgICAgICAgLy8gICB9O1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNhdmVEYXRhQWxsKCkge1xuICAgIGNvbnN0IHJvbGVzOiBSb2xlW10gPSB0aGlzLmRhdGEubWFwKCh4KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi54LFxuICAgICAgICBSb2xlQ29udGV4dHM6IHguUm9sZUNvbnRleHRzLmZpbHRlcigoeSkgPT4geS5TZWxlY3RlZCkubWFwKCh6KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnosXG4gICAgICAgICAgICBSb2xlQWN0aW9uczogei5Sb2xlQWN0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAgIChhKSA9PiBhLlNlbGVjdGVkXG4gICAgICAgICAgICApIGFzIFJvbGVBY3Rpb25bXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSBhcyBSb2xlQ29udGV4dFtdLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVRhYmxlKCkge1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5tYXAoKHgpID0+IHgpO1xuICB9XG5cbiAgb25WaWV3Q2hhbmdlKGlzR3JpZFZpZXc6IGJvb2xlYW4pOiB2b2lkIHt9XG4gIG9uU3RhdGVDaGFuZ2UoZXZlbnQ6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnY3JlYXRlJzpcbiAgICAgICAgdmFyIG5ld01hcHBlZFJvbGU6IE1hcHBlZFJvbGUgPSB7XG4gICAgICAgICAgUm9sZUNvbnRleHRzOiB0aGlzLnNvdXJjZURhdGEubWFwKChjb25maWcpID0+IHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0OiBNYXBwZWRSb2xlQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgQ2hpbGRyZW5UeXBlOiBDaGlsZHJlblR5cGUuQWN0aW9uLFxuICAgICAgICAgICAgICBTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgIFJvbGVBY3Rpb25zOiBjb25maWcuQWN0aW9ucy5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBhY3Q6IE1hcHBlZFJvbGVBY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgICBTZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBOYW1lOiBhY3Rpb24sXG4gICAgICAgICAgICAgICAgICBSb2xlOiAnJyxcbiAgICAgICAgICAgICAgICAgIENvbnRleHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgaWQ6ICcnLFxuICAgICAgICAgICAgICAgICAgSWQ6ICcnLFxuICAgICAgICAgICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgICAgICAgICBUZW5hbnRJZDogJycsXG4gICAgICAgICAgICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgICAgICAgICAgIFNlcnZpY2VOYW1lOiAnJyxcbiAgICAgICAgICAgICAgICAgIEFQSUtleTogdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5LFxuICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25Sb2xlQWN0aW9uOiB0aGlzLmdldEFwcGxpY2F0aW9uQWN0aW9uQ29kZShhY3Rpb24pLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdDtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIE5hbWU6IGNvbmZpZy5OYW1lLFxuICAgICAgICAgICAgICBSb2xlOiAnJyxcbiAgICAgICAgICAgICAgaWQ6ICcnLFxuICAgICAgICAgICAgICBJZDogJycsXG4gICAgICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICAgICAgVGVuYW50SWQ6ICcnLFxuICAgICAgICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgICAgICAgU2VydmljZU5hbWU6ICcnLFxuICAgICAgICAgICAgICBBUElLZXk6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgICAgICAgICAgQXBwbGljYXRpb25Sb2xlQ29udGV4dDogdGhpcy5nZXRBcHBsaWNhdGlvbkNvbnRleHRDb2RlKFxuICAgICAgICAgICAgICAgIGNvbmZpZy5OYW1lXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBDaGlsZHJlblR5cGU6IENoaWxkcmVuVHlwZS5QZXJtaXNzaW9uLFxuICAgICAgICAgIE5hbWU6ICcnLFxuICAgICAgICAgIGlkOiAodGhpcy5jYXJkRGF0YS5sZW5ndGggKyAxKS50b1N0cmluZygpLFxuICAgICAgICAgIElkOiAodGhpcy5jYXJkRGF0YS5sZW5ndGggKyAxKS50b1N0cmluZygpLFxuICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgVGVuYW50SWQ6ICcnLFxuICAgICAgICAgIENvZGU6ICcnLFxuICAgICAgICAgIFNlcnZpY2VOYW1lOiAnJyxcbiAgICAgICAgICBBcHBsaWNhdGlvbjogdGhpcy5hcHBsaWNhdGlvbiA/IHRoaXMuYXBwbGljYXRpb24gOiB1bmRlZmluZWQsXG4gICAgICAgICAgQVBJS2V5OiB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BUElLZXksXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGNhcmREYXRhOiBDYXJkRGF0YSA9IHtcbiAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgdGl0bGU6IG5ld01hcHBlZFJvbGUuTmFtZSxcbiAgICAgICAgICBkYXRhOiBuZXdNYXBwZWRSb2xlLFxuICAgICAgICAgIGJvZHk6IFtdLFxuICAgICAgICAgIGNoaWxkcmVuOiBuZXdNYXBwZWRSb2xlLlJvbGVDb250ZXh0cy5tYXAoKGMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuZ2V0Rm9ybWF0dGVkTmFtZShjLk5hbWUpLFxuICAgICAgICAgICAgICBkYXRhOiBjLFxuICAgICAgICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IGMuUm9sZUFjdGlvbnMubWFwKChhKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmdldEZvcm1hdHRlZE5hbWUoYS5OYW1lKSxcbiAgICAgICAgICAgICAgICAgIGRhdGE6IGEsXG4gICAgICAgICAgICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5jb25jYXQoW25ld01hcHBlZFJvbGVdKTtcbiAgICAgICAgdGhpcy5jYXJkRGF0YS5wdXNoKGNhcmREYXRhKTtcbiAgICAgICAgdGhpcy5yb2xlQ2FyZENsaWNrZWQoY2FyZERhdGEpO1xuICAgICAgICB0aGlzLmRhdGFWaWV3LmlzVGFibGVWaWV3ID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc2hvd1RhYmxlVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuICBvblNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZFJvd3M6IFJvbGVbXSkge31cbiAgcmV0cnlNZXNzYWdlKCkge31cbiAgb25Db2x1bW5zVXBkYXRlZCh1cGRhdGVkQ29sdW1uczogSURhdGFGaWx0ZXJbXSkge1xuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5EZWY6IENvbHVtbkRlZmluaXRpb248TWFwcGVkUm9sZT5bXSA9IFtdO1xuICAgIHVwZGF0ZWRDb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hpbmdDb2wgPSB0aGlzLnJvbGVDb250cm9sU3ZjLnJvbGVDb2x1bW5zLmZpbmQoXG4gICAgICAgIChjb2x1bW4pID0+IGNvbHVtbi5oZWFkZXIgPT09IGNvbC5uYW1lIHx8IGNvbHVtbi5pZCA9PT0gY29sLm5hbWVcbiAgICAgICk7XG4gICAgICBpZiAobWF0Y2hpbmdDb2wpIHtcbiAgICAgICAgdXBkYXRlZENvbHVtbkRlZi5wdXNoKG1hdGNoaW5nQ29sKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudmlzaWJsZUNvbHVtbkRlZiA9IFsuLi51cGRhdGVkQ29sdW1uRGVmXTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUZpbHRlcnNBbmRTb3J0cyhpc1NlYXJjaDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKCFpc1NlYXJjaCkge1xuICAgICAgdGhpcy5kYXRhVmlldy5vbkNsZWFyU2VhcmNoKCk7XG4gICAgICB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtID0gJyc7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBjb25zdCBjbGlja0V2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICB2aWV3OiB3aW5kb3csXG4gICAgICB9KTtcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY2xpY2tFdmVudCk7XG4gICAgfVxuICAgIHZhciBwYXlsb2FkOiBTZWFyY2hQcm9wZXJ0eVZhbHVlW10gPSB0aGlzLmN1cnJlbnRGaWx0ZXJzLm1hcCgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgUHJvcGVydHlOYW1lOiB4Lm5hbWUsXG4gICAgICAgIEVudGl0eVZhbHVlOiB4LnZhbHVlLFxuICAgICAgICBPcGVyYXRvcjogU2VhcmNoT3BlcmF0b3IuQW5kLFxuICAgICAgICBTaWduOlxuICAgICAgICAgIHguY29uZGl0aW9uICYmIE9iamVjdC5rZXlzKERhdGVGaWx0ZXJUeXBlcykuaW5jbHVkZXMoeC5jb25kaXRpb24pXG4gICAgICAgICAgICA/IChEYXRlRmlsdGVyVHlwZXNbXG4gICAgICAgICAgICAgICAgeC5jb25kaXRpb24gYXMga2V5b2YgdHlwZW9mIERhdGVGaWx0ZXJUeXBlc1xuICAgICAgICAgICAgICBdIGFzIHVua25vd24gYXMgU2VhcmNoUHJvcGVydHlTaWduKVxuICAgICAgICAgICAgOiBTZWFyY2hQcm9wZXJ0eVNpZ24uRVEsXG4gICAgICAgIFR5cGU6IFNlYXJjaFByb3BlcnR5VmFsdWVUeXBlLkRhdGUsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHBheWxvYWQucHVzaCh7XG4gICAgICBQcm9wZXJ0eU5hbWU6ICdBUElLZXknLFxuICAgICAgRW50aXR5VmFsdWU6IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkFQSUtleSxcbiAgICAgIE9wZXJhdG9yOiBTZWFyY2hPcGVyYXRvci5BbmQsXG4gICAgICBTaWduOiBTZWFyY2hQcm9wZXJ0eVNpZ24uRVEsXG4gICAgfSk7XG4gICAgZm9yIChsZXQgc29ydCBvZiB0aGlzLmN1cnJlbnRTb3J0cykge1xuICAgICAgcGF5bG9hZC5wdXNoKHtcbiAgICAgICAgUHJvcGVydHlOYW1lOiBzb3J0Lm5hbWUsXG4gICAgICAgIEVudGl0eVZhbHVlOiAnJyxcbiAgICAgICAgT3BlcmF0b3I6IFNlYXJjaE9wZXJhdG9yLkFuZCxcbiAgICAgICAgU2lnbjogU2VhcmNoUHJvcGVydHlTaWduLkVRLFxuICAgICAgICBTb3J0OlxuICAgICAgICAgIHNvcnQudmFsdWUudG9Mb3dlckNhc2UoKSA9PSBTb3J0RGlyZWN0aW9uLkFzYy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICA/IFNvcnREaXJlY3Rpb24uQXNjXG4gICAgICAgICAgICA6IHNvcnQudmFsdWUudG9Mb3dlckNhc2UoKSA9PSBTb3J0RGlyZWN0aW9uLkRlc2MudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgPyBTb3J0RGlyZWN0aW9uLkRlc2NcbiAgICAgICAgICAgIDogU29ydERpcmVjdGlvbi5Ob25lLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHNlYXJjaFRlcm1FeGlzdHMgPSB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtLnRyaW0oKS5sZW5ndGggPiAwO1xuICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKHRydWUpO1xuICAgIGNvbnN0IHJlcyA9IHNlYXJjaFRlcm1FeGlzdHNcbiAgICAgID8gYXdhaXQgdGhpcy5zZXJ2ZXIuZ2V0KFxuICAgICAgICAgIGBSb2xlL0dldFJvbGVzV2l0aFBhcmFtLyR7dGhpcy5jdXJyZW50U2VhcmNoVGVybS50cmltKCl9LzAvJHtcbiAgICAgICAgICAgIHRoaXMucGFnZVNpemVcbiAgICAgICAgICB9YFxuICAgICAgICApXG4gICAgICA6IGF3YWl0IHRoaXMuc2VydmVyLnBvc3QoYFJvbGUvU2VhcmNoUm9sZXMvMC8ke3RoaXMucGFnZVNpemV9YCwgcGF5bG9hZCk7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvclJlc3BvbnNlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJzID0gW107XG4gICAgICB0aGlzLmN1cnJlbnRTb3J0cyA9IFtdO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXJkRGF0YVZpZXcuY2xlYXJEYXRhKCk7XG4gICAgICB0aGlzLmN1cnJlbnREYXRhID0gbnVsbDtcbiAgICAgIHRoaXMucGFnZVN0YXRlID0gcmVzIGFzIFBhZ2VkUmVzdWx0PFJvbGU+O1xuICAgICAgdmFyIHJlc3VsdCA9IChyZXMgYXMgUGFnZWRSZXN1bHQ8Um9sZT4pLlJlc3VsdDtcbiAgICAgIHRoaXMuc2V0VXBNYXBwZWREYXRhKHJlc3VsdCk7XG4gICAgICB0aGlzLnNldFVwQ2FyZERhdGEoKTtcbiAgICB9XG4gIH1cbiAgYXN5bmMgbG9hZE1vcmVGaWx0ZXJzQW5kU29ydHMoKTogUHJvbWlzZTxQYWdlZFJlc3VsdDxSb2xlPiB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5wYWdlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHBheWxvYWQ6IFNlYXJjaFByb3BlcnR5VmFsdWVbXSA9IHRoaXMuY3VycmVudEZpbHRlcnMubWFwKCh4KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBQcm9wZXJ0eU5hbWU6IHgubmFtZSxcbiAgICAgICAgRW50aXR5VmFsdWU6IHgudmFsdWUsXG4gICAgICAgIE9wZXJhdG9yOiBTZWFyY2hPcGVyYXRvci5BbmQsXG4gICAgICAgIFNpZ246XG4gICAgICAgICAgeC5jb25kaXRpb24gJiYgT2JqZWN0LmtleXMoRGF0ZUZpbHRlclR5cGVzKS5pbmNsdWRlcyh4LmNvbmRpdGlvbilcbiAgICAgICAgICAgID8gKERhdGVGaWx0ZXJUeXBlc1tcbiAgICAgICAgICAgICAgICB4LmNvbmRpdGlvbiBhcyBrZXlvZiB0eXBlb2YgRGF0ZUZpbHRlclR5cGVzXG4gICAgICAgICAgICAgIF0gYXMgdW5rbm93biBhcyBTZWFyY2hQcm9wZXJ0eVNpZ24pXG4gICAgICAgICAgICA6IFNlYXJjaFByb3BlcnR5U2lnbi5FUSxcbiAgICAgICAgVHlwZTogU2VhcmNoUHJvcGVydHlWYWx1ZVR5cGUuRGF0ZSxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcGF5bG9hZC5wdXNoKHtcbiAgICAgIFByb3BlcnR5TmFtZTogJ0FQSUtleScsXG4gICAgICBFbnRpdHlWYWx1ZTogdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQVBJS2V5LFxuICAgICAgT3BlcmF0b3I6IFNlYXJjaE9wZXJhdG9yLkFuZCxcbiAgICAgIFNpZ246IFNlYXJjaFByb3BlcnR5U2lnbi5FUSxcbiAgICB9KTtcbiAgICBmb3IgKGxldCBzb3J0IG9mIHRoaXMuY3VycmVudFNvcnRzKSB7XG4gICAgICBwYXlsb2FkLnB1c2goe1xuICAgICAgICBQcm9wZXJ0eU5hbWU6IHNvcnQubmFtZSxcbiAgICAgICAgRW50aXR5VmFsdWU6ICcnLFxuICAgICAgICBPcGVyYXRvcjogU2VhcmNoT3BlcmF0b3IuQW5kLFxuICAgICAgICBTaWduOiBTZWFyY2hQcm9wZXJ0eVNpZ24uRVEsXG4gICAgICAgIFNvcnQ6XG4gICAgICAgICAgc29ydC52YWx1ZS50b0xvd2VyQ2FzZSgpID09IFNvcnREaXJlY3Rpb24uQXNjLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgID8gU29ydERpcmVjdGlvbi5Bc2NcbiAgICAgICAgICAgIDogc29ydC52YWx1ZS50b0xvd2VyQ2FzZSgpID09IFNvcnREaXJlY3Rpb24uRGVzYy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICA/IFNvcnREaXJlY3Rpb24uRGVzY1xuICAgICAgICAgICAgOiBTb3J0RGlyZWN0aW9uLk5vbmUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoVGVybUV4aXN0cyA9IHRoaXMuY3VycmVudFNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gICAgY29uc3QgcmVzID0gc2VhcmNoVGVybUV4aXN0c1xuICAgICAgPyBhd2FpdCB0aGlzLnNlcnZlci5nZXQoXG4gICAgICAgICAgYFJvbGUvR2V0Um9sZXNXaXRoUGFyYW0vJHt0aGlzLmN1cnJlbnRTZWFyY2hUZXJtLnRyaW0oKX0vJHtcbiAgICAgICAgICAgIHRoaXMucGFnZVN0YXRlLlNraXBcbiAgICAgICAgICB9LyR7dGhpcy5wYWdlU2l6ZX1gXG4gICAgICAgIClcbiAgICAgIDogYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChcbiAgICAgICAgICBgUm9sZS9TZWFyY2hSb2xlcy8ke3RoaXMucGFnZVN0YXRlLlNraXB9LyR7dGhpcy5wYWdlU2l6ZX1gLFxuICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG4gICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXN1bHQgPSByZXMgYXMgUGFnZWRSZXN1bHQ8Um9sZT47XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxuICBvbkZpbHRlclVwZGF0ZWQodXBkYXRlZEZpbHRlcnM6IElEYXRhRmlsdGVyW10gfCBzdHJpbmcpIHtcbiAgICAvLyBFbnN1cmUgdXBkYXRlZEZpbHRlcnMgaXMgYW4gYXJyYXlcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh1cGRhdGVkRmlsdGVycykpIHtcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlcnMgPSB1cGRhdGVkRmlsdGVycztcbiAgICAgIHRoaXMudXBkYXRlRmlsdGVyc0FuZFNvcnRzKCk7XG4gICAgfVxuICB9XG4gIG9uU29ydFVwZGF0ZWQodXBkYXRlZFNvcnRzOiBJRGF0YUZpbHRlcltdKSB7XG4gICAgdGhpcy5jdXJyZW50U29ydHMgPSB1cGRhdGVkU29ydHM7XG4gICAgY29uc29sZS5sb2coeyBDdXJyU29ydHM6IHRoaXMuY3VycmVudFNvcnRzIH0pO1xuICAgIHRoaXMudXBkYXRlRmlsdGVyc0FuZFNvcnRzKCk7XG4gIH1cblxuICBoYW5kbGVTZWFyY2goZXZlbnQ6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSkge1xuICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChldmVudC52YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVFeHBvcnQoZXhwb3J0ZWREYXRhOiBQYXJ0aWFsPGFueT5bXSkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdFeHBvcnRlZCBkYXRhOicsIGV4cG9ydGVkRGF0YSk7XG4gICAgdGhpcy5kb3dubG9hZENTVihleHBvcnRlZERhdGEpO1xuICB9XG4gIHByaXZhdGUgZG93bmxvYWRDU1YoZGF0YTogUGFydGlhbDxhbnk+W10pIHtcbiAgICBjb25zdCBoZWFkZXJzID0gT2JqZWN0LmtleXMoZGF0YVswXSk7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFtcbiAgICAgIGhlYWRlcnMuam9pbignLCcpLFxuICAgICAgLi4uZGF0YS5tYXAoKHJvdykgPT4gaGVhZGVycy5tYXAoKGhlYWRlcikgPT4gcm93W2hlYWRlcl0pLmpvaW4oJywnKSksXG4gICAgXS5qb2luKCdcXG4nKTtcblxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbY3N2Q29udGVudF0sIHsgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTg7JyB9KTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGlmIChsaW5rLmRvd25sb2FkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCAnZXhwb3J0LmNzdicpO1xuICAgICAgbGluay5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgbGluay5jbGljaygpO1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICB9XG4gIH1cblxuICBnZXRNb2NrUm9sZXMoKTogUm9sZVtdIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KDEwKS5maWxsKDEpLm1hcCgoaWQsIGkpID0+ICh7XG4gICAgICBJZDogaWQgKyBpLFxuICAgICAgaWQ6IChpZCArIGkpLnRvU3RyaW5nKCksXG4gICAgICBOYW1lOiB0aGlzLm1vY2tOYW1lc1tpXSB8fCAnJyxcbiAgICAgIFJvbGVDb250ZXh0czogdGhpcy5yYW5kb21Db250ZXh0cygpLFxuICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICBUZW5hbnRJZDogYFRlbmFudCR7aWQgKyBpfWAsXG4gICAgICBDb2RlOiAnJyxcbiAgICAgIFNlcnZpY2VOYW1lOiAnJyxcbiAgICAgIEFQSUtleTogJycsXG4gICAgfSkpO1xuICB9XG5cbiAgbW9ja05hbWVzOiBzdHJpbmdbXSA9IFtcbiAgICAnQWRtaW4nLFxuICAgICdTdXBlciBBZG1pbicsXG4gICAgJ01hbmFnZXInLFxuICAgICdJbnRlcm4nLFxuICAgICdQcm9kdWN0aW9uIE1hbmFnZXInLFxuICAgICdDRU8nLFxuICAgICdDVE8nLFxuICAgICdDT08nLFxuICAgICdEZXZlbG9wZXInLFxuICAgICdFbmdpbmVlcicsXG4gIF07XG5cbiAgcmFuZG9tTmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogdGhpcy5tb2NrTmFtZXMubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tb2NrTmFtZXNbcmFuZG9tSW5kZXhdO1xuICB9XG5cbiAgcmFuZG9tQ29udGV4dHMoKTogUm9sZUNvbnRleHRbXSB7XG4gICAgY29uc3QgcmFuZG9tTnVtYmVyID0gTWF0aC5mbG9vcihcbiAgICAgIE1hdGgucmFuZG9tKCkgKiBPYmplY3Qua2V5cyhVSXMpLmxlbmd0aCArIDFcbiAgICApO1xuICAgIHZhciByZXR1cm5BcnJheTogUm9sZUNvbnRleHRbXSA9IFtdO1xuICAgIGNvbnN0IHVzZWRMaXN0OiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZG9tTnVtYmVyOyBpKyspIHtcbiAgICAgIGxldCByYW5kb21JbmRleDtcbiAgICAgIGRvIHtcbiAgICAgICAgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBPYmplY3Qua2V5cyhVSXMpLmxlbmd0aCk7XG4gICAgICB9IHdoaWxlICh1c2VkTGlzdC5pbmNsdWRlcyhyYW5kb21JbmRleCkpO1xuXG4gICAgICByZXR1cm5BcnJheS5wdXNoKHtcbiAgICAgICAgSWQ6ICdjb250ZXh0JyArIGksXG4gICAgICAgIGlkOiAoJ2NvbnRleHQnICsgaSkudG9TdHJpbmcoKSxcbiAgICAgICAgTmFtZTogT2JqZWN0LmtleXMoVUlzKVtyYW5kb21JbmRleF0sXG4gICAgICAgIFJvbGU6ICcnLFxuICAgICAgICBSb2xlQWN0aW9uczogdGhpcy5yYW5kb21BY3Rpb25zKCksXG4gICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgVGVuYW50SWQ6IGBUZW5hbnQkeydjb250ZXh0JyArIGl9YCxcbiAgICAgICAgQ29kZTogJycsXG4gICAgICAgIFNlcnZpY2VOYW1lOiAnJyxcbiAgICAgICAgQVBJS2V5OiAnJyxcbiAgICAgICAgQXBwbGljYXRpb25Sb2xlQ29udGV4dDogJycsXG4gICAgICB9KTtcbiAgICAgIHVzZWRMaXN0LnB1c2gocmFuZG9tSW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0dXJuQXJyYXk7XG4gIH1cblxuICByYW5kb21BY3Rpb25zKCk6IFJvbGVBY3Rpb25bXSB7XG4gICAgY29uc3QgcmFuZG9tTnVtYmVyID0gTWF0aC5mbG9vcihcbiAgICAgIE1hdGgucmFuZG9tKCkgKiBPYmplY3Qua2V5cyhVSUFjdGlvbnMpLmxlbmd0aCArIDFcbiAgICApO1xuICAgIHZhciByZXR1cm5BcnJheTogUm9sZUFjdGlvbltdID0gW107XG4gICAgY29uc3QgdXNlZExpc3Q6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5kb21OdW1iZXI7IGkrKykge1xuICAgICAgbGV0IHJhbmRvbUluZGV4O1xuICAgICAgZG8ge1xuICAgICAgICByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIE9iamVjdC5rZXlzKFVJQWN0aW9ucykubGVuZ3RoKTtcbiAgICAgIH0gd2hpbGUgKHVzZWRMaXN0LmluY2x1ZGVzKHJhbmRvbUluZGV4KSk7XG5cbiAgICAgIHJldHVybkFycmF5LnB1c2goe1xuICAgICAgICBJZDogJ2FjdGlvbicgKyBpLFxuICAgICAgICBpZDogKCdhY3Rpb24nICsgaSkudG9TdHJpbmcoKSxcbiAgICAgICAgTmFtZTogT2JqZWN0LmtleXMoVUlBY3Rpb25zKVtyYW5kb21JbmRleF0sXG4gICAgICAgIFJvbGU6ICcnLFxuICAgICAgICBDb250ZXh0OiAnJyxcbiAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICBUZW5hbnRJZDogYFRlbmFudCR7J2FjdGlvbicgKyBpfWAsXG4gICAgICAgIENvZGU6ICcnLFxuICAgICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICAgIEFQSUtleTogJycsXG4gICAgICAgIEFwcGxpY2F0aW9uUm9sZUFjdGlvbjogJycsXG4gICAgICB9KTtcbiAgICAgIHVzZWRMaXN0LnB1c2gocmFuZG9tSW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0dXJuQXJyYXk7XG4gIH1cblxuICBjbG9zZVBvcFVwKCkge1xuICAgIHRoaXMub3BlbkRyb3Bkb3duSWQgPSBudWxsO1xuICAgIHRoaXMucG9wVXBzLmZvckVhY2goKHBvcFVwKSA9PiB7XG4gICAgICBpZiAocG9wVXAuZHJvcGRvd25PcGVuKSB7XG4gICAgICAgIHBvcFVwLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVJdGVtKHZhbHVlOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgW2tleV06IHZhbHVlLFxuICAgIH07XG4gIH1cblxuICBlZGl0VmFsdWUodmFsdWU6IE1hcHBlZFJvbGUpIHtcbiAgICBjb25zdCBjYXJkID0gdGhpcy5jYXJkRGF0YS5maW5kKCh4KSA9PiB4LmRhdGEuSWQgPT0gdmFsdWUuSWQpO1xuICAgIGlmIChjYXJkICYmIHRoaXMuY2FyZERhdGFWaWV3KSB7XG4gICAgICB0aGlzLmRhdGFWaWV3LnRvZ2dsZVZpZXcoKTtcbiAgICAgIGNhcmQuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jdXJyZW50RGF0YSA9IHRoaXMuY2FyZERhdGFWaWV3Lm9uSXRlbUNsaWNrKGNhcmQpO1xuICAgICAgdGhpcy5jbG9zZVBvcFVwKCk7XG4gICAgICAvLyBpZiAodGhpcy5jdXJyZW50RGF0YSkge1xuICAgICAgLy8gICB0aGlzLmZvcm0uY29udHJvbHNbJ05hbWUnXS5zZXRWYWx1ZSh0aGlzLmN1cnJlbnREYXRhLmRhdGE/Lk5hbWUpO1xuICAgICAgLy8gfVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiAjbWVzc2FnZUxvZyBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTQgbWVzc2FnZS1sb2ctY29udGFpbmVyXCI+XG4gIDxkaXYgKm5nSWY9XCJ0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5sZW5ndGggPiAwXCJcbiAgICBjbGFzcz1cImNvbnRleHQtYmFubmVyIHB5LTMgcHgtNCByb3VuZGVkLXhsIGZsZXggaXRlbS1jZW50ZXIganVzdGlmeS1zcGFjZS1iZXR3ZWVuIGdhcC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIgZmxleC0xIGNvbnRleHQtYmFubmVyLWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZXh0LWNvbnRlbnQgaXRlbXMtY2VudGVyIGZsZXggZ2FwLTJcIiAqbmdGb3I9XCJsZXQgY29udGV4dCBvZiB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeTsgaW5kZXggYXMgaVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGV4dC1tYWluLWNvbnRlbnQtY29udGFpbmVyIGZsZXggZ2FwLTRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRleHQtY2FwdGlvbiBmb250LWJvbGQgdGV4dC1bIzQwNDA0MF1cIj57e2NvbnRleHQuZGF0YS5DaGlsZHJlblR5cGUgJiZcbiAgICAgICAgICAgIGNvbnRleHQuZGF0YS5DaGlsZHJlblR5cGUgPT0gY2hpbGRQZXJtaXNzaW9uUmVmPyBjb250ZXh0LmRhdGEuTmFtZTogY29udGV4dC50aXRsZX19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaSA9PSB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5sZW5ndGggLTFcIlxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZXh0LXN1YmNhcHRpb25cIj57e3RoaXMuZ2V0Q2FyZFN1YkNhcHRpb24oY29udGV4dCl9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpIDwgdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoIC0xXCI+LzwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmRcIj5cbiAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJjbG9zZURldGFpbHMoKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBpY29uPVwiY2xvc2UtY2lyY2xlLWZ1bGxcIiBbd2lkdGhdPVwiMjBcIlxuICAgICAgICBbaGVpZ2h0XT1cIjIwXCI+PC92ZXJiZW4tc3ZnPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPHZlcmJlbi1kYXRhLXZpZXcgI3ZkdiBbdmlld1N0YXRlXT1cIntcbiAgICAgIGlzU2VhcmNoOiB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5sZW5ndGggPT0gMCxcbiAgICAgIGlzQ29sdW1uOiB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5sZW5ndGggPT0gMCxcbiAgICAgIGlzRmlsdGVyOiB0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5sZW5ndGggPT0gMCxcbiAgICAgIGlzU29ydDogdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDAsXG4gICAgICBpc0V4cG9ydDogdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDAsXG4gICAgICBpc1NlbGVjdDogdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDAsXG4gICAgICBpc0NyZWF0ZTogdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDAsXG4gICAgICBpc1RvZ2dsZTp0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5sZW5ndGggPT0gMCxcbiAgICB9XCIgW2J1dHRvbkNsYXNzXT1cIidteS1jdXN0b20tYnV0dG9uLWNsYXNzJ1wiIFtpY29uQ2xhc3NdPVwiJ215LWljb24tY2xhc3MnXCJcbiAgICBbYWN0aXZlSWNvbkNsYXNzXT1cIidteS1hY3RpdmUtaWNvbi1jbGFzcydcIiBbaXNUYWJsZVZpZXddPVwidGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDBcIlxuICAgIFtzZWxlY3RlZENvbHVtbkNvdW50XT1cIjBcIiBbc2VsZWN0ZWRTb3J0Q291bnRdPVwiMFwiIFtzZWxlY3RlZEZpbHRlclRhYmxlQ291bnRdPVwiMFwiICh2aWV3Q2hhbmdlKT1cIm9uVmlld0NoYW5nZSgkZXZlbnQpXCJcbiAgICAoc3RhdGVDaGFuZ2UpPVwib25TdGF0ZUNoYW5nZSgkZXZlbnQpXCIgKG9uU2VhcmNoQ2hhbmdlKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCI+XG4gICAgPGRpdiBjbGFzcz1cIm10LTJcIiB0YWJsZS1jb250ZW50PlxuICAgICAgPGxpYi1kYXRhLXRhYmxlICNkdCBbZGF0YV09XCJkYXRhXCIgW2NvbHVtbnNdPVwidmlzaWJsZUNvbHVtbkRlZlwiIFtzdHlsZUNvbmZpZ109XCJzdHlsZXNcIlxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJzZWxlY3RcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWlzU2VsZWN0ZWQ9XCJpc1NlbGVjdGVkXCIgbGV0LXRvZ2dsZVJvd1NlbGVjdGlvbj1cInRvZ2dsZVJvd1NlbGVjdGlvblwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWRcIiAoY2hhbmdlKT1cInRvZ2dsZVJvd1NlbGVjdGlvbigpXCIgLz5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyIGxldC1hbGxSb3dzU2VsZWN0ZWQ9XCJhbGxSb3dzU2VsZWN0ZWRcIiBsZXQtc29tZVJvd3NTZWxlY3RlZD1cInNvbWVSb3dzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgbGV0LXRvZ2dsZUFsbFJvd3M9XCJ0b2dnbGVBbGxSb3dzXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiYWxsUm93c1NlbGVjdGVkKClcIiBbaW5kZXRlcm1pbmF0ZV09XCJzb21lUm93c1NlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbFJvd3MoKVwiIC8+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiY3JlYXRlZEF0XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC12YWx1ZT5cbiAgICAgICAgICAgIHt7IHZhbHVlIHwgZGF0ZSB9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cInVwZGF0ZWRBdFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtdmFsdWU+XG4gICAgICAgICAgICB7eyB2YWx1ZSB8IGRhdGUgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJuYW1lXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU+XG4gICAgICAgICAgICB7e3ZhbHVlLk5hbWV9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsRWRpdCBsZXQtcm93PVwicm93XCIgbGV0LXVwZGF0ZVZhbHVlPVwidXBkYXRlVmFsdWVcIiBsZXQtdXBkYXRlRGF0YT1cInVwZGF0ZURhdGFcIiBsZXQtdmFsdWU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2lkdGgtbWF4XCI+XG4gICAgICAgICAgICAgIDx2ZXJiZW5hLWlucHV0IFsobmdNb2RlbCldPVwidmFsdWUuTmFtZVwiPjwvdmVyYmVuYS1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCIgbGV0LXRvZ2dsZVJvd0VkaXQ9XCJ0b2dnbGVSb3dFZGl0XCIgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT5cbiAgICAgICAgICAgIDx2ZXJiZW4tcG9wLVVwICNwb3B1cCBbY3VzdG9tU3R5bGVzXT1cInsnei1pbmRleCc6ICc5OSd9XCIgW2VuYWJsZU1vdXNlTGVhdmVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBhY3Rpb25zLWljb25cIiBkcm9wZG93bi10cmlnZ2VyIGljb249XCJsaXN0XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wLXVwLWNvbnRlbnQgZmxleCBmbGV4LWNvbFwiIGRyb3Bkb3duLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidG9nZ2xlUm93RWRpdCgpOyBjbG9zZVBvcFVwKCk7IFwiIGNsYXNzPVwicG9wLXVwLXZhbHVlIGN1cnNvci1wb2ludGVyXCI+RWRpdDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInZpZXdEZXRhaWxzRnJvbVRhYmxlKHZhbHVlKVwiIGNsYXNzPVwicG9wLXVwLXZhbHVlIGN1cnNvci1wb2ludGVyXCI+VmlldyBEZXRhaWxzPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcC11cC12YWx1ZSBjdXJzb3ItcG9pbnRlclwiPlZpZXcgVXNlcnM8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3ZlcmJlbi1wb3AtVXA+XG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwiZWRpdFZhbHVlKHZhbHVlKVwiIGljb249XCJlZGl0XCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInZpZXdEZXRhaWxzRnJvbVRhYmxlKHZhbHVlKVwiIGNsYXNzPVwidmlldy1saW5rcyB2aWV3LWRldGFpbHNcIj52aWV3IGRldGFpbHM8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlldy1saW5rcyB2aWV3LXVzZXJzXCI+dmlldyB1c2Vyczwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbEVkaXQgbGV0LWlzRWRpdGluZz1cImlzRWRpdGluZ1wiIGxldC10b2dnbGVSb3dFZGl0PVwidG9nZ2xlUm93RWRpdFwiIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgaWNvbj1cInRpY2tcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGVTYXZlUm9sZSh2YWx1ZSwgdG9nZ2xlUm93RWRpdClcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJkZWxldGVcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwiY2FyZFZpZXdBbHRcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCIgKGNsaWNrKT1cImVkaXRWYWx1ZSh2YWx1ZSlcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbGliLWRhdGEtdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjYXJkLWNvbnRlbnQ+XG4gICAgICA8dmVyYmVuLWNhcmQtZGF0YS12aWV3IGJvcmRlclJhZGl1cz1cIjEycHhcIiAjdmRjdiBkYXRhSWQ9XCJJZFwiIGJvcmRlcj1cIjVweFwiIFtjYXJkRGF0YUxpc3RdPVwiY2FyZERhdGFcIlxuICAgICAgICByYmdDb2xvcj1cIiNmNWY2ZjlcIiBtZz1cIjBweFwiPlxuICAgICAgICA8dmVyYmVuLWxlZnQtY2FyZC1kYXRhLXZpZXcgY2xhc3M9XCJzcGFjZS15LTdcIj5cbiAgICAgICAgICA8dmVyYmVuLWxlZnQtY2FyZC1kYXRhICN2bGNkIFtwYXJlbnRdPVwidmRjdlwiIGRhdGFJZD1cIk1haWxBZGRyZXNzXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmctc2Vjb25kYXJ5LTEwMCByb3VuZGVkLXhsIGJvcmRlci1wcmltYXJ5IGJvcmRlci1bMXB4XVwiIFtjYXJkRGF0YUxpc3RdPVwiY2FyZERhdGFcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2FyZCBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwicm9sZUNhcmRDbGlja2VkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uZGF0YS5DaGlsZHJlblR5cGUgJiYgaXRlbS5kYXRhLkNoaWxkcmVuVHlwZSA9PSBjaGlsZFBlcm1pc3Npb25SZWZcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBjdXJzb3ItcG9pbnRlciBoLVttYXgtY29udGVudF1cIj5cbiAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCIgKGNsaWNrKT1cInRvZ2dsZUNoaWxkcmVuKGl0ZW0pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aD8ndmlzaWJsZSc6J2ludmlzaWJsZSdcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtcy1jZW50ZXIgZmxleCAgcHItMSBjdXJzb3ItcG9pbnRlclwiIFtpY29uXT1cIml0ZW0uaXNDaGlsZHJlbkV4cGFuZGVkPydtaW51cyc6J3BsdXMnXCIgLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCAgdy1mdWxsIGJnLXNlY29uZGFyeSByb3VuZGVkLXhsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0zIHJvdW5kZWQteGwgcm91bmRlZC10ci1ub25lIHJvdW5kZWQtYnItbm9uZVwiIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPyAnYmctcHJpbWFyeScgOiAnYmctc2Vjb25kYXJ5LTIwMCdcbiAgICAgICAgICAgICAgICAgICAgXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMyBweC00IGZsZXgtMSBoLVsxMDAlXVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBmbGV4LTEgZ2FwLTEganVzdGlmeS1iZXR3ZWVuIGgtWzEwMCVdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC0xIGNhcmQtbWluLWhlaWdodCBqdXN0aWZ5LWJldHdlZW4gaC1bMTAwJV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm15LTAgZm9udC1ib2xkIHRleHQtWyM0MDQwNDBdIGxlYWRpbmctWzE5LjVweF1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRhdGEuTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIiF0ZXh0LVsxMHB4XSBmb250LWxpZ2h0IHRleHQtWyM0MDQwNDBdIGxlYWRpbmctWzEyLjFweF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Z2V0Q2FyZFN1YkNhcHRpb24oaXRlbSl9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWVuZCBoLVsxMDAlXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgKGNsaWNrKT1cInZpZXdEZXRhaWxzKGl0ZW0pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTAgdW5kZXJsaW5lIHRleHQtWyMzNDc5RTldIHRleHQtWzEycHhdIGxlYWRpbmctWzE2LjZweF0gY3Vyc29yLXBvaW50ZXIgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldyBkZXRhaWxzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpdGVtLmRhdGEuQ2hpbGRyZW5UeXBlIHx8IGl0ZW0uZGF0YS5DaGlsZHJlblR5cGUgIT09IGNoaWxkUGVybWlzc2lvblJlZlwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGgtW21heC1jb250ZW50XVwiPlxuICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIFtuZ0NsYXNzXT1cIml0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGg/J3Zpc2libGUnOidpbnZpc2libGUnXCIgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIiAoY2xpY2spPVwidG9nZ2xlQ2hpbGRyZW4oaXRlbSlcIiBjbGFzcz1cIml0ZW1zLWNlbnRlciBmbGV4ICBwci0xIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cIml0ZW0uaXNDaGlsZHJlbkV4cGFuZGVkPydtaW51cyc6J3BsdXMnXCIgLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCAgdy1mdWxsIGJnLXNlY29uZGFyeSByb3VuZGVkLXhsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0zIHJvdW5kZWQteGwgcm91bmRlZC10ci1ub25lIHJvdW5kZWQtYnItbm9uZVwiIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPyAnYmctcHJpbWFyeScgOiAnYmctc2Vjb25kYXJ5LTIwMCdcbiAgICAgICAgICAgICAgICAgICAgXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMyBweC00IGZsZXgtMSBmbGV4IGdhcC0yIGgtWzEwMCVdIGl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIml0ZW0uZGF0YT8uU2VsZWN0ZWQgIT0gdW5kZWZpbmVkXCIgW2Rpc2FibGVkXT1cInRoaXMuaXNDaGVja2JveERpc2FibGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXJcIiBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YS5TZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB0aGlzLnNhdmVSb2xlRHluYW1pYyhpdGVtKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLXN0YXJ0IGZsZXgtMSBnYXAtMSBqdXN0aWZ5LWJldHdlZW4gaC1bMTAwJV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LTEgY2FyZC1taW4taGVpZ2h0IGp1c3RpZnktYmV0d2VlbiBoLVsxMDAlXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibXktMCBmb250LWJvbGQgdGV4dC1bIzQwNDA0MF0gbGVhZGluZy1bMTkuNXB4XVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIhdGV4dC1bMTBweF0gZm9udC1saWdodCB0ZXh0LVsjNDA0MDQwXSBsZWFkaW5nLVsxMi4xcHhdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2dldENhcmRTdWJDYXB0aW9uKGl0ZW0pfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMFwiIGNsYXNzPVwiZmxleCBpdGVtcy1lbmQgaC1bMTAwJV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIChjbGljayk9XCJ2aWV3RGV0YWlscyhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXktMCB1bmRlcmxpbmUgdGV4dC1bIzM0NzlFOV0gdGV4dC1bMTJweF0gbGVhZGluZy1bMTYuNnB4XSBjdXJzb3ItcG9pbnRlciBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3IGRldGFpbHM8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2FyZENoaWxkIGxldC1pdGVtPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBoLVttYXgtY29udGVudF1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCAgdy1mdWxsIGJnLXNlY29uZGFyeSByb3VuZGVkLXhsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0zIHJvdW5kZWQteGwgcm91bmRlZC10ci1ub25lIHJvdW5kZWQtYnItbm9uZVwiIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPyAnYmctcHJpbWFyeScgOiAnYmctc2Vjb25kYXJ5LTIwMCdcbiAgICAgICAgICAgICAgICAgICAgXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMyBweC00IGZsZXgtMSBmbGV4IGdhcC0yIGgtWzEwMCVdIGl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIml0ZW0uZGF0YT8uU2VsZWN0ZWQgIT0gdW5kZWZpbmVkXCIgW2Rpc2FibGVkXT1cInRoaXMuaXNDaGVja2JveERpc2FibGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXJcIiBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YS5TZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB0aGlzLnNhdmVSb2xlRHluYW1pYyhpdGVtKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLXN0YXJ0IGZsZXgtMSBnYXAtMSBqdXN0aWZ5LWJldHdlZW4gaC1bMTAwJV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LTEgY2FyZC1taW4taGVpZ2h0IGp1c3RpZnktYmV0d2VlbiBoLVsxMDAlXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibXktMCBmb250LWJvbGQgdGV4dC1bIzQwNDA0MF0gbGVhZGluZy1bMTkuNXB4XVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIhdGV4dC1bMTBweF0gZm9udC1saWdodCB0ZXh0LVsjNDA0MDQwXSBsZWFkaW5nLVsxMi4xcHhdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2dldENhcmRTdWJDYXB0aW9uKGl0ZW0pfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMFwiIGNsYXNzPVwiZmxleCBpdGVtcy1lbmQgaC1bMTAwJV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIChjbGljayk9XCJ2aWV3RGV0YWlsc0NoaWxkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteS0wIHVuZGVybGluZSB0ZXh0LVsjMzQ3OUU5XSB0ZXh0LVsxMnB4XSBsZWFkaW5nLVsxNi42cHhdIGN1cnNvci1wb2ludGVyIGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcgZGV0YWlsczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdmVyYmVuLWxlZnQtY2FyZC1kYXRhPlxuICAgICAgICA8L3ZlcmJlbi1sZWZ0LWNhcmQtZGF0YS12aWV3PlxuICAgICAgICA8dmVyYmVuLXJpZ2h0LWNhcmQtZGF0YS12aWV3ICpuZ0lmPVwidGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDBcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3BhcmVudD5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLmN1cnJlbnREYXRhXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJvdW5kZWQteGwgaC1mdWxsIHctZnVsbCBqdXN0aWZ5LWJldHdlZW4gcmVsYXRpdmUgc3BhY2UteS00XCI+XG4gICAgICAgICAgICAgIDx2ZXJiZW5hLWlucHV0IG5hbWU9XCJOYW1lXCIgbGFiZWw9XCJOYW1lXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlVGFibGUoKVwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0aGlzLmN1cnJlbnREYXRhLmRhdGEuTmFtZVwiIC8+XG5cbiAgICAgICAgICAgICAgPCEtLSBidXR0b25zIC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gYm90dG9tLTggbGVmdC0wIHJpZ2h0LTBcIj5cbiAgICAgICAgICAgICAgICA8dmVyYmVuYS1idXR0b24gY2xhc3M9XCJ2ZXJiZW4tZGVsZXRlLWJ1dHRvblwiIHRleHQ9XCJEZWxldGVcIj48L3ZlcmJlbmEtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICA8dmVyYmVuYS1idXR0b24gY2xhc3M9XCJ2ZXJiZW4tc3dpdGNoLWJ1dHRvblwiIChjbGljayk9XCJnb1RvVGFibGVWaWV3KClcIlxuICAgICAgICAgICAgICAgICAgICB0ZXh0PVwiU3dpdGNoIFRvIFRhYmxlXCI+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDx2ZXJiZW5hLWJ1dHRvbiBjbGFzcz1cInZlcmJlbi1wcmltYXJ5LWJ1dHRvblwiIChjbGljayk9XCJ0aGlzLnNhdmVSb2xlKClcIiB0ZXh0PVwiU2F2ZVwiPjwvdmVyYmVuYS1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3ZlcmJlbi1yaWdodC1jYXJkLWRhdGEtdmlldz5cbiAgICAgICAgPCEtLSA8dmVyYmVuLXJpZ2h0LWNhcmQtZGF0YS12aWV3PlxuICAgICAgICAgIHllc2hoaGhoaFxuICAgICAgICA8L3ZlcmJlbi1yaWdodC1jYXJkLWRhdGEtdmlldz4gLS0+XG5cbiAgICAgICAgPHZlcmJlbi1jYXJkLWRhdGEtdmlldy1mb290ZXIgKm5nSWY9XCJ0aGlzLmNhcmRDb250ZXh0SGlzdG9yeS5sZW5ndGggPT0gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiF2ZGN2Lmhhc0N1cnJlbnRJdGVtKCkgJiYgdGhpcy5jYXJkQ29udGV4dEhpc3RvcnkubGVuZ3RoID09IDBcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lc3NhZ2UtbG9nLWJ1dHRvbi1jb250YWluZXIgZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgPHZlcmJlbmEtYnV0dG9uIFtmb250V2VpZ2h0XT1cIidib2xkJ1wiIFtiZ0NvbG9yXT1cIicjOEU4RDg3J1wiIFtib3JkZXJSYWRpdXNdPVwiJzRweCdcIiBbdGV4dENvbG9yXT1cIicjZmZmJ1wiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiJ0RlbGV0ZSdcIj5cbiAgICAgICAgICAgICAgPC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgge3t2ZGN2Lmhhc0N1cnJlbnRJdGVtKCk/J2ZsZXgtMSc6Jyd9fSBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgZ2FwLTVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdpbmF0b3ItdGV4dFwiPnt7IGNhcmREYXRhLmxlbmd0aCB9fSByZWNvcmRzIGxvYWRlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibG9hZE1vcmUoKVwiIGNsYXNzPVwibG9hZC1tb3JlIHZpZXctbGlua3NcIj5Mb2FkIG1vcmU8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3ZlcmJlbi1jYXJkLWRhdGEtdmlldy1mb290ZXI+XG4gICAgICA8L3ZlcmJlbi1jYXJkLWRhdGEtdmlldz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNvbHVtbi1jb250ZW50PlxuICAgICAgPHZlcmJlbi12aXNpYmxlLWNvbHVtbiAoY29sdW1uc1VwZGF0ZWQpPVwib25Db2x1bW5zVXBkYXRlZCgkZXZlbnQpXCIgW2JvcmRlcl09XCInMXB4IHNvbGlkIHJnYmEoMjEyLCAxNjAsIDcsIDEpJ1wiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjEwcHhcIiBib3hTaGFkb3c9XCIycHggMnB4IDJweCAwcHggc2lsdmVyXCIgYmdDb2xvcj1cIndoaXRlXCIgd2lkdGg9XCI0MDBweFwiIHRleHRDb2xvcj1cImJsYWNrXCIgcGQ9XCIxcmVtXCJcbiAgICAgICAgcHJpbWFyeUNvbG9yPVwiI0ZGRTY4MVwiIHNlY29uZGFyeUNvbG9yPVwiIzM0NzlFOVwiIFtjb2x1bW5zXT1cInZpc2libGVDb2x1bW5zXCJcbiAgICAgICAgW2Rpc3BsYXllZENvbHVtbnNdPVwiNVwiPjwvdmVyYmVuLXZpc2libGUtY29sdW1uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgZmlsdGVyLWNvbnRlbnQ+XG4gICAgICA8dmVyYmVuLXRhYmxlLWZpbHRlciAoZmlsdGVyc0FwcGxpZWQpPVwib25GaWx0ZXJVcGRhdGVkKCRldmVudClcIiBbYm9yZGVyXT1cIicxcHggc29saWQgcmdiYSgyMTIsIDE2MCwgNywgMSknXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiMTBweFwiIGJveFNoYWRvdz1cIjJweCAycHggMnB4IDBweCBzaWx2ZXJcIiBiZ0NvbG9yPVwid2hpdGVcIiB3aWR0aD1cIjQyMHB4XCIgdGV4dENvbG9yPVwiYmxhY2tcIiBwZD1cIjFyZW1cIlxuICAgICAgICBwcmltYXJ5Q29sb3I9XCIjRkZFNjgxXCIgc2Vjb25kYXJ5Q29sb3I9XCIjMzQ3OUU5XCIgdGVydGlhcnlDb2xvcj1cIiM0MDQwNDBcIiBbZmlsdGVyT3B0aW9uc109XCJmaWx0ZXJBcnJheVwiXG4gICAgICAgIFttYXhGaWx0ZXJMZW5ndGhdPVwiM1wiPjwvdmVyYmVuLXRhYmxlLWZpbHRlcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHNvcnQtY29udGVudD5cbiAgICAgIDx2ZXJiZW4tc29ydC10YWJsZSAoc2VsZWN0ZWRPcHRpb25zKT1cIm9uU29ydFVwZGF0ZWQoJGV2ZW50KVwiIFtib3JkZXJdPVwiJzFweCBzb2xpZCByZ2JhKDIxMiwgMTYwLCA3LCAxKSdcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCIxMHB4XCIgYm94U2hhZG93PVwiMnB4IDJweCAycHggMHB4IHNpbHZlclwiIGJnQ29sb3I9XCJ3aGl0ZVwiIHdpZHRoPVwiNDAwcHhcIiB0ZXh0Q29sb3I9XCJibGFja1wiIHBkPVwiMXJlbVwiXG4gICAgICAgIHByaW1hcnlDb2xvcj1cIiNGRkU2ODFcIiBzZWNvbmRhcnlDb2xvcj1cIiMzNDc5RTlcIiB0ZXJ0aWFyeUNvbG9yPVwiIzQwNDA0MFwiIFtlbmFibGVEcmFnQW5kRHJvcF09XCJ0cnVlXCJcbiAgICAgICAgW3NvcnRPcHRpb25zXT1cInNvcnRPcHRpb25zXCI+PC92ZXJiZW4tc29ydC10YWJsZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGV4cG9ydC1jb250ZW50PlxuICAgICAgPGxpYi1kYXRhLWV4cG9ydCBbZGF0YV09XCJkYXRhXCIgKGV4cG9ydERhdGFFdmVudCk9XCJoYW5kbGVFeHBvcnQoJGV2ZW50KVwiPlxuICAgICAgPC9saWItZGF0YS1leHBvcnQ+XG4gICAgPC9kaXY+XG4gIDwvdmVyYmVuLWRhdGEtdmlldz5cbiAgPGRpdiAqbmdJZj1cInZkdi5pc1RhYmxlVmlld1wiIGNsYXNzPVwiZmxleCBnYXAtMiBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1sb2ctYnV0dG9uLWNvbnRhaW5lciBmbGV4IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPHZlcmJlbmEtYnV0dG9uIFtmb250V2VpZ2h0XT1cIidib2xkJ1wiIFtiZ0NvbG9yXT1cIicjOEU4RDg3J1wiIFtib3JkZXJSYWRpdXNdPVwiJzRweCdcIiBbdGV4dENvbG9yXT1cIicjZmZmJ1wiXG4gICAgICAgIFt0ZXh0XT1cIidEZWxldGUnXCI+XG4gICAgICA8L3ZlcmJlbmEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGl0ZW1zLWNlbnRlciBnYXAtNVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwYWdpbmF0b3ItdGV4dFwiPnt7IGNhcmREYXRhLmxlbmd0aCB9fSByZWNvcmRzIGxvYWRlZDwvc3Bhbj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRNb3JlKClcIiBjbGFzcz1cImxvYWQtbW9yZSB2aWV3LWxpbmtzXCI+TG9hZCBtb3JlPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=