iptdevs-design-system 3.2.8 → 3.2.10

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.
@@ -108,7 +108,6 @@ export class updateUserFormComponent {
108
108
  this.updateUserForm.get('status')?.disable({ emitEvent: false });
109
109
  }
110
110
  else {
111
- // Lista reducida para otros roles
112
111
  this.justifyOptions = [
113
112
  { name: 'Activo', code: 1 },
114
113
  { name: 'Removido', code: 4 }
@@ -212,7 +211,6 @@ export class updateUserFormComponent {
212
211
  }
213
212
  initializeForm() {
214
213
  this.showParentSection = !!this.DataStudent?.cods?.parent?.code;
215
- // this.showEmailIpt = !!this.DataStudent?.email_ipt && this.DataStudent.email_ipt !== false;
216
214
  this.checkRoleForAdditionalFields(this.DataStudent.role);
217
215
  this.initForm();
218
216
  this.populateForm();
@@ -338,9 +336,7 @@ export class updateUserFormComponent {
338
336
  country: this.DataStudent.city?.country,
339
337
  state: this.DataStudent.city?.state,
340
338
  city: this.DataStudent.city?.code,
341
- // role: this.transformRole(this.DataStudent.role) || '',
342
339
  role: this.canEditRole ? this.DataStudent.role : this.transformRole(this.DataStudent.role) || '',
343
- // service_hour: this.DataStudent.service_hour || 0,
344
340
  changePassword: false,
345
341
  password: '',
346
342
  re_password: '',
@@ -354,9 +350,6 @@ export class updateUserFormComponent {
354
350
  else {
355
351
  formValue.service_hour = this.DataStudent.service_hour || 0;
356
352
  }
357
- // if (this.showEmailIpt) {
358
- // formValue.email_ipt = this.DataStudent.email_ipt || '';
359
- // }
360
353
  if (this.showParentSection) {
361
354
  Object.assign(formValue, {
362
355
  parent_name: this.DataStudent.cods?.parent?.name || '',
@@ -557,7 +550,6 @@ export class updateUserFormComponent {
557
550
  selectRole(role) {
558
551
  if (role !== null) {
559
552
  this.updateUserForm.get('role')?.setValue(role);
560
- // Verificar si se deben mostrar los campos adicionales
561
553
  const previousShowEmailIptAndServiceHour = this.showEmailIptAndServiceHour;
562
554
  this.checkRoleForAdditionalFields(role);
563
555
  // Si showEmailIptAndServiceHour cambió, actualizar los validadores
@@ -567,20 +559,23 @@ export class updateUserFormComponent {
567
559
  if (this.showEmailIptAndServiceHour) {
568
560
  // Agregar campos y validadores si no estaban presentes
569
561
  if (!emailIptControl) {
570
- this.updateUserForm.addControl('email_ipt', this.fb.control('', [Validators.required, Validators.email, Validators.maxLength(250)]));
562
+ const emailIptValue = this.DataStudent.email_ipt || '';
563
+ this.updateUserForm.addControl('email_ipt', this.fb.control(emailIptValue, [Validators.required, Validators.email, Validators.maxLength(250)]));
571
564
  }
572
565
  else {
573
566
  emailIptControl.setValidators([Validators.required, Validators.email, Validators.maxLength(250)]);
567
+ emailIptControl.setValue(this.DataStudent.email_ipt || '');
574
568
  }
575
569
  if (!serviceHourControl) {
576
- this.updateUserForm.addControl('service_hour', this.fb.control('', [Validators.required, Validators.pattern(/^[0-9]+$/), Validators.min(0), Validators.max(44)]));
570
+ const serviceHourValue = this.DataStudent.service_hour != null ? this.DataStudent.service_hour : 0; // Usa 0 como fallback
571
+ this.updateUserForm.addControl('service_hour', this.fb.control(serviceHourValue, [Validators.required, Validators.pattern(/^[0-9]+$/), Validators.min(0), Validators.max(44)]));
577
572
  }
578
573
  else {
579
574
  serviceHourControl.setValidators([Validators.required, Validators.pattern(/^[0-9]+$/), Validators.min(0), Validators.max(44)]);
575
+ serviceHourControl.setValue(this.DataStudent.service_hour != null ? this.DataStudent.service_hour : 0);
580
576
  }
581
577
  }
582
578
  else {
583
- // Remover validadores si los campos no son necesarios
584
579
  if (emailIptControl) {
585
580
  emailIptControl.clearValidators();
586
581
  emailIptControl.setValue('');
@@ -590,7 +585,6 @@ export class updateUserFormComponent {
590
585
  serviceHourControl.setValue(0);
591
586
  }
592
587
  }
593
- // Actualizar la validez de los controles
594
588
  emailIptControl?.updateValueAndValidity();
595
589
  serviceHourControl?.updateValueAndValidity();
596
590
  }
@@ -665,7 +659,6 @@ export class updateUserFormComponent {
665
659
  originalValue = this.DataStudent.email || '';
666
660
  break;
667
661
  case 'email_ipt':
668
- // originalValue = this.DataStudent.email_ipt || '';
669
662
  originalValue = this.showEmailIptAndServiceHour ? (this.DataStudent.email_ipt || '') : '';
670
663
  break;
671
664
  case 'gender':
@@ -693,11 +686,9 @@ export class updateUserFormComponent {
693
686
  originalValue = this.DataStudent.city?.code || '';
694
687
  break;
695
688
  case 'role':
696
- // originalValue = this.transformRole(this.DataStudent.role) || '';
697
689
  originalValue = this.canEditRole ? this.DataStudent.role : this.transformRole(this.DataStudent.role) || '';
698
690
  break;
699
691
  case 'service_hour':
700
- // originalValue = this.DataStudent.service_hour || '' ;
701
692
  originalValue = this.showEmailIptAndServiceHour ? (this.DataStudent.service_hour || 0) : 0;
702
693
  break;
703
694
  case 'status':
@@ -746,11 +737,6 @@ export class updateUserFormComponent {
746
737
  this.updateUserForm.hasError('mismatch') ||
747
738
  !this.hasFormChanged()) {
748
739
  this.updateUserForm.markAllAsTouched();
749
- console.log('Validation failed:', {
750
- invalid: this.updateUserForm.invalid,
751
- mismatch: this.updateUserForm.hasError('mismatch'),
752
- hasChanges: this.hasFormChanged()
753
- });
754
740
  return;
755
741
  }
756
742
  this.showConfirmSection = true;
@@ -842,11 +828,6 @@ export class updateUserFormComponent {
842
828
  this.updateUserForm.hasError('mismatch') ||
843
829
  !this.hasFormChanged()) {
844
830
  this.updateUserForm.markAllAsTouched();
845
- console.log('Validation failed:', {
846
- invalid: this.updateUserForm.invalid,
847
- mismatch: this.updateUserForm.hasError('mismatch'),
848
- hasChanges: this.hasFormChanged()
849
- });
850
831
  return;
851
832
  }
852
833
  this.confirmForm.reset();
@@ -891,4 +872,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
891
872
  }], userUpdatedEvent: [{
892
873
  type: Output
893
874
  }] } });
894
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXVzZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy91cGRhdGUtdXNlci1mb3JtL3VwZGF0ZS11c2VyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvdXBkYXRlLXVzZXItZm9ybS91cGRhdGUtdXNlci1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBb0MsTUFBTSxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQTJDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3JGLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBUy9CLE1BQU0sT0FBTyx1QkFBdUI7SUE4Q2xDLFlBQ1UsRUFBZSxFQUNmLEdBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixXQUF3QjtRQUp4QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWpEekIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzNDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHdEQsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQiwyQkFBc0IsR0FBVSxFQUFFLENBQUM7UUFDbkMsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDakIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5Qix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRWxDLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFDcEIsYUFBUSxHQUFVLEVBQUUsQ0FBQztRQUNyQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMsdUJBQWtCLEdBQVUsS0FBSyxDQUFDO1FBQ2xDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLFVBQUssR0FBVSxFQUFFLENBQUM7UUFDbEIsK0JBQTBCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUUzQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUVyQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBRTNCLFlBQU8sR0FBRztZQUNSLEVBQUUsSUFBSSxFQUFFLDJDQUEyQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDOUQsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUNoRCxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQzlDLEVBQUUsSUFBSSxFQUFFLCtCQUErQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDbEQsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUN6QyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ3pDLEVBQUUsSUFBSSxFQUFFLHFDQUFxQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDeEQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7U0FDMUIsQ0FBQztRQVNBLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRTtZQUNuRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDeEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUNPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUMvQixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNwRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixpQ0FBaUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRztnQkFDcEIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQzNCLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ3BDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO2FBQzlCLENBQUM7WUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNsRTthQUFNO1lBQ0wsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUc7Z0JBQ3BCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUMzQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTthQUM5QixDQUFDO1lBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRU8sUUFBUTtRQUNkLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEQsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQ1gsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ2hDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3JDLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQzNDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3ZDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNoQyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN4QyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNyQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN4QyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMxQyxFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNoRCxFQUFFLElBQUksRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUM3QyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNyQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN0QyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDbkMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDekMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDcEMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7YUFDaEMsQ0FBQztTQUNIO2FBQUssSUFBSSxRQUFRLEtBQUssRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQ1gsb0NBQW9DO2dCQUNwQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNyQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN2QyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDaEMsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDeEMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDckMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDM0MsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDeEMsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDMUMsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDaEQsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDN0MsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDckMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDM0MsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDdEMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ25DLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3pDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3BDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2FBQ2hDLENBQUM7U0FDSDthQUFJO1lBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3hELElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDM0IsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDaEMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDbkQscURBQXFEO1lBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsWUFBWTthQUMxQixDQUFDLENBQUMsQ0FBQztTQUNMO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQztRQUNoRSw2RkFBNkY7UUFDN0YsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxFQUFFLENBQUM7UUFFckQsTUFBTSxRQUFRLEdBQUc7WUFDZixJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekYsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkYsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RixPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQ2pELFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDbEIsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNyQixjQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdkIsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDakMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUgsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUN4SixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RCLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVGLGdCQUFnQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDakcsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hELGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlGLHVCQUF1QixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwRCxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BHLGlCQUFpQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hFLHFCQUFxQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdFLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2xFLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUUzRixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFnQixFQUFFLEVBQUU7WUFDckYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUVqRSxJQUFJLE9BQU8sRUFBRTtnQkFDWCxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUc7aUJBQU07Z0JBQ0wsZUFBZSxFQUFFLGVBQWUsRUFBRSxDQUFDO2dCQUNuQyxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsQ0FBQztnQkFDckMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUIsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2pDO1lBRUQsZUFBZSxFQUFFLHNCQUFzQixFQUFFLENBQUM7WUFDMUMsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFlO1FBQ3BDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxRQUFRLEdBQUcsUUFBUSxJQUFJLFVBQVUsSUFBSSxRQUFRLEtBQUssVUFBVSxDQUFDO1FBQ25FLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxPQUF3QjtRQUM1QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUN0RCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFDLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDakM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssWUFBWSxFQUFFO2dCQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ2hDO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBUztRQUNyQixNQUFNLE9BQU8sR0FBOEI7WUFDekMsQ0FBQyxFQUFFLGFBQWE7WUFDaEIsRUFBRSxFQUFFLGlCQUFpQjtZQUNyQixFQUFFLEVBQUUsdUJBQXVCO1lBQzNCLEVBQUUsRUFBRSxtQkFBbUI7WUFDdkIsRUFBRSxFQUFFLFlBQVk7WUFDaEIsRUFBRSxFQUFFLG9CQUFvQjtZQUN4QixFQUFFLEVBQUUsaUJBQWlCO1lBQ3JCLEVBQUUsRUFBRSx1QkFBdUI7WUFDM0IsRUFBRSxFQUFFLG9CQUFvQjtZQUN4QixFQUFFLEVBQUUsc0JBQXNCO1lBQzFCLEVBQUUsRUFBRSw0QkFBNEI7WUFDaEMsRUFBRSxFQUFFLHlCQUF5QjtZQUM3QixFQUFFLEVBQUUsaUJBQWlCO1lBQ3JCLEVBQUUsRUFBRSx1QkFBdUI7WUFDM0IsRUFBRSxFQUFFLGtCQUFrQjtZQUN0QixFQUFFLEVBQUUsZUFBZTtZQUNuQixFQUFFLEVBQUUscUJBQXFCO1lBQ3pCLEVBQUUsRUFBRSxnQkFBZ0I7WUFDcEIsRUFBRSxFQUFFLFdBQVc7U0FDaEIsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV6RCxNQUFNLFNBQVMsR0FBUTtnQkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxFQUFFO2dCQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDbkMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLElBQUk7Z0JBQ3ZDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxFQUFFO2dCQUNqRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksRUFBRTtnQkFDdkMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFO2dCQUN6RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksRUFBRTtnQkFDakQsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU87Z0JBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLO2dCQUNuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSTtnQkFDakMseURBQXlEO2dCQUN6RCxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNoRyxvREFBb0Q7Z0JBQ3BELGNBQWMsRUFBRSxLQUFLO2dCQUNyQixRQUFRLEVBQUUsRUFBRTtnQkFDWixXQUFXLEVBQUUsRUFBRTtnQkFDZixNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksRUFBRTthQUMzQyxDQUFDO1lBRUYsK0JBQStCO1lBQy9CLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO2dCQUNuQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztnQkFDdkQsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7YUFDN0Q7aUJBQU07Z0JBQ0wsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7YUFDN0Q7WUFDRCwyQkFBMkI7WUFDM0IsNERBQTREO1lBQzVELElBQUk7WUFFSixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7b0JBQ3ZCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUU7b0JBQ3RELGdCQUFnQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLElBQUksRUFBRTtvQkFDaEUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksSUFBSSxFQUFFO29CQUN0RSxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sSUFBSSxFQUFFO29CQUM1RCx1QkFBdUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLElBQUksRUFBRTtvQkFDOUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksSUFBSSxFQUFFO29CQUN0RSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxJQUFJLEVBQUU7b0JBQ2xFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLElBQUksRUFBRTtvQkFDMUUsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRTtpQkFDekQsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6RCxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDcEQ7WUFDRCxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDaEQ7WUFDRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDOUM7WUFDRCxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNqRTtZQUNELElBQUksU0FBUyxDQUFDLGdCQUFnQixFQUFFO2dCQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQzlFO1lBQ0QsSUFBSSxTQUFTLENBQUMsdUJBQXVCLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzthQUNuRztZQUNELElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDcEIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO29CQUNuRCxxREFBcUQ7b0JBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUM3RCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7d0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsWUFBWTtxQkFDMUIsQ0FBQyxDQUFDLENBQUM7aUJBQ0w7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7aUJBQ25CO2dCQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM1QztZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FFMUI7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEQsSUFBSSxRQUFRLElBQUksRUFBRSxJQUFJLFFBQVEsSUFBSSxFQUFFLElBQUksUUFBUSxJQUFJLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1NBQ2hDO2FBQUk7WUFDSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsVUFBZTtRQUU1QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFFM0IsSUFBSSxVQUFVLElBQUksQ0FBQyxJQUFJLFVBQVUsSUFBSSxDQUFDLEVBQUU7WUFDdEMsYUFBYSxDQUFDLGFBQWEsQ0FBQztnQkFDMUIsVUFBVSxDQUFDLFFBQVE7Z0JBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzthQUNyQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsYUFBYSxDQUFDLGFBQWEsQ0FBQztnQkFDMUIsVUFBVSxDQUFDLFFBQVE7Z0JBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxhQUFhLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLFVBQWU7UUFDN0MsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN0RDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBVztRQUNyQyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFZO1FBQ3hCLE1BQU0sYUFBYSxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3BGLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtZQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEUsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFO2dCQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO29CQUM1RCxNQUFNLEtBQUssR0FBRyxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssUUFBUTt3QkFDOUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQzt3QkFDOUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7b0JBQ25CLE9BQU8sS0FBSyxLQUFLLGFBQWEsQ0FBQztnQkFDakMsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQzthQUNsQjtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDbEI7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzVFLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDNUI7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRTtZQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUMzRCxNQUFNLFNBQVMsR0FBRyxPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDL0YsT0FBTyxTQUFTLEtBQUssV0FBVyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLE1BQU0sVUFBVSxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hFLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsTUFBVztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUztRQUNsQixJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELHVEQUF1RDtZQUN2RCxNQUFNLGtDQUFrQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztZQUMzRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFeEMsbUVBQW1FO1lBQ25FLElBQUksa0NBQWtDLEtBQUssSUFBSSxDQUFDLDBCQUEwQixFQUFFO2dCQUMxRSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDN0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFFbkUsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7b0JBQ25DLHVEQUF1RDtvQkFDdkQsSUFBSSxDQUFDLGVBQWUsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN0STt5QkFBTTt3QkFDTCxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNuRztvQkFDRCxJQUFJLENBQUMsa0JBQWtCLEVBQUU7d0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNuSzt5QkFBTTt3QkFDTCxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDaEk7aUJBQ0Y7cUJBQU07b0JBQ0wsc0RBQXNEO29CQUN0RCxJQUFJLGVBQWUsRUFBRTt3QkFDbkIsZUFBZSxDQUFDLGVBQWUsRUFBRSxDQUFDO3dCQUNsQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUM5QjtvQkFDRCxJQUFJLGtCQUFrQixFQUFFO3dCQUN0QixrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDckMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNoQztpQkFDRjtnQkFFRCx5Q0FBeUM7Z0JBQ3pDLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO2dCQUMxQyxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO2FBQzlDO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFDO1lBQ3hDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbkUsSUFBSSxlQUFlLEVBQUU7Z0JBQ25CLGVBQWUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDbEMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDN0IsZUFBZSxDQUFDLHNCQUFzQixFQUFFLENBQUM7YUFDMUM7WUFDRCxJQUFJLGtCQUFrQixFQUFFO2dCQUN0QixrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDckMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvQixrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2FBQzdDO1NBQ0Y7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDRCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDL0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFdkQsSUFBSSxZQUFZLENBQUMsY0FBYyxFQUFFO1lBQy9CLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDdkMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQztZQUM1QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1RCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRWpFLElBQ0UsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLGlCQUFpQixFQUFFLEtBQUs7Z0JBQ3hCLFFBQVEsS0FBSyxVQUFVO2dCQUN2QixRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUN2QjtnQkFDQSxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFFRCxNQUFNLGVBQWUsR0FBMEI7WUFDN0MsTUFBTTtZQUNOLFdBQVc7WUFDWCxPQUFPO1lBQ1AsUUFBUTtZQUNSLGNBQWM7WUFDZCxTQUFTO1lBQ1Qsa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxTQUFTO1lBQ1QsT0FBTztZQUNQLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtTQUNULENBQUM7UUFFRixJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRTtZQUNuQyxlQUFlLENBQUMsSUFBSSxDQUNsQixXQUFXLEVBQ1gsY0FBYyxDQUNmLENBQUM7U0FDSDtRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLGVBQWUsQ0FBQyxJQUFJLENBQ2xCLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsY0FBYyxDQUNmLENBQUM7U0FDSDtRQUVELEtBQUssTUFBTSxLQUFLLElBQUksZUFBZSxFQUFFO1lBQ25DLElBQUksYUFBa0IsQ0FBQztZQUN2QixJQUFJLGlCQUFpQixHQUFRLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVqRCxRQUFRLEtBQUssRUFBRTtnQkFDYixLQUFLLE1BQU07b0JBQ1QsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDNUMsTUFBTTtnQkFDUixLQUFLLFdBQVc7b0JBQ2QsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztvQkFDakQsTUFBTTtnQkFDUixLQUFLLE9BQU87b0JBQ1YsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDN0MsTUFBTTtnQkFDUixLQUFLLFdBQVc7b0JBQ2Qsb0RBQW9EO29CQUNwRCxhQUFhLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzFGLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7b0JBQ2hELE1BQU07Z0JBQ1IsS0FBSyxjQUFjO29CQUNqQixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO29CQUNwRCxNQUFNO2dCQUNSLEtBQUssU0FBUztvQkFDWixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO29CQUMvQyxNQUFNO2dCQUNSLEtBQUssa0JBQWtCO29CQUNyQixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7b0JBQ3hELE1BQU07Z0JBQ1IsS0FBSyxjQUFjO29CQUNqQixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO29CQUNwRCxNQUFNO2dCQUNSLEtBQUssU0FBUztvQkFDWixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztvQkFDckQsTUFBTTtnQkFDUixLQUFLLE9BQU87b0JBQ1YsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ25ELE1BQU07Z0JBQ1IsS0FBSyxNQUFNO29CQUNULGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNsRCxNQUFNO2dCQUNSLEtBQUssTUFBTTtvQkFDVCxtRUFBbUU7b0JBQ25FLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDM0csTUFBTTtnQkFDUixLQUFLLGNBQWM7b0JBQ2pCLHdEQUF3RDtvQkFDeEQsYUFBYSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMzRixNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO29CQUNuRCxNQUFNO2dCQUNSLEtBQUssYUFBYTtvQkFDaEIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUMxRCxNQUFNO2dCQUNSLEtBQUssa0JBQWtCO29CQUNyQixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUM7b0JBQy9ELE1BQU07Z0JBQ1IsS0FBSyxxQkFBcUI7b0JBQ3hCLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDO29CQUM1RCxNQUFNO2dCQUNSLEtBQUssZ0JBQWdCO29CQUNuQixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7b0JBQzdELE1BQU07Z0JBQ1IsS0FBSyx5QkFBeUI7b0JBQzVCLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxDQUFDO29CQUN0RSxNQUFNO2dCQUNSLEtBQUsscUJBQXFCO29CQUN4QixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7b0JBQ2xFLE1BQU07Z0JBQ1IsS0FBSyxtQkFBbUI7b0JBQ3RCLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQztvQkFDaEUsTUFBTTtnQkFDUixLQUFLLHVCQUF1QjtvQkFDMUIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLElBQUksRUFBRSxDQUFDO29CQUNwRSxNQUFNO2dCQUNSLEtBQUssY0FBYztvQkFDakIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUMzRCxNQUFNO2dCQUNSO29CQUNFLGFBQWEsR0FBRyxFQUFFLENBQUM7YUFDdEI7WUFFRCxNQUFNLGlCQUFpQixHQUFHLGlCQUFpQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RixNQUFNLGtCQUFrQixHQUFHLGFBQWEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRXJGLElBQUksaUJBQWlCLEtBQUssa0JBQWtCLEVBQUU7Z0JBQzVDLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixJQUNFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTztZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDeEMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQ3RCO1lBQ0EsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ2hDLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87Z0JBQ3BDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ2xELFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO2FBQ2xDLENBQUMsQ0FBQztZQUNILE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFFNUMsTUFBTSxPQUFPLEdBQVE7WUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFO1lBQ3RDLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2dCQUMzQixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7Z0JBQ3BCLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztnQkFDOUIsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZO2dCQUNwQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87Z0JBQzFCLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxnQkFBZ0I7Z0JBQzVDLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWTtnQkFDcEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO2dCQUN0QixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07Z0JBQ3hCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtnQkFDcEIsWUFBWSxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtnQkFDL0QsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNO2dCQUN4QixHQUFHLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDOUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDNUY7WUFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtnQkFDNUIsQ0FBQyxDQUFDO29CQUNFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxJQUFJLElBQUk7b0JBQ2pELElBQUksRUFBRSxTQUFTLENBQUMsV0FBVyxJQUFJLElBQUk7b0JBQ25DLFNBQVMsRUFBRSxTQUFTLENBQUMsZ0JBQWdCLElBQUksSUFBSTtvQkFDN0MsWUFBWSxFQUFFLFNBQVMsQ0FBQyxtQkFBbUIsSUFBSSxJQUFJO29CQUNuRCxPQUFPLEVBQUUsU0FBUyxDQUFDLGNBQWMsSUFBSSxJQUFJO29CQUN6QyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsdUJBQXVCLElBQUksSUFBSTtvQkFDM0QsWUFBWSxFQUFFLFNBQVMsQ0FBQyxtQkFBbUIsSUFBSSxJQUFJO29CQUNuRCxVQUFVLEVBQUUsU0FBUyxDQUFDLGlCQUFpQixJQUFJLElBQUk7b0JBQy9DLGNBQWMsRUFBRSxTQUFTLENBQUMscUJBQXFCLElBQUksSUFBSTtvQkFDdkQsS0FBSyxFQUFFLFNBQVMsQ0FBQyxZQUFZLElBQUksSUFBSTtpQkFDdEM7Z0JBQ0gsQ0FBQyxDQUFDLElBQUk7WUFDUixNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU07WUFDM0IsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO1NBQ3RDLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNuRCxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7b0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ1IsUUFBUSxFQUFFLFFBQVE7d0JBQ2xCLElBQUksRUFBRSxTQUFTO3dCQUNmLEtBQUssRUFBRSx3Q0FBd0M7d0JBQy9DLGlCQUFpQixFQUFFLEtBQUs7d0JBQ3hCLEtBQUssRUFBRSxJQUFJO3FCQUNaLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztpQkFDbkI7cUJBQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7b0JBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ1IsUUFBUSxFQUFFLFFBQVE7d0JBQ2xCLElBQUksRUFBRSxTQUFTO3dCQUNmLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU87d0JBQzVCLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU07d0JBQzFCLGlCQUFpQixFQUFFLEtBQUs7d0JBQ3hCLEtBQUssRUFBRSxJQUFJO3FCQUNaLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN0QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDUixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsSUFBSSxFQUFFLE9BQU87b0JBQ2IsS0FBSyxFQUFFLGlDQUFpQztvQkFDeEMsaUJBQWlCLEVBQUUsS0FBSztvQkFDeEIsS0FBSyxFQUFFLElBQUk7aUJBQ1osQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQ0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPO1lBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUN4QyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFDdEI7WUFDQSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDaEMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTztnQkFDcEMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDbEQsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7YUFDbEMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSw0QkFBNEIsQ0FBQyxJQUFTO1FBQ3BDLE1BQU0sVUFBVSxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXhFLDRHQUE0RztRQUM1RyxNQUFNLDRCQUE0QixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVsRCw2RkFBNkY7UUFDN0YsSUFBSSxDQUFDLDBCQUEwQixHQUFHLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7O29IQXA2QlUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsc01BRnZCLEVBQUUsK0NDYmYsODNrQkFtV087MkZEcFZNLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxzQkFBc0IsYUFHckIsRUFBRTtxTkFHSixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7ICBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvdXNlci1zZXJ2aWNlL3VzZXItc2VydmljZSc7XG5pbXBvcnQgeyAgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL2Jhc2Utc2VydmljZS9iYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgIFBhcmFtZXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3BhcmFtZXRlcnMtc2VydmljZS9wYXJhbWV0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgIElGb3JtRGF0YVJxIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvdXNlci91c2VyLXJxLm1vZGVsJztcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpcHQtdXBkYXRlLXVzZXItZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGRhdGUtdXNlci1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXBkYXRlLXVzZXItZm9ybS5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgdXBkYXRlVXNlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgRGF0YVN0dWRlbnQ6IGFueTtcbiAgQElucHV0KCkgdmlzaWJsZU1vZGFsOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBjbG9zZU1vZGFsSVMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSB1c2VyVXBkYXRlZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICB1cGRhdGVVc2VyRm9ybSE6IEZvcm1Hcm91cDtcbiAgY29uZmlybUZvcm0hOiBGb3JtR3JvdXA7XG4gIHBob3RvOiBzdHJpbmcgPSAnJztcbiAgcGhvbmVOdW1iZXJJbmRpY2F0aXZlczogYW55W10gPSBbXTtcbiAgaWRUeXBlczogYW55W10gPSBbXTtcbiAgbG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHN0YXRlczogYW55ID0gW107XG4gIGNpdGllczogYW55ID0gW107XG4gIGNvdW50cmllczogYW55ID0gW107XG4gIHNob3dQYXJlbnRTZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dFbWFpbElwdDogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93Q29uZmlybVNlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGFyYW1ldGVyc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwYXJhbWV0ZXJzQWxsPzogYW55O1xuICBpbmRpY2F0aXZlczogYW55W10gPSBbXTtcbiAgY2l2aWxTdGF0dXM6IGFueVtdID0gW107XG4gIGdlbmRlcnM6IGFueVtdID0gW107XG4gIHN0cmF0dW1zOiBhbnlbXSA9IFtdO1xuICBzaG93Q29uZmlybURpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICB1c2VyUm9sZUNvbW1lcmNpYWw6Ym9vbGVhbiA9ZmFsc2U7XG4gIGNhbkVkaXRSb2xlOiBib29sZWFuID0gZmFsc2U7XG4gIHJvbGVzOiBhbnlbXSA9IFtdO1xuICBzaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGluaXRpYWxGb3JtVmFsdWU6IGFueSA9IFtdO1xuICBwcml2YXRlIGlkVHlwZVN1YnNjcmlwdGlvbj86ICBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcGVuZGluZ0luaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIGlzU3R1ZGVudDogYm9vbGVhbiA9IGZhbHNlO1xuICBqdXN0aWZ5T3B0aW9uczogYW55W10gPSBbXTtcbiAgXG4gIHJlYXNvbnMgPSBbXG4gICAgeyBuYW1lOiAnQ29ycmVjY2nDs24gZGUgZXJyb3JlcyBlbiBkYXRvcyBwZXJzb25hbGVzJywgY29kZTogMSB9LFxuICAgIHsgbmFtZTogJ0NvcnJlY2Npb24gZGUgZG9jdW1lbnRhY2lvbicsIGNvZGU6IDIgfSxcbiAgICB7IG5hbWU6ICdBY3R1YWxpemFjacOzbiBkZSBjb250YWN0bycsIGNvZGU6IDMgfSxcbiAgICB7IG5hbWU6ICdjb3JyZWNjaW9uIGRhdG9zIGRlIEFjdWRpZW50ZScsIGNvZGU6IDQgfSxcbiAgICB7IG5hbWU6ICdDYW1iaW8gZGUgY29udHJhc2XDsWEnLCBjb2RlOiA1IH0sXG4gICAgeyBuYW1lOiAnQ2FtYmlvIGRlIHJlc2lkZW5jaWEnLCBjb2RlOiA2IH0sXG4gICAgeyBuYW1lOiAnU3VzcGVuc2nDs24gbyByZWFjdGl2YWNpw7NuIGRlIGN1ZW50YScsIGNvZGU6IDcgfSxcbiAgICB7IG5hbWU6ICdPdHJvJywgY29kZTogOCB9XG4gIF07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcGFyYW1ldGVyU2VydmljZTogUGFyYW1ldGVyU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2VTZXJ2aWNlOiBCYXNlU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5zZXRSb2xlcygpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLmluaXRDb25maXJtRm9ybSgpO1xuICAgIHRoaXMudmFsaWRhdGlvblVzZXJSb2xlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdldFBhcmFtZXRlcnMoKTtcbiAgICB0aGlzLnRyYWNrSWRUeXBlQ2hhbmdlcygpO1xuICAgIHRoaXMuc2V0SnVzdGlmeU9wdGlvbnMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sndmlzaWJsZU1vZGFsJ10gJiYgY2hhbmdlc1sndmlzaWJsZU1vZGFsJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzTG9hZGVkKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XG4gICAgICB0aGlzLnNldEp1c3RpZnlPcHRpb25zKCk7XG4gICAgICB0aGlzLnRyYWNrSWRUeXBlQ2hhbmdlcygpO1xuICAgICAgdGhpcy52YWxpZGF0aW9uVXNlclJvbGUoKTtcbiAgICAgIHRoaXMuc2V0Um9sZXMoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1lbHNlICB7XG4gICAgICAgIHRoaXMucGVuZGluZ0luaXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlkVHlwZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5pZFR5cGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBpbml0Q29uZmlybUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgcmVhc29uOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBvYnNlcnZhdGlvbjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjUwKV1dXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldEp1c3RpZnlPcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTdHVkZW50ID0gdGhpcy5EYXRhU3R1ZGVudD8ucm9sZSA9PT0gMTM7XG5cbiAgICBpZiAodGhpcy5pc1N0dWRlbnQpIHtcbiAgICAgIC8vIExpc3RhIGNvbXBsZXRhIHBhcmEgZXN0dWRpYW50ZVxuICAgICAgdGhpcy5qdXN0aWZ5T3B0aW9ucyA9IFtcbiAgICAgICAgeyBuYW1lOiAnQWN0aXZvJywgY29kZTogMSB9LFxuICAgICAgICB7IG5hbWU6ICdTdXNwZW5kaWRvIHAvcGFnbycsIGNvZGU6IDIgfSxcbiAgICAgICAgeyBuYW1lOiAnUGF1c2FkbyBwcm9jZXNvJywgY29kZTogMyB9LFxuICAgICAgICB7IG5hbWU6ICdSZW1vdmlkbycsIGNvZGU6IDQgfVxuICAgICAgXTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdzdGF0dXMnKT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpc3RhIHJlZHVjaWRhIHBhcmEgb3Ryb3Mgcm9sZXNcbiAgICAgIHRoaXMuanVzdGlmeU9wdGlvbnMgPSBbXG4gICAgICAgIHsgbmFtZTogJ0FjdGl2bycsIGNvZGU6IDEgfSxcbiAgICAgICAgeyBuYW1lOiAnUmVtb3ZpZG8nLCBjb2RlOiA0IH1cbiAgICAgIF07XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnc3RhdHVzJyk/LmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRSb2xlcygpOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyUm9sZSA9IHRoaXMuYmFzZVNlcnZpY2UuZ2V0VXNlclJvbGUoKTtcbiAgICBpZiAodXNlclJvbGUgPT09IDEpIHtcbiAgICAgIHRoaXMucm9sZXMgPSBbXG4gICAgICAgIHsgbmFtZTogJ1N1cGVyIEFkbWluJywgY29kZTogMSB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBBY2FkZW1pY28nLCBjb2RlOiAxMCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBBY2FkZW1pY28nLCBjb2RlOiAxMSB9LFxuICAgICAgICB7IG5hbWU6ICdUZWFjaGVyIEFjYWRlbWljbycsIGNvZGU6IDEyIH0sXG4gICAgICAgIHsgbmFtZTogJ0VzdHVkaWFudGUnLCBjb2RlOiAxMyB9LFxuICAgICAgICB7IG5hbWU6ICdQb3NpYmxlIEVzdHVkaWFudGUnLCBjb2RlOiAxNSB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBNYXJrZXRpbmcnLCBjb2RlOiAyMCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBNYXJrZXRpbmcnLCBjb2RlOiAyMSB9LFxuICAgICAgICB7IG5hbWU6ICdBdXhpbGlhciBNYXJrZXRpbmcnLCBjb2RlOiAyMiB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXV4aWxpYXIgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMiB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBDb21lcmNpYWwnLCBjb2RlOiA0MCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBDb21lcmNpYWwnLCBjb2RlOiA0MSB9LFxuICAgICAgICB7IG5hbWU6ICdBc2Vzb3IgQ29tZXJjaWFsJywgY29kZTogNDIgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQ2FydGVyYScsIGNvZGU6IDUwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIENhcnRlcmEnLCBjb2RlOiA1MSB9LFxuICAgICAgICB7IG5hbWU6ICdBc2Vzb3IgQ2FydGVyYScsIGNvZGU6IDUyIH0sXG4gICAgICAgIHsgbmFtZTogJ1Byb3ZlZWRvcicsIGNvZGU6IDYwIH1cbiAgICAgIF07ICAgICAgXG4gICAgfWVsc2UgaWYgKHVzZXJSb2xlID09PSAzMCkge1xuICAgICAgdGhpcy5yb2xlcyA9IFtcbiAgICAgICAgLy8geyBuYW1lOiAnU3VwZXIgQWRtaW4nLCBjb2RlOiAxIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIEFjYWRlbWljbycsIGNvZGU6IDEwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIEFjYWRlbWljbycsIGNvZGU6IDExIH0sXG4gICAgICAgIHsgbmFtZTogJ1RlYWNoZXIgQWNhZGVtaWNvJywgY29kZTogMTIgfSxcbiAgICAgICAgeyBuYW1lOiAnRXN0dWRpYW50ZScsIGNvZGU6IDEzIH0sXG4gICAgICAgIHsgbmFtZTogJ1Bvc2libGUgRXN0dWRpYW50ZScsIGNvZGU6IDE1IH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIE1hcmtldGluZycsIGNvZGU6IDIwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIE1hcmtldGluZycsIGNvZGU6IDIxIH0sXG4gICAgICAgIHsgbmFtZTogJ0F1eGlsaWFyIE1hcmtldGluZycsIGNvZGU6IDIyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMSB9LFxuICAgICAgICB7IG5hbWU6ICdBdXhpbGlhciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIENvbWVyY2lhbCcsIGNvZGU6IDQwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIENvbWVyY2lhbCcsIGNvZGU6IDQxIH0sXG4gICAgICAgIHsgbmFtZTogJ0FzZXNvciBDb21lcmNpYWwnLCBjb2RlOiA0MiB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBDYXJ0ZXJhJywgY29kZTogNTAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQ2FydGVyYScsIGNvZGU6IDUxIH0sXG4gICAgICAgIHsgbmFtZTogJ0FzZXNvciBDYXJ0ZXJhJywgY29kZTogNTIgfSxcbiAgICAgICAgeyBuYW1lOiAnUHJvdmVlZG9yJywgY29kZTogNjAgfVxuICAgICAgXTsgXG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnJvbGVzID0gW107XG4gICAgfVxuICB9XG5cbiAgZ2V0UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzTG9hZGVkKSB7XG4gICAgICB0aGlzLnNldFBhcmFtZXRlcnMoKTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wYXJhbWV0ZXJTZXJ2aWNlLmdldEFsbFBhcmFtZXRlcnNDb2RGb3JtKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnNBbGwgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnNMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xuICAgICAgICB0aGlzLnRyYWNrSWRUeXBlQ2hhbmdlcygpO1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25Vc2VyUm9sZSgpO1xuICAgICAgICB0aGlzLnNldFJvbGVzKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nSW5pdCA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHBhcmFtZXRlcnM6JywgZXJyKTtcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzTG9hZGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuaWRUeXBlcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uVHlwZUlkQ2FyZEJ5Q291bnRyeUNvbDtcbiAgICB0aGlzLmluZGljYXRpdmVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5pbmRpY2F0aXZlcztcbiAgICB0aGlzLmNvdW50cmllcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uY291bnRyeTtcbiAgICB0aGlzLmNpdmlsU3RhdHVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5jaXZpbFN0YXR1cztcbiAgICB0aGlzLnN0YXRlcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uU3RhdGU7XG4gICAgdGhpcy5jaXRpZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmNpdHk7XG4gICAgaWYgKHRoaXMucGFyYW1ldGVyc0FsbCAmJiB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyKSB7XG4gICAgICAvLyBUcmFuc2Zvcm1hciBnZW5kZXIgZW4gdW4gYXJyZWdsbyBkZSB7IGNvZGUsIG5hbWUgfVxuICAgICAgdGhpcy5nZW5kZXJzID0gdGhpcy5wYXJhbWV0ZXJzQWxsLmdlbmRlci5tYXAoKGdlbmRlcjogYW55KSA9PiAoe1xuICAgICAgICBjb2RlOiBnZW5kZXIuY29kZSxcbiAgICAgICAgbmFtZTogZ2VuZGVyLm5hbWVfc3BhbmlzaFxuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdlbmRlcnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1BhcmVudFNlY3Rpb24gPSAhIXRoaXMuRGF0YVN0dWRlbnQ/LmNvZHM/LnBhcmVudD8uY29kZTtcbiAgICAvLyB0aGlzLnNob3dFbWFpbElwdCA9ICEhdGhpcy5EYXRhU3R1ZGVudD8uZW1haWxfaXB0ICYmIHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0ICE9PSBmYWxzZTtcbiAgICB0aGlzLmNoZWNrUm9sZUZvckFkZGl0aW9uYWxGaWVsZHModGhpcy5EYXRhU3R1ZGVudC5yb2xlKTtcbiAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgdGhpcy5wb3B1bGF0ZUZvcm0oKTtcbiAgfVxuXG4gIGluaXRGb3JtKCk6IHZvaWQge1xuICAgIGNvbnN0IHVzZXJSb2xlID0gdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyUm9sZSgpO1xuICAgIHRoaXMuY2FuRWRpdFJvbGUgPSB1c2VyUm9sZSA9PT0gMSB8fCB1c2VyUm9sZSA9PT0gMzA7XG5cbiAgICBjb25zdCBiYXNlRm9ybSA9IHtcbiAgICAgIG5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMildXSxcbiAgICAgIGxhc3RfbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV1dLFxuICAgICAgZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1MCldXSxcbiAgICAgIGdlbmRlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgaWRfY2FyZF90eXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBpZF9jYXJkOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjApXV0sXG4gICAgICBwaG9uZV9pbmRpY2F0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBwaG9uZV9udW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTUpXV0sXG4gICAgICBjb3VudHJ5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBzdGF0ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgY2l0eTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgcm9sZTogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogIXRoaXMuY2FuRWRpdFJvbGV9XSxcbiAgICAgIHBhc3N3b3JkOiBbJycsIFtdXSxcbiAgICAgIHJlX3Bhc3N3b3JkOiBbJycsIFtdXSxcbiAgICAgIGNoYW5nZVBhc3N3b3JkOiBbZmFsc2VdLFxuICAgICAgc3RhdHVzOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZW1haWxfaXB0OiBbJycsIHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjUwKV0gOiBbXV0sXG4gICAgICBzZXJ2aWNlX2hvdXI6IFsnJywgdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSskLyksIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCg0NCldIDogW11dXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnNob3dQYXJlbnRTZWN0aW9uKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGJhc2VGb3JtLCB7XG4gICAgICAgIHBhcmVudF9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTUwKV1dLFxuICAgICAgICBwYXJlbnRfbGFzdF9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTUwKV1dLFxuICAgICAgICBwYXJlbnRfaWRfY2FyZF90eXBlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgIHBhcmVudF9pZF9jYXJkOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzApXV0sXG4gICAgICAgIHBhcmVudF9waG9uZV9pbmRpY2F0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgIHBhcmVudF9waG9uZV9udW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjApXV0sXG4gICAgICAgIHBhcmVudF9vY2N1cGF0aW9uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldXSxcbiAgICAgICAgcGFyZW50X29mZmljZV9hZHJyZXNzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNTApXV0sXG4gICAgICAgIHBhcmVudF9lbWFpbDogWycnLCBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU1KV1dXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtID0gdGhpcy5mYi5ncm91cChiYXNlRm9ybSwgeyB2YWxpZGF0b3JzOiB0aGlzLnBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnY2hhbmdlUGFzc3dvcmQnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgICAgY29uc3QgcGFzc3dvcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3Bhc3N3b3JkJyk7XG4gICAgICBjb25zdCByZVBhc3N3b3JkQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyZV9wYXNzd29yZCcpO1xuXG4gICAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgICBwYXNzd29yZENvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMildKTtcbiAgICAgICAgcmVQYXNzd29yZENvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMildKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhc3N3b3JkQ29udHJvbD8uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHJlUGFzc3dvcmRDb250cm9sPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgcGFzc3dvcmRDb250cm9sPy5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHJlUGFzc3dvcmRDb250cm9sPy5zZXRWYWx1ZSgnJyk7XG4gICAgICB9XG5cbiAgICAgIHBhc3N3b3JkQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgcmVQYXNzd29yZENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdwYXNzd29yZCcpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyZV9wYXNzd29yZCcpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcGFzc3dvcmRNYXRjaFZhbGlkYXRvcihmb3JtOiBGb3JtR3JvdXApOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwge1xuICAgIGNvbnN0IGNoYW5nZVBhc3N3b3JkID0gZm9ybS5nZXQoJ2NoYW5nZVBhc3N3b3JkJyk/LnZhbHVlO1xuICAgIGNvbnN0IHBhc3N3b3JkID0gZm9ybS5nZXQoJ3Bhc3N3b3JkJyk/LnZhbHVlO1xuICAgIGNvbnN0IHJlUGFzc3dvcmQgPSBmb3JtLmdldCgncmVfcGFzc3dvcmQnKT8udmFsdWU7XG4gICAgaWYgKCFjaGFuZ2VQYXNzd29yZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IG1pc21hdGNoID0gcGFzc3dvcmQgJiYgcmVQYXNzd29yZCAmJiBwYXNzd29yZCAhPT0gcmVQYXNzd29yZDtcbiAgICByZXR1cm4gbWlzbWF0Y2ggPyB7IG1pc21hdGNoOiB0cnVlIH0gOiBudWxsO1xuICB9XG5cbiAgbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgdHlwZW9mIGNvbnRyb2wudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB0cmltbWVkVmFsdWUgPSBjb250cm9sLnZhbHVlLnRyaW0oKTtcbiAgICAgIGlmICh0cmltbWVkVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7IG9ubHlXaGl0ZXNwYWNlOiB0cnVlIH07XG4gICAgICB9XG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gdHJpbW1lZFZhbHVlKSB7XG4gICAgICAgIHJldHVybiB7IGhhc1doaXRlc3BhY2U6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cmFuc2Zvcm1Sb2xlKHJvbGU6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm9sZU1hcDogeyBba2V5OiBudW1iZXJdOiBzdHJpbmcgfSA9IHtcbiAgICAgIDE6ICdTdXBlciBBZG1pbicsXG4gICAgICAxMDogJ0xpZGVyIEFjYWRlbWljbycsXG4gICAgICAxMTogJ0Nvb3JkaW5hZG9yIEFjYWRlbWljbycsXG4gICAgICAxMjogJ1RlYWNoZXIgQWNhZGVtaWNvJyxcbiAgICAgIDEzOiAnRXN0dWRpYW50ZScsXG4gICAgICAxNTogJ1Bvc2libGUgRXN0dWRpYW50ZScsXG4gICAgICAyMDogJ0xpZGVyIE1hcmtldGluZycsXG4gICAgICAyMTogJ0Nvb3JkaW5hZG9yIE1hcmtldGluZycsXG4gICAgICAyMjogJ0F1eGlsaWFyIE1hcmtldGluZycsXG4gICAgICAzMDogJ0xpZGVyIEFkbWluaXN0cmF0aXZvJyxcbiAgICAgIDMxOiAnQ29vcmRpbmFkb3IgQWRtaW5pc3RyYXRpdm8nLFxuICAgICAgMzI6ICdBdXhpbGlhciBBZG1pbmlzdHJhdGl2bycsXG4gICAgICA0MDogJ0xpZGVyIENvbWVyY2lhbCcsXG4gICAgICA0MTogJ0Nvb3JkaW5hZG9yIENvbWVyY2lhbCcsXG4gICAgICA0MjogJ0FzZXNvciBDb21lcmNpYWwnLFxuICAgICAgNTA6ICdMaWRlciBDYXJ0ZXJhJyxcbiAgICAgIDUxOiAnQ29vcmRpbmFkb3IgQ2FydGVyYScsXG4gICAgICA1MjogJ0FzZXNvciBDYXJ0ZXJhJyxcbiAgICAgIDYwOiAnUHJvdmVlZG9yJ1xuICAgIH07XG4gICAgcmV0dXJuIHJvbGVNYXBbTnVtYmVyKHJvbGUpXSB8fCAnJztcbiAgfVxuXG4gIHBvcHVsYXRlRm9ybSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5EYXRhU3R1ZGVudCkge1xuICAgICAgdGhpcy5jaGVja1JvbGVGb3JBZGRpdGlvbmFsRmllbGRzKHRoaXMuRGF0YVN0dWRlbnQucm9sZSk7XG5cbiAgICAgIGNvbnN0IGZvcm1WYWx1ZTogYW55ID0ge1xuICAgICAgICBuYW1lOiB0aGlzLkRhdGFTdHVkZW50Lm5hbWUgfHwgJycsXG4gICAgICAgIGxhc3RfbmFtZTogdGhpcy5EYXRhU3R1ZGVudC5sYXN0X25hbWUgfHwgJycsXG4gICAgICAgIGVtYWlsOiB0aGlzLkRhdGFTdHVkZW50LmVtYWlsIHx8ICcnLFxuICAgICAgICBnZW5kZXI6IHRoaXMuRGF0YVN0dWRlbnQuZ2VuZGVyIHx8IG51bGwsXG4gICAgICAgIGlkX2NhcmRfdHlwZTogdGhpcy5EYXRhU3R1ZGVudC5pZF9jYXJkX3R5cGUgfHwgJycsXG4gICAgICAgIGlkX2NhcmQ6IHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZCB8fCAnJyxcbiAgICAgICAgcGhvbmVfaW5kaWNhdGl2ZTogdGhpcy5EYXRhU3R1ZGVudC5waG9uZV9pbmRpY2F0aXZlIHx8ICcnLFxuICAgICAgICBwaG9uZV9udW1iZXI6IHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfbnVtYmVyIHx8ICcnLFxuICAgICAgICBjb3VudHJ5OiB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvdW50cnksXG4gICAgICAgIHN0YXRlOiB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LnN0YXRlLFxuICAgICAgICBjaXR5OiB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvZGUsXG4gICAgICAgIC8vIHJvbGU6IHRoaXMudHJhbnNmb3JtUm9sZSh0aGlzLkRhdGFTdHVkZW50LnJvbGUpIHx8ICcnLFxuICAgICAgICByb2xlOiB0aGlzLmNhbkVkaXRSb2xlID8gdGhpcy5EYXRhU3R1ZGVudC5yb2xlIDogdGhpcy50cmFuc2Zvcm1Sb2xlKHRoaXMuRGF0YVN0dWRlbnQucm9sZSkgfHwgJycsIC8vIFVzZSBjb2RlIGZvciBzZWxlY3QsIFxuICAgICAgICAvLyBzZXJ2aWNlX2hvdXI6IHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyIHx8IDAsXG4gICAgICAgIGNoYW5nZVBhc3N3b3JkOiBmYWxzZSxcbiAgICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgICByZV9wYXNzd29yZDogJycsXG4gICAgICAgIHN0YXR1czogdGhpcy5EYXRhU3R1ZGVudC51c2VyX3N0YXR1cyB8fCAnJ1xuICAgICAgfTtcblxuICAgICAgLy8gQWdyZWdhciBjYW1wb3MgY29uZGljaW9uYWxlc1xuICAgICAgaWYgKHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIpIHtcbiAgICAgICAgZm9ybVZhbHVlLmVtYWlsX2lwdCA9IHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0IHx8ICcnO1xuICAgICAgICBmb3JtVmFsdWUuc2VydmljZV9ob3VyID0gdGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgfHwgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1WYWx1ZS5zZXJ2aWNlX2hvdXIgPSB0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciB8fCAwO1xuICAgICAgfVxuICAgICAgLy8gaWYgKHRoaXMuc2hvd0VtYWlsSXB0KSB7XG4gICAgICAvLyAgIGZvcm1WYWx1ZS5lbWFpbF9pcHQgPSB0aGlzLkRhdGFTdHVkZW50LmVtYWlsX2lwdCB8fCAnJztcbiAgICAgIC8vIH1cblxuICAgICAgaWYgKHRoaXMuc2hvd1BhcmVudFNlY3Rpb24pIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihmb3JtVmFsdWUsIHtcbiAgICAgICAgICBwYXJlbnRfbmFtZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgcGFyZW50X2xhc3RfbmFtZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lmxhc3RfbmFtZSB8fCAnJyxcbiAgICAgICAgICBwYXJlbnRfaWRfY2FyZF90eXBlOiB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8uaWRfY2FyZF90eXBlIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9pZF9jYXJkOiB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8uaWRfY2FyZCB8fCAnJyxcbiAgICAgICAgICBwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LnBob25lX2luZGljYXRpdmUgfHwgJycsXG4gICAgICAgICAgcGFyZW50X3Bob25lX251bWJlcjogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LnBob25lX251bWJlciB8fCAnJyxcbiAgICAgICAgICBwYXJlbnRfb2NjdXBhdGlvbjogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm9jY3VwYXRpb24gfHwgJycsXG4gICAgICAgICAgcGFyZW50X29mZmljZV9hZHJyZXNzOiB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ub2ZmaWNlX2FkcnJlc3MgfHwgJycsXG4gICAgICAgICAgcGFyZW50X2VtYWlsOiB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8uZW1haWwgfHwgJydcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZUlkQ2FyZFZhbGlkYXRvcnModGhpcy5EYXRhU3R1ZGVudC5pZF9jYXJkX3R5cGUpO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5yZXNldCgpO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5wYXRjaFZhbHVlKGZvcm1WYWx1ZSk7XG4gICAgICB0aGlzLmluaXRpYWxGb3JtVmFsdWUgPSB7IC4uLnRoaXMudXBkYXRlVXNlckZvcm0udmFsdWUgfTtcbiAgICAgIGlmIChmb3JtVmFsdWUuY291bnRyeSkge1xuICAgICAgICB0aGlzLmNvdW50cmllcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uY291bnRyeTtcbiAgICAgICAgdGhpcy5zZWxlY3RDb3VudHJ5KHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY291bnRyeSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLnN0YXRlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0U3RhdGUodGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5zdGF0ZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLmNpdHkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RDaXR5KHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY29kZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLmlkX2NhcmRfdHlwZSkge1xuICAgICAgICB0aGlzLmlkVHlwZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LlR5cGVJZENhcmRCeUNvdW50cnlDb2w7XG4gICAgICAgIHRoaXMuc2VsZWN0SWRUeXBlKCdpZF9jYXJkX3R5cGUnLHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZF90eXBlKTtcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtVmFsdWUucGhvbmVfaW5kaWNhdGl2ZSkge1xuICAgICAgICB0aGlzLmluZGljYXRpdmVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5pbmRpY2F0aXZlcztcbiAgICAgICAgdGhpcy5zZWxlY3RJbmRpY2F0aXZlKCdwaG9uZV9pbmRpY2F0aXZlJywgdGhpcy5EYXRhU3R1ZGVudC5waG9uZV9pbmRpY2F0aXZlKTtcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtVmFsdWUucGFyZW50X3Bob25lX2luZGljYXRpdmUpIHtcbiAgICAgICAgdGhpcy5pbmRpY2F0aXZlcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uaW5kaWNhdGl2ZXM7XG4gICAgICAgIHRoaXMuc2VsZWN0SW5kaWNhdGl2ZSgncGFyZW50X3Bob25lX2luZGljYXRpdmUnLCB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ucGhvbmVfaW5kaWNhdGl2ZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLmdlbmRlcikge1xuICAgICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzQWxsICYmIHRoaXMucGFyYW1ldGVyc0FsbC5nZW5kZXIpIHtcbiAgICAgICAgICAvLyBUcmFuc2Zvcm1hciBnZW5kZXIgZW4gdW4gYXJyZWdsbyBkZSB7IGNvZGUsIG5hbWUgfVxuICAgICAgICAgIHRoaXMuZ2VuZGVycyA9IHRoaXMucGFyYW1ldGVyc0FsbC5nZW5kZXIubWFwKChnZW5kZXI6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGNvZGU6IGdlbmRlci5jb2RlLFxuICAgICAgICAgICAgbmFtZTogZ2VuZGVyLm5hbWVfc3BhbmlzaFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmdlbmRlcnMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdEdlbmRlcih0aGlzLkRhdGFTdHVkZW50LmdlbmRlcik7XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB9XG4gIH1cblxuICB2YWxpZGF0aW9uVXNlclJvbGUoKXtcbiAgICBjb25zdCB1c2VyUm9sZSA9IHRoaXMuYmFzZVNlcnZpY2UuZ2V0VXNlclJvbGUoKTtcbiAgICBpZiAodXNlclJvbGUgPT0gNDAgfHwgdXNlclJvbGUgPT0gNDEgfHwgdXNlclJvbGUgPT0gNDIpIHtcbiAgICAgIHRoaXMudXNlclJvbGVDb21tZXJjaWFsID0gdHJ1ZTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMudXNlclJvbGVDb21tZXJjaWFsID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2FuRWRpdFJvbGUgPSB1c2VyUm9sZSA9PT0gMSB8fCB1c2VyUm9sZSA9PT0gMzA7XG4gIH1cbiAgXG4gIGNsb3NlVGFibGUoKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlTW9kYWwgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dDb25maXJtRGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy5jb25maXJtRm9ybS5yZXNldCgpO1xuICAgIHRoaXMudXBkYXRlVXNlckZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLmlkVHlwZXMgPSBbXTtcbiAgICB0aGlzLmNvdW50cmllcyA9IFtdO1xuICAgIHRoaXMuZ2VuZGVycyA9IFtdO1xuICAgIHRoaXMudXBkYXRlSWRDYXJkVmFsaWRhdG9ycyhudWxsKTtcbiAgICB0aGlzLmNsb3NlTW9kYWxJUy5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhY2tJZFR5cGVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlkVHlwZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5pZFR5cGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTsgXG4gICAgfVxuICAgIHRoaXMuaWRUeXBlU3Vic2NyaXB0aW9uID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2lkX2NhcmRfdHlwZScpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMudXBkYXRlSWRDYXJkVmFsaWRhdG9ycyh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUlkQ2FyZFZhbGlkYXRvcnMoaWRDYXJkVHlwZTogYW55KTogdm9pZCB7XG5cbiAgICBjb25zdCBpZENhcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2lkX2NhcmQnKTtcbiAgICBpZiAoIWlkQ2FyZENvbnRyb2wpIHJldHVybjtcblxuICAgIGlmIChpZENhcmRUeXBlID09IDcgfHwgaWRDYXJkVHlwZSA9PSA1KSB7XG4gICAgICBpZENhcmRDb250cm9sLnNldFZhbGlkYXRvcnMoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSxcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjApLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL15bYS16QS1aMC05XSokLylcbiAgICAgIF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZENhcmRDb250cm9sLnNldFZhbGlkYXRvcnMoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSxcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjApLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSokLylcbiAgICAgIF0pO1xuICAgIH1cbiAgICBpZENhcmRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHNlbGVjdEluZGljYXRpdmUoZmllbGQ6IHN0cmluZywgaW5kaWNhdGl2ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKGluZGljYXRpdmUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KGZpZWxkKT8uc2V0VmFsdWUoaW5kaWNhdGl2ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KGZpZWxkKT8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0SWRUeXBlKGZpZWxkOiBzdHJpbmcsIGlkVHlwZTogYW55KTogdm9pZCB7XG4gICAgaWYgKGlkVHlwZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoZmllbGQpPy5zZXRWYWx1ZShpZFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldChmaWVsZCk/LnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEdlbmRlcihnZW5kZXI6IGFueSk6IHZvaWQge1xuICAgIGlmIChnZW5kZXIgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdnZW5kZXInKT8uc2V0VmFsdWUoZ2VuZGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2dlbmRlcicpPy5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDb3VudHJ5KGNvdW50cnk6IGFueSkge1xuICAgIGNvbnN0IGNvdW50cnlOdW1iZXIgPSB0eXBlb2YgY291bnRyeSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChjb3VudHJ5LCAxMCkgOiBjb3VudHJ5O1xuICAgIGlmIChjb3VudHJ5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShjb3VudHJ5TnVtYmVyKTtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnNBbGwgJiYgdGhpcy5wYXJhbWV0ZXJzQWxsPy5TdGF0ZSkge1xuICAgICAgICB0aGlzLnN0YXRlcyA9IHRoaXMucGFyYW1ldGVyc0FsbC5TdGF0ZS5maWx0ZXIoKGNvdXJzZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdGUgPSB0eXBlb2YgY291cnNlLmNvdW50cnkgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IHBhcnNlSW50KGNvdXJzZS5jb3VudHJ5LCAxMClcbiAgICAgICAgICAgIDogY291cnNlLmNvdW50cnk7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlID09PSBjb3VudHJ5TnVtYmVyO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGVzID0gW107XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5zdGF0ZXMgPSBbXTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0U3RhdGUoc3RhdGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlTnVtYmVyID0gdHlwZW9mIHN0YXRlID09PSAnc3RyaW5nJyA/IHBhcnNlSW50KHN0YXRlLCAxMCkgOiBzdGF0ZTtcbiAgICBpZiAoc3RhdGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3N0YXRlJ10uc2V0VmFsdWUoc3RhdGVOdW1iZXIpO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICAgIHRoaXMuZ2V0U3RhdGUoc3RhdGVOdW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0ZShzdGF0ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5nZXRDaXR5KHN0YXRlKTtcbiAgfVxuXG4gIGdldENpdHkoc3RhdGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlTnVtYmVyID0gdHlwZW9mIHN0YXRlID09PSAnc3RyaW5nJyA/IHBhcnNlSW50KHN0YXRlLCAxMCkgOiBzdGF0ZTtcbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzQWxsPy5jaXR5KSB7XG4gICAgICB0aGlzLmNpdGllcyA9IHRoaXMucGFyYW1ldGVyc0FsbC5jaXR5LmZpbHRlcigoY291cnNlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgY2l0eVN0YXRlID0gdHlwZW9mIGNvdXJzZS5zdGF0ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChjb3Vyc2Uuc3RhdGUsIDEwKSA6IGNvdXJzZS5zdGF0ZTtcbiAgICAgICAgcmV0dXJuIGNpdHlTdGF0ZSA9PT0gc3RhdGVOdW1iZXI7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jaXRpZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDaXR5KGNpdHk6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGNpdHlOdW1iZXIgPSB0eXBlb2YgY2l0eSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChjaXR5LCAxMCkgOiBjaXR5O1xuICAgIGlmIChjaXR5ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUoY2l0eU51bWJlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RSZWFzb24ocmVhc29uOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLmNvbnRyb2xzWydyZWFzb24nXS5zZXRWYWx1ZShyZWFzb24gPyByZWFzb24gOiBudWxsKTtcbiAgfVxuXG4gIHNlbGVjdFJvbGUocm9sZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHJvbGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyb2xlJyk/LnNldFZhbHVlKHJvbGUpO1xuICAgICAgLy8gVmVyaWZpY2FyIHNpIHNlIGRlYmVuIG1vc3RyYXIgbG9zIGNhbXBvcyBhZGljaW9uYWxlc1xuICAgICAgY29uc3QgcHJldmlvdXNTaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA9IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXI7XG4gICAgICB0aGlzLmNoZWNrUm9sZUZvckFkZGl0aW9uYWxGaWVsZHMocm9sZSk7XG5cbiAgICAgIC8vIFNpIHNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyIGNhbWJpw7MsIGFjdHVhbGl6YXIgbG9zIHZhbGlkYWRvcmVzXG4gICAgICBpZiAocHJldmlvdXNTaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciAhPT0gdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cikge1xuICAgICAgICBjb25zdCBlbWFpbElwdENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnZW1haWxfaXB0Jyk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2VIb3VyQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdzZXJ2aWNlX2hvdXInKTtcblxuICAgICAgICBpZiAodGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cikge1xuICAgICAgICAgIC8vIEFncmVnYXIgY2FtcG9zIHkgdmFsaWRhZG9yZXMgc2kgbm8gZXN0YWJhbiBwcmVzZW50ZXNcbiAgICAgICAgICBpZiAoIWVtYWlsSXB0Q29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5hZGRDb250cm9sKCdlbWFpbF9pcHQnLCB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbWFpbElwdENvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjUwKV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXNlcnZpY2VIb3VyQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5hZGRDb250cm9sKCdzZXJ2aWNlX2hvdXInLCB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSskLyksIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCg0NCldKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSskLyksIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCg0NCldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVtb3ZlciB2YWxpZGFkb3JlcyBzaSBsb3MgY2FtcG9zIG5vIHNvbiBuZWNlc2FyaW9zXG4gICAgICAgICAgaWYgKGVtYWlsSXB0Q29udHJvbCkge1xuICAgICAgICAgICAgZW1haWxJcHRDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgZW1haWxJcHRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNlcnZpY2VIb3VyQ29udHJvbCkge1xuICAgICAgICAgICAgc2VydmljZUhvdXJDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgc2VydmljZUhvdXJDb250cm9sLnNldFZhbHVlKDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFjdHVhbGl6YXIgbGEgdmFsaWRleiBkZSBsb3MgY29udHJvbGVzXG4gICAgICAgIGVtYWlsSXB0Q29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3JvbGUnKT8uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID0gZmFsc2U7XG4gICAgICBjb25zdCBlbWFpbElwdENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnZW1haWxfaXB0Jyk7XG4gICAgICBjb25zdCBzZXJ2aWNlSG91ckNvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnc2VydmljZV9ob3VyJyk7XG4gICAgICBpZiAoZW1haWxJcHRDb250cm9sKSB7XG4gICAgICAgIGVtYWlsSXB0Q29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgZW1haWxJcHRDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgZW1haWxJcHRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXJ2aWNlSG91ckNvbnRyb2wpIHtcbiAgICAgICAgc2VydmljZUhvdXJDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wuc2V0VmFsdWUoMCk7XG4gICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBoYXNGb3JtQ2hhbmdlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbEZvcm1WYWx1ZSB8fCAhdGhpcy5EYXRhU3R1ZGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0UmF3VmFsdWUoKTtcblxuICAgIGlmIChjdXJyZW50VmFsdWUuY2hhbmdlUGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IHBhc3N3b3JkID0gY3VycmVudFZhbHVlLnBhc3N3b3JkO1xuICAgICAgY29uc3QgcmVQYXNzd29yZCA9IGN1cnJlbnRWYWx1ZS5yZV9wYXNzd29yZDtcbiAgICAgIGNvbnN0IHBhc3N3b3JkQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdwYXNzd29yZCcpO1xuICAgICAgY29uc3QgcmVQYXNzd29yZENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncmVfcGFzc3dvcmQnKTtcblxuICAgICAgaWYgKFxuICAgICAgICBwYXNzd29yZENvbnRyb2w/LnZhbGlkICYmXG4gICAgICAgIHJlUGFzc3dvcmRDb250cm9sPy52YWxpZCAmJlxuICAgICAgICBwYXNzd29yZCA9PT0gcmVQYXNzd29yZCAmJlxuICAgICAgICBwYXNzd29yZD8udHJpbSgpICE9PSAnJ1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkc1RvQ29tcGFyZTogKGtleW9mIElGb3JtRGF0YVJxKVtdID0gW1xuICAgICAgJ25hbWUnLFxuICAgICAgJ2xhc3RfbmFtZScsXG4gICAgICAnZW1haWwnLFxuICAgICAgJ2dlbmRlcicsXG4gICAgICAnaWRfY2FyZF90eXBlJyxcbiAgICAgICdpZF9jYXJkJyxcbiAgICAgICdwaG9uZV9pbmRpY2F0aXZlJyxcbiAgICAgICdwaG9uZV9udW1iZXInLFxuICAgICAgJ2NvdW50cnknLFxuICAgICAgJ3N0YXRlJyxcbiAgICAgICdjaXR5JyxcbiAgICAgICdyb2xlJyxcbiAgICAgICdzdGF0dXMnXG4gICAgXTtcblxuICAgIGlmICh0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyKSB7XG4gICAgICBmaWVsZHNUb0NvbXBhcmUucHVzaChcbiAgICAgICAgJ2VtYWlsX2lwdCcsXG4gICAgICAgICdzZXJ2aWNlX2hvdXInXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3dQYXJlbnRTZWN0aW9uKSB7XG4gICAgICBmaWVsZHNUb0NvbXBhcmUucHVzaChcbiAgICAgICAgJ3BhcmVudF9uYW1lJyxcbiAgICAgICAgJ3BhcmVudF9sYXN0X25hbWUnLFxuICAgICAgICAncGFyZW50X2lkX2NhcmRfdHlwZScsXG4gICAgICAgICdwYXJlbnRfaWRfY2FyZCcsXG4gICAgICAgICdwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZScsXG4gICAgICAgICdwYXJlbnRfcGhvbmVfbnVtYmVyJyxcbiAgICAgICAgJ3BhcmVudF9vY2N1cGF0aW9uJyxcbiAgICAgICAgJ3BhcmVudF9vZmZpY2VfYWRycmVzcycsXG4gICAgICAgICdwYXJlbnRfZW1haWwnXG4gICAgICApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzVG9Db21wYXJlKSB7XG4gICAgICBsZXQgb3JpZ2luYWxWYWx1ZTogYW55O1xuICAgICAgbGV0IGN1cnJlbnRGaWVsZFZhbHVlOiBhbnkgPSBjdXJyZW50VmFsdWVbZmllbGRdO1xuXG4gICAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50Lm5hbWUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xhc3RfbmFtZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQubGFzdF9uYW1lIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuZW1haWwgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2VtYWlsX2lwdCc6XG4gICAgICAgICAgLy8gb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0IHx8ICcnO1xuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8gKHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0IHx8ICcnKSA6ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdnZW5kZXInOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmdlbmRlciB8fCBudWxsO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpZF9jYXJkX3R5cGUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmRfdHlwZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaWRfY2FyZCc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZCB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGhvbmVfaW5kaWNhdGl2ZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfaW5kaWNhdGl2ZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGhvbmVfbnVtYmVyJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5waG9uZV9udW1iZXIgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NvdW50cnknOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvdW50cnkgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0YXRlJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5zdGF0ZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY2l0eSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY29kZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncm9sZSc6XG4gICAgICAgICAgLy8gb3JpZ2luYWxWYWx1ZSA9IHRoaXMudHJhbnNmb3JtUm9sZSh0aGlzLkRhdGFTdHVkZW50LnJvbGUpIHx8ICcnO1xuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLmNhbkVkaXRSb2xlID8gdGhpcy5EYXRhU3R1ZGVudC5yb2xlIDogdGhpcy50cmFuc2Zvcm1Sb2xlKHRoaXMuRGF0YVN0dWRlbnQucm9sZSkgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NlcnZpY2VfaG91cic6XG4gICAgICAgICAgLy8gb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyIHx8ICcnIDtcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/ICh0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciB8fCAwKSA6IDA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0YXR1cyc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQudXNlcl9zdGF0dXMgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9uYW1lJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm5hbWUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9sYXN0X25hbWUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ubGFzdF9uYW1lIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfaWRfY2FyZF90eXBlJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmRfdHlwZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X2lkX2NhcmQnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8uaWRfY2FyZCB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X3Bob25lX2luZGljYXRpdmUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ucGhvbmVfaW5kaWNhdGl2ZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X3Bob25lX251bWJlcic6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9udW1iZXIgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9vY2N1cGF0aW9uJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm9jY3VwYXRpb24gfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9vZmZpY2VfYWRycmVzcyc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5vZmZpY2VfYWRycmVzcyB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X2VtYWlsJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmVtYWlsIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSAnJztcbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9ybWFsaXplZEN1cnJlbnQgPSBjdXJyZW50RmllbGRWYWx1ZSAhPSBudWxsID8gU3RyaW5nKGN1cnJlbnRGaWVsZFZhbHVlKS50cmltKCkgOiAnJztcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRPcmlnaW5hbCA9IG9yaWdpbmFsVmFsdWUgIT0gbnVsbCA/IFN0cmluZyhvcmlnaW5hbFZhbHVlKS50cmltKCkgOiAnJztcblxuICAgICAgaWYgKG5vcm1hbGl6ZWRDdXJyZW50ICE9PSBub3JtYWxpemVkT3JpZ2luYWwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1TZWN0aW9uSGFuZGxlcigpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmludmFsaWQgfHxcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uaGFzRXJyb3IoJ21pc21hdGNoJykgfHxcbiAgICAgICF0aGlzLmhhc0Zvcm1DaGFuZ2VkKClcbiAgICApIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgY29uc29sZS5sb2coJ1ZhbGlkYXRpb24gZmFpbGVkOicsIHtcbiAgICAgICAgaW52YWxpZDogdGhpcy51cGRhdGVVc2VyRm9ybS5pbnZhbGlkLFxuICAgICAgICBtaXNtYXRjaDogdGhpcy51cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSxcbiAgICAgICAgaGFzQ2hhbmdlczogdGhpcy5oYXNGb3JtQ2hhbmdlZCgpXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaG93Q29uZmlybVNlY3Rpb24gPSB0cnVlO1xuICB9XG5cbiAgc2VuZFVwZGF0ZVJlcXVlc3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlybUZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5jb25maXJtRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBjb25zdCBjb25maXJtVmFsdWUgPSB0aGlzLmNvbmZpcm1Gb3JtLnZhbHVlO1xuXG4gICAgY29uc3QgcmVxdWVzdDogYW55ID0ge1xuICAgICAgdG9rZW46IHRoaXMuYmFzZVNlcnZpY2UuZ2V0VXNlclRva2VuKCksXG4gICAgICB1c2VyOiB7XG4gICAgICAgIGNvZGU6IHRoaXMuRGF0YVN0dWRlbnQuY29kZSxcbiAgICAgICAgbmFtZTogZm9ybVZhbHVlLm5hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogZm9ybVZhbHVlLmxhc3RfbmFtZSxcbiAgICAgICAgaWRfY2FyZF90eXBlOiBmb3JtVmFsdWUuaWRfY2FyZF90eXBlLFxuICAgICAgICBpZF9jYXJkOiBmb3JtVmFsdWUuaWRfY2FyZCxcbiAgICAgICAgcGhvbmVfaW5kaWNhdGl2ZTogZm9ybVZhbHVlLnBob25lX2luZGljYXRpdmUsXG4gICAgICAgIHBob25lX251bWJlcjogZm9ybVZhbHVlLnBob25lX251bWJlcixcbiAgICAgICAgZW1haWw6IGZvcm1WYWx1ZS5lbWFpbCxcbiAgICAgICAgZ2VuZGVyOiBmb3JtVmFsdWUuZ2VuZGVyLFxuICAgICAgICBjaXR5OiBmb3JtVmFsdWUuY2l0eSxcbiAgICAgICAgc2VydmljZV9ob3VyOiB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8gZm9ybVZhbHVlLnNlcnZpY2VfaG91ciA6IDAsXG4gICAgICAgIHJvbGU6IHRoaXMuY2FuRWRpdFJvbGUgPyBmb3JtVmFsdWUucm9sZSA6IHRoaXMuRGF0YVN0dWRlbnQucm9sZSxcbiAgICAgICAgc3RhdHVzOiBmb3JtVmFsdWUuc3RhdHVzLFxuICAgICAgICAuLi4odGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/IHsgZW1haWxfaXB0OiBmb3JtVmFsdWUuZW1haWxfaXB0IH0gOiB7fSksXG4gICAgICAgIC4uLihmb3JtVmFsdWUuY2hhbmdlUGFzc3dvcmQgJiYgZm9ybVZhbHVlLnBhc3N3b3JkID8geyBwYXNzd29yZDogZm9ybVZhbHVlLnBhc3N3b3JkIH0gOiB7fSlcbiAgICAgIH0sXG4gICAgICBwYXJlbnQ6IHRoaXMuc2hvd1BhcmVudFNlY3Rpb25cbiAgICAgICAgPyB7XG4gICAgICAgICAgICBjb2RlOiB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8uY29kZSB8fCBudWxsLFxuICAgICAgICAgICAgbmFtZTogZm9ybVZhbHVlLnBhcmVudF9uYW1lIHx8IG51bGwsXG4gICAgICAgICAgICBsYXN0X25hbWU6IGZvcm1WYWx1ZS5wYXJlbnRfbGFzdF9uYW1lIHx8IG51bGwsXG4gICAgICAgICAgICBpZF9jYXJkX3R5cGU6IGZvcm1WYWx1ZS5wYXJlbnRfaWRfY2FyZF90eXBlIHx8IG51bGwsXG4gICAgICAgICAgICBpZF9jYXJkOiBmb3JtVmFsdWUucGFyZW50X2lkX2NhcmQgfHwgbnVsbCxcbiAgICAgICAgICAgIHBob25lX2luZGljYXRpdmU6IGZvcm1WYWx1ZS5wYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZSB8fCBudWxsLFxuICAgICAgICAgICAgcGhvbmVfbnVtYmVyOiBmb3JtVmFsdWUucGFyZW50X3Bob25lX251bWJlciB8fCBudWxsLFxuICAgICAgICAgICAgb2NjdXBhdGlvbjogZm9ybVZhbHVlLnBhcmVudF9vY2N1cGF0aW9uIHx8IG51bGwsXG4gICAgICAgICAgICBvZmZpY2VfYWRycmVzczogZm9ybVZhbHVlLnBhcmVudF9vZmZpY2VfYWRycmVzcyB8fCBudWxsLFxuICAgICAgICAgICAgZW1haWw6IGZvcm1WYWx1ZS5wYXJlbnRfZW1haWwgfHwgbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgOiBudWxsLFxuICAgICAgcmVhc29uOiBjb25maXJtVmFsdWUucmVhc29uLFxuICAgICAgb2JzZXJ2YXRpb246IGNvbmZpcm1WYWx1ZS5vYnNlcnZhdGlvbixcbiAgICB9O1xuXG4gICAgdGhpcy51c2VyU2VydmljZS51cGRhdGVVc2VyQnlDb2RlKHJlcXVlc3QpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLm1lc3NhZ2UuY29kZSA9PT0gMSkge1xuICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgICAgICBpY29uOiAnc3VjY2VzcycsXG4gICAgICAgICAgICB0aXRsZTogJ1VzdWFyaW8gYWN0dWFsaXphZG8gc2F0aXNmYWN0b3JpYW1lbnRlJyxcbiAgICAgICAgICAgIHNob3dDb25maXJtQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICAgIHRpbWVyOiAyNTAwLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMudXNlclVwZGF0ZWRFdmVudC5lbWl0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZVRhYmxlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UubWVzc2FnZS5jb2RlID09PSAzKSB7XG4gICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGljb246ICd3YXJuaW5nJyxcbiAgICAgICAgICAgIHRpdGxlOiByZXNwb25zZS5kYXRhLm1lc3NhZ2UsXG4gICAgICAgICAgICB0ZXh0OiByZXNwb25zZS5kYXRhLmVycm9ycyxcbiAgICAgICAgICAgIHNob3dDb25maXJtQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICAgIHRpbWVyOiAyNTAwLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdXBkYXRpbmcgdXNlcjonLCBlcnIpO1xuICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgIHBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgICBpY29uOiAnZXJyb3InLFxuICAgICAgICAgIHRpdGxlOiAnSGEgb2N1cnJpZG8gdW4gZXJyb3IgaW5lc3BlcmFkbycsXG4gICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICAgIHRpbWVyOiAyNTAwLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNob3dDb25maXJtRGlhbG9ncygpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmludmFsaWQgfHxcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uaGFzRXJyb3IoJ21pc21hdGNoJykgfHxcbiAgICAgICF0aGlzLmhhc0Zvcm1DaGFuZ2VkKClcbiAgICApIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgY29uc29sZS5sb2coJ1ZhbGlkYXRpb24gZmFpbGVkOicsIHtcbiAgICAgICAgaW52YWxpZDogdGhpcy51cGRhdGVVc2VyRm9ybS5pbnZhbGlkLFxuICAgICAgICBtaXNtYXRjaDogdGhpcy51cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSxcbiAgICAgICAgaGFzQ2hhbmdlczogdGhpcy5oYXNGb3JtQ2hhbmdlZCgpXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpcm1Gb3JtLnJlc2V0KCk7IFxuICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2cgPSB0cnVlOyBcbiAgfVxuXG4gIGFjY2VwdENvbmZpcm1EaWFsb2coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlybUZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5jb25maXJtRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VuZFVwZGF0ZVJlcXVlc3QoKTtcbiAgfVxuXG4gIHJlamVjdENvbmZpcm1EaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtRm9ybS5yZXNldCgpO1xuICB9XG5cbiAgY2xvc2VDb25maXJtRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2cgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5jb25maXJtRm9ybS5nZXQoJ3JlYXNvbicpPy5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5jb25maXJtRm9ybS5nZXQoJ29ic2VydmF0aW9uJyk/LnNldFZhbHVlKCcnKTtcbiAgfVxuXG4gIC8vIEFncmVnYXIgZXN0ZSBtw6l0b2RvIHBhcmEgdmVyaWZpY2FyIGVsIHJvbCB5IG1vc3RyYXIvb2N1bHRhciBjYW1wb3NcbiAgY2hlY2tSb2xlRm9yQWRkaXRpb25hbEZpZWxkcyhyb2xlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCByb2xlTnVtYmVyID0gdHlwZW9mIHJvbGUgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQocm9sZSwgMTApIDogcm9sZTtcbiAgICBcbiAgICAvLyBSb2xlcyBxdWUgTk8gcmVxdWllcmVuIGVtYWlsX2lwdCB5IHNlcnZpY2VfaG91cjogZXN0dWRpYW50ZSAoMTMpLCBwb3NpYmxlIGVzdHVkaWFudGUgKDE1KSwgcHJvdmVlZG9yICg2MClcbiAgICBjb25zdCByb2xlc1dpdGhvdXRBZGRpdGlvbmFsRmllbGRzID0gWzEzLCAxNSwgNjBdO1xuICAgIFxuICAgIC8vIFNpIGVsIHJvbCBhY3R1YWwgTk8gZXN0w6EgZW4gbGEgbGlzdGEgZGUgcm9sZXMgc2luIGNhbXBvcyBhZGljaW9uYWxlcywgbW9zdHJhbW9zIGxvcyBjYW1wb3NcbiAgICB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID0gIXJvbGVzV2l0aG91dEFkZGl0aW9uYWxGaWVsZHMuaW5jbHVkZXMocm9sZU51bWJlcik7XG4gIH1cblxuXG59IiwiPG1haW4gKm5nSWY9XCJ2aXNpYmxlTW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsX2NvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfbW9kYWwgeWVsbG93LTMwMFwiPlxuICAgICAgPGgxPkFjdHVhbGl6YXIgdXN1YXJpbzwvaDE+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZVRhYmxlKClcIj54PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdyaWRfY29udGFpbmVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8Zm9ybSAqbmdJZj1cInVwZGF0ZVVzZXJGb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJ1cGRhdGVVc2VyRm9ybVwiPlxuICAgICAgICAgIDwhLS0gVXNlciBJbmZvcm1hdGlvbiBTZWN0aW9uIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgPGgyPkluZm9ybWFjacOzbiBkZWwgdXN1YXJpbzwvaDI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInTm9tYnJlcydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgZWwgbm9tYnJlJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyAzIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDMyIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAnU29sbyBsZXRyYXMsIGVzcGFjaW9zIHkgZ3Vpb25lcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ10uaGFzRXJyb3IoJ2hhc1doaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBlc3BhY2lvcyBhbCBpbmljaW8gbyBmaW5hbCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ10uaGFzRXJyb3IoJ29ubHlXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gc29sbyBlc3BhY2lvcycgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIGVsIG5vbWJyZSdcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInQXBlbGxpZG9zJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2xhc3RfbmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgbG9zIGFwZWxsaWRvcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyAzIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMzIgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1NvbG8gbGV0cmFzLCBlc3BhY2lvcyB5IGd1aW9uZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ2hhc1doaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBlc3BhY2lvcyBhbCBpbmljaW8gbyBmaW5hbCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcignb25seVdoaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBzb2xvIGVzcGFjaW9zJyA6XG4gICAgICAgICAgICAgICAgJ0RlYmUgaW5ncmVzYXIgbG9zIGFwZWxsaWRvcydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidlbWFpbCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VtYWlsJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIHVuIGNvcnJlbyB2w6FsaWRvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMzAwIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1RpZW5lIHF1ZSBzZXIgdW4gZW1haWwgY29ycmVjdG8nIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcignaGFzV2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIGVzcGFjaW9zIGFsIGluaWNpbyBvIGZpbmFsJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ29ubHlXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gc29sbyBlc3BhY2lvcycgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIHVuIGNvcnJlbyB2w6FsaWRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXJcIlxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW1haWwgSVBUJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgdW4gY29ycmVvIElQVCB2w6FsaWRvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDI1NSBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAnVGllbmUgcXVlIHNlciB1biBlbWFpbCBjb3JyZWN0bycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXS5oYXNFcnJvcignaGFzV2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIGVzcGFjaW9zIGFsIGluaWNpbyBvIGZpbmFsJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdvbmx5V2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIHNvbG8gZXNwYWNpb3MnIDpcbiAgICAgICAgICAgICAgICAnRGViZSBpbmdyZXNhciB1biBjb3JyZW8gSVBUIHbDoWxpZG8nXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91clwiXG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0hvcmFzIGRlIHNlcnZpY2lvJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3NlcnZpY2VfaG91ciddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgbGFzIGhvcmFzIGRlIHNlcnZpY2lvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3NlcnZpY2VfaG91ciddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAnU29sbyBuw7ptZXJvcyBwZXJtaXRpZG9zJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3NlcnZpY2VfaG91ciddLmhhc0Vycm9yKCdtaW4nKSA/ICdFbCB2YWxvciBkZWJlIHNlciBtYXlvciBvIGlndWFsIGEgMCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXS5oYXNFcnJvcignbWF4JykgPyAnRWwgdmFsb3IgZGViZSBzZXIgbWVub3IgbyBpZ3VhbCBhIDQ0JyA6XG4gICAgICAgICAgICAgICAgJ0RlYmUgaW5ncmVzYXIgbGFzIGhvcmFzIGRlIHNlcnZpY2lvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5FZGl0Um9sZTsgZWxzZSByZWFkT25seVJvbGVcIj5cbiAgICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ10udmFsdWVcIlxuICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ11cIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ10udmFsdWUgPT09IG51bGwgPyAnU2VsZWNjaW9uZSByb2wnIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JvbGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwicm9sZXNcIlxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJjb2RlXCJcbiAgICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0Um9sZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1NlbGVjY2lvbmUgcm9sJ1wiXG4gICAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZE9ubHlSb2xlPlxuICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInUm9sJ1wiXG4gICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JvbGUnXVwiXG4gICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInUm9sIHJlcXVlcmlkbydcIlxuICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ11cIlxuICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ10udmFsdWUgPT09IG51bGwgPyAnU2VsZWNjaW9uZSBnw6luZXJvJyA6ICh1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ10udmFsdWUgfCBnZW5kZXJEaXNwbGF5KVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cImdlbmRlcnNcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0R2VuZGVyKCRldmVudClcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1NlbGVjY2lvbmUgZ8OpbmVybydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bob25lX2luZGljYXRpdmUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwaG9uZV9pbmRpY2F0aXZlJ11cIlxuICAgICAgICAgICAgICBbZGF0YV09XCJpbmRpY2F0aXZlc1wiXG4gICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJbmRpY2F0aXZlKCdwaG9uZV9pbmRpY2F0aXZlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInSW5kaWNhdGl2bydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInVGVsw6lmb25vJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwaG9uZV9udW1iZXInXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgdW4gbsO6bWVybyBkZSB0ZWzDqWZvbm8gdsOhbGlkbydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ11cIlxuICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ10udmFsdWUgPT09IG51bGwgPyAnVGlwbyBkZSBkb2N1bWVudG8nIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cImlkVHlwZXNcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SWRUeXBlKCdpZF9jYXJkX3R5cGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidUaXBvIGRlIGRvY3VtZW50bydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0RvY3VtZW50bydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgZWwgbsO6bWVybyBkZSBkb2N1bWVudG8nIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSA/ICdNw61uaW1vIDUgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMjAgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkJ10uaGFzRXJyb3IoJ3BhdHRlcm4nKSA/ICh1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ10udmFsdWUgPT09IDcgfHwgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlID09PSA1ID8gJ1NvbG8gbGV0cmFzIHkgbsO6bWVyb3MgcGVybWl0aWRvcycgOiAnU29sbyBuw7ptZXJvcyBwZXJtaXRpZG9zJykgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIGVsIG7Dum1lcm8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddLnZhbHVlID09PSBudWxsID8gJ1Bhw61zIGRlIHJlc2lkZW5jaWEnIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdENvdW50cnkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwiY291bnRyaWVzXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1Bhw61zIGRlIHJlc2lkZW5jaWEnXCJcbiAgICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3N0YXRlJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlID09PSBudWxsID8gJ0RlcGFydGFtZW50byBvIGVzdGFkbycgOiB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0U3RhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cInN0YXRlc1wiXG4gICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInRGVwYXJ0YW1lbnRvIG8gZXN0YWRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10udmFsdWUgPT09IG51bGwgPyAnQ2l1ZGFkIGRlIHJlc2lkZW5jaWEnIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS52YWx1ZVwiXG4gICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDaXR5KCRldmVudClcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJjaXRpZXNcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0NpdWRhZCBkZSByZXNpZGVuY2lhJ1wiXG4gICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtc3RhdHVzXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi1zdGF0dXNcIj5Fc3RhZG88L3NwYW4+XG4gICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJqdXN0aWZ5T3B0aW9uc1wiIFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0YXR1c1wiIFxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiIFxuICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwiY29kZVwiPlxuICAgICAgICAgICAgICA8L3Atc2VsZWN0QnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXVzZXJSb2xlQ29tbWVyY2lhbFwiIGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPHAtY2hlY2tib3hcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaGFuZ2VQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDYW1iaW8gZGUgY29udHJhc2XDsWFcIlxuICAgICAgICAgICAgICAgIFtiaW5hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID48L3AtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkXCIgKm5nSWY9XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2hhbmdlUGFzc3dvcmQnXS52YWx1ZVwiPlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0NvbnRyYXNlw7FhJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdMYSBjb250cmFzZcOxYSBlcyByZXF1ZXJpZGEnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyA1IGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAzMiBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgJ0luZ3Jlc2UgdW5hIGNvbnRyYXNlw7FhIHbDoWxpZGEnXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cblxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1JlcGV0aXIgY29udHJhc2XDsWEnXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JlX3Bhc3N3b3JkJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyZV9wYXNzd29yZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgcmVwZXRpciBsYSBjb250cmFzZcOxYScgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyZV9wYXNzd29yZCddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSA/ICdNw61uaW1vIDUgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyZV9wYXNzd29yZCddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDMyIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSA/ICdMYXMgY29udHJhc2XDsWFzIG5vIGNvaW5jaWRlbicgOlxuICAgICAgICAgICAgICAgICdSZXBpdGEgbGEgY29udHJhc2XDsWEnXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gTWVuc2FqZSBhZGljaW9uYWwgcGFyYSBlbCBlcnJvciBkZSBtaXNtYXRjaCAob3BjaW9uYWwsIHNpIHF1aWVyZXMgbW9zdHJhcmxvIHBvciBzZXBhcmFkbykgLS0+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXBkYXRlVXNlckZvcm0uaGFzRXJyb3IoJ21pc21hdGNoJykgJiYgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NoYW5nZVBhc3N3b3JkJ10udmFsdWVcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxzbWFsbCA+TGFzIGNvbnRyYXNlw7FhcyBubyBjb2luY2lkZW48L3NtYWxsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gUGFyZW50IEluZm9ybWF0aW9uIFNlY3Rpb24gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCIgKm5nSWY9XCJEYXRhU3R1ZGVudD8uY29kc1wiPlxuICAgICAgICAgICAgPGgyPkluZm9ybWFjacOzbiBkZWwgYWN1ZGllbnRlPC9oMj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiRGF0YVN0dWRlbnQ/LmNvZHNcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UGFyZW50U2VjdGlvbjsgZWxzZSBub1BhcmVudE1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInTm9tYnJlcydcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9uYW1lJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBlbCBub21icmUnXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidBcGVsbGlkb3MnXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfbGFzdF9uYW1lJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBsb3MgYXBlbGxpZG9zJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInT2N1cGFjacOzbidcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9vY2N1cGF0aW9uJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBsYSBvY3VwYWNpw7NuJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VtYWlsJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2VtYWlsJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciB1biBjb3JyZW8gdsOhbGlkbydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfaWRfY2FyZF90eXBlJ11cIlxuICAgICAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdUaXBvIGRlIGRvY3VtZW50bycgOiB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiaWRUeXBlc1wiXG4gICAgICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SWRUeXBlKCdwYXJlbnRfaWRfY2FyZF90eXBlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1RpcG8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmQnXVwiXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIGVsIG7Dum1lcm8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZSddXCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImluZGljYXRpdmVzXCJcbiAgICAgICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJbmRpY2F0aXZlKCdwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidJbmRpY2F0aXZvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInVGVsw6lmb25vJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X3Bob25lX251bWJlciddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgdW4gbsO6bWVybyBkZSB0ZWzDqWZvbm8gdsOhbGlkbydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cblxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRGlyZWNjacOzbiBkZSBvZmljaW5hJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X29mZmljZV9hZHJyZXNzJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBsYSBkaXJlY2Npw7NuJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1BhcmVudE1lc3NhZ2U+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1wYXJlbnQtbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxwPlNpbiBhY3VkaWVudGU8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lci1pbm5lclwiPlxuICAgICAgICAgICAgICA8aXB0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiJ2J1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDZXJyYXInXCJcbiAgICAgICAgICAgICAgICAgIFtwcmltYXJ5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtpc0VuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJjbG9zZVRhYmxlKClcIlxuICAgICAgICAgICAgICA+PC9pcHQtYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxpcHQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBY3R1YWxpemFyJ1wiXG4gICAgICAgICAgICAgICAgW2lzRW5hYmxlZF09XCIhbG9hZGVyICYmIHVwZGF0ZVVzZXJGb3JtLnZhbGlkICYmICF1cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSAmJiBoYXNGb3JtQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJzaG93Q29uZmlybURpYWxvZ3MoKVwiXG4gICAgICAgICAgICAgICAgW3ByaW1hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBDb25maXJtIERpYWxvZyBwYXJhIHJhesOzbiB5IG9ic2VydmFjacOzbiAtLT5cbjxwLWRpYWxvZ1xuICAgIGhlYWRlcj1cIkNvbmZpcm1hciBBanVzdGUgZGUgVXN1YXJpb1wiXG4gICAgWyh2aXNpYmxlKV09XCJzaG93Q29uZmlybURpYWxvZ1wiXG4gICAgW21vZGFsXT1cInRydWVcIlxuICAgIChvbkhpZGUpPVwiY2xvc2VDb25maXJtRGlhbG9nKClcIlxuICA+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiY29uZmlybUZvcm1cIiBjbGFzcz1cImNvbmZpcm0tZm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwLWZpZWxkXCI+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbY29udHJvbF09XCJjb25maXJtRm9ybS5jb250cm9sc1sncmVhc29uJ11cIlxuICAgICAgICBbZGF0YV09XCJyZWFzb25zXCJcbiAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFJlYXNvbigkZXZlbnQpXCJcbiAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidTZWxlY2Npb25lIGxhIHJhesOzbidcIlxuICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDxzbWFsbCAqbmdJZj1cImNvbmZpcm1Gb3JtLmNvbnRyb2xzWydyZWFzb24nXS5pbnZhbGlkICYmIGNvbmZpcm1Gb3JtLmNvbnRyb2xzWydyZWFzb24nXS50b3VjaGVkXCIgY2xhc3M9XCJwLWVycm9yXCI+XG4gICAgICAgIExhIHJhesOzbiBlcyByZXF1ZXJpZGFcbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInAtZmllbGRcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRhaW5lci1vYnNlcnZhdGlvblwiPk9ic2VydmFjacOzbjwvbGFiZWw+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgaWQ9XCJvYnNlcnZhdGlvblwiXG4gICAgICAgIHBJbnB1dFRleHRhcmVhXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9ic2VydmF0aW9uXCJcbiAgICAgICAgcm93cz1cIjNcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkRlc2NyaWJlIGRldGFsbGVzIGFkaWNpb25hbGVzIGRlbCBhanVzdGVcIlxuICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8c21hbGwgKm5nSWY9XCJjb25maXJtRm9ybS5jb250cm9sc1snb2JzZXJ2YXRpb24nXS5pbnZhbGlkICYmIGNvbmZpcm1Gb3JtLmNvbnRyb2xzWydvYnNlcnZhdGlvbiddLnRvdWNoZWRcIiBjbGFzcz1cInAtZXJyb3JcIj5cbiAgICAgICAgTGEgb2JzZXJ2YWNpw7NuIGVzIHJlcXVlcmlkYVxuICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuICA8cC1mb290ZXI+XG4gICAgPGlwdC1idXR0b25cbiAgICAgIGNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCJcbiAgICAgIFtidXR0b25UeXBlXT1cIididXR0b24nXCJcbiAgICAgIFtsYWJlbF09XCInQ2FuY2VsYXInXCJcbiAgICAgIFtwcmltYXJ5XT1cImZhbHNlXCJcbiAgICAgIFtpc0VuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAob25DbGljayk9XCJjbG9zZUNvbmZpcm1EaWFsb2coKVwiXG4gICAgPjwvaXB0LWJ1dHRvbj5cbiAgICA8aXB0LWJ1dHRvblxuICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnlcIlxuICAgICAgW2J1dHRvblR5cGVdPVwiJ2J1dHRvbidcIlxuICAgICAgW2xhYmVsXT1cIidDb25maXJtYXInXCJcbiAgICAgIFtwcmltYXJ5XT1cInRydWVcIlxuICAgICAgW2lzRW5hYmxlZF09XCIhbG9hZGVyICYmIGNvbmZpcm1Gb3JtLnZhbGlkXCJcbiAgICAgIChvbkNsaWNrKT1cImFjY2VwdENvbmZpcm1EaWFsb2coKVwiXG4gICAgPjwvaXB0LWJ1dHRvbj5cbiAgPC9wLWZvb3Rlcj5cbjwvcC1kaWFsb2c+XG5cbjwvbWFpbj4iXX0=
875
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXVzZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy91cGRhdGUtdXNlci1mb3JtL3VwZGF0ZS11c2VyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvdXBkYXRlLXVzZXItZm9ybS91cGRhdGUtdXNlci1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBb0MsTUFBTSxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQTJDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3JGLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBUy9CLE1BQU0sT0FBTyx1QkFBdUI7SUE4Q2xDLFlBQ1UsRUFBZSxFQUNmLEdBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixXQUF3QjtRQUp4QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWpEekIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzNDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHdEQsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQiwyQkFBc0IsR0FBVSxFQUFFLENBQUM7UUFDbkMsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixX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QUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLDRCQUE0QixDQUFDLElBQVM7UUFDcEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFeEUsNEdBQTRHO1FBQzVHLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxELDZGQUE2RjtRQUM3RixJQUFJLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkYsQ0FBQzs7b0hBcDVCVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixzTUFGdkIsRUFBRSwrQ0NiZiw4M2tCQW1XTzsyRkRwVk0sdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHNCQUFzQixhQUdyQixFQUFFO3FOQUdKLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE91dHB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgIFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy91c2VyLXNlcnZpY2UvdXNlci1zZXJ2aWNlJztcbmltcG9ydCB7ICBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvYmFzZS1zZXJ2aWNlL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyAgUGFyYW1ldGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvcGFyYW1ldGVycy1zZXJ2aWNlL3BhcmFtZXRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyAgSUZvcm1EYXRhUnEgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy91c2VyL3VzZXItcnEubW9kZWwnO1xuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lwdC11cGRhdGUtdXNlci1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwZGF0ZS11c2VyLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91cGRhdGUtdXNlci1mb3JtLmNvbXBvbmVudC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyB1cGRhdGVVc2VyRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBEYXRhU3R1ZGVudDogYW55O1xuICBASW5wdXQoKSB2aXNpYmxlTW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIGNsb3NlTW9kYWxJUyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHVzZXJVcGRhdGVkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIHVwZGF0ZVVzZXJGb3JtITogRm9ybUdyb3VwO1xuICBjb25maXJtRm9ybSE6IEZvcm1Hcm91cDtcbiAgcGhvdG86IHN0cmluZyA9ICcnO1xuICBwaG9uZU51bWJlckluZGljYXRpdmVzOiBhbnlbXSA9IFtdO1xuICBpZFR5cGVzOiBhbnlbXSA9IFtdO1xuICBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3RhdGVzOiBhbnkgPSBbXTtcbiAgY2l0aWVzOiBhbnkgPSBbXTtcbiAgY291bnRyaWVzOiBhbnkgPSBbXTtcbiAgc2hvd1BhcmVudFNlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0VtYWlsSXB0OiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dDb25maXJtU2VjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwYXJhbWV0ZXJzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHBhcmFtZXRlcnNBbGw/OiBhbnk7XG4gIGluZGljYXRpdmVzOiBhbnlbXSA9IFtdO1xuICBjaXZpbFN0YXR1czogYW55W10gPSBbXTtcbiAgZ2VuZGVyczogYW55W10gPSBbXTtcbiAgc3RyYXR1bXM6IGFueVtdID0gW107XG4gIHNob3dDb25maXJtRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHVzZXJSb2xlQ29tbWVyY2lhbDpib29sZWFuID1mYWxzZTtcbiAgY2FuRWRpdFJvbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcm9sZXM6IGFueVtdID0gW107XG4gIHNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaW5pdGlhbEZvcm1WYWx1ZTogYW55ID0gW107XG4gIHByaXZhdGUgaWRUeXBlU3Vic2NyaXB0aW9uPzogIFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBwZW5kaW5nSW5pdDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgaXNTdHVkZW50OiBib29sZWFuID0gZmFsc2U7XG4gIGp1c3RpZnlPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBcbiAgcmVhc29ucyA9IFtcbiAgICB7IG5hbWU6ICdDb3JyZWNjacOzbiBkZSBlcnJvcmVzIGVuIGRhdG9zIHBlcnNvbmFsZXMnLCBjb2RlOiAxIH0sXG4gICAgeyBuYW1lOiAnQ29ycmVjY2lvbiBkZSBkb2N1bWVudGFjaW9uJywgY29kZTogMiB9LFxuICAgIHsgbmFtZTogJ0FjdHVhbGl6YWNpw7NuIGRlIGNvbnRhY3RvJywgY29kZTogMyB9LFxuICAgIHsgbmFtZTogJ2NvcnJlY2Npb24gZGF0b3MgZGUgQWN1ZGllbnRlJywgY29kZTogNCB9LFxuICAgIHsgbmFtZTogJ0NhbWJpbyBkZSBjb250cmFzZcOxYScsIGNvZGU6IDUgfSxcbiAgICB7IG5hbWU6ICdDYW1iaW8gZGUgcmVzaWRlbmNpYScsIGNvZGU6IDYgfSxcbiAgICB7IG5hbWU6ICdTdXNwZW5zacOzbiBvIHJlYWN0aXZhY2nDs24gZGUgY3VlbnRhJywgY29kZTogNyB9LFxuICAgIHsgbmFtZTogJ090cm8nLCBjb2RlOiA4IH1cbiAgXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBwYXJhbWV0ZXJTZXJ2aWNlOiBQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLnNldFJvbGVzKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgIHRoaXMuaW5pdENvbmZpcm1Gb3JtKCk7XG4gICAgdGhpcy52YWxpZGF0aW9uVXNlclJvbGUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0UGFyYW1ldGVycygpO1xuICAgIHRoaXMudHJhY2tJZFR5cGVDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZXRKdXN0aWZ5T3B0aW9ucygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd2aXNpYmxlTW9kYWwnXSAmJiBjaGFuZ2VzWyd2aXNpYmxlTW9kYWwnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnNMb2FkZWQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICAgIHRoaXMuc2V0SnVzdGlmeU9wdGlvbnMoKTtcbiAgICAgIHRoaXMudHJhY2tJZFR5cGVDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnZhbGlkYXRpb25Vc2VyUm9sZSgpO1xuICAgICAgdGhpcy5zZXRSb2xlcygpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfWVsc2UgIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nSW5pdCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaWRUeXBlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmlkVHlwZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGluaXRDb25maXJtRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICByZWFzb246IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIG9ic2VydmF0aW9uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXV1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SnVzdGlmeU9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pc1N0dWRlbnQgPSB0aGlzLkRhdGFTdHVkZW50Py5yb2xlID09PSAxMztcblxuICAgIGlmICh0aGlzLmlzU3R1ZGVudCkge1xuICAgICAgLy8gTGlzdGEgY29tcGxldGEgcGFyYSBlc3R1ZGlhbnRlXG4gICAgICB0aGlzLmp1c3RpZnlPcHRpb25zID0gW1xuICAgICAgICB7IG5hbWU6ICdBY3Rpdm8nLCBjb2RlOiAxIH0sXG4gICAgICAgIHsgbmFtZTogJ1N1c3BlbmRpZG8gcC9wYWdvJywgY29kZTogMiB9LFxuICAgICAgICB7IG5hbWU6ICdQYXVzYWRvIHByb2Nlc28nLCBjb2RlOiAzIH0sXG4gICAgICAgIHsgbmFtZTogJ1JlbW92aWRvJywgY29kZTogNCB9XG4gICAgICBdO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3N0YXR1cycpPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qdXN0aWZ5T3B0aW9ucyA9IFtcbiAgICAgICAgeyBuYW1lOiAnQWN0aXZvJywgY29kZTogMSB9LFxuICAgICAgICB7IG5hbWU6ICdSZW1vdmlkbycsIGNvZGU6IDQgfVxuICAgICAgXTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdzdGF0dXMnKT8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFJvbGVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHVzZXJSb2xlID0gdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyUm9sZSgpO1xuICAgIGlmICh1c2VyUm9sZSA9PT0gMSkge1xuICAgICAgdGhpcy5yb2xlcyA9IFtcbiAgICAgICAgeyBuYW1lOiAnU3VwZXIgQWRtaW4nLCBjb2RlOiAxIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIEFjYWRlbWljbycsIGNvZGU6IDEwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIEFjYWRlbWljbycsIGNvZGU6IDExIH0sXG4gICAgICAgIHsgbmFtZTogJ1RlYWNoZXIgQWNhZGVtaWNvJywgY29kZTogMTIgfSxcbiAgICAgICAgeyBuYW1lOiAnRXN0dWRpYW50ZScsIGNvZGU6IDEzIH0sXG4gICAgICAgIHsgbmFtZTogJ1Bvc2libGUgRXN0dWRpYW50ZScsIGNvZGU6IDE1IH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIE1hcmtldGluZycsIGNvZGU6IDIwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIE1hcmtldGluZycsIGNvZGU6IDIxIH0sXG4gICAgICAgIHsgbmFtZTogJ0F1eGlsaWFyIE1hcmtldGluZycsIGNvZGU6IDIyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMSB9LFxuICAgICAgICB7IG5hbWU6ICdBdXhpbGlhciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIENvbWVyY2lhbCcsIGNvZGU6IDQwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIENvbWVyY2lhbCcsIGNvZGU6IDQxIH0sXG4gICAgICAgIHsgbmFtZTogJ0FzZXNvciBDb21lcmNpYWwnLCBjb2RlOiA0MiB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBDYXJ0ZXJhJywgY29kZTogNTAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQ2FydGVyYScsIGNvZGU6IDUxIH0sXG4gICAgICAgIHsgbmFtZTogJ0FzZXNvciBDYXJ0ZXJhJywgY29kZTogNTIgfSxcbiAgICAgICAgeyBuYW1lOiAnUHJvdmVlZG9yJywgY29kZTogNjAgfVxuICAgICAgXTsgICAgICBcbiAgICB9ZWxzZSBpZiAodXNlclJvbGUgPT09IDMwKSB7XG4gICAgICB0aGlzLnJvbGVzID0gW1xuICAgICAgICAvLyB7IG5hbWU6ICdTdXBlciBBZG1pbicsIGNvZGU6IDEgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQWNhZGVtaWNvJywgY29kZTogMTAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQWNhZGVtaWNvJywgY29kZTogMTEgfSxcbiAgICAgICAgeyBuYW1lOiAnVGVhY2hlciBBY2FkZW1pY28nLCBjb2RlOiAxMiB9LFxuICAgICAgICB7IG5hbWU6ICdFc3R1ZGlhbnRlJywgY29kZTogMTMgfSxcbiAgICAgICAgeyBuYW1lOiAnUG9zaWJsZSBFc3R1ZGlhbnRlJywgY29kZTogMTUgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgTWFya2V0aW5nJywgY29kZTogMjAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgTWFya2V0aW5nJywgY29kZTogMjEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXV4aWxpYXIgTWFya2V0aW5nJywgY29kZTogMjIgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMxIH0sXG4gICAgICAgIHsgbmFtZTogJ0F1eGlsaWFyIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzIgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQ29tZXJjaWFsJywgY29kZTogNDAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQ29tZXJjaWFsJywgY29kZTogNDEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXNlc29yIENvbWVyY2lhbCcsIGNvZGU6IDQyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIENhcnRlcmEnLCBjb2RlOiA1MCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBDYXJ0ZXJhJywgY29kZTogNTEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXNlc29yIENhcnRlcmEnLCBjb2RlOiA1MiB9LFxuICAgICAgICB7IG5hbWU6ICdQcm92ZWVkb3InLCBjb2RlOiA2MCB9XG4gICAgICBdOyBcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMucm9sZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBnZXRQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhcmFtZXRlcnNMb2FkZWQpIHtcbiAgICAgIHRoaXMuc2V0UGFyYW1ldGVycygpO1xuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0QWxsUGFyYW1ldGVyc0NvZEZvcm0oKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMucGFyYW1ldGVyc0FsbCA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIHRoaXMucGFyYW1ldGVyc0xvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0UGFyYW1ldGVycygpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XG4gICAgICAgIHRoaXMudHJhY2tJZFR5cGVDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvblVzZXJSb2xlKCk7XG4gICAgICAgIHRoaXMuc2V0Um9sZXMoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLnBlbmRpbmdJbml0ID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcGFyYW1ldGVyczonLCBlcnIpO1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnNMb2FkZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldFBhcmFtZXRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5pZFR5cGVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5UeXBlSWRDYXJkQnlDb3VudHJ5Q29sO1xuICAgIHRoaXMuaW5kaWNhdGl2ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmluZGljYXRpdmVzO1xuICAgIHRoaXMuY291bnRyaWVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5jb3VudHJ5O1xuICAgIHRoaXMuY2l2aWxTdGF0dXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmNpdmlsU3RhdHVzO1xuICAgIHRoaXMuc3RhdGVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5TdGF0ZTtcbiAgICB0aGlzLmNpdGllcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uY2l0eTtcbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzQWxsICYmIHRoaXMucGFyYW1ldGVyc0FsbC5nZW5kZXIpIHtcbiAgICAgIC8vIFRyYW5zZm9ybWFyIGdlbmRlciBlbiB1biBhcnJlZ2xvIGRlIHsgY29kZSwgbmFtZSB9XG4gICAgICB0aGlzLmdlbmRlcnMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyLm1hcCgoZ2VuZGVyOiBhbnkpID0+ICh7XG4gICAgICAgIGNvZGU6IGdlbmRlci5jb2RlLFxuICAgICAgICBuYW1lOiBnZW5kZXIubmFtZV9zcGFuaXNoXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2VuZGVycyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5zaG93UGFyZW50U2VjdGlvbiA9ICEhdGhpcy5EYXRhU3R1ZGVudD8uY29kcz8ucGFyZW50Py5jb2RlO1xuICAgIHRoaXMuY2hlY2tSb2xlRm9yQWRkaXRpb25hbEZpZWxkcyh0aGlzLkRhdGFTdHVkZW50LnJvbGUpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLnBvcHVsYXRlRm9ybSgpO1xuICB9XG5cbiAgaW5pdEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgdXNlclJvbGUgPSB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJSb2xlKCk7XG4gICAgdGhpcy5jYW5FZGl0Um9sZSA9IHVzZXJSb2xlID09PSAxIHx8IHVzZXJSb2xlID09PSAzMDtcblxuICAgIGNvbnN0IGJhc2VGb3JtID0ge1xuICAgICAgbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV1dLFxuICAgICAgbGFzdF9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIpXV0sXG4gICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjUwKV1dLFxuICAgICAgZ2VuZGVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBpZF9jYXJkX3R5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGlkX2NhcmQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMCldXSxcbiAgICAgIHBob25lX2luZGljYXRpdmU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHBob25lX251bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNSldXSxcbiAgICAgIGNvdW50cnk6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHN0YXRlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBjaXR5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICByb2xlOiBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiAhdGhpcy5jYW5FZGl0Um9sZX1dLFxuICAgICAgcGFzc3dvcmQ6IFsnJywgW11dLFxuICAgICAgcmVfcGFzc3dvcmQ6IFsnJywgW11dLFxuICAgICAgY2hhbmdlUGFzc3dvcmQ6IFtmYWxzZV0sXG4gICAgICBzdGF0dXM6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBlbWFpbF9pcHQ6IFsnJywgdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXSA6IFtdXSxcbiAgICAgIHNlcnZpY2VfaG91cjogWycnLCB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybigvXlswLTldKyQvKSwgVmFsaWRhdG9ycy5taW4oMCksIFZhbGlkYXRvcnMubWF4KDQ0KV0gOiBbXV1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuc2hvd1BhcmVudFNlY3Rpb24pIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oYmFzZUZvcm0sIHtcbiAgICAgICAgcGFyZW50X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNTApXV0sXG4gICAgICAgIHBhcmVudF9sYXN0X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNTApXV0sXG4gICAgICAgIHBhcmVudF9pZF9jYXJkX3R5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgcGFyZW50X2lkX2NhcmQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMCldXSxcbiAgICAgICAgcGFyZW50X3Bob25lX2luZGljYXRpdmU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgcGFyZW50X3Bob25lX251bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMCldXSxcbiAgICAgICAgcGFyZW50X29jY3VwYXRpb246IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxuICAgICAgICBwYXJlbnRfb2ZmaWNlX2FkcnJlc3M6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDE1MCldXSxcbiAgICAgICAgcGFyZW50X2VtYWlsOiBbJycsIFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTUpXV1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVXNlckZvcm0gPSB0aGlzLmZiLmdyb3VwKGJhc2VGb3JtLCB7IHZhbGlkYXRvcnM6IHRoaXMucGFzc3dvcmRNYXRjaFZhbGlkYXRvciB9KTtcblxuICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdjaGFuZ2VQYXNzd29yZCcpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgICBjb25zdCBwYXNzd29yZENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncGFzc3dvcmQnKTtcbiAgICAgIGNvbnN0IHJlUGFzc3dvcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3JlX3Bhc3N3b3JkJyk7XG5cbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIHBhc3N3b3JkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV0pO1xuICAgICAgICByZVBhc3N3b3JkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFzc3dvcmRDb250cm9sPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgcmVQYXNzd29yZENvbnRyb2w/LmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICBwYXNzd29yZENvbnRyb2w/LnNldFZhbHVlKCcnKTtcbiAgICAgICAgcmVQYXNzd29yZENvbnRyb2w/LnNldFZhbHVlKCcnKTtcbiAgICAgIH1cblxuICAgICAgcGFzc3dvcmRDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICByZVBhc3N3b3JkQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3JlX3Bhc3N3b3JkJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSk7XG4gIH1cblxuICBwYXNzd29yZE1hdGNoVmFsaWRhdG9yKGZvcm06IEZvcm1Hcm91cCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCB7XG4gICAgY29uc3QgY2hhbmdlUGFzc3dvcmQgPSBmb3JtLmdldCgnY2hhbmdlUGFzc3dvcmQnKT8udmFsdWU7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBmb3JtLmdldCgncGFzc3dvcmQnKT8udmFsdWU7XG4gICAgY29uc3QgcmVQYXNzd29yZCA9IGZvcm0uZ2V0KCdyZV9wYXNzd29yZCcpPy52YWx1ZTtcbiAgICBpZiAoIWNoYW5nZVBhc3N3b3JkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbWlzbWF0Y2ggPSBwYXNzd29yZCAmJiByZVBhc3N3b3JkICYmIHBhc3N3b3JkICE9PSByZVBhc3N3b3JkO1xuICAgIHJldHVybiBtaXNtYXRjaCA/IHsgbWlzbWF0Y2g6IHRydWUgfSA6IG51bGw7XG4gIH1cblxuICBub1doaXRlc3BhY2VWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsIHtcbiAgICBpZiAoY29udHJvbC52YWx1ZSAmJiB0eXBlb2YgY29udHJvbC52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWRWYWx1ZSA9IGNvbnRyb2wudmFsdWUudHJpbSgpO1xuICAgICAgaWYgKHRyaW1tZWRWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHsgb25seVdoaXRlc3BhY2U6IHRydWUgfTtcbiAgICAgIH1cbiAgICAgIGlmIChjb250cm9sLnZhbHVlICE9PSB0cmltbWVkVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHsgaGFzV2hpdGVzcGFjZTogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyYW5zZm9ybVJvbGUocm9sZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCByb2xlTWFwOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge1xuICAgICAgMTogJ1N1cGVyIEFkbWluJyxcbiAgICAgIDEwOiAnTGlkZXIgQWNhZGVtaWNvJyxcbiAgICAgIDExOiAnQ29vcmRpbmFkb3IgQWNhZGVtaWNvJyxcbiAgICAgIDEyOiAnVGVhY2hlciBBY2FkZW1pY28nLFxuICAgICAgMTM6ICdFc3R1ZGlhbnRlJyxcbiAgICAgIDE1OiAnUG9zaWJsZSBFc3R1ZGlhbnRlJyxcbiAgICAgIDIwOiAnTGlkZXIgTWFya2V0aW5nJyxcbiAgICAgIDIxOiAnQ29vcmRpbmFkb3IgTWFya2V0aW5nJyxcbiAgICAgIDIyOiAnQXV4aWxpYXIgTWFya2V0aW5nJyxcbiAgICAgIDMwOiAnTGlkZXIgQWRtaW5pc3RyYXRpdm8nLFxuICAgICAgMzE6ICdDb29yZGluYWRvciBBZG1pbmlzdHJhdGl2bycsXG4gICAgICAzMjogJ0F1eGlsaWFyIEFkbWluaXN0cmF0aXZvJyxcbiAgICAgIDQwOiAnTGlkZXIgQ29tZXJjaWFsJyxcbiAgICAgIDQxOiAnQ29vcmRpbmFkb3IgQ29tZXJjaWFsJyxcbiAgICAgIDQyOiAnQXNlc29yIENvbWVyY2lhbCcsXG4gICAgICA1MDogJ0xpZGVyIENhcnRlcmEnLFxuICAgICAgNTE6ICdDb29yZGluYWRvciBDYXJ0ZXJhJyxcbiAgICAgIDUyOiAnQXNlc29yIENhcnRlcmEnLFxuICAgICAgNjA6ICdQcm92ZWVkb3InXG4gICAgfTtcbiAgICByZXR1cm4gcm9sZU1hcFtOdW1iZXIocm9sZSldIHx8ICcnO1xuICB9XG5cbiAgcG9wdWxhdGVGb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLkRhdGFTdHVkZW50KSB7XG4gICAgICB0aGlzLmNoZWNrUm9sZUZvckFkZGl0aW9uYWxGaWVsZHModGhpcy5EYXRhU3R1ZGVudC5yb2xlKTtcblxuICAgICAgY29uc3QgZm9ybVZhbHVlOiBhbnkgPSB7XG4gICAgICAgIG5hbWU6IHRoaXMuRGF0YVN0dWRlbnQubmFtZSB8fCAnJyxcbiAgICAgICAgbGFzdF9uYW1lOiB0aGlzLkRhdGFTdHVkZW50Lmxhc3RfbmFtZSB8fCAnJyxcbiAgICAgICAgZW1haWw6IHRoaXMuRGF0YVN0dWRlbnQuZW1haWwgfHwgJycsXG4gICAgICAgIGdlbmRlcjogdGhpcy5EYXRhU3R1ZGVudC5nZW5kZXIgfHwgbnVsbCxcbiAgICAgICAgaWRfY2FyZF90eXBlOiB0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmRfdHlwZSB8fCAnJyxcbiAgICAgICAgaWRfY2FyZDogdGhpcy5EYXRhU3R1ZGVudC5pZF9jYXJkIHx8ICcnLFxuICAgICAgICBwaG9uZV9pbmRpY2F0aXZlOiB0aGlzLkRhdGFTdHVkZW50LnBob25lX2luZGljYXRpdmUgfHwgJycsXG4gICAgICAgIHBob25lX251bWJlcjogdGhpcy5EYXRhU3R1ZGVudC5waG9uZV9udW1iZXIgfHwgJycsXG4gICAgICAgIGNvdW50cnk6IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY291bnRyeSxcbiAgICAgICAgc3RhdGU6IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uc3RhdGUsXG4gICAgICAgIGNpdHk6IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY29kZSxcbiAgICAgICAgcm9sZTogdGhpcy5jYW5FZGl0Um9sZSA/IHRoaXMuRGF0YVN0dWRlbnQucm9sZSA6IHRoaXMudHJhbnNmb3JtUm9sZSh0aGlzLkRhdGFTdHVkZW50LnJvbGUpIHx8ICcnLCAvLyBVc2UgY29kZSBmb3Igc2VsZWN0LCBcbiAgICAgICAgY2hhbmdlUGFzc3dvcmQ6IGZhbHNlLFxuICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgIHJlX3Bhc3N3b3JkOiAnJyxcbiAgICAgICAgc3RhdHVzOiB0aGlzLkRhdGFTdHVkZW50LnVzZXJfc3RhdHVzIHx8ICcnXG4gICAgICB9O1xuXG4gICAgICAvLyBBZ3JlZ2FyIGNhbXBvcyBjb25kaWNpb25hbGVzXG4gICAgICBpZiAodGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cikge1xuICAgICAgICBmb3JtVmFsdWUuZW1haWxfaXB0ID0gdGhpcy5EYXRhU3R1ZGVudC5lbWFpbF9pcHQgfHwgJyc7XG4gICAgICAgIGZvcm1WYWx1ZS5zZXJ2aWNlX2hvdXIgPSB0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciB8fCAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybVZhbHVlLnNlcnZpY2VfaG91ciA9IHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyIHx8IDA7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNob3dQYXJlbnRTZWN0aW9uKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZm9ybVZhbHVlLCB7XG4gICAgICAgICAgcGFyZW50X25hbWU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9sYXN0X25hbWU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5sYXN0X25hbWUgfHwgJycsXG4gICAgICAgICAgcGFyZW50X2lkX2NhcmRfdHlwZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmRfdHlwZSB8fCAnJyxcbiAgICAgICAgICBwYXJlbnRfaWRfY2FyZDogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmQgfHwgJycsXG4gICAgICAgICAgcGFyZW50X3Bob25lX2luZGljYXRpdmU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9pbmRpY2F0aXZlIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9waG9uZV9udW1iZXI6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9udW1iZXIgfHwgJycsXG4gICAgICAgICAgcGFyZW50X29jY3VwYXRpb246IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5vY2N1cGF0aW9uIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9vZmZpY2VfYWRycmVzczogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm9mZmljZV9hZHJyZXNzIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9lbWFpbDogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmVtYWlsIHx8ICcnXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVJZENhcmRWYWxpZGF0b3JzKHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZF90eXBlKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ucmVzZXQoKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ucGF0Y2hWYWx1ZShmb3JtVmFsdWUpO1xuICAgICAgdGhpcy5pbml0aWFsRm9ybVZhbHVlID0geyAuLi50aGlzLnVwZGF0ZVVzZXJGb3JtLnZhbHVlIH07XG4gICAgICBpZiAoZm9ybVZhbHVlLmNvdW50cnkpIHtcbiAgICAgICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmNvdW50cnk7XG4gICAgICAgIHRoaXMuc2VsZWN0Q291bnRyeSh0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvdW50cnkpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5zdGF0ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdFN0YXRlKHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uc3RhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5jaXR5KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Q2l0eSh0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvZGUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5pZF9jYXJkX3R5cGUpIHtcbiAgICAgICAgdGhpcy5pZFR5cGVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5UeXBlSWRDYXJkQnlDb3VudHJ5Q29sO1xuICAgICAgICB0aGlzLnNlbGVjdElkVHlwZSgnaWRfY2FyZF90eXBlJyx0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmRfdHlwZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLnBob25lX2luZGljYXRpdmUpIHtcbiAgICAgICAgdGhpcy5pbmRpY2F0aXZlcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uaW5kaWNhdGl2ZXM7XG4gICAgICAgIHRoaXMuc2VsZWN0SW5kaWNhdGl2ZSgncGhvbmVfaW5kaWNhdGl2ZScsIHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfaW5kaWNhdGl2ZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLnBhcmVudF9waG9uZV9pbmRpY2F0aXZlKSB7XG4gICAgICAgIHRoaXMuaW5kaWNhdGl2ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmluZGljYXRpdmVzO1xuICAgICAgICB0aGlzLnNlbGVjdEluZGljYXRpdmUoJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJywgdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LnBob25lX2luZGljYXRpdmUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5nZW5kZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVyc0FsbCAmJiB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyKSB7XG4gICAgICAgICAgLy8gVHJhbnNmb3JtYXIgZ2VuZGVyIGVuIHVuIGFycmVnbG8gZGUgeyBjb2RlLCBuYW1lIH1cbiAgICAgICAgICB0aGlzLmdlbmRlcnMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyLm1hcCgoZ2VuZGVyOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBjb2RlOiBnZW5kZXIuY29kZSxcbiAgICAgICAgICAgIG5hbWU6IGdlbmRlci5uYW1lX3NwYW5pc2hcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5nZW5kZXJzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RHZW5kZXIodGhpcy5EYXRhU3R1ZGVudC5nZW5kZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGlvblVzZXJSb2xlKCl7XG4gICAgY29uc3QgdXNlclJvbGUgPSB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJSb2xlKCk7XG4gICAgaWYgKHVzZXJSb2xlID09IDQwIHx8IHVzZXJSb2xlID09IDQxIHx8IHVzZXJSb2xlID09IDQyKSB7XG4gICAgICB0aGlzLnVzZXJSb2xlQ29tbWVyY2lhbCA9IHRydWU7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnVzZXJSb2xlQ29tbWVyY2lhbCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNhbkVkaXRSb2xlID0gdXNlclJvbGUgPT09IDEgfHwgdXNlclJvbGUgPT09IDMwO1xuICB9XG4gIFxuICBjbG9zZVRhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMudmlzaWJsZU1vZGFsID0gZmFsc2U7XG4gICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlybUZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5pZFR5cGVzID0gW107XG4gICAgdGhpcy5jb3VudHJpZXMgPSBbXTtcbiAgICB0aGlzLmdlbmRlcnMgPSBbXTtcbiAgICB0aGlzLnVwZGF0ZUlkQ2FyZFZhbGlkYXRvcnMobnVsbCk7XG4gICAgdGhpcy5jbG9zZU1vZGFsSVMuZW1pdChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHRyYWNrSWRUeXBlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pZFR5cGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuaWRUeXBlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IFxuICAgIH1cbiAgICB0aGlzLmlkVHlwZVN1YnNjcmlwdGlvbiA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdpZF9jYXJkX3R5cGUnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUlkQ2FyZFZhbGlkYXRvcnModmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJZENhcmRWYWxpZGF0b3JzKGlkQ2FyZFR5cGU6IGFueSk6IHZvaWQge1xuXG4gICAgY29uc3QgaWRDYXJkQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdpZF9jYXJkJyk7XG4gICAgaWYgKCFpZENhcmRDb250cm9sKSByZXR1cm47XG5cbiAgICBpZiAoaWRDYXJkVHlwZSA9PSA3IHx8IGlkQ2FyZFR5cGUgPT0gNSkge1xuICAgICAgaWRDYXJkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKSxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eW2EtekEtWjAtOV0qJC8pXG4gICAgICBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWRDYXJkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKSxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0qJC8pXG4gICAgICBdKTtcbiAgICB9XG4gICAgaWRDYXJkQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBzZWxlY3RJbmRpY2F0aXZlKGZpZWxkOiBzdHJpbmcsIGluZGljYXRpdmU6IGFueSk6IHZvaWQge1xuICAgIGlmIChpbmRpY2F0aXZlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldChmaWVsZCk/LnNldFZhbHVlKGluZGljYXRpdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldChmaWVsZCk/LnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdElkVHlwZShmaWVsZDogc3RyaW5nLCBpZFR5cGU6IGFueSk6IHZvaWQge1xuICAgIGlmIChpZFR5cGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KGZpZWxkKT8uc2V0VmFsdWUoaWRUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoZmllbGQpPy5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RHZW5kZXIoZ2VuZGVyOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZ2VuZGVyICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnZ2VuZGVyJyk/LnNldFZhbHVlKGdlbmRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdnZW5kZXInKT8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcbiAgICBjb25zdCBjb3VudHJ5TnVtYmVyID0gdHlwZW9mIGNvdW50cnkgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQoY291bnRyeSwgMTApIDogY291bnRyeTtcbiAgICBpZiAoY291bnRyeSAhPSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjb3VudHJ5J10uc2V0VmFsdWUoY291bnRyeU51bWJlcik7XG4gICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzQWxsICYmIHRoaXMucGFyYW1ldGVyc0FsbD8uU3RhdGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuU3RhdGUuZmlsdGVyKChjb3Vyc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXRlID0gdHlwZW9mIGNvdXJzZS5jb3VudHJ5ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBwYXJzZUludChjb3Vyc2UuY291bnRyeSwgMTApXG4gICAgICAgICAgICA6IGNvdXJzZS5jb3VudHJ5O1xuICAgICAgICAgIHJldHVybiBzdGF0ZSA9PT0gY291bnRyeU51bWJlcjtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlcyA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuc3RhdGVzID0gW107XG4gICAgICB0aGlzLmNpdGllcyA9IFtdO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFN0YXRlKHN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZU51bWJlciA9IHR5cGVvZiBzdGF0ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChzdGF0ZSwgMTApIDogc3RhdGU7XG4gICAgaWYgKHN0YXRlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKHN0YXRlTnVtYmVyKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgICB0aGlzLmdldFN0YXRlKHN0YXRlTnVtYmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdGUoc3RhdGU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZ2V0Q2l0eShzdGF0ZSk7XG4gIH1cblxuICBnZXRDaXR5KHN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZU51bWJlciA9IHR5cGVvZiBzdGF0ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChzdGF0ZSwgMTApIDogc3RhdGU7XG4gICAgaWYgKHRoaXMucGFyYW1ldGVyc0FsbD8uY2l0eSkge1xuICAgICAgdGhpcy5jaXRpZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuY2l0eS5maWx0ZXIoKGNvdXJzZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGNpdHlTdGF0ZSA9IHR5cGVvZiBjb3Vyc2Uuc3RhdGUgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQoY291cnNlLnN0YXRlLCAxMCkgOiBjb3Vyc2Uuc3RhdGU7XG4gICAgICAgIHJldHVybiBjaXR5U3RhdGUgPT09IHN0YXRlTnVtYmVyO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Q2l0eShjaXR5OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBjaXR5TnVtYmVyID0gdHlwZW9mIGNpdHkgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQoY2l0eSwgMTApIDogY2l0eTtcbiAgICBpZiAoY2l0eSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKGNpdHlOdW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0UmVhc29uKHJlYXNvbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtRm9ybS5jb250cm9sc1sncmVhc29uJ10uc2V0VmFsdWUocmVhc29uID8gcmVhc29uIDogbnVsbCk7XG4gIH1cblxuICBzZWxlY3RSb2xlKHJvbGU6IGFueSk6IHZvaWQge1xuICAgIGlmIChyb2xlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncm9sZScpPy5zZXRWYWx1ZShyb2xlKTtcbiAgICAgIGNvbnN0IHByZXZpb3VzU2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPSB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyO1xuICAgICAgdGhpcy5jaGVja1JvbGVGb3JBZGRpdGlvbmFsRmllbGRzKHJvbGUpO1xuXG4gICAgICAvLyBTaSBzaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciBjYW1iacOzLCBhY3R1YWxpemFyIGxvcyB2YWxpZGFkb3Jlc1xuICAgICAgaWYgKHByZXZpb3VzU2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgIT09IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIpIHtcbiAgICAgICAgY29uc3QgZW1haWxJcHRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2VtYWlsX2lwdCcpO1xuICAgICAgICBjb25zdCBzZXJ2aWNlSG91ckNvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnc2VydmljZV9ob3VyJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIpIHtcbiAgICAgICAgICAvLyBBZ3JlZ2FyIGNhbXBvcyB5IHZhbGlkYWRvcmVzIHNpIG5vIGVzdGFiYW4gcHJlc2VudGVzXG4gICAgICAgICAgaWYgKCFlbWFpbElwdENvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGVtYWlsSXB0VmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmVtYWlsX2lwdCB8fCAnJztcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uYWRkQ29udHJvbCgnZW1haWxfaXB0JywgdGhpcy5mYi5jb250cm9sKGVtYWlsSXB0VmFsdWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbWFpbElwdENvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjUwKV0pO1xuICAgICAgICAgICAgZW1haWxJcHRDb250cm9sLnNldFZhbHVlKHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0IHx8ICcnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFzZXJ2aWNlSG91ckNvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VIb3VyVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciAhPSBudWxsID8gdGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgOiAwOyAvLyBVc2EgMCBjb21vIGZhbGxiYWNrXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmFkZENvbnRyb2woJ3NlcnZpY2VfaG91cicsIHRoaXMuZmIuY29udHJvbChzZXJ2aWNlSG91clZhbHVlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0rJC8pLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoNDQpXSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0rJC8pLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoNDQpXSk7XG4gICAgICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wuc2V0VmFsdWUodGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgIT0gbnVsbCA/IHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyIDogMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChlbWFpbElwdENvbnRyb2wpIHtcbiAgICAgICAgICAgIGVtYWlsSXB0Q29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgIGVtYWlsSXB0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzZXJ2aWNlSG91ckNvbnRyb2wpIHtcbiAgICAgICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5zZXRWYWx1ZSgwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBlbWFpbElwdENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgc2VydmljZUhvdXJDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyb2xlJyk/LnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA9IGZhbHNlO1xuICAgICAgY29uc3QgZW1haWxJcHRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2VtYWlsX2lwdCcpO1xuICAgICAgY29uc3Qgc2VydmljZUhvdXJDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3NlcnZpY2VfaG91cicpO1xuICAgICAgaWYgKGVtYWlsSXB0Q29udHJvbCkge1xuICAgICAgICBlbWFpbElwdENvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIGVtYWlsSXB0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIGVtYWlsSXB0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgICBpZiAoc2VydmljZUhvdXJDb250cm9sKSB7XG4gICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgc2VydmljZUhvdXJDb250cm9sLnNldFZhbHVlKDApO1xuICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgXG4gIGhhc0Zvcm1DaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5pbml0aWFsRm9ybVZhbHVlIHx8ICF0aGlzLkRhdGFTdHVkZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXRSYXdWYWx1ZSgpO1xuXG4gICAgaWYgKGN1cnJlbnRWYWx1ZS5jaGFuZ2VQYXNzd29yZCkge1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSBjdXJyZW50VmFsdWUucGFzc3dvcmQ7XG4gICAgICBjb25zdCByZVBhc3N3b3JkID0gY3VycmVudFZhbHVlLnJlX3Bhc3N3b3JkO1xuICAgICAgY29uc3QgcGFzc3dvcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3Bhc3N3b3JkJyk7XG4gICAgICBjb25zdCByZVBhc3N3b3JkQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyZV9wYXNzd29yZCcpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHBhc3N3b3JkQ29udHJvbD8udmFsaWQgJiZcbiAgICAgICAgcmVQYXNzd29yZENvbnRyb2w/LnZhbGlkICYmXG4gICAgICAgIHBhc3N3b3JkID09PSByZVBhc3N3b3JkICYmXG4gICAgICAgIHBhc3N3b3JkPy50cmltKCkgIT09ICcnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRzVG9Db21wYXJlOiAoa2V5b2YgSUZvcm1EYXRhUnEpW10gPSBbXG4gICAgICAnbmFtZScsXG4gICAgICAnbGFzdF9uYW1lJyxcbiAgICAgICdlbWFpbCcsXG4gICAgICAnZ2VuZGVyJyxcbiAgICAgICdpZF9jYXJkX3R5cGUnLFxuICAgICAgJ2lkX2NhcmQnLFxuICAgICAgJ3Bob25lX2luZGljYXRpdmUnLFxuICAgICAgJ3Bob25lX251bWJlcicsXG4gICAgICAnY291bnRyeScsXG4gICAgICAnc3RhdGUnLFxuICAgICAgJ2NpdHknLFxuICAgICAgJ3JvbGUnLFxuICAgICAgJ3N0YXR1cydcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIpIHtcbiAgICAgIGZpZWxkc1RvQ29tcGFyZS5wdXNoKFxuICAgICAgICAnZW1haWxfaXB0JyxcbiAgICAgICAgJ3NlcnZpY2VfaG91cidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd1BhcmVudFNlY3Rpb24pIHtcbiAgICAgIGZpZWxkc1RvQ29tcGFyZS5wdXNoKFxuICAgICAgICAncGFyZW50X25hbWUnLFxuICAgICAgICAncGFyZW50X2xhc3RfbmFtZScsXG4gICAgICAgICdwYXJlbnRfaWRfY2FyZF90eXBlJyxcbiAgICAgICAgJ3BhcmVudF9pZF9jYXJkJyxcbiAgICAgICAgJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJyxcbiAgICAgICAgJ3BhcmVudF9waG9uZV9udW1iZXInLFxuICAgICAgICAncGFyZW50X29jY3VwYXRpb24nLFxuICAgICAgICAncGFyZW50X29mZmljZV9hZHJyZXNzJyxcbiAgICAgICAgJ3BhcmVudF9lbWFpbCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHNUb0NvbXBhcmUpIHtcbiAgICAgIGxldCBvcmlnaW5hbFZhbHVlOiBhbnk7XG4gICAgICBsZXQgY3VycmVudEZpZWxkVmFsdWU6IGFueSA9IGN1cnJlbnRWYWx1ZVtmaWVsZF07XG5cbiAgICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQubmFtZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGFzdF9uYW1lJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5sYXN0X25hbWUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5lbWFpbCB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZW1haWxfaXB0JzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/ICh0aGlzLkRhdGFTdHVkZW50LmVtYWlsX2lwdCB8fCAnJykgOiAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZ2VuZGVyJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5nZW5kZXIgfHwgbnVsbDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaWRfY2FyZF90eXBlJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5pZF9jYXJkX3R5cGUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2lkX2NhcmQnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmQgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3Bob25lX2luZGljYXRpdmUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LnBob25lX2luZGljYXRpdmUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3Bob25lX251bWJlcic6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfbnVtYmVyIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjb3VudHJ5JzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5jb3VudHJ5IHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdGF0ZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uc3RhdGUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NpdHknOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvZGUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JvbGUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLmNhbkVkaXRSb2xlID8gdGhpcy5EYXRhU3R1ZGVudC5yb2xlIDogdGhpcy50cmFuc2Zvcm1Sb2xlKHRoaXMuRGF0YVN0dWRlbnQucm9sZSkgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NlcnZpY2VfaG91cic6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPyAodGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgfHwgMCkgOiAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdGF0dXMnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LnVzZXJfc3RhdHVzIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfbmFtZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5uYW1lIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfbGFzdF9uYW1lJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lmxhc3RfbmFtZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X2lkX2NhcmRfdHlwZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5pZF9jYXJkX3R5cGU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9pZF9jYXJkJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmQgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LnBob25lX2luZGljYXRpdmUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9waG9uZV9udW1iZXInOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ucGhvbmVfbnVtYmVyIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfb2NjdXBhdGlvbic6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5vY2N1cGF0aW9uIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfb2ZmaWNlX2FkcnJlc3MnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ub2ZmaWNlX2FkcnJlc3MgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9lbWFpbCc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5lbWFpbCB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRDdXJyZW50ID0gY3VycmVudEZpZWxkVmFsdWUgIT0gbnVsbCA/IFN0cmluZyhjdXJyZW50RmllbGRWYWx1ZSkudHJpbSgpIDogJyc7XG4gICAgICBjb25zdCBub3JtYWxpemVkT3JpZ2luYWwgPSBvcmlnaW5hbFZhbHVlICE9IG51bGwgPyBTdHJpbmcob3JpZ2luYWxWYWx1ZSkudHJpbSgpIDogJyc7XG5cbiAgICAgIGlmIChub3JtYWxpemVkQ3VycmVudCAhPT0gbm9ybWFsaXplZE9yaWdpbmFsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNob3dDb25maXJtU2VjdGlvbkhhbmRsZXIoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5pbnZhbGlkIHx8XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmhhc0Vycm9yKCdtaXNtYXRjaCcpIHx8XG4gICAgICAhdGhpcy5oYXNGb3JtQ2hhbmdlZCgpXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNob3dDb25maXJtU2VjdGlvbiA9IHRydWU7XG4gIH1cblxuICBzZW5kVXBkYXRlUmVxdWVzdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maXJtRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmNvbmZpcm1Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXRSYXdWYWx1ZSgpO1xuICAgIGNvbnN0IGNvbmZpcm1WYWx1ZSA9IHRoaXMuY29uZmlybUZvcm0udmFsdWU7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBhbnkgPSB7XG4gICAgICB0b2tlbjogdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyVG9rZW4oKSxcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgY29kZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RlLFxuICAgICAgICBuYW1lOiBmb3JtVmFsdWUubmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBmb3JtVmFsdWUubGFzdF9uYW1lLFxuICAgICAgICBpZF9jYXJkX3R5cGU6IGZvcm1WYWx1ZS5pZF9jYXJkX3R5cGUsXG4gICAgICAgIGlkX2NhcmQ6IGZvcm1WYWx1ZS5pZF9jYXJkLFxuICAgICAgICBwaG9uZV9pbmRpY2F0aXZlOiBmb3JtVmFsdWUucGhvbmVfaW5kaWNhdGl2ZSxcbiAgICAgICAgcGhvbmVfbnVtYmVyOiBmb3JtVmFsdWUucGhvbmVfbnVtYmVyLFxuICAgICAgICBlbWFpbDogZm9ybVZhbHVlLmVtYWlsLFxuICAgICAgICBnZW5kZXI6IGZvcm1WYWx1ZS5nZW5kZXIsXG4gICAgICAgIGNpdHk6IGZvcm1WYWx1ZS5jaXR5LFxuICAgICAgICBzZXJ2aWNlX2hvdXI6IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPyBmb3JtVmFsdWUuc2VydmljZV9ob3VyIDogMCxcbiAgICAgICAgcm9sZTogdGhpcy5jYW5FZGl0Um9sZSA/IGZvcm1WYWx1ZS5yb2xlIDogdGhpcy5EYXRhU3R1ZGVudC5yb2xlLFxuICAgICAgICBzdGF0dXM6IGZvcm1WYWx1ZS5zdGF0dXMsXG4gICAgICAgIC4uLih0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8geyBlbWFpbF9pcHQ6IGZvcm1WYWx1ZS5lbWFpbF9pcHQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGZvcm1WYWx1ZS5jaGFuZ2VQYXNzd29yZCAmJiBmb3JtVmFsdWUucGFzc3dvcmQgPyB7IHBhc3N3b3JkOiBmb3JtVmFsdWUucGFzc3dvcmQgfSA6IHt9KVxuICAgICAgfSxcbiAgICAgIHBhcmVudDogdGhpcy5zaG93UGFyZW50U2VjdGlvblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGNvZGU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5jb2RlIHx8IG51bGwsXG4gICAgICAgICAgICBuYW1lOiBmb3JtVmFsdWUucGFyZW50X25hbWUgfHwgbnVsbCxcbiAgICAgICAgICAgIGxhc3RfbmFtZTogZm9ybVZhbHVlLnBhcmVudF9sYXN0X25hbWUgfHwgbnVsbCxcbiAgICAgICAgICAgIGlkX2NhcmRfdHlwZTogZm9ybVZhbHVlLnBhcmVudF9pZF9jYXJkX3R5cGUgfHwgbnVsbCxcbiAgICAgICAgICAgIGlkX2NhcmQ6IGZvcm1WYWx1ZS5wYXJlbnRfaWRfY2FyZCB8fCBudWxsLFxuICAgICAgICAgICAgcGhvbmVfaW5kaWNhdGl2ZTogZm9ybVZhbHVlLnBhcmVudF9waG9uZV9pbmRpY2F0aXZlIHx8IG51bGwsXG4gICAgICAgICAgICBwaG9uZV9udW1iZXI6IGZvcm1WYWx1ZS5wYXJlbnRfcGhvbmVfbnVtYmVyIHx8IG51bGwsXG4gICAgICAgICAgICBvY2N1cGF0aW9uOiBmb3JtVmFsdWUucGFyZW50X29jY3VwYXRpb24gfHwgbnVsbCxcbiAgICAgICAgICAgIG9mZmljZV9hZHJyZXNzOiBmb3JtVmFsdWUucGFyZW50X29mZmljZV9hZHJyZXNzIHx8IG51bGwsXG4gICAgICAgICAgICBlbWFpbDogZm9ybVZhbHVlLnBhcmVudF9lbWFpbCB8fCBudWxsXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwsXG4gICAgICByZWFzb246IGNvbmZpcm1WYWx1ZS5yZWFzb24sXG4gICAgICBvYnNlcnZhdGlvbjogY29uZmlybVZhbHVlLm9ic2VydmF0aW9uLFxuICAgIH07XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnVwZGF0ZVVzZXJCeUNvZGUocmVxdWVzdCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UubWVzc2FnZS5jb2RlID09PSAxKSB7XG4gICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGljb246ICdzdWNjZXNzJyxcbiAgICAgICAgICAgIHRpdGxlOiAnVXN1YXJpbyBhY3R1YWxpemFkbyBzYXRpc2ZhY3RvcmlhbWVudGUnLFxuICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICAgICAgdGltZXI6IDI1MDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy51c2VyVXBkYXRlZEV2ZW50LmVtaXQoKTtcbiAgICAgICAgICB0aGlzLmNsb3NlVGFibGUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5tZXNzYWdlLmNvZGUgPT09IDMpIHtcbiAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgcG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgICAgICAgaWNvbjogJ3dhcm5pbmcnLFxuICAgICAgICAgICAgdGl0bGU6IHJlc3BvbnNlLmRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgIHRleHQ6IHJlc3BvbnNlLmRhdGEuZXJyb3JzLFxuICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICAgICAgdGltZXI6IDI1MDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGRhdGluZyB1c2VyOicsIGVycik7XG4gICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgcG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgICAgIGljb246ICdlcnJvcicsXG4gICAgICAgICAgdGl0bGU6ICdIYSBvY3VycmlkbyB1biBlcnJvciBpbmVzcGVyYWRvJyxcbiAgICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgdGltZXI6IDI1MDAsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1EaWFsb2dzKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uaW52YWxpZCB8fFxuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSB8fFxuICAgICAgIXRoaXMuaGFzRm9ybUNoYW5nZWQoKVxuICAgICkge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpcm1Gb3JtLnJlc2V0KCk7IFxuICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2cgPSB0cnVlOyBcbiAgfVxuXG4gIGFjY2VwdENvbmZpcm1EaWFsb2coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlybUZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5jb25maXJtRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VuZFVwZGF0ZVJlcXVlc3QoKTtcbiAgfVxuXG4gIHJlamVjdENvbmZpcm1EaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtRm9ybS5yZXNldCgpO1xuICB9XG5cbiAgY2xvc2VDb25maXJtRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2cgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5jb25maXJtRm9ybS5nZXQoJ3JlYXNvbicpPy5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5jb25maXJtRm9ybS5nZXQoJ29ic2VydmF0aW9uJyk/LnNldFZhbHVlKCcnKTtcbiAgfVxuXG4gIC8vIEFncmVnYXIgZXN0ZSBtw6l0b2RvIHBhcmEgdmVyaWZpY2FyIGVsIHJvbCB5IG1vc3RyYXIvb2N1bHRhciBjYW1wb3NcbiAgY2hlY2tSb2xlRm9yQWRkaXRpb25hbEZpZWxkcyhyb2xlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCByb2xlTnVtYmVyID0gdHlwZW9mIHJvbGUgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQocm9sZSwgMTApIDogcm9sZTtcbiAgICBcbiAgICAvLyBSb2xlcyBxdWUgTk8gcmVxdWllcmVuIGVtYWlsX2lwdCB5IHNlcnZpY2VfaG91cjogZXN0dWRpYW50ZSAoMTMpLCBwb3NpYmxlIGVzdHVkaWFudGUgKDE1KSwgcHJvdmVlZG9yICg2MClcbiAgICBjb25zdCByb2xlc1dpdGhvdXRBZGRpdGlvbmFsRmllbGRzID0gWzEzLCAxNSwgNjBdO1xuICAgIFxuICAgIC8vIFNpIGVsIHJvbCBhY3R1YWwgTk8gZXN0w6EgZW4gbGEgbGlzdGEgZGUgcm9sZXMgc2luIGNhbXBvcyBhZGljaW9uYWxlcywgbW9zdHJhbW9zIGxvcyBjYW1wb3NcbiAgICB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID0gIXJvbGVzV2l0aG91dEFkZGl0aW9uYWxGaWVsZHMuaW5jbHVkZXMocm9sZU51bWJlcik7XG4gIH1cblxuXG59IiwiPG1haW4gKm5nSWY9XCJ2aXNpYmxlTW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsX2NvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfbW9kYWwgeWVsbG93LTMwMFwiPlxuICAgICAgPGgxPkFjdHVhbGl6YXIgdXN1YXJpbzwvaDE+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZVRhYmxlKClcIj54PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdyaWRfY29udGFpbmVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8Zm9ybSAqbmdJZj1cInVwZGF0ZVVzZXJGb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJ1cGRhdGVVc2VyRm9ybVwiPlxuICAgICAgICAgIDwhLS0gVXNlciBJbmZvcm1hdGlvbiBTZWN0aW9uIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgPGgyPkluZm9ybWFjacOzbiBkZWwgdXN1YXJpbzwvaDI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInTm9tYnJlcydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgZWwgbm9tYnJlJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyAzIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDMyIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAnU29sbyBsZXRyYXMsIGVzcGFjaW9zIHkgZ3Vpb25lcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ10uaGFzRXJyb3IoJ2hhc1doaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBlc3BhY2lvcyBhbCBpbmljaW8gbyBmaW5hbCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ10uaGFzRXJyb3IoJ29ubHlXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gc29sbyBlc3BhY2lvcycgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIGVsIG5vbWJyZSdcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInQXBlbGxpZG9zJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2xhc3RfbmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgbG9zIGFwZWxsaWRvcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyAzIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMzIgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1NvbG8gbGV0cmFzLCBlc3BhY2lvcyB5IGd1aW9uZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ2hhc1doaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBlc3BhY2lvcyBhbCBpbmljaW8gbyBmaW5hbCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcignb25seVdoaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBzb2xvIGVzcGFjaW9zJyA6XG4gICAgICAgICAgICAgICAgJ0RlYmUgaW5ncmVzYXIgbG9zIGFwZWxsaWRvcydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidlbWFpbCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VtYWlsJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIHVuIGNvcnJlbyB2w6FsaWRvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMzAwIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1RpZW5lIHF1ZSBzZXIgdW4gZW1haWwgY29ycmVjdG8nIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcignaGFzV2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIGVzcGFjaW9zIGFsIGluaWNpbyBvIGZpbmFsJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ29ubHlXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gc29sbyBlc3BhY2lvcycgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIHVuIGNvcnJlbyB2w6FsaWRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXJcIlxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW1haWwgSVBUJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgdW4gY29ycmVvIElQVCB2w6FsaWRvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDI1NSBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAnVGllbmUgcXVlIHNlciB1biBlbWFpbCBjb3JyZWN0bycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXS5oYXNFcnJvcignaGFzV2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIGVzcGFjaW9zIGFsIGluaWNpbyBvIGZpbmFsJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdvbmx5V2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIHNvbG8gZXNwYWNpb3MnIDpcbiAgICAgICAgICAgICAgICAnRGViZSBpbmdyZXNhciB1biBjb3JyZW8gSVBUIHbDoWxpZG8nXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91clwiXG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0hvcmFzIGRlIHNlcnZpY2lvJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3NlcnZpY2VfaG91ciddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgbGFzIGhvcmFzIGRlIHNlcnZpY2lvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3NlcnZpY2VfaG91ciddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAnU29sbyBuw7ptZXJvcyBwZXJtaXRpZG9zJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3NlcnZpY2VfaG91ciddLmhhc0Vycm9yKCdtaW4nKSA/ICdFbCB2YWxvciBkZWJlIHNlciBtYXlvciBvIGlndWFsIGEgMCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXS5oYXNFcnJvcignbWF4JykgPyAnRWwgdmFsb3IgZGViZSBzZXIgbWVub3IgbyBpZ3VhbCBhIDQ0JyA6XG4gICAgICAgICAgICAgICAgJ0RlYmUgaW5ncmVzYXIgbGFzIGhvcmFzIGRlIHNlcnZpY2lvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5FZGl0Um9sZTsgZWxzZSByZWFkT25seVJvbGVcIj5cbiAgICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ10udmFsdWVcIlxuICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ11cIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ10udmFsdWUgPT09IG51bGwgPyAnU2VsZWNjaW9uZSByb2wnIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JvbGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwicm9sZXNcIlxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJjb2RlXCJcbiAgICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0Um9sZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1NlbGVjY2lvbmUgcm9sJ1wiXG4gICAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZE9ubHlSb2xlPlxuICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInUm9sJ1wiXG4gICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JvbGUnXVwiXG4gICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInUm9sIHJlcXVlcmlkbydcIlxuICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ11cIlxuICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ10udmFsdWUgPT09IG51bGwgPyAnU2VsZWNjaW9uZSBnw6luZXJvJyA6ICh1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ10udmFsdWUgfCBnZW5kZXJEaXNwbGF5KVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cImdlbmRlcnNcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0R2VuZGVyKCRldmVudClcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1NlbGVjY2lvbmUgZ8OpbmVybydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bob25lX2luZGljYXRpdmUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwaG9uZV9pbmRpY2F0aXZlJ11cIlxuICAgICAgICAgICAgICBbZGF0YV09XCJpbmRpY2F0aXZlc1wiXG4gICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJbmRpY2F0aXZlKCdwaG9uZV9pbmRpY2F0aXZlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInSW5kaWNhdGl2bydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInVGVsw6lmb25vJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwaG9uZV9udW1iZXInXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgdW4gbsO6bWVybyBkZSB0ZWzDqWZvbm8gdsOhbGlkbydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ11cIlxuICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ10udmFsdWUgPT09IG51bGwgPyAnVGlwbyBkZSBkb2N1bWVudG8nIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cImlkVHlwZXNcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SWRUeXBlKCdpZF9jYXJkX3R5cGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidUaXBvIGRlIGRvY3VtZW50bydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0RvY3VtZW50bydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgZWwgbsO6bWVybyBkZSBkb2N1bWVudG8nIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSA/ICdNw61uaW1vIDUgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMjAgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkJ10uaGFzRXJyb3IoJ3BhdHRlcm4nKSA/ICh1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ10udmFsdWUgPT09IDcgfHwgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlID09PSA1ID8gJ1NvbG8gbGV0cmFzIHkgbsO6bWVyb3MgcGVybWl0aWRvcycgOiAnU29sbyBuw7ptZXJvcyBwZXJtaXRpZG9zJykgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIGVsIG7Dum1lcm8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddLnZhbHVlID09PSBudWxsID8gJ1Bhw61zIGRlIHJlc2lkZW5jaWEnIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdENvdW50cnkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwiY291bnRyaWVzXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1Bhw61zIGRlIHJlc2lkZW5jaWEnXCJcbiAgICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3N0YXRlJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlID09PSBudWxsID8gJ0RlcGFydGFtZW50byBvIGVzdGFkbycgOiB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0U3RhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cInN0YXRlc1wiXG4gICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInRGVwYXJ0YW1lbnRvIG8gZXN0YWRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10udmFsdWUgPT09IG51bGwgPyAnQ2l1ZGFkIGRlIHJlc2lkZW5jaWEnIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS52YWx1ZVwiXG4gICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDaXR5KCRldmVudClcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJjaXRpZXNcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0NpdWRhZCBkZSByZXNpZGVuY2lhJ1wiXG4gICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtc3RhdHVzXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi1zdGF0dXNcIj5Fc3RhZG88L3NwYW4+XG4gICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJqdXN0aWZ5T3B0aW9uc1wiIFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0YXR1c1wiIFxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiIFxuICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwiY29kZVwiPlxuICAgICAgICAgICAgICA8L3Atc2VsZWN0QnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXVzZXJSb2xlQ29tbWVyY2lhbFwiIGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPHAtY2hlY2tib3hcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaGFuZ2VQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDYW1iaW8gZGUgY29udHJhc2XDsWFcIlxuICAgICAgICAgICAgICAgIFtiaW5hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID48L3AtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkXCIgKm5nSWY9XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2hhbmdlUGFzc3dvcmQnXS52YWx1ZVwiPlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0NvbnRyYXNlw7FhJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdMYSBjb250cmFzZcOxYSBlcyByZXF1ZXJpZGEnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyA1IGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAzMiBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgJ0luZ3Jlc2UgdW5hIGNvbnRyYXNlw7FhIHbDoWxpZGEnXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cblxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1JlcGV0aXIgY29udHJhc2XDsWEnXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JlX3Bhc3N3b3JkJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyZV9wYXNzd29yZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgcmVwZXRpciBsYSBjb250cmFzZcOxYScgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyZV9wYXNzd29yZCddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSA/ICdNw61uaW1vIDUgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyZV9wYXNzd29yZCddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDMyIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSA/ICdMYXMgY29udHJhc2XDsWFzIG5vIGNvaW5jaWRlbicgOlxuICAgICAgICAgICAgICAgICdSZXBpdGEgbGEgY29udHJhc2XDsWEnXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gTWVuc2FqZSBhZGljaW9uYWwgcGFyYSBlbCBlcnJvciBkZSBtaXNtYXRjaCAob3BjaW9uYWwsIHNpIHF1aWVyZXMgbW9zdHJhcmxvIHBvciBzZXBhcmFkbykgLS0+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXBkYXRlVXNlckZvcm0uaGFzRXJyb3IoJ21pc21hdGNoJykgJiYgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NoYW5nZVBhc3N3b3JkJ10udmFsdWVcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxzbWFsbCA+TGFzIGNvbnRyYXNlw7FhcyBubyBjb2luY2lkZW48L3NtYWxsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gUGFyZW50IEluZm9ybWF0aW9uIFNlY3Rpb24gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCIgKm5nSWY9XCJEYXRhU3R1ZGVudD8uY29kc1wiPlxuICAgICAgICAgICAgPGgyPkluZm9ybWFjacOzbiBkZWwgYWN1ZGllbnRlPC9oMj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiRGF0YVN0dWRlbnQ/LmNvZHNcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UGFyZW50U2VjdGlvbjsgZWxzZSBub1BhcmVudE1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInTm9tYnJlcydcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9uYW1lJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBlbCBub21icmUnXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidBcGVsbGlkb3MnXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfbGFzdF9uYW1lJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBsb3MgYXBlbGxpZG9zJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInT2N1cGFjacOzbidcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9vY2N1cGF0aW9uJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBsYSBvY3VwYWNpw7NuJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VtYWlsJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2VtYWlsJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciB1biBjb3JyZW8gdsOhbGlkbydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfaWRfY2FyZF90eXBlJ11cIlxuICAgICAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdUaXBvIGRlIGRvY3VtZW50bycgOiB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiaWRUeXBlc1wiXG4gICAgICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SWRUeXBlKCdwYXJlbnRfaWRfY2FyZF90eXBlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1RpcG8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmQnXVwiXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIGVsIG7Dum1lcm8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZSddXCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImluZGljYXRpdmVzXCJcbiAgICAgICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJbmRpY2F0aXZlKCdwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidJbmRpY2F0aXZvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInVGVsw6lmb25vJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X3Bob25lX251bWJlciddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgdW4gbsO6bWVybyBkZSB0ZWzDqWZvbm8gdsOhbGlkbydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cblxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRGlyZWNjacOzbiBkZSBvZmljaW5hJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X29mZmljZV9hZHJyZXNzJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBsYSBkaXJlY2Npw7NuJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1BhcmVudE1lc3NhZ2U+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1wYXJlbnQtbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxwPlNpbiBhY3VkaWVudGU8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lci1pbm5lclwiPlxuICAgICAgICAgICAgICA8aXB0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiJ2J1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDZXJyYXInXCJcbiAgICAgICAgICAgICAgICAgIFtwcmltYXJ5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtpc0VuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJjbG9zZVRhYmxlKClcIlxuICAgICAgICAgICAgICA+PC9pcHQtYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxpcHQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBY3R1YWxpemFyJ1wiXG4gICAgICAgICAgICAgICAgW2lzRW5hYmxlZF09XCIhbG9hZGVyICYmIHVwZGF0ZVVzZXJGb3JtLnZhbGlkICYmICF1cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSAmJiBoYXNGb3JtQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJzaG93Q29uZmlybURpYWxvZ3MoKVwiXG4gICAgICAgICAgICAgICAgW3ByaW1hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBDb25maXJtIERpYWxvZyBwYXJhIHJhesOzbiB5IG9ic2VydmFjacOzbiAtLT5cbjxwLWRpYWxvZ1xuICAgIGhlYWRlcj1cIkNvbmZpcm1hciBBanVzdGUgZGUgVXN1YXJpb1wiXG4gICAgWyh2aXNpYmxlKV09XCJzaG93Q29uZmlybURpYWxvZ1wiXG4gICAgW21vZGFsXT1cInRydWVcIlxuICAgIChvbkhpZGUpPVwiY2xvc2VDb25maXJtRGlhbG9nKClcIlxuICA+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiY29uZmlybUZvcm1cIiBjbGFzcz1cImNvbmZpcm0tZm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwLWZpZWxkXCI+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbY29udHJvbF09XCJjb25maXJtRm9ybS5jb250cm9sc1sncmVhc29uJ11cIlxuICAgICAgICBbZGF0YV09XCJyZWFzb25zXCJcbiAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFJlYXNvbigkZXZlbnQpXCJcbiAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidTZWxlY2Npb25lIGxhIHJhesOzbidcIlxuICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDxzbWFsbCAqbmdJZj1cImNvbmZpcm1Gb3JtLmNvbnRyb2xzWydyZWFzb24nXS5pbnZhbGlkICYmIGNvbmZpcm1Gb3JtLmNvbnRyb2xzWydyZWFzb24nXS50b3VjaGVkXCIgY2xhc3M9XCJwLWVycm9yXCI+XG4gICAgICAgIExhIHJhesOzbiBlcyByZXF1ZXJpZGFcbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInAtZmllbGRcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRhaW5lci1vYnNlcnZhdGlvblwiPk9ic2VydmFjacOzbjwvbGFiZWw+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgaWQ9XCJvYnNlcnZhdGlvblwiXG4gICAgICAgIHBJbnB1dFRleHRhcmVhXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9ic2VydmF0aW9uXCJcbiAgICAgICAgcm93cz1cIjNcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkRlc2NyaWJlIGRldGFsbGVzIGFkaWNpb25hbGVzIGRlbCBhanVzdGVcIlxuICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8c21hbGwgKm5nSWY9XCJjb25maXJtRm9ybS5jb250cm9sc1snb2JzZXJ2YXRpb24nXS5pbnZhbGlkICYmIGNvbmZpcm1Gb3JtLmNvbnRyb2xzWydvYnNlcnZhdGlvbiddLnRvdWNoZWRcIiBjbGFzcz1cInAtZXJyb3JcIj5cbiAgICAgICAgTGEgb2JzZXJ2YWNpw7NuIGVzIHJlcXVlcmlkYVxuICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuICA8cC1mb290ZXI+XG4gICAgPGlwdC1idXR0b25cbiAgICAgIGNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCJcbiAgICAgIFtidXR0b25UeXBlXT1cIididXR0b24nXCJcbiAgICAgIFtsYWJlbF09XCInQ2FuY2VsYXInXCJcbiAgICAgIFtwcmltYXJ5XT1cImZhbHNlXCJcbiAgICAgIFtpc0VuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAob25DbGljayk9XCJjbG9zZUNvbmZpcm1EaWFsb2coKVwiXG4gICAgPjwvaXB0LWJ1dHRvbj5cbiAgICA8aXB0LWJ1dHRvblxuICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnlcIlxuICAgICAgW2J1dHRvblR5cGVdPVwiJ2J1dHRvbidcIlxuICAgICAgW2xhYmVsXT1cIidDb25maXJtYXInXCJcbiAgICAgIFtwcmltYXJ5XT1cInRydWVcIlxuICAgICAgW2lzRW5hYmxlZF09XCIhbG9hZGVyICYmIGNvbmZpcm1Gb3JtLnZhbGlkXCJcbiAgICAgIChvbkNsaWNrKT1cImFjY2VwdENvbmZpcm1EaWFsb2coKVwiXG4gICAgPjwvaXB0LWJ1dHRvbj5cbiAgPC9wLWZvb3Rlcj5cbjwvcC1kaWFsb2c+XG5cbjwvbWFpbj4iXX0=