simpo-component-library 3.3.1 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -452,31 +452,27 @@ export class RegistrationFormComponent extends BaseSection {
452
452
  return response;
453
453
  }
454
454
  getMaxDate(item) {
455
- const today = new Date();
456
- let maxDate;
457
- const formattedLabel = item.fieldLabel.trim().toLowerCase();
455
+ const formattedLabel = (item.fieldLabel || '').trim().toLowerCase();
458
456
  const fieldGroupName = (item.fieldGroup || []).flatMap((g) => [
459
- g.fieldGroupName?.toLowerCase() || '',
460
- g.fieldStepName?.toLowerCase() || ''
457
+ (g.fieldGroupName || '').toLowerCase(),
458
+ (g.fieldStepName || '').toLowerCase()
461
459
  ]);
462
460
  if (formattedLabel.includes('dob')) {
461
+ const tempDate = new Date();
463
462
  if (fieldGroupName.some((name) => name.includes('student'))) {
464
- maxDate = new Date(today.setFullYear(today.getFullYear() - 3));
463
+ tempDate.setFullYear(tempDate.getFullYear() - 3);
464
+ return tempDate.toISOString().split('T')[0];
465
465
  }
466
- else if (fieldGroupName.some((name) => name.includes('mother'))) {
467
- maxDate = new Date(today.setFullYear(today.getFullYear() - 18));
466
+ if (fieldGroupName.some((name) => name.includes('mother'))) {
467
+ tempDate.setFullYear(tempDate.getFullYear() - 18);
468
+ return tempDate.toISOString().split('T')[0];
468
469
  }
469
- else if (fieldGroupName.some((name) => name.includes('father') || name.includes('guardian'))) {
470
- maxDate = new Date(today.setFullYear(today.getFullYear() - 21));
470
+ if (fieldGroupName.some((name) => name.includes('father') || name.includes('guardian'))) {
471
+ tempDate.setFullYear(tempDate.getFullYear() - 21);
472
+ return tempDate.toISOString().split('T')[0];
471
473
  }
472
- else {
473
- maxDate = new Date();
474
- }
475
- }
476
- else {
477
- maxDate = new Date();
478
474
  }
479
- return maxDate.toISOString().split('T')[0];
475
+ return null;
480
476
  }
481
477
  radioButtonChanged(item, selectedKey, group) {
482
478
  if (item.type === 'PASSPORT_AVAILABLE') {
@@ -527,4 +523,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
527
523
  }], nextComponentColor: [{
528
524
  type: Input
529
525
  }] } });
530
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9yZWdpc3RyYXRpb24tZm9ybS9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3JlZ2lzdHJhdGlvbi1mb3JtL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUcsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRSxPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0QnpELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxXQUFXO0lBUXhELFlBQW9CLFdBQXdCLEVBQ2xDLFFBQXFCLEVBQ3JCLGFBQTZCLEVBQzdCLE1BQXNCLEVBQ3ZCLEVBQWdCLEVBQ2hCLGtCQUFzQztRQUU3QyxLQUFLLEVBQUUsQ0FBQztRQVBVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3ZCLE9BQUUsR0FBRixFQUFFLENBQWM7UUFDaEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUsvQyxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLFlBQU8sR0FBUTtZQUNiLGlCQUFpQixFQUFFO2dCQUNqQixJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztnQkFDdkUsTUFBTSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7YUFDOUU7WUFDRCxZQUFZLEVBQUUsRUFBRTtZQUNoQixRQUFRLEVBQUUsRUFBRTtZQUNaLFdBQVcsRUFBRSxFQUFFO1lBQ2YscUJBQXFCLEVBQUUsS0FBSztZQUM1QixXQUFXLEVBQUcsRUFBRTtZQUNoQixpQkFBaUIsRUFBRyxVQUFVO1lBQzlCLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsd0JBQXdCLEVBQUU7Z0JBQ3hCLFFBQVEsRUFBRSxDQUFDO2dCQUNYLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDekIsZUFBZSxFQUFFLFNBQVM7Z0JBQzFCLGNBQWMsRUFBRSxFQUFFO2dCQUNsQixhQUFhLEVBQUUsRUFBRTtnQkFDakIsb0JBQW9CLEVBQUUsSUFBSTtnQkFDMUIsZ0JBQWdCLEVBQUUsRUFBRTtnQkFDcEIsZUFBZSxFQUFFLEVBQUU7Z0JBQ25CLFlBQVksRUFBRSxFQUFFO2dCQUNoQixTQUFTLEVBQUUsRUFBRTtnQkFDYixpQkFBaUIsRUFBRSxFQUFFO2dCQUNyQixnQkFBZ0IsRUFBRSxLQUFLO2dCQUN2QixnQkFBZ0IsRUFBRSxFQUFFO2FBQ3JCO1NBQ0YsQ0FBQTtRQUdELGNBQVMsR0FBUSxFQUFFLENBQUE7UUFJbkIsaUJBQVksR0FBVSxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFXLEVBQUUsQ0FBQTtRQUN2QixvQkFBZSxHQUFRLEVBQUUsQ0FBQTtRQThWekIsc0JBQWlCLEdBQVUsRUFBRSxDQUFBO1FBQzdCLG9CQUFlLEdBQVUsRUFBRSxDQUFDO1FBMkk1Qix1QkFBa0IsR0FBWSxLQUFLLENBQUM7SUFqaEJwQyxDQUFDO0lBMENELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUMvQyxJQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0MsSUFBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFaEQsSUFBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWpDLElBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDYixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUVsRCxJQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNoRixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLENBQUM7WUFFRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUU1QixDQUFDLENBQUMsQ0FBQTtRQUVGLHVGQUF1RjtRQUV2RixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsMkJBQTJCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxXQUFtQjtRQUM3QixNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUM7WUFDMUIsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUM7WUFDMUwsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1NBQ2hPLENBQUMsQ0FBQTtRQUdGLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUNuQyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsSSxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUV0QyxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUE7WUFFdEMsZ0NBQWdDO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUE7WUFFMUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixLQUFJLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMxSSxJQUFHLFNBQVMsQ0FBQyxTQUFTLEtBQUssZUFBZSxFQUFFLENBQUM7b0JBQzNDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNuRCxDQUFDO2dCQUNELElBQUcsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDMUIsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNuRSxDQUFDO2dCQUNELElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLGNBQWMsQ0FBQztnQkFDeEQsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDdkQsQ0FBQztZQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFFdEQsS0FBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsS0FBSSxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNuRCxLQUFJLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDN0MsSUFBRyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDOzRCQUN0QixLQUFLLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzNELENBQUM7NkJBQU0sQ0FBQzs0QkFDTixLQUFLLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDO3dCQUN6RSxDQUFDO3dCQUVELElBQUcsS0FBSyxFQUFFLElBQUksS0FBSyxPQUFPOzRCQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFFN0UsSUFBRyxLQUFLLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDOzRCQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2xDLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFFRCxXQUFXLENBQUMsU0FBZ0IsRUFBRSxTQUFjO1FBQzFDLEtBQUksSUFBSSxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7WUFDM0IsSUFBRyxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFVO1FBQzVCLElBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsS0FBSSxJQUFJLFVBQVUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xDLElBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2hELFVBQVUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFDSSxDQUFDO1lBQ0osS0FBSSxJQUFJLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNyRSxJQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUMvQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUdELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBRTFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVcsRUFBRSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLGFBQWEsRUFBRSxDQUFDO29CQUNqRyxPQUFPLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDNUIsQ0FBQztxQkFDSSxDQUFDO29CQUNKLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzdDLE1BQU0sUUFBUSxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFFakMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBVyxFQUFFLEVBQUU7Z0JBQ3BDLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO29CQUFFLE9BQU87Z0JBRTVDLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDMUIsT0FBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDOUMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUM5RCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssZUFBZSxFQUFFLENBQUM7d0JBQzNDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxXQUFXLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQzt3QkFDbEYsSUFBSSxLQUFLLEVBQUUsQ0FBQzs0QkFDVixPQUFPLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7NEJBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQ3hDLENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxJQUFJLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQzt3QkFDOUIsT0FBTyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUN4QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNoRCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtRQUNoQixNQUFNLE9BQU8sR0FBRztZQUNkLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVTtZQUM3QixRQUFRLEVBQUUsRUFBRTtZQUNaLFdBQVcsRUFBRSxFQUFFO1lBQ2YsUUFBUSxFQUFFLElBQUk7WUFDZCxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFBO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFHRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUM1RixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBSUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN2RCxJQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQ3BDLE9BQU87UUFFVCxJQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixJQUFJLFNBQVMsR0FBUSxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQTtRQUNyQyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDckcsQ0FBQztJQUdELGtCQUFrQjtRQUNoQix3SUFBd0k7UUFDeEksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxrRkFBa0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBLENBQUMsS0FBSztRQUNySSx5SUFBeUk7UUFDekksSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2pILHNGQUFzRjtZQUN0RixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBQyxjQUFjLEVBQUMsQ0FBQyxDQUFDO1FBQ3JGLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlO1FBQ25CLElBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEtBQUssTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDO1lBQ3BILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDekMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDbkYsc0lBQXNJO1FBQ3RJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsK0VBQStFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUs7UUFDbkksdUlBQXVJO1FBRXZJLElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RCLElBQUksU0FBUyxHQUFRLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6RixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFBO1FBQ3hDLENBQUM7UUFFRCxLQUFJLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QyxJQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxTQUFTLEdBQVEsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUVwRixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDNUI7b0JBQ0UsSUFBSSxFQUFFLFFBQVEsQ0FBQyxXQUFXO29CQUMxQixHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUc7b0JBQ2xCLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSTtvQkFDdEIsY0FBYyxFQUFFLFFBQVEsQ0FBQyxJQUFJO2lCQUM5QixDQUNGLENBQUE7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDO1FBQ3pGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUM5RyxtRkFBbUY7WUFDbkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUMsV0FBVyxFQUFDLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxTQUFTLEdBQVUsRUFBRSxDQUFDO1FBRTFCLEtBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDakQsS0FBSSxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUVuRCxJQUFHLEtBQUssSUFBSSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLGVBQWU7b0JBQ3JFLFNBQVM7Z0JBRVgsS0FBSSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzdDLElBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFDdkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQzt3QkFDbEYsT0FBTyxFQUFFLENBQUM7b0JBQ1osQ0FBQztvQkFFRCxJQUFJLGFBQWEsR0FBVSxFQUFFLENBQUM7b0JBQzlCLElBQUcsS0FBSyxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDakMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFFN0MsSUFBRyxhQUFhLENBQUMsTUFBTSxJQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFDLENBQUM7NEJBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7NEJBQ2xGLE9BQU8sRUFBRSxDQUFDO3dCQUNaLENBQUM7b0JBQ0gsQ0FBQztvQkFFRCxTQUFTLENBQUMsSUFBSSxDQUFDO3dCQUNiLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTzt3QkFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxVQUFVO3dCQUMzQixVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGFBQWE7d0JBQzVFLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTt3QkFDaEMsY0FBYyxFQUFFLEtBQUs7d0JBQ3JCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVzt3QkFDOUIsYUFBYSxFQUFFLElBQUk7d0JBQ25CLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtxQkFDakIsQ0FBQyxDQUFBO2dCQUVKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLElBQUksUUFBUSxHQUFVLEVBQUUsQ0FBQztRQUV6QixJQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLEtBQUksSUFBSSxVQUFVLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsQyxJQUFHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFJLElBQUksVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ3JFLElBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUdELG9CQUFvQixDQUFDLEVBQU87UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRWhDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUMvQyxDQUFDLENBQUE7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdELENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO0lBQzVCLENBQUM7SUFBRSxpQkFBaUI7UUFDbEIsSUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxFQUFDLE9BQU8sRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO1lBQ3RGLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7SUFDOUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTVDLElBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEtBQUssZUFBZSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssVUFBVSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDMUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsd0NBQXdDLEVBQUUsT0FBTyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7WUFDdkYsT0FBTztRQUNULENBQUM7UUFFRCxJQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLGVBQWU7WUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLEtBQUssS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQzs7WUFFNUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFLRCxlQUFlO1FBQ2IsSUFBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO1lBQ3BELE9BQU87UUFFVCxJQUFJLE9BQU8sR0FBRztZQUNaLGlDQUFpQztZQUNqQyxnQ0FBZ0M7WUFDaEMsOEJBQThCO1lBQzlCLGVBQWU7WUFDZixhQUFhO1lBQ2Isc0NBQXNDO1lBQ3RDLG1CQUFtQjtZQUNuQixjQUFjLEVBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO1lBQy9DLFVBQVUsRUFBRyxJQUFJLENBQUMsVUFBVTtZQUM1QixRQUFRLEVBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ2pDLE1BQU0sRUFBRyxDQUFDO1lBQ1YsUUFBUSxFQUFHLElBQUk7WUFDZixVQUFVLEVBQUcsRUFBRTtTQUNoQixDQUFBO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLHVEQUF1RDtZQUN2RCw0R0FBNEc7WUFDNUcsMkRBQTJEO1lBQzNELDhHQUE4RztZQUM5Ryx5REFBeUQ7UUFDM0QsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDO1lBQzFCLGdCQUFnQixFQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsb0NBQW9DLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQy9HLENBQUMsQ0FBQTtRQUNGLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFPLEVBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7WUFDdkQsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBVyxFQUFFLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO2dCQUM5QixDQUFDO2dCQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO29CQUNsRCxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQzt3QkFDMUIsSUFBSSxFQUFFLEtBQUs7d0JBQ1gsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO3dCQUM5QixhQUFhLEVBQUUsS0FBSzt3QkFDcEIsSUFBSSxFQUFDLEtBQUs7cUJBQ1gsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFTLEVBQUUsS0FBVTtRQUNwQyxJQUFHLEtBQUssQ0FBQyxVQUFVLEtBQUssZUFBZSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUcsS0FBSyxDQUFDLFVBQVUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQseUJBQXlCLENBQUMsSUFBUyxFQUFFLEtBQVU7UUFDN0MsSUFBRyxLQUFLLENBQUMsVUFBVSxLQUFLLG1CQUFtQixFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsRUFBTztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFHRCwrQkFBK0IsQ0FBQyxnQkFBdUI7UUFDckQsSUFBSSxRQUFRLEdBQVEsRUFBRSxDQUFDO1FBRXZCLEtBQUksSUFBSSxZQUFZLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUN6QyxJQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLFFBQVEsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDL0MsQ0FBQztZQUNELFFBQVEsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxhQUFvQjtRQUNuQyxJQUFJLFFBQVEsR0FBUSxFQUFFLENBQUM7UUFFdkIsS0FBSSxJQUFJLE1BQU0sSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQyxJQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRWhDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVE7UUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLE9BQWEsQ0FBQztRQUVsQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVELE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2hFLENBQUMsQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtZQUNyQyxDQUFDLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7U0FDckMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEUsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakUsQ0FBQztpQkFBTSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN0RSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDO2lCQUFNLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbkcsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLENBQUM7UUFFSCxDQUFDO2FBQ0ksQ0FBQztZQUNKLE9BQU8sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVMsRUFBRSxXQUFnQixFQUFFLEtBQVU7UUFDeEQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLG9CQUFvQixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBR0QsZ0JBQWdCLENBQUMsS0FBVSxFQUFFLFdBQWdCLEVBQUUsS0FBVTtRQUN2RCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBVyxFQUFFLEVBQUU7WUFDekQsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLGFBQWEsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNoRyxPQUFPLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXppQlUseUJBQXlCO21HQUF6Qix5QkFBeUIsNE1DeER0Qyx1cmNBa1FBLHk0SURoT0ksWUFBWSxpa0JBQ1osaUJBQWlCLDhCQUNqQixtQkFBbUIsNlFBQ25CLG9CQUFvQiwyZEFDcEIsZUFBZTtnQkFDZixXQUFXO2dCQUNYLGtCQUFrQix5RkFDbEIsbUJBQW1CLDBHQUNuQixlQUFlLG1GQUNmLHdCQUF3QixzSUFDeEIsbUJBQW1CLG1GQUNuQixjQUFjLGdGQUNkLGdCQUFnQixvRkFDaEIsZUFBZSxnTUFDZixlQUFlLCt0QkFDZixXQUFXLDBwQ0FDWCxhQUFhLG9MQUNiLGNBQWM7OzRGQUtMLHlCQUF5QjtrQkExQnJDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsY0FBYztxQkFDZjsrTkFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRHcmlkTGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2dyaWQtbGlzdCc7XG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvaW5kZXgnO1xuaW1wb3J0IHsgQmFja2dyb3VuZE1vZGVsLCBTdHlsZXNNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xuaW1wb3J0IHsgIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uL0Jhc2VTZWN0aW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgSW1hZ2VVcGxhb2RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBSZWdpc3RyYXRpb25Gb3JtQ29udGVudE1vZGVsLCBSZWdpc3RyYXRpb25Gb3JtTW9kZWwgfSBmcm9tICcuL3JlZ2lzdHJhdGlvbkZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLXJlZ2lzdHJhdGlvbi1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRHcmlkTGlzdE1vZHVsZSxcbiAgICBTaW1wb0VsZW1lbnRzTW9kdWxlLFxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAvL2RpcmVjdGl2ZVxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxuICAgIEJvcmRlckRpcmVjdGl2ZSxcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcbiAgICBIb3ZlckRpcmVjdGl2ZSxcbiAgICBPdmVybGF5RGlyZWN0aXZlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRSYWRpb01vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0cmF0aW9uRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3l7XG4gIEBJbnB1dCgpIGRhdGE/OiBSZWdpc3RyYXRpb25Gb3JtTW9kZWw7XG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xuICBASW5wdXQoKSBuZXh0Q29tcG9uZW50Q29sb3I/OiBCYWNrZ3JvdW5kTW9kZWw7XG4gIGNvbnRlbnQ6IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwgfCB1bmRlZmluZWQ7XG4gIHN0eWxlczogU3R5bGVzTW9kZWwgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSBfZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsXG4gICAgcHVibGljIGRzOiBEb21TYW5pdGl6ZXIsXG4gICAgcHVibGljIGltYWdlVXBsb2FkU2VydmljZTogSW1hZ2VVcGxhb2RTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBPYmplY3QgPSBPYmplY3Q7XG4gIHBheWxvYWQ6IGFueSA9IHtcbiAgICBcImJ1c2luZXNzRGV0YWlsc1wiOiB7XG4gICAgICBcImlkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcbiAgICAgIFwibmFtZVwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJOYW1lXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NOYW1lXCIpXG4gICAgfSxcbiAgICBcImZpZWxkSXRlbXNcIjogW10sXG4gICAgXCJpbWdVcmxcIjogJycsXG4gICAgJ2RvY3VtZW50cyc6IFtdLFxuICAgIFwicGFyZW50QXV0aG9yaXphdGlvblwiOiBmYWxzZSxcbiAgICBcImJhY2t1cERvY1wiIDogJycsXG4gICAgXCJwYXltZW50UGxhblR5cGVcIiA6ICdBTk5VQUxMWScsXG4gICAgXCJzdWJzY3JpcHRpb25QbGFuc1wiOiBbXSxcbiAgICBcImFkbWlzc2lvblBheW1lbnREZXRhaWxcIjoge1xuICAgICAgXCJhbW91bnRcIjogMCxcbiAgICAgIFwicGF5bWVudERhdGVcIjogbmV3IERhdGUoKSxcbiAgICAgIFwicGF5bWVudFN0YXR1c1wiOiBcIlBFTkRJTkdcIixcbiAgICAgIFwiZmFpbGVkUmVhc29uXCI6IFwiXCIsXG4gICAgICBcInBheW1lbnRMaW5rXCI6IFwiXCIsXG4gICAgICBcIm9mZmxpbmVQYXltZW50TW9kZVwiOiBudWxsLFxuICAgICAgXCJjaGVxdWVJc3N1ZWRCeVwiOiBcIlwiLFxuICAgICAgXCJhY2NvdW50TnVtYmVyXCI6IFwiXCIsXG4gICAgICBcImNoZXF1ZUJhbmtcIjogXCJcIixcbiAgICAgIFwicmVtYXJrc1wiOiBcIlwiLFxuICAgICAgXCJyZWZlcmVuY2VOdW1iZXJcIjogXCJcIixcbiAgICAgIFwib2ZmbGluZVBheW1lbnRcIjogZmFsc2UsXG4gICAgICBcImF0dGFjaGVtZW50VXJsXCI6IFwiXCJcbiAgICB9XG4gIH1cblxuICBzZWxlY3RlZEtleTogYW55O1xuICBmaWVsZERhdGE6IGFueSA9IHt9XG4gIGJ1c2luZXNzSWQ6IGFueSA7XG4gIHNlbGVjdGVkR3JhZGVJZDogYW55O1xuICBzZWxlY3RlZEFjYWRlbWljWWVhcjogYW55O1xuICBkb2N1bWVudExpc3Q6IGFueVtdID0gW107XG4gIGZvcm1TdGF0dXM6IHN0cmluZyA9ICcnXG4gIHN0dWRlbnRMaXZlV2l0aDogYW55ID0gJydcbiAgYmFja3VwRG9jRmlsZT86IEZpbGU7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yb3V0ZXIucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbTogYW55KSA9PiB7XG4gICAgICBpZihwYXJhbVsnZUlkJ10pXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10gPSBwYXJhbVsnZUlkJ107XG5cbiAgICAgIGlmKHBhcmFtWydySWQnXSlcbiAgICAgICAgdGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddID0gcGFyYW1bJ3JJZCddO1xuXG4gICAgICBpZihwYXJhbVsnYklkJ10pXG4gICAgICAgIHRoaXMuYnVzaW5lc3NJZCA9IHBhcmFtWydiSWQnXTtcblxuICAgICAgaWYocGFyYW1bJ3RJZCddKVxuICAgICAgICB0aGlzLnBheWxvYWRbJ3RlbXBsYXRlSWQnXSA9IHBhcmFtWyd0SWQnXTtcblxuICAgICAgdGhpcy5wYXlsb2FkLmJ1c2luZXNzRGV0YWlscy5pZCA9IHRoaXMuYnVzaW5lc3NJZDtcblxuICAgICAgaWYodGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddIHx8IHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10pIHtcbiAgICAgICAgdGhpcy5nZXRGb3JtZGF0YSh0aGlzLnBheWxvYWRbJ3JlZ2lzdHJhdGlvbklkJ10gfHwgdGhpcy5wYXlsb2FkWydlbnF1aXJ5SWQnXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdldEFsbEZpZWxkcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmdldEFMTERvY3VtZW50TGlzdCgpO1xuXG4gICAgfSlcblxuICAgIC8vIHRoaXMuYnVzaW5lc3NJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKTtcblxuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXRGb3JtZGF0YShhZG1pc3Npb25JZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VydmVyQ2FsbCA9IGZvcmtKb2luKHtcbiAgICAgIGFkbWlzc2lvbkRhdGE6IHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IHRoaXMucmVzdFNlcnZpY2UuZ2V0TGVhZEJ5SWQoYWRtaXNzaW9uSWQpIDogdGhpcy5yZXN0U2VydmljZS5nZXRSZWdpc3RyYXRpb25MaXN0KHtpZDogYWRtaXNzaW9uSWQsIHBhZ2VObzogMCwgcGFnZVNpemU6IDF9KSxcbiAgICAgIGZpZWxkRGF0YTogdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJylcbiAgICB9KVxuXG5cbiAgICBzZXJ2ZXJDYWxsLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGxldCBhZG1pc3Npb25EYXRhID0gdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gcmVzdWx0LmFkbWlzc2lvbkRhdGEuZGF0YSA6IHJlc3VsdC5hZG1pc3Npb25EYXRhLmRhdGEuZGF0YVswXTtcbiAgICAgIGxldCBmaWVsZERhdGEgPSByZXN1bHQuZmllbGREYXRhLmRhdGE7XG5cbiAgICAgIHRoaXMuZm9ybVN0YXR1cyA9IGFkbWlzc2lvbkRhdGEuc3RhdHVzXG5cbiAgICAgIC8vIHRoaXMucGF5bG9hZCA9IGFkbWlzc2lvbkRhdGE7XG4gICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddID0gW107XG4gICAgICB0aGlzLnBheWxvYWQuYnVzaW5lc3NEZXRhaWxzLmlkID0gdGhpcy5idXNpbmVzc0lkO1xuICAgICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9IGFkbWlzc2lvbkRhdGEuaW1nVXJsXG5cbiAgICAgIGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ10gPSB7fTtcbiAgICAgIGZvcihsZXQgZmllbGRJdGVtIG9mIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IChhZG1pc3Npb25EYXRhPy5maWVsZERhdGEgfHwgW10pIDogKGFkbWlzc2lvbkRhdGE/LmZpZWxkSXRlbXMgfHwgW10pKSB7XG4gICAgICAgIGlmKGZpZWxkSXRlbS5maWVsZE5hbWUgPT09ICdBY2FkZW1pYyBZZWFyJykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgPSBmaWVsZEl0ZW0uZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZihmaWVsZEl0ZW0udHlwZSAhPSBudWxsKSB7XG4gICAgICAgICAgYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZEl0ZW0udHlwZV0gPSBmaWVsZEl0ZW0uZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaWQgPSBmaWVsZEl0ZW0uZmllbGROYW1lICsgZmllbGRJdGVtLmZpZWxkR3JvdXBOYW1lO1xuICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2lkXSA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZpZWxkRGF0YSA9IHRoaXMucmVzdFNlcnZpY2UuZ2V0RmllbGRzVG9EaXNwbGF5KGZpZWxkRGF0YS5kYXRhKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKVswXVxuXG4gICAgICBmb3IobGV0IHN0ZXAgb2YgdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSkpIHtcbiAgICAgICAgZm9yKGxldCBncm91cCBvZiBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YVtzdGVwXSkpIHtcbiAgICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xuICAgICAgICAgICAgaWYoZmllbGQudHlwZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIGZpZWxkLmZpZWxkVmFsdWUgPSBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkLnR5cGVdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGQuZmllbGRWYWx1ZSA9IGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ11bZmllbGQuZmllbGRMYWJlbCArIGdyb3VwXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYoZmllbGQ/LnR5cGUgPT09ICdHUkFERScpXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlR3JhZGUoZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV0sIGZpZWxkLmZpZWxkVmFsdWUpO1xuXG4gICAgICAgICAgICBpZihmaWVsZC5kYXRhVHlwZSA9PT0gJ0NIRUNLQk9YJykge1xuICAgICAgICAgICAgICB0aGlzLmZvcm1hdENoZWNrQm94VmFsdWUoZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmdldEZlZVN0cnVjdHVyZSgpO1xuICAgIH0pXG5cbiAgfVxuXG4gIHVwZGF0ZUdyYWRlKGdyYWRlTGlzdCA6YW55W10sIGdyYWRlTmFtZTogYW55KSB7XG4gICAgZm9yKGxldCBncmFkZSBvZiBncmFkZUxpc3QpIHtcbiAgICAgIGlmKGdyYWRlLm5hbWUgPT09IGdyYWRlTmFtZSl7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkID0gZ3JhZGUuaWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvcm1hdENoZWNrQm94VmFsdWUoZmllbGQ6IGFueSkge1xuICAgIGlmKGZpZWxkLnZhbHVlKSB7XG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQudmFsdWUpIHtcbiAgICAgICAgaWYoZmllbGQuZmllbGRWYWx1ZT8uaW5jbHVkZXMoZmllbGRWYWx1ZS52YWx1ZSkpIHtcbiAgICAgICAgICBmaWVsZFZhbHVlLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnNvdXJjZURhdGE/LltmaWVsZC5kYXRhU291cmNlVHlwZV0gfHwgW10pIHtcbiAgICAgICAgaWYoZmllbGQuZmllbGRWYWx1ZT8uaW5jbHVkZXMoZmllbGRWYWx1ZS5uYW1lKSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIGdldEFsbEZpZWxkcygpIHtcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFNlbGVjdGVkTGlzdEZpZWxkcyh0aGlzLmJ1c2luZXNzSWQsIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/ICdSRUdJU1RSQVRJT04nIDogJ0FETUlTU0lPTicsICB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG5cbiAgICAgIHJlcy5kYXRhLmRhdGEuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgICAgaWYgKChlbGVtZW50LmZpZWxkTGFiZWwpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Bhc3Nwb3J0JykgJiYgZWxlbWVudC5kYXRhVHlwZSAhPSAnUkFESU9CVVRUT04nKSB7XG4gICAgICAgICAgZWxlbWVudC5pc0Rpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50LmlzRGlzcGxheSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjdXJyZW50WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IG5leHRZZWFyID0gY3VycmVudFllYXIgKyAxO1xuXG4gICAgICByZXMuZGF0YS5kYXRhLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LmRhdGFUeXBlICE9PSAnRFJPUERPV04nKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGVsZW1lbnQudmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgIGVsZW1lbnQuZmllbGRWYWx1ZSA9IGVsZW1lbnQudmFsdWVbMF0udmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgc291cmNlTGlzdCA9IGVsZW1lbnQuc291cmNlRGF0YVtlbGVtZW50LmRhdGFTb3VyY2VUeXBlXTtcbiAgICAgICAgICBpZiAoZWxlbWVudC5maWVsZExhYmVsID09PSAnQWNhZGVtaWMgWWVhcicpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc291cmNlTGlzdC5maW5kKChlOmFueSkgPT4gZS5uYW1lID09PSBgJHtjdXJyZW50WWVhcn0tJHtuZXh0WWVhcn1gKTtcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICBlbGVtZW50LmZpZWxkVmFsdWUgPSBtYXRjaC5uYW1lO1xuICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRDaGFuZ2UobWF0Y2gsIGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoc291cmNlTGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBlbGVtZW50LmZpZWxkVmFsdWUgPSBzb3VyY2VMaXN0WzBdLm5hbWU7XG4gICAgICAgICAgICB0aGlzLmlucHV0RmllbGRDaGFuZ2Uoc291cmNlTGlzdFswXSwgZWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5maWVsZERhdGEgPSB0aGlzLnJlc3RTZXJ2aWNlLmdldEZpZWxkc1RvRGlzcGxheShyZXMuZGF0YS5kYXRhKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKVswXTtcbiAgICB9KVxuICB9XG5cbiAgZ2V0QUxMRG9jdW1lbnRMaXN0KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBcImJ1c2luZXNzSWRcIjogdGhpcy5idXNpbmVzc0lkLFxuICAgICAgXCJzb3J0QnlcIjogXCJcIixcbiAgICAgIFwic29ydE9yZGVyXCI6IFwiXCIsXG4gICAgICBcInN0YXR1c1wiOiB0cnVlLFxuICAgICAgXCJpc0RlbGV0ZWRcIjogZmFsc2VcbiAgICB9XG5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbERvY3VtZW50KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZG9jdW1lbnRMaXN0ID0gcmVzLmRhdGEuZGF0YTtcbiAgICB9KVxuICB9XG5cbiAgZm9ybUZpZWxkQ2hhbmdlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBmb3JtRmllbGRDaGFuZ2VkKCkge1xuICAgIHRoaXMuZm9ybUZpZWxkQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5fZXZlbnRTZXJ2aWNlLmZvcm1GaWVsZENoYW5nZWQuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5nZXRBbGxGaWVsZHMoKTtcbiAgICB9KVxuICB9XG5cblxuXG4gIGFzeW5jIHN1Ym1pdEZvcm0oKSB7XG4gICAgdGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMgPSB0aGlzLmNvbnZlcnRUb0xpc3RPZkZpZWxkcygpO1xuICAgIGlmKHRoaXMucGF5bG9hZC5maWVsZEl0ZW1zLmxlbmd0aCA9PSAwKVxuICAgICAgcmV0dXJuO1xuXG4gICAgaWYodGhpcy5maWxlRGF0YSkge1xuICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUodGhpcy5maWxlRGF0YSk7XG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gaW1hZ2VEYXRhLnVybFxuICAgIH1cblxuICAgIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IHRoaXMuY3JlYXRlUmVnaXN0cmF0aW9uKCkgOiB0aGlzLmNyZWF0ZUFkbWlzc2lvbigpO1xuICB9XG5cbiAgcmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBjcmVhdGVSZWdpc3RyYXRpb24oKSB7XG4gICAgLy8gdGhpcy5wYXlsb2FkWydyZXR1cm5VcmwnXSA9IGBodHRwczovL2NtaXMudGVqc29mdC5jb20vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9UkVHSVNUUkFUSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gIC8vcHJvZHVjdGlvblxuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9zdGFnZS1wb3J0YWwuY21pcy5hYy5pbi92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1SRUdJU1RSQVRJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWAgLy9kZXZcbiAgICAvLyB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vc3RhZ2UuY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1SRUdJU1RSQVRJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWAgLy9zdGFnZVxuICAgIHRoaXMucmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5yZXN0U2VydmljZS5jcmVhdGVSZWdpc3RyYXRpb25Gb3JQYXltZW50KHRoaXMucGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgLy8gdGhpcy5zbmFja0Jhci5vcGVuKCdSZWdpc3RyYXRpb24gY3JlYXRlZCBzdWNjZXNzZnVsbHknLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5jYXNoRnJlZUV2ZW50LmVtaXQoe3Jlc3BvbnNlOiByZXMsIHBheW1lbnRUeXBlOidSRUdJU1RSQVRJT04nfSk7XG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFkbWlzc2lvbigpIHtcbiAgICBpZih0aGlzLnBheWxvYWQucGF5bWVudFBsYW5UeXBlID09PSAnVEVSTScgJiYgKHRoaXMucGF5bG9hZD8uc3R1ZGVudEZlZVN0cnVjdHVyZT8udGVybVBheW1lbnRMaXN0Py5sZW5ndGggfHwgMCkgPT0gMCl7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1BsZWFzZSBzZWxlY3QgdGVybScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlWydwYXltZW50UGxhblR5cGUnXSA9IHRoaXMucGF5bG9hZC5wYXltZW50UGxhblR5cGU7XG4gICAgLy8gdGhpcy5wYXlsb2FkWydyZXR1cm5VcmwnXSA9IGBodHRwczovL2NtaXMudGVqc29mdC5jb20vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9QURNSVNTSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gOyAvL3Byb2R1Y3Rpb25cbiAgICB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vc3RhZ2UtcG9ydGFsLmNtaXMuYWMuaW4vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9QURNSVNTSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gOyAvL2RldlxuICAgIC8vIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9zdGFnZS5jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPUFETUlTU0lPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YDsgLy9zdGFnZVxuXG4gICAgaWYodGhpcy5iYWNrdXBEb2NGaWxlKSB7XG4gICAgICBsZXQgaW1hZ2VEYXRhOiBhbnkgPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkU2VydmljZS51cGxvYWRGaWxlSW5BenVyZSh0aGlzLmJhY2t1cERvY0ZpbGUpO1xuICAgICAgdGhpcy5wYXlsb2FkLmJhY2t1cERvYyA9IGltYWdlRGF0YS51cmxcbiAgICB9XG5cbiAgICBmb3IobGV0IGRvY3VtZW50IG9mIHRoaXMuZG9jdW1lbnRMaXN0KSB7XG4gICAgICBpZihkb2N1bWVudC5maWxlKSB7XG4gICAgICAgIGxldCBpbWFnZURhdGE6IGFueSA9IGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkF6dXJlKGRvY3VtZW50LmZpbGUpO1xuXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZG9jdW1lbnRzJ10ucHVzaChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBkb2N1bWVudC5kaXNwbGF5VGV4dCxcbiAgICAgICAgICAgIHVybDogaW1hZ2VEYXRhLnVybCxcbiAgICAgICAgICAgIGRvY1R5cGU6IGRvY3VtZW50Lm5hbWUsXG4gICAgICAgICAgICBhdHRhY2htZW50VHlwZTogZG9jdW1lbnQudHlwZVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucGF5bG9hZC5hZG1pc3Npb25QYXltZW50RGV0YWlsLmFtb3VudCA9IHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlVjIudG90YWxGZWU7XG4gICAgdGhpcy5yZWdpc3RyYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLnJlc3RTZXJ2aWNlLmNyZWF0ZVBheW1lbnRGb3JBZG1pc3Npb24odGhpcy5wYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAvLyB0aGlzLnNuYWNrQmFyLm9wZW4oJ0FkbWlzc2lvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhc2hGcmVlRXZlbnQuZW1pdCh7cmVzcG9uc2U6IHJlcywgcGF5bWVudFR5cGU6J0FETUlTU0lPTid9KTtcbiAgICB9KVxuICB9XG5cbiAgY29udmVydFRvTGlzdE9mRmllbGRzKCkge1xuICAgIGxldCBmaWVsZExpc3Q6IGFueVtdID0gW107XG5cbiAgICBmb3IobGV0IHN0ZXAgb2YgdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSkpIHtcbiAgICAgIGZvcihsZXQgZ3JvdXAgb2YgT2JqZWN0LmtleXModGhpcy5maWVsZERhdGFbc3RlcF0pKSB7XG5cbiAgICAgICAgaWYoZ3JvdXAgPT0gJ0JhY2t1cCBDb250YWN0JyAmJiB0aGlzLnN0dWRlbnRMaXZlV2l0aCAhPSAnc2luZ2xlIHBhcmVudCcpXG4gICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgZm9yKGxldCBmaWVsZCBvZiB0aGlzLmZpZWxkRGF0YVtzdGVwXVtncm91cF0pIHtcbiAgICAgICAgICBpZihmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuZmllbGRWYWx1ZSAmJiBmaWVsZC5kYXRhVHlwZSAhPSAnQ0hFQ0tCT1gnKSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYFBsZWFzZSBlbnRlciAke2ZpZWxkLmZpZWxkTGFiZWx9YCwgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGNoZWNrQm94VmFsdWU6IGFueVtdID0gW107XG4gICAgICAgICAgaWYoZmllbGQuZGF0YVR5cGUgPT09ICdDSEVDS0JPWCcpIHtcbiAgICAgICAgICAgIGNoZWNrQm94VmFsdWUgPSB0aGlzLmdldENoZWNrQm94VmFsdWUoZmllbGQpO1xuXG4gICAgICAgICAgICBpZihjaGVja0JveFZhbHVlLmxlbmd0aCAgPT0gMCAmJiBmaWVsZC5yZXF1aXJlZCl7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgUGxlYXNlIGVudGVyICR7ZmllbGQuZmllbGRMYWJlbH1gLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpZWxkTGlzdC5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkSWQ6IGZpZWxkLmZpZWxkSWQsXG4gICAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkLmZpZWxkTGFiZWwsXG4gICAgICAgICAgICBmaWVsZFZhbHVlOiBmaWVsZC5kYXRhVHlwZSAhPT0gJ0NIRUNLQk9YJyA/IGZpZWxkLmZpZWxkVmFsdWUgOiBjaGVja0JveFZhbHVlLFxuICAgICAgICAgICAgZmllbGRHcm91cElkOiBmaWVsZC5maWVsZEdyb3VwSWQsXG4gICAgICAgICAgICBmaWVsZEdyb3VwTmFtZTogZ3JvdXAsXG4gICAgICAgICAgICBmaWVsZFN0ZXBJZDogZmllbGQuZmllbGRTdGVwSWQsXG4gICAgICAgICAgICBmaWVsZFN0ZXBOYW1lOiBzdGVwLFxuICAgICAgICAgICAgdHlwZTogZmllbGQudHlwZVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWVsZExpc3Q7XG4gIH1cblxuICBnZXRDaGVja0JveFZhbHVlKGZpZWxkOiBhbnkpIHtcbiAgICBsZXQgcmVzcG9uc2U6IGFueVtdID0gW107XG5cbiAgICBpZihmaWVsZC52YWx1ZSkge1xuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnZhbHVlKSB7XG4gICAgICAgIGlmKGZpZWxkVmFsdWUuY2hlY2tlZCkge1xuICAgICAgICAgIHJlc3BvbnNlLnB1c2goZmllbGRWYWx1ZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnNvdXJjZURhdGE/LltmaWVsZC5kYXRhU291cmNlVHlwZV0gfHwgW10pIHtcbiAgICAgICAgaWYoZmllbGRWYWx1ZS5jaGVja2VkKSB7XG4gICAgICAgICAgcmVzcG9uc2UucHVzaChmaWVsZFZhbHVlLm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgZmlsZURhdGE/OiBGaWxlO1xuICB1cGRhdGVBZG1pc3Npb25JbWFnZShldjogYW55KSB7XG4gICAgdGhpcy5maWxlRGF0YSA9IGV2LnNyY0VsZW1lbnQuZmlsZXNbMF07XG5cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgcmVhZGVyLm9ubG9hZCA9IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gcmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGVEYXRhID8gcmVhZGVyLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlRGF0YSkgOiBudWxsO1xuICB9XG5cbiAgZGVsZXRlSW1nKCkge1xuICAgIHRoaXMucGF5bG9hZC5pbWdVcmwgPSAnJztcbiAgICB0aGlzLmZpbGVEYXRhID0gdW5kZWZpbmVkO1xuICB9ICByZWRpcmVjdFRvUGF5bWVudCgpIHtcbiAgICBpZighKHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgJiYgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkKSl7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1NlbGVjdGVkIEdyYWRlIGFuZCBBY2FkZW1pYyBZZWFyIGZpcnN0JywnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkS2V5ID0gJ1BheW1lbnQnXG4gIH1cblxuICBjb250aW51ZUFkbWlzc2lvbigpIHtcbiAgICBsZXQgc3RlcHMgPSBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSk7XG4gICAgbGV0IGluZGV4ID0gc3RlcHMuaW5kZXhPZih0aGlzLnNlbGVjdGVkS2V5KTtcblxuICAgIGlmKHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJyAmJiB0aGlzLnNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnICYmICEodGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciAmJiAgdGhpcy5zZWxlY3RlZEdyYWRlSWQpKSB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1NlbGVjdGVkIEdyYWRlIGFuZCBBY2FkZW1pYyBZZWFyIGZpcnN0JywgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSlcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZih0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybScpXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gaW5kZXggPT09IHN0ZXBzLmxlbmd0aCAtIDEgPyAnRG9jdW1lbnQnIDogdGhpcy5zZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyA/ICdQYXltZW50JyA6IHN0ZXBzW2luZGV4ICsgMV07XG4gICAgZWxzZVxuICAgICAgdGhpcy5zZWxlY3RlZEtleSA9IHN0ZXBzW2luZGV4ICsgMV1cbiAgfVxuXG4gIHN1YnNjcmlwdGlvbnNEYXRhOiBhbnlbXSA9IFtdXG4gIHRlcm1QYXltZW50TGlzdDogYW55W10gPSBbXTtcblxuICBnZXRGZWVTdHJ1Y3R1cmUoKSB7XG4gICAgaWYoIXRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgfHwgIXRoaXMuc2VsZWN0ZWRHcmFkZUlkKVxuICAgICAgcmV0dXJuO1xuICAgIFxuICAgIGxldCBwYXlsb2FkID0ge1xuICAgICAgLy8gXCJidXNpbmVzc0lkXCI6IHRoaXMuYnVzaW5lc3NJZCxcbiAgICAgIC8vIFwic3RhcnRZZWFyXCI6IE51bWJlcih5ZWFyWzBdKSxcbiAgICAgIC8vIFwiZW5kWWVhclwiOiBOdW1iZXIoeWVhclsxXSksXG4gICAgICAvLyBcInBhZ2VOb1wiOiAwLFxuICAgICAgLy8gXCJzaXplXCI6IDEsXG4gICAgICAvLyBcImdyYWRlSWRzXCI6IFt0aGlzLnNlbGVjdGVkR3JhZGVJZF0sXG4gICAgICAvLyBcInNlYXJjaFRleHRcIjogXCJcIlxuICAgICAgYWNhZGVtaWNZZWFySWQgOiBbdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhci5pZF0sXG4gICAgICBidXNpbmVzc0lkIDogdGhpcy5idXNpbmVzc0lkLFxuICAgICAgZ3JhZGVJZHMgOiBbdGhpcy5zZWxlY3RlZEdyYWRlSWRdLFxuICAgICAgcGFnZU5vIDogMCxcbiAgICAgIHBhZ2VTaXplIDogMTAwMCxcbiAgICAgIHNlYXJjaFRleHQgOiBcIlwiXG4gICAgfVxuXG4gICAgdGhpcy5yZXN0U2VydmljZS5uZXdGZWVTdHJ1Y3R1cmVHZXRMaXN0KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlVjIgPSByZXMuZGF0YS5kYXRhWzBdO1xuICAgICAgdGhpcy5nZXRBbGxTdWJjcmlwdGlvbigpO1xuICAgICAgLy8gdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUgPSByZXMuZGF0YS5kYXRhWzBdO1xuICAgICAgLy8gdGhpcy5zdWJzY3JpcHRpb25zRGF0YSA9ICBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlLnN1YnNjcmlwdGlvblBsYW5zKSk7XG4gICAgICAvLyB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS5zdWJzY3JpcHRpb25QbGFucyA9IFtdO1xuICAgICAgLy8gdGhpcy50ZXJtUGF5bWVudExpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlPy50ZXJtUGF5bWVudExpc3QgfHwgJycpKTtcbiAgICAgIC8vIHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlLnRlcm1QYXltZW50TGlzdCA9IFtdO1xuICAgIH0pXG4gIH1cblxuICBnZXRBbGxTdWJjcmlwdGlvbigpe1xuICAgIGNvbnN0IHNlcnZlckNhbGwgPSBmb3JrSm9pbih7XG4gICAgICBhbGxTdWJzY3JpcHRpb25zIDogdGhpcy5yZXN0U2VydmljZS5nZXRBY3RpdmVTdWJzY3JpcHRpb25Gb3JGZWVTdHJ1Y3R1cmUodGhpcy5idXNpbmVzc0lkLHRoaXMuc2VsZWN0ZWRHcmFkZUlkKVxuICAgIH0pXG4gICAgc2VydmVyQ2FsbC5zdWJzY3JpYmUoKHJlczphbnkpPT57XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnNEYXRhID0gcmVzLmFsbFN1YnNjcmlwdGlvbnMuZGF0YS5kYXRhXG4gICAgICByZXMuYWxsU3Vic2NyaXB0aW9ucy5kYXRhLmRhdGEuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgICAgaWYgKCFlbGVtZW50Lm5ld1ByaWNpbmdMaXN0KSB7XG4gICAgICAgICAgZWxlbWVudC5uZXdQcmljaW5nTGlzdCA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5wcmljaW5nKS5mb3JFYWNoKChwcmljZTogYW55KSA9PiB7XG4gICAgICAgICAgZWxlbWVudC5uZXdQcmljaW5nTGlzdC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHByaWNlLFxuICAgICAgICAgICAgYW1vdW50OiBlbGVtZW50LnByaWNpbmdbcHJpY2VdLFxuICAgICAgICAgICAgc2VsZWN0ZVN0YXR1czogZmFsc2UsXG4gICAgICAgICAgICBwYWlkOmZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSlcbiAgfVxuXG4gIGlucHV0RmllbGRDaGFuZ2UoaXRlbTogYW55LCBmaWVsZDogYW55KSB7XG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ0FjYWRlbWljIFllYXInKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyID0gaXRlbTtcbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XG4gICAgfVxuICAgIGlmKGZpZWxkLmZpZWxkTGFiZWwgPT09ICdHcmFkZScpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkID0gaXRlbS5pZDtcbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XG4gICAgfVxuICB9XG5cbiAgbWFzdGVyRHJvcGRvd25WYWx1ZUNoYW5nZShpdGVtOiBhbnksIGZpZWxkOiBhbnkpIHtcbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnU3R1ZGVudCBsaXZlIHdpdGgnKSB7XG4gICAgICB0aGlzLnN0dWRlbnRMaXZlV2l0aCA9IGl0ZW0udmFsdWVcbiAgICB9XG4gIH1cblxuICB1cGxvYWRCYWNrVXBEb2N1bWVudChldjogYW55KSB7XG4gICAgdGhpcy5iYWNrdXBEb2NGaWxlID0gZXYuc3JjRWxlbWVudC5maWxlc1swXTtcbiAgfVxuXG5cbiAgYXJyYW5nZVN1YnNjcmlwdGlvbkZvckFkbWlzc2lvbihzdWJzY3JpcHRpb25MaXN0OiBhbnlbXSkge1xuICAgIGxldCByZXNwb25zZTogYW55ID0ge307XG5cbiAgICBmb3IobGV0IHN1YnNjcmlwdGlvbiBvZiBzdWJzY3JpcHRpb25MaXN0KSB7XG4gICAgICBpZighcmVzcG9uc2Vbc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvblR5cGVdKSB7XG4gICAgICAgIHJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXSA9IFtdO1xuICAgICAgfVxuICAgICAgcmVzcG9uc2Vbc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvblR5cGVdLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBhcnJhbmdlRmVlQ29uZmlnKGZlZUNvbmZpZ0xpc3Q6IGFueVtdKSB7XG4gICAgbGV0IHJlc3BvbnNlOiBhbnkgPSB7fTtcblxuICAgIGZvcihsZXQgY29uZmlnIG9mIGZlZUNvbmZpZ0xpc3QpIHtcbiAgICAgIGlmKCFyZXNwb25zZVtjb25maWcuZmVlVHlwZV0pXG4gICAgICAgIHJlc3BvbnNlW2NvbmZpZy5mZWVUeXBlXSA9IFtdO1xuXG4gICAgICByZXNwb25zZVtjb25maWcuZmVlVHlwZV0ucHVzaChjb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIGdldE1heERhdGUoaXRlbTphbnkpIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgbGV0IG1heERhdGU6IERhdGU7XG5cbiAgICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGl0ZW0uZmllbGRMYWJlbC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBmaWVsZEdyb3VwTmFtZSA9IChpdGVtLmZpZWxkR3JvdXAgfHwgW10pLmZsYXRNYXAoKGc6YW55KSA9PiBbXG4gICAgICBnLmZpZWxkR3JvdXBOYW1lPy50b0xvd2VyQ2FzZSgpIHx8ICcnLFxuICAgICAgZy5maWVsZFN0ZXBOYW1lPy50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgXSk7XG5cbiAgICBpZiAoZm9ybWF0dGVkTGFiZWwuaW5jbHVkZXMoJ2RvYicpKSB7XG4gICAgICBpZiAoZmllbGRHcm91cE5hbWUuc29tZSgobmFtZTphbnkpID0+IG5hbWUuaW5jbHVkZXMoJ3N0dWRlbnQnKSkpIHtcbiAgICAgICAgbWF4RGF0ZSA9IG5ldyBEYXRlKHRvZGF5LnNldEZ1bGxZZWFyKHRvZGF5LmdldEZ1bGxZZWFyKCkgLSAzKSk7XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkR3JvdXBOYW1lLnNvbWUoKG5hbWU6YW55KSA9PiBuYW1lLmluY2x1ZGVzKCdtb3RoZXInKSkpIHtcbiAgICAgICAgbWF4RGF0ZSA9IG5ldyBEYXRlKHRvZGF5LnNldEZ1bGxZZWFyKHRvZGF5LmdldEZ1bGxZZWFyKCkgLSAxOCkpO1xuICAgICAgfSBlbHNlIGlmIChmaWVsZEdyb3VwTmFtZS5zb21lKChuYW1lOmFueSkgPT4gbmFtZS5pbmNsdWRlcygnZmF0aGVyJykgfHwgbmFtZS5pbmNsdWRlcygnZ3VhcmRpYW4nKSkpIHtcbiAgICAgICAgbWF4RGF0ZSA9IG5ldyBEYXRlKHRvZGF5LnNldEZ1bGxZZWFyKHRvZGF5LmdldEZ1bGxZZWFyKCkgLSAyMSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF4RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICB9XG5cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBtYXhEYXRlID0gbmV3IERhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF4RGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gIH1cblxuICByYWRpb0J1dHRvbkNoYW5nZWQoaXRlbTogYW55LCBzZWxlY3RlZEtleTogYW55LCBncm91cDogYW55KSB7XG4gICAgaWYgKGl0ZW0udHlwZSA9PT0gJ1BBU1NQT1JUX0FWQUlMQUJMRScpIHtcbiAgICAgIHRoaXMuc2hvd09ySGlkZUZpZWxkcyhpdGVtLmZpZWxkVmFsdWUsIHNlbGVjdGVkS2V5LCBncm91cClcbiAgICB9XG4gIH1cblxuICBzaG93UmVsYXRpdmVGaWVsZHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd09ySGlkZUZpZWxkcyh2YWx1ZTogYW55LCBzZWxlY3RlZEtleTogYW55LCBncm91cDogYW55KSB7XG4gICAgY29uc3Qgc2hvdWxkU2hvdyA9IHZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3llcycpO1xuICAgIHRoaXMuZmllbGREYXRhW3NlbGVjdGVkS2V5XVtncm91cF0uZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmRhdGFUeXBlICE9PSAnUkFESU9CVVRUT04nICYmIGVsZW1lbnQuZmllbGRMYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdwYXNzcG9ydCcpKSB7XG4gICAgICAgIGVsZW1lbnQuaXNEaXNwbGF5ID0gc2hvdWxkU2hvdztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPHNlY3Rpb24gc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiPlxuICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCI+XG4gICAgPGRpdiAjbWFpbkNvbnRhaW5lciBjbGFzcz1cInJvd0ZsZXhcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9PdmVybGF5XT1cInN0eWxlcz8uYmFja2dyb3VuZFwiXG4gICAgICBbc2ltcG9Cb3JkZXJdPVwic3R5bGVzPy5ib3JkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLXNlY3Rpb25cIlxuICAgICAgICBbbmdDbGFzc109XCJ7J2p1c3RpZnktY29udGVudC1tZC1zdGFydCc6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2xlZnQnICwgJ2p1c3RpZnktY29udGVudC1tZC1lbmQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCd9XCJcbiAgICAgICAgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5LXNlY3Rpb25cIj5cbiAgICAgICAgICA8ZGl2IFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiIFtpZF09XCJkYXRhPy5pZFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWxlbWVudCBbdGV4dERhdGFdPVwiY29udGVudD8uaW5wdXRUZXh0Py5bMF0/LnZhbHVlXCIgW3RleHRMYWJlbF09XCJjb250ZW50Py5pbnB1dFRleHQ/LlswXT8ubGFiZWxcIj48L3NpbXBvLXRleHQtZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBkLW1kLWZsZXggbXQtMTVcIiAqbmdJZj1cImRhdGE/LmFjdGlvbj8uZGlzcGxheVwiIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcgPyAnanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0JyA6ICcnLFxuICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdjZW50ZXInID8gJ2p1c3RpZnktY29udGVudC1tZC1jZW50ZXInIDogJycsXG4gICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ3JpZ2h0JyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtZW5kJyA6ICcnXG4gICAgICAgICAgICBdXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8c2VjdGlvbiBjbGFzcz1cIm1haW4tc2VjdGlvblwiPlxuICAgIDxkaXYgKm5nSWY9XCJmb3JtU3RhdHVzICE9ICdSRUdJU1RFUkVEJyAmJiBmb3JtU3RhdHVzICE9ICdBRE1JVFRFRCdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdWJUYWJzX3NlY3Rpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQga2V5IG9mIE9iamVjdC5rZXlzKGZpZWxkRGF0YSlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGVfdGFiIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNlbGVjdGVkS2V5ID0ga2V5XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRLZXkgPT09IGtleSA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cbiAgICAgICAgICAgICAge3trZXkgfCB0aXRsZWNhc2V9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZV90YWIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2VsZWN0ZWRLZXkgPSAnRG9jdW1lbnQnXCIgKm5nSWY9XCJkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnID8gJ3NpbmdsZV90YWJfYWN0aXZlJyA6ICdzaW5nbGVfdGFiJ1wiPlxuICAgICAgICAgICAgRG9jdW1lbnRcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZWRpcmVjdFRvUGF5bWVudCgpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEtleSA9PT0gJ1BheW1lbnQnID8gJ3NpbmdsZV90YWJfYWN0aXZlJyA6ICdzaW5nbGVfdGFiJ1wiPlxuICAgICAgICAgICAgUGF5bWVudFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV0gPyBPYmplY3Qua2V5cyhmaWVsZERhdGFbc2VsZWN0ZWRLZXldKSA6IFtdO2xldCBncm91cEluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIiAqbmdJZj1cImdyb3VwICE9PSAnQmFja3VwIENvbnRhY3QnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBiYWNrVG9MZWFkcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICB7e2dyb3VwfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEluZGV4ID09IDAgJiYgT2JqZWN0LmtleXMoZmllbGREYXRhKVswXSA9PT0gc2VsZWN0ZWRLZXlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1ib3hcIiAqbmdJZj1cIiFwYXlsb2FkLmltZ1VybFwiPlxuICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZHVtbXktaW1hZ2VcIiBzcmM9XCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL21hc3Rlci9hZGQtaW1hZ2Uuc3ZnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlX2JveFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmNfYnJvd3NlX2J0blwiIGlkPVwiZGlzcGxheV9icm93c2VfYnRuXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+Q2xpY2sgdG9cbiAgICAgICAgICAgICAgICAgIHVwbG9hZDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgaWQ9XCJ2ZW5kb3JJbWFnZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIm15ZmlsZVwiXG4gICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlL3gtcG5nLGltYWdlL2pwZWcsaW1hZ2UvanBnXCIgKGNoYW5nZSk9XCJ1cGRhdGVBZG1pc3Npb25JbWFnZSgkZXZlbnQpXCIgY2xhc3M9XCJwYy1idG5cIlxuICAgICAgICAgICAgICBpZD1cImJyb3dzZV9jb250YWN0X2ltYWdlXCIgI2ZpbGVJbnB1dCAvPlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGF5bG9hZC5pbWdVcmxcIiBjbGFzcz1cImFkZGVkSW1nXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRlZEltZ1wiPlxuICAgICAgICAgICAgICAgIDxpbWcgIGFsdD1cIlwiIFtzcmNdPVwiZHMuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChwYXlsb2FkLmltZ1VybClcIj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Jsb2dzL2NoYW5nZV9pbWFnZS5zdmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgICAgIENoYW5nZSBJbWFnZVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gZGVsZXRlLWNoYW5nZVwiIChjbGljayk9XCJkZWxldGVJbWcoKVwiPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2Jsb2dzL2RlbGV0ZV9pbWFnZS5zdmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5EZWxldGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW5mbyBvZiBmaWVsZERhdGFbc2VsZWN0ZWRLZXldW2dyb3VwXVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLTEyIG10LTFcIiAqbmdJZj1cImluZm8uaXNEaXNwbGF5XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiPnt7aW5mby5kaXNwbGF5VGV4dCB8fCBpbmZvLmZpZWxkTGFiZWx9fTwvbGFiZWw+Jm5ic3A7IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIiAqbmdJZj1cImluZm8ucmVxdWlyZWRcIj4qPC9zcGFuPiA8YnI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RGF0YTsgY29udGV4dDoge2RhdGE6IGluZm8sIGdyb3VwOmdyb3VwfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwiZmllbGREYXRhW3NlbGVjdGVkS2V5XS5oYXNPd25Qcm9wZXJ0eSgnQmFja3VwIENvbnRhY3QnKSAmJiBzdHVkZW50TGl2ZVdpdGggPT09ICdzaW5nbGUgcGFyZW50JyAmJiBncm91cEluZGV4ID09IDAgJiYgT2JqZWN0LmtleXMoZmllbGREYXRhKVswXSA9PT0gc2VsZWN0ZWRLZXlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdF90YWJzIGJhY2tUb0xlYWRzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIEJhY2t1cCBDb250YWN0IChPcHRpb25hbClcbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtdGItMTUgY2hlY2tib3gtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cIlwiIGlkPVwiXCIgWyhuZ01vZGVsKV09XCJwYXlsb2FkLnBhcmVudEF1dGhvcml6YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgIEkgYXV0aG9yaXplIHRoZSBzY2hvb2wgdG8gcmVsZWFzZSB0aGUgY2hpbGQgb25seSB0byB0aGUgcGFyZW50IGxpc3RlZCBhYm92ZVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLTEyIG10LTFcIiAqbmdGb3I9XCJsZXQgaW5mbyBvZiBmaWVsZERhdGFbc2VsZWN0ZWRLZXldWydCYWNrdXAgQ29udGFjdCddXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIj57e2luZm8uZGlzcGxheVRleHQgfHwgaW5mby5maWVsZExhYmVsfX08L2xhYmVsPiZuYnNwOyA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImluZm8ucmVxdWlyZWRcIj4qPC9zcGFuPiA8YnI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dERhdGE7IGNvbnRleHQ6IHtkYXRhOiBpbmZvfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLTEyIG10LTFcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiPlVwbG9hZCBTdXBwb3J0aW5nIERvY3VtZW50IChPcHRpb25hbCk8L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtdGV4dCB1cGxvYWQtZmlsZVwiIChjbGljayk9XCJiYWNrVXBEb2NJbnB1dC5jbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPHA+e3tiYWNrdXBEb2NGaWxlID8gJ0ZpbGUgVXBsb2FkZWQnIDogJ1VwbG9hZCBGaWxlJ319PC9wPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG91ZF91cGxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0IGlkPVwidmVuZG9ySW1hZ2VcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCJteWZpbGVcIiBoaWRkZW5cbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCIuZG9jLC5kb2N4LGFwcGxpY2F0aW9uL21zd29yZCxhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCxpbWFnZS94LXBuZyxpbWFnZS9qcGVnLGltYWdlL2pwZywucGRmLCB2aWRlby9tcDQsdmlkZW8veC1tYXRyb3NrYSx2aWRlby94LW1zdmlkZW8sdmlkZW8vcXVpY2t0aW1lXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZEJhY2tVcERvY3VtZW50KCRldmVudClcIiBjbGFzcz1cInBjLWJ0blwiXG4gICAgICAgICAgICAgICAgaWQ9XCJicm93c2VfY29udGFjdF9pbWFnZVwiICNiYWNrVXBEb2NJbnB1dCAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1kZXRhaWxzXCIgKm5nSWY9XCJzZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyAmJiBkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCI+XG4gICAgICAgICAgPHNpbXBvLWRvY3VtZW50IFtkb2N1bWVudExpc3RdPVwiZG9jdW1lbnRMaXN0XCI+PC9zaW1wby1kb2N1bWVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWRldGFpbHNcIiAqbmdJZj1cInNlbGVjdGVkS2V5ID09PSAnUGF5bWVudCcgJiYgZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiPlxuICAgICAgICAgIDxzaW1wby1wYXltZW50LWRldGFpbHMgW2FkbWlzc2lvbkRhdGFdPVwicGF5bG9hZFwiXG4gICAgICAgICAgICBbc3Vic2NyaXB0aW9uc0RhdGFdPVwic3Vic2NyaXB0aW9uc0RhdGFcIiBbdGVybVBheW1lbnRMaXN0XT1cInRlcm1QYXltZW50TGlzdFwiPjwvc2ltcG8tcGF5bWVudC1kZXRhaWxzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLXBhcmVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJzdWJtaXRGb3JtKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCJcbiAgICAgICAgICAgIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCIgKm5nSWY9XCIoZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJyAmJiBzZWxlY3RlZEtleSA9PSAnUGF5bWVudCcpIHx8XG4gICAgICAgICAgICAoZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyAmJlxuICAgICAgICAgICAgICAoT2JqZWN0LmtleXMoZmllbGREYXRhKVtPYmplY3Qua2V5cyhmaWVsZERhdGEpLmxlbmd0aCAtIDFdID09IHNlbGVjdGVkS2V5KSlcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj57e2J1dHRvbj8uY29udGVudD8ubGFiZWx9fTwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjb250aW51ZUFkbWlzc2lvbigpXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkK2J1dHRvbi5pZFwiXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiICpuZ0lmPVwic2VsZWN0ZWRLZXkgIT0gJ1BheW1lbnQnICYmIGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5Db250aW51ZTwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjb250aW51ZUFkbWlzc2lvbigpXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkK2J1dHRvbi5pZFwiXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiXG4gICAgICAgICAgICAqbmdJZj1cImRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgJiYgKE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbT2JqZWN0LmtleXMoZmllbGREYXRhKS5sZW5ndGggLSAxXSAhPSBzZWxlY3RlZEtleSlcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5Db250aW51ZTwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImVtcHR5VGV4dFwiICpuZ0lmPVwiZm9ybVN0YXR1cyA9PSAnUkVHSVNURVJFRCcgfHwgZm9ybVN0YXR1cyA9PSAnQURNSVRURUQnXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiY29udGVudD8uaW1hZ2U/LnVybFwiIGFsdD1cIlwiICpuZ0lmPVwiY29udGVudD8uaW1hZ2U/LnNob3dJbWFnZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbGFyZ2VcIiBbaW5uZXJIdG1sXT1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzFdPy52YWx1ZVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiAgPG5nLXRlbXBsYXRlICNpbnB1dERhdGEgbGV0LWZpZWxkPVwiZGF0YVwiIGxldC1ncm91cD1cImdyb3VwXCI+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09ICdJTUFHRSdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1ib3hcIj5cbiAgICAgICAgPGltZyBjbGFzcz1cImR1bW15LWltYWdlXCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9tYXN0ZXIvYWRkLWltYWdlLnN2Z1wiXG4gICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgYWx0PVwiXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmY19icm93c2VfYnRuXCIgaWQ9XCJkaXNwbGF5X2Jyb3dzZV9idG5cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5DbGljayB0b1xuICAgICAgICAgICAgdXBsb2FkPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCIgYWNjZXB0PVwiaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGdcIlxuICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUFkbWlzc2lvbkltYWdlKCRldmVudClcIiBjbGFzcz1cInBjLWJ0blwiIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjZmlsZUlucHV0IC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnVEVYVCcgJiYgZmllbGQuaXNEaXNwbGF5XCI+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImlucHV0LXRleHRcIiBbcGxhY2Vob2xkZXJdPVwiJ0VudGVyICcrZmllbGQuZmllbGRMYWJlbFwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ05VTUJFUicgJiYgZmllbGQuaXNEaXNwbGF5XCI+XG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIFtwbGFjZWhvbGRlcl09XCInRW50ZXIgJytmaWVsZC5maWVsZExhYmVsXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnTU9ORVknICYmIGZpZWxkLmlzRGlzcGxheVwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgW3BsYWNlaG9sZGVyXT1cIidFbnRlciAnK2ZpZWxkLmZpZWxkTGFiZWxcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdEQVRFJyAmJiBmaWVsZC5pc0Rpc3BsYXlcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0ICcrZmllbGQuZmllbGRMYWJlbFwiIFttYXhdPVwiZ2V0TWF4RGF0ZShmaWVsZClcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdEUk9QRE9XTicgJiYgZmllbGQuaXNEaXNwbGF5XCIgY2xhc3M9XCJhZG1pc3Npb25cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImlucHV0LXRleHQtMSBpbnB1dF9jYXJkXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdHlsZT1cIndpZHRoOjEwMCVcIj5cbiAgICAgICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJpbnB1dFN0eWxlXCIgcGxhY2Vob2xkZXI9XCItLVNlbGVjdC0tXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlU2VsZWN0aW9uXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLnZhbHVlXCIgW3ZhbHVlXT1cIml0ZW0/LnZhbHVlXCIgKGNsaWNrKT1cIm1hc3RlckRyb3Bkb3duVmFsdWVDaGFuZ2UoaXRlbSwgZmllbGQpXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA9PSAwXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5zb3VyY2VEYXRhW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJpbnB1dEZpZWxkQ2hhbmdlKGl0ZW0sIGZpZWxkKVwiIFt2YWx1ZV09XCJpdGVtPy5uYW1lXCI+e3tpdGVtLm5hbWV9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdDSEVDS0JPWCcgJiYgZmllbGQuaXNEaXNwbGF5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID4gMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQudmFsdWVcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIiBpZD1cImZsZXhDaGVja0NoZWNrZWRcIiBbKG5nTW9kZWwpXT1cImRhdGEuY2hlY2tlZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJmbGV4Q2hlY2tDaGVja2VkXCI+XG4gICAgICAgICAgICB7e2RhdGEubGFiZWx9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPT0gMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV1cIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIiBpZD1cImZsZXhDaGVja0NoZWNrZWRcIiBbKG5nTW9kZWwpXT1cImRhdGEuY2hlY2tlZFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJmbGV4Q2hlY2tDaGVja2VkXCI+XG4gICAgICAgICAgICB7e2RhdGEubmFtZX19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdSQURJT0JVVFRPTicgJiYgZmllbGQuaXNEaXNwbGF5XCI+XG4gICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAyMHB4OyBtYXJnaW4tdG9wOiAxMHB4OyBoZWlnaHQ6IDM1cHg7YWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCIgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnZhbHVlXCI+XG4gICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPnt7ZGF0YS5sYWJlbH19PC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiIChjaGFuZ2UpPVwicmFkaW9CdXR0b25DaGFuZ2VkKGZpZWxkLHNlbGVjdGVkS2V5LGdyb3VwKVwiPlxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQudmFsdWVcIiBbdmFsdWVdPVwiZGF0YS52YWx1ZVwiPlxuICAgICAgICAgICAgICB7eyBkYXRhLmxhYmVsIH19XG4gICAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICBcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA9PSAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnZhbHVlXCI+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cInJhZGlvXCIgW3ZhbHVlXT1cImRhdGEubmFtZVwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiIC8+XG4gIFxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIFtmb3JdPVwiJ3JhZGlvXycgKyBkYXRhLm5hbWVcIj5cbiAgICAgICAgICAgICAge3sgZGF0YS5uYW1lIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlcz8uZGV2aWRlcj8uZGlzcGxheVwiPlxuICAgIDxzaW1wby1zdmctZGl2aWRlciBbZGl2aWRlclR5cGVdPVwic3R5bGVzPy5kZXZpZGVyPy5kZXZpZGVyVHlwZVwiXG4gICAgICBbY29sb3JdPVwibmV4dENvbXBvbmVudENvbG9yPy5jb2xvclwiPjwvc2ltcG8tc3ZnLWRpdmlkZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XG4gICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
526
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9yZWdpc3RyYXRpb24tZm9ybS9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3JlZ2lzdHJhdGlvbi1mb3JtL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUcsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVy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U0FBUyxHQUFHLFVBQVUsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXppQlUseUJBQXlCO21HQUF6Qix5QkFBeUIsNE1DeER0Qyx1cmNBa1FBLHk0SURoT0ksWUFBWSxpa0JBQ1osaUJBQWlCLDhCQUNqQixtQkFBbUIsNlFBQ25CLG9CQUFvQiwyZEFDcEIsZUFBZTtnQkFDZixXQUFXO2dCQUNYLGtCQUFrQix5RkFDbEIsbUJBQW1CLDBHQUNuQixlQUFlLG1GQUNmLHdCQUF3QixzSUFDeEIsbUJBQW1CLG1GQUNuQixjQUFjLGdGQUNkLGdCQUFnQixvRkFDaEIsZUFBZSxnTUFDZixlQUFlLCt0QkFDZixXQUFXLDBwQ0FDWCxhQUFhLG9MQUNiLGNBQWM7OzRGQUtMLHlCQUF5QjtrQkExQnJDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsY0FBYztxQkFDZjsrTkFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRHcmlkTGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2dyaWQtbGlzdCc7XG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvaW5kZXgnO1xuaW1wb3J0IHsgQmFja2dyb3VuZE1vZGVsLCBTdHlsZXNNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xuaW1wb3J0IHsgIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uL0Jhc2VTZWN0aW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgSW1hZ2VVcGxhb2RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBSZWdpc3RyYXRpb25Gb3JtQ29udGVudE1vZGVsLCBSZWdpc3RyYXRpb25Gb3JtTW9kZWwgfSBmcm9tICcuL3JlZ2lzdHJhdGlvbkZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLXJlZ2lzdHJhdGlvbi1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRHcmlkTGlzdE1vZHVsZSxcbiAgICBTaW1wb0VsZW1lbnRzTW9kdWxlLFxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAvL2RpcmVjdGl2ZVxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxuICAgIEJvcmRlckRpcmVjdGl2ZSxcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcbiAgICBIb3ZlckRpcmVjdGl2ZSxcbiAgICBPdmVybGF5RGlyZWN0aXZlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRSYWRpb01vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0cmF0aW9uRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3l7XG4gIEBJbnB1dCgpIGRhdGE/OiBSZWdpc3RyYXRpb25Gb3JtTW9kZWw7XG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xuICBASW5wdXQoKSBuZXh0Q29tcG9uZW50Q29sb3I/OiBCYWNrZ3JvdW5kTW9kZWw7XG4gIGNvbnRlbnQ6IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwgfCB1bmRlZmluZWQ7XG4gIHN0eWxlczogU3R5bGVzTW9kZWwgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSBfZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsXG4gICAgcHVibGljIGRzOiBEb21TYW5pdGl6ZXIsXG4gICAgcHVibGljIGltYWdlVXBsb2FkU2VydmljZTogSW1hZ2VVcGxhb2RTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBPYmplY3QgPSBPYmplY3Q7XG4gIHBheWxvYWQ6IGFueSA9IHtcbiAgICBcImJ1c2luZXNzRGV0YWlsc1wiOiB7XG4gICAgICBcImlkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcbiAgICAgIFwibmFtZVwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJOYW1lXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NOYW1lXCIpXG4gICAgfSxcbiAgICBcImZpZWxkSXRlbXNcIjogW10sXG4gICAgXCJpbWdVcmxcIjogJycsXG4gICAgJ2RvY3VtZW50cyc6IFtdLFxuICAgIFwicGFyZW50QXV0aG9yaXphdGlvblwiOiBmYWxzZSxcbiAgICBcImJhY2t1cERvY1wiIDogJycsXG4gICAgXCJwYXltZW50UGxhblR5cGVcIiA6ICdBTk5VQUxMWScsXG4gICAgXCJzdWJzY3JpcHRpb25QbGFuc1wiOiBbXSxcbiAgICBcImFkbWlzc2lvblBheW1lbnREZXRhaWxcIjoge1xuICAgICAgXCJhbW91bnRcIjogMCxcbiAgICAgIFwicGF5bWVudERhdGVcIjogbmV3IERhdGUoKSxcbiAgICAgIFwicGF5bWVudFN0YXR1c1wiOiBcIlBFTkRJTkdcIixcbiAgICAgIFwiZmFpbGVkUmVhc29uXCI6IFwiXCIsXG4gICAgICBcInBheW1lbnRMaW5rXCI6IFwiXCIsXG4gICAgICBcIm9mZmxpbmVQYXltZW50TW9kZVwiOiBudWxsLFxuICAgICAgXCJjaGVxdWVJc3N1ZWRCeVwiOiBcIlwiLFxuICAgICAgXCJhY2NvdW50TnVtYmVyXCI6IFwiXCIsXG4gICAgICBcImNoZXF1ZUJhbmtcIjogXCJcIixcbiAgICAgIFwicmVtYXJrc1wiOiBcIlwiLFxuICAgICAgXCJyZWZlcmVuY2VOdW1iZXJcIjogXCJcIixcbiAgICAgIFwib2ZmbGluZVBheW1lbnRcIjogZmFsc2UsXG4gICAgICBcImF0dGFjaGVtZW50VXJsXCI6IFwiXCJcbiAgICB9XG4gIH1cblxuICBzZWxlY3RlZEtleTogYW55O1xuICBmaWVsZERhdGE6IGFueSA9IHt9XG4gIGJ1c2luZXNzSWQ6IGFueSA7XG4gIHNlbGVjdGVkR3JhZGVJZDogYW55O1xuICBzZWxlY3RlZEFjYWRlbWljWWVhcjogYW55O1xuICBkb2N1bWVudExpc3Q6IGFueVtdID0gW107XG4gIGZvcm1TdGF0dXM6IHN0cmluZyA9ICcnXG4gIHN0dWRlbnRMaXZlV2l0aDogYW55ID0gJydcbiAgYmFja3VwRG9jRmlsZT86IEZpbGU7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yb3V0ZXIucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbTogYW55KSA9PiB7XG4gICAgICBpZihwYXJhbVsnZUlkJ10pXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10gPSBwYXJhbVsnZUlkJ107XG5cbiAgICAgIGlmKHBhcmFtWydySWQnXSlcbiAgICAgICAgdGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddID0gcGFyYW1bJ3JJZCddO1xuXG4gICAgICBpZihwYXJhbVsnYklkJ10pXG4gICAgICAgIHRoaXMuYnVzaW5lc3NJZCA9IHBhcmFtWydiSWQnXTtcblxuICAgICAgaWYocGFyYW1bJ3RJZCddKVxuICAgICAgICB0aGlzLnBheWxvYWRbJ3RlbXBsYXRlSWQnXSA9IHBhcmFtWyd0SWQnXTtcblxuICAgICAgdGhpcy5wYXlsb2FkLmJ1c2luZXNzRGV0YWlscy5pZCA9IHRoaXMuYnVzaW5lc3NJZDtcblxuICAgICAgaWYodGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddIHx8IHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10pIHtcbiAgICAgICAgdGhpcy5nZXRGb3JtZGF0YSh0aGlzLnBheWxvYWRbJ3JlZ2lzdHJhdGlvbklkJ10gfHwgdGhpcy5wYXlsb2FkWydlbnF1aXJ5SWQnXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdldEFsbEZpZWxkcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmdldEFMTERvY3VtZW50TGlzdCgpO1xuXG4gICAgfSlcblxuICAgIC8vIHRoaXMuYnVzaW5lc3NJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKTtcblxuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXRGb3JtZGF0YShhZG1pc3Npb25JZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VydmVyQ2FsbCA9IGZvcmtKb2luKHtcbiAgICAgIGFkbWlzc2lvbkRhdGE6IHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IHRoaXMucmVzdFNlcnZpY2UuZ2V0TGVhZEJ5SWQoYWRtaXNzaW9uSWQpIDogdGhpcy5yZXN0U2VydmljZS5nZXRSZWdpc3RyYXRpb25MaXN0KHtpZDogYWRtaXNzaW9uSWQsIHBhZ2VObzogMCwgcGFnZVNpemU6IDF9KSxcbiAgICAgIGZpZWxkRGF0YTogdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJylcbiAgICB9KVxuXG5cbiAgICBzZXJ2ZXJDYWxsLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGxldCBhZG1pc3Npb25EYXRhID0gdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gcmVzdWx0LmFkbWlzc2lvbkRhdGEuZGF0YSA6IHJlc3VsdC5hZG1pc3Npb25EYXRhLmRhdGEuZGF0YVswXTtcbiAgICAgIGxldCBmaWVsZERhdGEgPSByZXN1bHQuZmllbGREYXRhLmRhdGE7XG5cbiAgICAgIHRoaXMuZm9ybVN0YXR1cyA9IGFkbWlzc2lvbkRhdGEuc3RhdHVzXG5cbiAgICAgIC8vIHRoaXMucGF5bG9hZCA9IGFkbWlzc2lvbkRhdGE7XG4gICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddID0gW107XG4gICAgICB0aGlzLnBheWxvYWQuYnVzaW5lc3NEZXRhaWxzLmlkID0gdGhpcy5idXNpbmVzc0lkO1xuICAgICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9IGFkbWlzc2lvbkRhdGEuaW1nVXJsXG5cbiAgICAgIGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ10gPSB7fTtcbiAgICAgIGZvcihsZXQgZmllbGRJdGVtIG9mIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IChhZG1pc3Npb25EYXRhPy5maWVsZERhdGEgfHwgW10pIDogKGFkbWlzc2lvbkRhdGE/LmZpZWxkSXRlbXMgfHwgW10pKSB7XG4gICAgICAgIGlmKGZpZWxkSXRlbS5maWVsZE5hbWUgPT09ICdBY2FkZW1pYyBZZWFyJykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgPSBmaWVsZEl0ZW0uZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZihmaWVsZEl0ZW0udHlwZSAhPSBudWxsKSB7XG4gICAgICAgICAgYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZEl0ZW0udHlwZV0gPSBmaWVsZEl0ZW0uZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaWQgPSBmaWVsZEl0ZW0uZmllbGROYW1lICsgZmllbGRJdGVtLmZpZWxkR3JvdXBOYW1lO1xuICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2lkXSA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZpZWxkRGF0YSA9IHRoaXMucmVzdFNlcnZpY2UuZ2V0RmllbGRzVG9EaXNwbGF5KGZpZWxkRGF0YS5kYXRhKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKVswXVxuXG4gICAgICBmb3IobGV0IHN0ZXAgb2YgdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSkpIHtcbiAgICAgICAgZm9yKGxldCBncm91cCBvZiBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YVtzdGVwXSkpIHtcbiAgICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xuICAgICAgICAgICAgaWYoZmllbGQudHlwZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIGZpZWxkLmZpZWxkVmFsdWUgPSBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkLnR5cGVdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGQuZmllbGRWYWx1ZSA9IGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ11bZmllbGQuZmllbGRMYWJlbCArIGdyb3VwXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYoZmllbGQ/LnR5cGUgPT09ICdHUkFERScpXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlR3JhZGUoZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV0sIGZpZWxkLmZpZWxkVmFsdWUpO1xuXG4gICAgICAgICAgICBpZihmaWVsZC5kYXRhVHlwZSA9PT0gJ0NIRUNLQk9YJykge1xuICAgICAgICAgICAgICB0aGlzLmZvcm1hdENoZWNrQm94VmFsdWUoZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmdldEZlZVN0cnVjdHVyZSgpO1xuICAgIH0pXG5cbiAgfVxuXG4gIHVwZGF0ZUdyYWRlKGdyYWRlTGlzdCA6YW55W10sIGdyYWRlTmFtZTogYW55KSB7XG4gICAgZm9yKGxldCBncmFkZSBvZiBncmFkZUxpc3QpIHtcbiAgICAgIGlmKGdyYWRlLm5hbWUgPT09IGdyYWRlTmFtZSl7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkID0gZ3JhZGUuaWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvcm1hdENoZWNrQm94VmFsdWUoZmllbGQ6IGFueSkge1xuICAgIGlmKGZpZWxkLnZhbHVlKSB7XG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQudmFsdWUpIHtcbiAgICAgICAgaWYoZmllbGQuZmllbGRWYWx1ZT8uaW5jbHVkZXMoZmllbGRWYWx1ZS52YWx1ZSkpIHtcbiAgICAgICAgICBmaWVsZFZhbHVlLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnNvdXJjZURhdGE/LltmaWVsZC5kYXRhU291cmNlVHlwZV0gfHwgW10pIHtcbiAgICAgICAgaWYoZmllbGQuZmllbGRWYWx1ZT8uaW5jbHVkZXMoZmllbGRWYWx1ZS5uYW1lKSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIGdldEFsbEZpZWxkcygpIHtcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFNlbGVjdGVkTGlzdEZpZWxkcyh0aGlzLmJ1c2luZXNzSWQsIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/ICdSRUdJU1RSQVRJT04nIDogJ0FETUlTU0lPTicsICB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG5cbiAgICAgIHJlcy5kYXRhLmRhdGEuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgICAgaWYgKChlbGVtZW50LmZpZWxkTGFiZWwpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Bhc3Nwb3J0JykgJiYgZWxlbWVudC5kYXRhVHlwZSAhPSAnUkFESU9CVVRUT04nKSB7XG4gICAgICAgICAgZWxlbWVudC5pc0Rpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50LmlzRGlzcGxheSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjdXJyZW50WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IG5leHRZZWFyID0gY3VycmVudFllYXIgKyAxO1xuXG4gICAgICByZXMuZGF0YS5kYXRhLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LmRhdGFUeXBlICE9PSAnRFJPUERPV04nKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGVsZW1lbnQudmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgIGVsZW1lbnQuZmllbGRWYWx1ZSA9IGVsZW1lbnQudmFsdWVbMF0udmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgc291cmNlTGlzdCA9IGVsZW1lbnQuc291cmNlRGF0YVtlbGVtZW50LmRhdGFTb3VyY2VUeXBlXTtcbiAgICAgICAgICBpZiAoZWxlbWVudC5maWVsZExhYmVsID09PSAnQWNhZGVtaWMgWWVhcicpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc291cmNlTGlzdC5maW5kKChlOmFueSkgPT4gZS5uYW1lID09PSBgJHtjdXJyZW50WWVhcn0tJHtuZXh0WWVhcn1gKTtcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICBlbGVtZW50LmZpZWxkVmFsdWUgPSBtYXRjaC5uYW1lO1xuICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRDaGFuZ2UobWF0Y2gsIGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoc291cmNlTGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBlbGVtZW50LmZpZWxkVmFsdWUgPSBzb3VyY2VMaXN0WzBdLm5hbWU7XG4gICAgICAgICAgICB0aGlzLmlucHV0RmllbGRDaGFuZ2Uoc291cmNlTGlzdFswXSwgZWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5maWVsZERhdGEgPSB0aGlzLnJlc3RTZXJ2aWNlLmdldEZpZWxkc1RvRGlzcGxheShyZXMuZGF0YS5kYXRhKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKVswXTtcbiAgICB9KVxuICB9XG5cbiAgZ2V0QUxMRG9jdW1lbnRMaXN0KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBcImJ1c2luZXNzSWRcIjogdGhpcy5idXNpbmVzc0lkLFxuICAgICAgXCJzb3J0QnlcIjogXCJcIixcbiAgICAgIFwic29ydE9yZGVyXCI6IFwiXCIsXG4gICAgICBcInN0YXR1c1wiOiB0cnVlLFxuICAgICAgXCJpc0RlbGV0ZWRcIjogZmFsc2VcbiAgICB9XG5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbERvY3VtZW50KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZG9jdW1lbnRMaXN0ID0gcmVzLmRhdGEuZGF0YTtcbiAgICB9KVxuICB9XG5cbiAgZm9ybUZpZWxkQ2hhbmdlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBmb3JtRmllbGRDaGFuZ2VkKCkge1xuICAgIHRoaXMuZm9ybUZpZWxkQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5fZXZlbnRTZXJ2aWNlLmZvcm1GaWVsZENoYW5nZWQuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5nZXRBbGxGaWVsZHMoKTtcbiAgICB9KVxuICB9XG5cblxuXG4gIGFzeW5jIHN1Ym1pdEZvcm0oKSB7XG4gICAgdGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMgPSB0aGlzLmNvbnZlcnRUb0xpc3RPZkZpZWxkcygpO1xuICAgIGlmKHRoaXMucGF5bG9hZC5maWVsZEl0ZW1zLmxlbmd0aCA9PSAwKVxuICAgICAgcmV0dXJuO1xuXG4gICAgaWYodGhpcy5maWxlRGF0YSkge1xuICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUodGhpcy5maWxlRGF0YSk7XG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gaW1hZ2VEYXRhLnVybFxuICAgIH1cblxuICAgIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IHRoaXMuY3JlYXRlUmVnaXN0cmF0aW9uKCkgOiB0aGlzLmNyZWF0ZUFkbWlzc2lvbigpO1xuICB9XG5cbiAgcmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBjcmVhdGVSZWdpc3RyYXRpb24oKSB7XG4gICAgLy8gdGhpcy5wYXlsb2FkWydyZXR1cm5VcmwnXSA9IGBodHRwczovL2NtaXMudGVqc29mdC5jb20vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9UkVHSVNUUkFUSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gIC8vcHJvZHVjdGlvblxuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9zdGFnZS1wb3J0YWwuY21pcy5hYy5pbi92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1SRUdJU1RSQVRJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWAgLy9kZXZcbiAgICAvLyB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vc3RhZ2UuY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1SRUdJU1RSQVRJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWAgLy9zdGFnZVxuICAgIHRoaXMucmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5yZXN0U2VydmljZS5jcmVhdGVSZWdpc3RyYXRpb25Gb3JQYXltZW50KHRoaXMucGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgLy8gdGhpcy5zbmFja0Jhci5vcGVuKCdSZWdpc3RyYXRpb24gY3JlYXRlZCBzdWNjZXNzZnVsbHknLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5jYXNoRnJlZUV2ZW50LmVtaXQoe3Jlc3BvbnNlOiByZXMsIHBheW1lbnRUeXBlOidSRUdJU1RSQVRJT04nfSk7XG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFkbWlzc2lvbigpIHtcbiAgICBpZih0aGlzLnBheWxvYWQucGF5bWVudFBsYW5UeXBlID09PSAnVEVSTScgJiYgKHRoaXMucGF5bG9hZD8uc3R1ZGVudEZlZVN0cnVjdHVyZT8udGVybVBheW1lbnRMaXN0Py5sZW5ndGggfHwgMCkgPT0gMCl7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1BsZWFzZSBzZWxlY3QgdGVybScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlWydwYXltZW50UGxhblR5cGUnXSA9IHRoaXMucGF5bG9hZC5wYXltZW50UGxhblR5cGU7XG4gICAgLy8gdGhpcy5wYXlsb2FkWydyZXR1cm5VcmwnXSA9IGBodHRwczovL2NtaXMudGVqc29mdC5jb20vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9QURNSVNTSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gOyAvL3Byb2R1Y3Rpb25cbiAgICB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vc3RhZ2UtcG9ydGFsLmNtaXMuYWMuaW4vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9QURNSVNTSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gOyAvL2RldlxuICAgIC8vIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9zdGFnZS5jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPUFETUlTU0lPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YDsgLy9zdGFnZVxuXG4gICAgaWYodGhpcy5iYWNrdXBEb2NGaWxlKSB7XG4gICAgICBsZXQgaW1hZ2VEYXRhOiBhbnkgPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkU2VydmljZS51cGxvYWRGaWxlSW5BenVyZSh0aGlzLmJhY2t1cERvY0ZpbGUpO1xuICAgICAgdGhpcy5wYXlsb2FkLmJhY2t1cERvYyA9IGltYWdlRGF0YS51cmxcbiAgICB9XG5cbiAgICBmb3IobGV0IGRvY3VtZW50IG9mIHRoaXMuZG9jdW1lbnRMaXN0KSB7XG4gICAgICBpZihkb2N1bWVudC5maWxlKSB7XG4gICAgICAgIGxldCBpbWFnZURhdGE6IGFueSA9IGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkF6dXJlKGRvY3VtZW50LmZpbGUpO1xuXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZG9jdW1lbnRzJ10ucHVzaChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBkb2N1bWVudC5kaXNwbGF5VGV4dCxcbiAgICAgICAgICAgIHVybDogaW1hZ2VEYXRhLnVybCxcbiAgICAgICAgICAgIGRvY1R5cGU6IGRvY3VtZW50Lm5hbWUsXG4gICAgICAgICAgICBhdHRhY2htZW50VHlwZTogZG9jdW1lbnQudHlwZVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucGF5bG9hZC5hZG1pc3Npb25QYXltZW50RGV0YWlsLmFtb3VudCA9IHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlVjIudG90YWxGZWU7XG4gICAgdGhpcy5yZWdpc3RyYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLnJlc3RTZXJ2aWNlLmNyZWF0ZVBheW1lbnRGb3JBZG1pc3Npb24odGhpcy5wYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAvLyB0aGlzLnNuYWNrQmFyLm9wZW4oJ0FkbWlzc2lvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhc2hGcmVlRXZlbnQuZW1pdCh7cmVzcG9uc2U6IHJlcywgcGF5bWVudFR5cGU6J0FETUlTU0lPTid9KTtcbiAgICB9KVxuICB9XG5cbiAgY29udmVydFRvTGlzdE9mRmllbGRzKCkge1xuICAgIGxldCBmaWVsZExpc3Q6IGFueVtdID0gW107XG5cbiAgICBmb3IobGV0IHN0ZXAgb2YgdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSkpIHtcbiAgICAgIGZvcihsZXQgZ3JvdXAgb2YgT2JqZWN0LmtleXModGhpcy5maWVsZERhdGFbc3RlcF0pKSB7XG5cbiAgICAgICAgaWYoZ3JvdXAgPT0gJ0JhY2t1cCBDb250YWN0JyAmJiB0aGlzLnN0dWRlbnRMaXZlV2l0aCAhPSAnc2luZ2xlIHBhcmVudCcpXG4gICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgZm9yKGxldCBmaWVsZCBvZiB0aGlzLmZpZWxkRGF0YVtzdGVwXVtncm91cF0pIHtcbiAgICAgICAgICBpZihmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuZmllbGRWYWx1ZSAmJiBmaWVsZC5kYXRhVHlwZSAhPSAnQ0hFQ0tCT1gnKSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oYFBsZWFzZSBlbnRlciAke2ZpZWxkLmZpZWxkTGFiZWx9YCwgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGNoZWNrQm94VmFsdWU6IGFueVtdID0gW107XG4gICAgICAgICAgaWYoZmllbGQuZGF0YVR5cGUgPT09ICdDSEVDS0JPWCcpIHtcbiAgICAgICAgICAgIGNoZWNrQm94VmFsdWUgPSB0aGlzLmdldENoZWNrQm94VmFsdWUoZmllbGQpO1xuXG4gICAgICAgICAgICBpZihjaGVja0JveFZhbHVlLmxlbmd0aCAgPT0gMCAmJiBmaWVsZC5yZXF1aXJlZCl7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgUGxlYXNlIGVudGVyICR7ZmllbGQuZmllbGRMYWJlbH1gLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpZWxkTGlzdC5wdXNoKHtcbiAgICAgICAgICAgIGZpZWxkSWQ6IGZpZWxkLmZpZWxkSWQsXG4gICAgICAgICAgICBmaWVsZE5hbWU6IGZpZWxkLmZpZWxkTGFiZWwsXG4gICAgICAgICAgICBmaWVsZFZhbHVlOiBmaWVsZC5kYXRhVHlwZSAhPT0gJ0NIRUNLQk9YJyA/IGZpZWxkLmZpZWxkVmFsdWUgOiBjaGVja0JveFZhbHVlLFxuICAgICAgICAgICAgZmllbGRHcm91cElkOiBmaWVsZC5maWVsZEdyb3VwSWQsXG4gICAgICAgICAgICBmaWVsZEdyb3VwTmFtZTogZ3JvdXAsXG4gICAgICAgICAgICBmaWVsZFN0ZXBJZDogZmllbGQuZmllbGRTdGVwSWQsXG4gICAgICAgICAgICBmaWVsZFN0ZXBOYW1lOiBzdGVwLFxuICAgICAgICAgICAgdHlwZTogZmllbGQudHlwZVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWVsZExpc3Q7XG4gIH1cblxuICBnZXRDaGVja0JveFZhbHVlKGZpZWxkOiBhbnkpIHtcbiAgICBsZXQgcmVzcG9uc2U6IGFueVtdID0gW107XG5cbiAgICBpZihmaWVsZC52YWx1ZSkge1xuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnZhbHVlKSB7XG4gICAgICAgIGlmKGZpZWxkVmFsdWUuY2hlY2tlZCkge1xuICAgICAgICAgIHJlc3BvbnNlLnB1c2goZmllbGRWYWx1ZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yKGxldCBmaWVsZFZhbHVlIG9mIGZpZWxkLnNvdXJjZURhdGE/LltmaWVsZC5kYXRhU291cmNlVHlwZV0gfHwgW10pIHtcbiAgICAgICAgaWYoZmllbGRWYWx1ZS5jaGVja2VkKSB7XG4gICAgICAgICAgcmVzcG9uc2UucHVzaChmaWVsZFZhbHVlLm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgZmlsZURhdGE/OiBGaWxlO1xuICB1cGRhdGVBZG1pc3Npb25JbWFnZShldjogYW55KSB7XG4gICAgdGhpcy5maWxlRGF0YSA9IGV2LnNyY0VsZW1lbnQuZmlsZXNbMF07XG5cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgcmVhZGVyLm9ubG9hZCA9IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gcmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGVEYXRhID8gcmVhZGVyLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlRGF0YSkgOiBudWxsO1xuICB9XG5cbiAgZGVsZXRlSW1nKCkge1xuICAgIHRoaXMucGF5bG9hZC5pbWdVcmwgPSAnJztcbiAgICB0aGlzLmZpbGVEYXRhID0gdW5kZWZpbmVkO1xuICB9ICByZWRpcmVjdFRvUGF5bWVudCgpIHtcbiAgICBpZighKHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgJiYgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkKSl7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1NlbGVjdGVkIEdyYWRlIGFuZCBBY2FkZW1pYyBZZWFyIGZpcnN0JywnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkS2V5ID0gJ1BheW1lbnQnXG4gIH1cblxuICBjb250aW51ZUFkbWlzc2lvbigpIHtcbiAgICBsZXQgc3RlcHMgPSBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSk7XG4gICAgbGV0IGluZGV4ID0gc3RlcHMuaW5kZXhPZih0aGlzLnNlbGVjdGVkS2V5KTtcblxuICAgIGlmKHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJyAmJiB0aGlzLnNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnICYmICEodGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciAmJiAgdGhpcy5zZWxlY3RlZEdyYWRlSWQpKSB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1NlbGVjdGVkIEdyYWRlIGFuZCBBY2FkZW1pYyBZZWFyIGZpcnN0JywgJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSlcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZih0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybScpXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gaW5kZXggPT09IHN0ZXBzLmxlbmd0aCAtIDEgPyAnRG9jdW1lbnQnIDogdGhpcy5zZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyA/ICdQYXltZW50JyA6IHN0ZXBzW2luZGV4ICsgMV07XG4gICAgZWxzZVxuICAgICAgdGhpcy5zZWxlY3RlZEtleSA9IHN0ZXBzW2luZGV4ICsgMV1cbiAgfVxuXG4gIHN1YnNjcmlwdGlvbnNEYXRhOiBhbnlbXSA9IFtdXG4gIHRlcm1QYXltZW50TGlzdDogYW55W10gPSBbXTtcblxuICBnZXRGZWVTdHJ1Y3R1cmUoKSB7XG4gICAgaWYoIXRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgfHwgIXRoaXMuc2VsZWN0ZWRHcmFkZUlkKVxuICAgICAgcmV0dXJuO1xuICAgIFxuICAgIGxldCBwYXlsb2FkID0ge1xuICAgICAgLy8gXCJidXNpbmVzc0lkXCI6IHRoaXMuYnVzaW5lc3NJZCxcbiAgICAgIC8vIFwic3RhcnRZZWFyXCI6IE51bWJlcih5ZWFyWzBdKSxcbiAgICAgIC8vIFwiZW5kWWVhclwiOiBOdW1iZXIoeWVhclsxXSksXG4gICAgICAvLyBcInBhZ2VOb1wiOiAwLFxuICAgICAgLy8gXCJzaXplXCI6IDEsXG4gICAgICAvLyBcImdyYWRlSWRzXCI6IFt0aGlzLnNlbGVjdGVkR3JhZGVJZF0sXG4gICAgICAvLyBcInNlYXJjaFRleHRcIjogXCJcIlxuICAgICAgYWNhZGVtaWNZZWFySWQgOiBbdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhci5pZF0sXG4gICAgICBidXNpbmVzc0lkIDogdGhpcy5idXNpbmVzc0lkLFxuICAgICAgZ3JhZGVJZHMgOiBbdGhpcy5zZWxlY3RlZEdyYWRlSWRdLFxuICAgICAgcGFnZU5vIDogMCxcbiAgICAgIHBhZ2VTaXplIDogMTAwMCxcbiAgICAgIHNlYXJjaFRleHQgOiBcIlwiXG4gICAgfVxuXG4gICAgdGhpcy5yZXN0U2VydmljZS5uZXdGZWVTdHJ1Y3R1cmVHZXRMaXN0KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlVjIgPSByZXMuZGF0YS5kYXRhWzBdO1xuICAgICAgdGhpcy5nZXRBbGxTdWJjcmlwdGlvbigpO1xuICAgICAgLy8gdGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmUgPSByZXMuZGF0YS5kYXRhWzBdO1xuICAgICAgLy8gdGhpcy5zdWJzY3JpcHRpb25zRGF0YSA9ICBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlLnN1YnNjcmlwdGlvblBsYW5zKSk7XG4gICAgICAvLyB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS5zdWJzY3JpcHRpb25QbGFucyA9IFtdO1xuICAgICAgLy8gdGhpcy50ZXJtUGF5bWVudExpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlPy50ZXJtUGF5bWVudExpc3QgfHwgJycpKTtcbiAgICAgIC8vIHRoaXMucGF5bG9hZC5zdHVkZW50RmVlU3RydWN0dXJlLnRlcm1QYXltZW50TGlzdCA9IFtdO1xuICAgIH0pXG4gIH1cblxuICBnZXRBbGxTdWJjcmlwdGlvbigpe1xuICAgIGNvbnN0IHNlcnZlckNhbGwgPSBmb3JrSm9pbih7XG4gICAgICBhbGxTdWJzY3JpcHRpb25zIDogdGhpcy5yZXN0U2VydmljZS5nZXRBY3RpdmVTdWJzY3JpcHRpb25Gb3JGZWVTdHJ1Y3R1cmUodGhpcy5idXNpbmVzc0lkLHRoaXMuc2VsZWN0ZWRHcmFkZUlkKVxuICAgIH0pXG4gICAgc2VydmVyQ2FsbC5zdWJzY3JpYmUoKHJlczphbnkpPT57XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnNEYXRhID0gcmVzLmFsbFN1YnNjcmlwdGlvbnMuZGF0YS5kYXRhXG4gICAgICByZXMuYWxsU3Vic2NyaXB0aW9ucy5kYXRhLmRhdGEuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcbiAgICAgICAgaWYgKCFlbGVtZW50Lm5ld1ByaWNpbmdMaXN0KSB7XG4gICAgICAgICAgZWxlbWVudC5uZXdQcmljaW5nTGlzdCA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmtleXMoZWxlbWVudC5wcmljaW5nKS5mb3JFYWNoKChwcmljZTogYW55KSA9PiB7XG4gICAgICAgICAgZWxlbWVudC5uZXdQcmljaW5nTGlzdC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHByaWNlLFxuICAgICAgICAgICAgYW1vdW50OiBlbGVtZW50LnByaWNpbmdbcHJpY2VdLFxuICAgICAgICAgICAgc2VsZWN0ZVN0YXR1czogZmFsc2UsXG4gICAgICAgICAgICBwYWlkOmZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSlcbiAgfVxuXG4gIGlucHV0RmllbGRDaGFuZ2UoaXRlbTogYW55LCBmaWVsZDogYW55KSB7XG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ0FjYWRlbWljIFllYXInKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyID0gaXRlbTtcbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XG4gICAgfVxuICAgIGlmKGZpZWxkLmZpZWxkTGFiZWwgPT09ICdHcmFkZScpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkID0gaXRlbS5pZDtcbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XG4gICAgfVxuICB9XG5cbiAgbWFzdGVyRHJvcGRvd25WYWx1ZUNoYW5nZShpdGVtOiBhbnksIGZpZWxkOiBhbnkpIHtcbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnU3R1ZGVudCBsaXZlIHdpdGgnKSB7XG4gICAgICB0aGlzLnN0dWRlbnRMaXZlV2l0aCA9IGl0ZW0udmFsdWVcbiAgICB9XG4gIH1cblxuICB1cGxvYWRCYWNrVXBEb2N1bWVudChldjogYW55KSB7XG4gICAgdGhpcy5iYWNrdXBEb2NGaWxlID0gZXYuc3JjRWxlbWVudC5maWxlc1swXTtcbiAgfVxuXG5cbiAgYXJyYW5nZVN1YnNjcmlwdGlvbkZvckFkbWlzc2lvbihzdWJzY3JpcHRpb25MaXN0OiBhbnlbXSkge1xuICAgIGxldCByZXNwb25zZTogYW55ID0ge307XG5cbiAgICBmb3IobGV0IHN1YnNjcmlwdGlvbiBvZiBzdWJzY3JpcHRpb25MaXN0KSB7XG4gICAgICBpZighcmVzcG9uc2Vbc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvblR5cGVdKSB7XG4gICAgICAgIHJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXSA9IFtdO1xuICAgICAgfVxuICAgICAgcmVzcG9uc2Vbc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvblR5cGVdLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBhcnJhbmdlRmVlQ29uZmlnKGZlZUNvbmZpZ0xpc3Q6IGFueVtdKSB7XG4gICAgbGV0IHJlc3BvbnNlOiBhbnkgPSB7fTtcblxuICAgIGZvcihsZXQgY29uZmlnIG9mIGZlZUNvbmZpZ0xpc3QpIHtcbiAgICAgIGlmKCFyZXNwb25zZVtjb25maWcuZmVlVHlwZV0pXG4gICAgICAgIHJlc3BvbnNlW2NvbmZpZy5mZWVUeXBlXSA9IFtdO1xuXG4gICAgICByZXNwb25zZVtjb25maWcuZmVlVHlwZV0ucHVzaChjb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIGdldE1heERhdGUoaXRlbTphbnkpIHtcbiAgICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IChpdGVtLmZpZWxkTGFiZWwgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGZpZWxkR3JvdXBOYW1lID0gKGl0ZW0uZmllbGRHcm91cCB8fCBbXSkuZmxhdE1hcCgoZzphbnkpID0+IFtcbiAgICAgIChnLmZpZWxkR3JvdXBOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgKGcuZmllbGRTdGVwTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKVxuICAgIF0pO1xuICBcbiAgICBpZiAoZm9ybWF0dGVkTGFiZWwuaW5jbHVkZXMoJ2RvYicpKSB7XG4gICAgICBjb25zdCB0ZW1wRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIFxuICAgICAgaWYgKGZpZWxkR3JvdXBOYW1lLnNvbWUoKG5hbWU6YW55KSA9PiBuYW1lLmluY2x1ZGVzKCdzdHVkZW50JykpKSB7XG4gICAgICAgIHRlbXBEYXRlLnNldEZ1bGxZZWFyKHRlbXBEYXRlLmdldEZ1bGxZZWFyKCkgLSAzKTtcbiAgICAgICAgcmV0dXJuIHRlbXBEYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgIH1cbiAgXG4gICAgICBpZiAoZmllbGRHcm91cE5hbWUuc29tZSgobmFtZTphbnkpID0+IG5hbWUuaW5jbHVkZXMoJ21vdGhlcicpKSkge1xuICAgICAgICB0ZW1wRGF0ZS5zZXRGdWxsWWVhcih0ZW1wRGF0ZS5nZXRGdWxsWWVhcigpIC0gMTgpO1xuICAgICAgICByZXR1cm4gdGVtcERhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICAgICAgfVxuICBcbiAgICAgIGlmIChmaWVsZEdyb3VwTmFtZS5zb21lKChuYW1lOmFueSkgPT4gbmFtZS5pbmNsdWRlcygnZmF0aGVyJykgfHwgbmFtZS5pbmNsdWRlcygnZ3VhcmRpYW4nKSkpIHtcbiAgICAgICAgdGVtcERhdGUuc2V0RnVsbFllYXIodGVtcERhdGUuZ2V0RnVsbFllYXIoKSAtIDIxKTtcbiAgICAgICAgcmV0dXJuIHRlbXBEYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgIH1cbiAgICB9XG4gIFxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmFkaW9CdXR0b25DaGFuZ2VkKGl0ZW06IGFueSwgc2VsZWN0ZWRLZXk6IGFueSwgZ3JvdXA6IGFueSkge1xuICAgIGlmIChpdGVtLnR5cGUgPT09ICdQQVNTUE9SVF9BVkFJTEFCTEUnKSB7XG4gICAgICB0aGlzLnNob3dPckhpZGVGaWVsZHMoaXRlbS5maWVsZFZhbHVlLCBzZWxlY3RlZEtleSwgZ3JvdXApXG4gICAgfVxuICB9XG5cbiAgc2hvd1JlbGF0aXZlRmllbGRzOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dPckhpZGVGaWVsZHModmFsdWU6IGFueSwgc2VsZWN0ZWRLZXk6IGFueSwgZ3JvdXA6IGFueSkge1xuICAgIGNvbnN0IHNob3VsZFNob3cgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCd5ZXMnKTtcbiAgICB0aGlzLmZpZWxkRGF0YVtzZWxlY3RlZEtleV1bZ3JvdXBdLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5kYXRhVHlwZSAhPT0gJ1JBRElPQlVUVE9OJyAmJiBlbGVtZW50LmZpZWxkTGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygncGFzc3BvcnQnKSkge1xuICAgICAgICBlbGVtZW50LmlzRGlzcGxheSA9IHNob3VsZFNob3c7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxzZWN0aW9uIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIj5cbiAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiPlxuICAgIDxkaXYgI21haW5Db250YWluZXIgY2xhc3M9XCJyb3dGbGV4XCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvT3ZlcmxheV09XCJzdHlsZXM/LmJhY2tncm91bmRcIlxuICAgICAgW3NpbXBvQm9yZGVyXT1cInN0eWxlcz8uYm9yZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1zZWN0aW9uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdsZWZ0JyAsICdqdXN0aWZ5LWNvbnRlbnQtbWQtZW5kJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnfVwiXG4gICAgICAgIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0xheW91dF09XCJzdHlsZXM/LmxheW91dFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGRpdiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBbaWRdPVwiZGF0YT8uaWRcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVsZW1lbnQgW3RleHREYXRhXT1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzBdPy52YWx1ZVwiIFt0ZXh0TGFiZWxdPVwiY29udGVudD8uaW5wdXRUZXh0Py5bMF0/LmxhYmVsXCI+PC9zaW1wby10ZXh0LWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZC1tZC1mbGV4IG10LTE1XCIgKm5nSWY9XCJkYXRhPy5hY3Rpb24/LmRpc3BsYXlcIiBbbmdDbGFzc109XCJbXG4gICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2xlZnQnID8gJ2p1c3RpZnktY29udGVudC1tZC1zdGFydCcgOiAnJyxcbiAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnY2VudGVyJyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyJyA6ICcnLFxuICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCcgPyAnanVzdGlmeS1jb250ZW50LW1kLWVuZCcgOiAnJ1xuICAgICAgICAgICAgXVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cbiAgPHNlY3Rpb24gY2xhc3M9XCJtYWluLXNlY3Rpb25cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiZm9ybVN0YXR1cyAhPSAnUkVHSVNURVJFRCcgJiYgZm9ybVN0YXR1cyAhPSAnQURNSVRURUQnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ViVGFic19zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X3RhYnMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBPYmplY3Qua2V5cyhmaWVsZERhdGEpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzZWxlY3RlZEtleSA9IGtleVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkS2V5ID09PSBrZXkgPyAnc2luZ2xlX3RhYl9hY3RpdmUnIDogJ3NpbmdsZV90YWInXCI+XG4gICAgICAgICAgICAgIHt7a2V5IHwgdGl0bGVjYXNlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGVfdGFiIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNlbGVjdGVkS2V5ID0gJ0RvY3VtZW50J1wiICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cbiAgICAgICAgICAgIERvY3VtZW50XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZV90YWIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicmVkaXJlY3RUb1BheW1lbnQoKVwiXG4gICAgICAgICAgICAqbmdJZj1cImRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRLZXkgPT09ICdQYXltZW50JyA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cbiAgICAgICAgICAgIFBheW1lbnRcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBmaWVsZERhdGFbc2VsZWN0ZWRLZXldID8gT2JqZWN0LmtleXMoZmllbGREYXRhW3NlbGVjdGVkS2V5XSkgOiBbXTtsZXQgZ3JvdXBJbmRleCA9IGluZGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5XCIgKm5nSWY9XCJncm91cCAhPT0gJ0JhY2t1cCBDb250YWN0J1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X3RhYnMgYmFja1RvTGVhZHMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAge3tncm91cH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBJbmRleCA9PSAwICYmIE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbMF0gPT09IHNlbGVjdGVkS2V5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYm94XCIgKm5nSWY9XCIhcGF5bG9hZC5pbWdVcmxcIj5cbiAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImR1bW15LWltYWdlXCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9tYXN0ZXIvYWRkLWltYWdlLnN2Z1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZV9ib3hcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZjX2Jyb3dzZV9idG5cIiBpZD1cImRpc3BsYXlfYnJvd3NlX2J0blwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPkNsaWNrIHRvXG4gICAgICAgICAgICAgICAgICB1cGxvYWQ8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwidmVuZG9ySW1hZ2VcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCJteWZpbGVcIlxuICAgICAgICAgICAgICBhY2NlcHQ9XCJpbWFnZS94LXBuZyxpbWFnZS9qcGVnLGltYWdlL2pwZ1wiIChjaGFuZ2UpPVwidXBkYXRlQWRtaXNzaW9uSW1hZ2UoJGV2ZW50KVwiIGNsYXNzPVwicGMtYnRuXCJcbiAgICAgICAgICAgICAgaWQ9XCJicm93c2VfY29udGFjdF9pbWFnZVwiICNmaWxlSW5wdXQgLz5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBheWxvYWQuaW1nVXJsXCIgY2xhc3M9XCJhZGRlZEltZ1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkZWRJbWdcIj5cbiAgICAgICAgICAgICAgICA8aW1nICBhbHQ9XCJcIiBbc3JjXT1cImRzLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwocGF5bG9hZC5pbWdVcmwpXCI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9ibG9ncy9jaGFuZ2VfaW1hZ2Uuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgICAgICBDaGFuZ2UgSW1hZ2VcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGRlbGV0ZS1jaGFuZ2VcIiAoY2xpY2spPVwiZGVsZXRlSW1nKClcIj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlbGV0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9ibG9ncy9kZWxldGVfaW1hZ2Uuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+RGVsZXRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTFcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGluZm8gb2YgZmllbGREYXRhW3NlbGVjdGVkS2V5XVtncm91cF1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCIgKm5nSWY9XCJpbmZvLmlzRGlzcGxheVwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIj57e2luZm8uZGlzcGxheVRleHQgfHwgaW5mby5maWVsZExhYmVsfX08L2xhYmVsPiZuYnNwOyA8c3BhbiBzdHlsZT1cImNvbG9yOiByZWQ7XCIgKm5nSWY9XCJpbmZvLnJlcXVpcmVkXCI+Kjwvc3Bhbj4gPGJyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dERhdGE7IGNvbnRleHQ6IHtkYXRhOiBpbmZvLCBncm91cDpncm91cH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIiAqbmdJZj1cImZpZWxkRGF0YVtzZWxlY3RlZEtleV0uaGFzT3duUHJvcGVydHkoJ0JhY2t1cCBDb250YWN0JykgJiYgc3R1ZGVudExpdmVXaXRoID09PSAnc2luZ2xlIHBhcmVudCcgJiYgZ3JvdXBJbmRleCA9PSAwICYmIE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbMF0gPT09IHNlbGVjdGVkS2V5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBiYWNrVG9MZWFkcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICBCYWNrdXAgQ29udGFjdCAoT3B0aW9uYWwpXG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibXRiLTE1IGNoZWNrYm94LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJcIiBpZD1cIlwiIFsobmdNb2RlbCldPVwicGF5bG9hZC5wYXJlbnRBdXRob3JpemF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICBJIGF1dGhvcml6ZSB0aGUgc2Nob29sIHRvIHJlbGVhc2UgdGhlIGNoaWxkIG9ubHkgdG8gdGhlIHBhcmVudCBsaXN0ZWQgYWJvdmVcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCIgKm5nRm9yPVwibGV0IGluZm8gb2YgZmllbGREYXRhW3NlbGVjdGVkS2V5XVsnQmFja3VwIENvbnRhY3QnXVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCI+e3tpbmZvLmRpc3BsYXlUZXh0IHx8IGluZm8uZmllbGRMYWJlbH19PC9sYWJlbD4mbmJzcDsgPHNwYW4gc3R5bGU9XCJjb2xvcjogcmVkO1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpbmZvLnJlcXVpcmVkXCI+Kjwvc3Bhbj4gPGJyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXREYXRhOyBjb250ZXh0OiB7ZGF0YTogaW5mb31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImxhYmVsLXRleHRcIj5VcGxvYWQgU3VwcG9ydGluZyBEb2N1bWVudCAoT3B0aW9uYWwpPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXRleHQgdXBsb2FkLWZpbGVcIiAoY2xpY2spPVwiYmFja1VwRG9jSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxwPnt7YmFja3VwRG9jRmlsZSA/ICdGaWxlIFVwbG9hZGVkJyA6ICdVcGxvYWQgRmlsZSd9fTwvcD5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvdWRfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dCBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCIgaGlkZGVuXG4gICAgICAgICAgICAgICAgYWNjZXB0PVwiLmRvYywuZG9jeCxhcHBsaWNhdGlvbi9tc3dvcmQsYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQsaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGcsLnBkZiwgdmlkZW8vbXA0LHZpZGVvL3gtbWF0cm9za2EsdmlkZW8veC1tc3ZpZGVvLHZpZGVvL3F1aWNrdGltZVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGxvYWRCYWNrVXBEb2N1bWVudCgkZXZlbnQpXCIgY2xhc3M9XCJwYy1idG5cIlxuICAgICAgICAgICAgICAgIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjYmFja1VwRG9jSW5wdXQgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGV0YWlsc1wiICpuZ0lmPVwic2VsZWN0ZWRLZXkgPT09ICdEb2N1bWVudCcgJiYgZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiPlxuICAgICAgICAgIDxzaW1wby1kb2N1bWVudCBbZG9jdW1lbnRMaXN0XT1cImRvY3VtZW50TGlzdFwiPjwvc2ltcG8tZG9jdW1lbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1kZXRhaWxzXCIgKm5nSWY9XCJzZWxlY3RlZEtleSA9PT0gJ1BheW1lbnQnICYmIGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIj5cbiAgICAgICAgICA8c2ltcG8tcGF5bWVudC1kZXRhaWxzIFthZG1pc3Npb25EYXRhXT1cInBheWxvYWRcIlxuICAgICAgICAgICAgW3N1YnNjcmlwdGlvbnNEYXRhXT1cInN1YnNjcmlwdGlvbnNEYXRhXCIgW3Rlcm1QYXltZW50TGlzdF09XCJ0ZXJtUGF5bWVudExpc3RcIj48L3NpbXBvLXBheW1lbnQtZGV0YWlscz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1wYXJlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGRhdGE/LmFjdGlvbj8uYnV0dG9uc1wiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwic3VibWl0Rm9ybSgpXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkK2J1dHRvbi5pZFwiXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiICpuZ0lmPVwiKGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybScgJiYgc2VsZWN0ZWRLZXkgPT0gJ1BheW1lbnQnKSB8fFxuICAgICAgICAgICAgKGRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgJiZcbiAgICAgICAgICAgICAgKE9iamVjdC5rZXlzKGZpZWxkRGF0YSlbT2JqZWN0LmtleXMoZmllbGREYXRhKS5sZW5ndGggLSAxXSA9PSBzZWxlY3RlZEtleSkpXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tidXR0b24/LmNvbnRlbnQ/LmxhYmVsfX08L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY29udGludWVBZG1pc3Npb24oKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCtidXR0b24uaWRcIlxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIiAqbmdJZj1cInNlbGVjdGVkS2V5ICE9ICdQYXltZW50JyAmJiBkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+Q29udGludWU8L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY29udGludWVBZG1pc3Npb24oKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCtidXR0b24uaWRcIlxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIlxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nICYmIChPYmplY3Qua2V5cyhmaWVsZERhdGEpW09iamVjdC5rZXlzKGZpZWxkRGF0YSkubGVuZ3RoIC0gMV0gIT0gc2VsZWN0ZWRLZXkpXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+Q29udGludWU8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJlbXB0eVRleHRcIiAqbmdJZj1cImZvcm1TdGF0dXMgPT0gJ1JFR0lTVEVSRUQnIHx8IGZvcm1TdGF0dXMgPT0gJ0FETUlUVEVEJ1wiPlxuICAgICAgPGltZyBbc3JjXT1cImNvbnRlbnQ/LmltYWdlPy51cmxcIiBhbHQ9XCJcIiAqbmdJZj1cImNvbnRlbnQ/LmltYWdlPy5zaG93SW1hZ2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLWxhcmdlXCIgW2lubmVySHRtbF09XCJjb250ZW50Py5pbnB1dFRleHQ/LlsxXT8udmFsdWVcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuXG4gIDxuZy10ZW1wbGF0ZSAjaW5wdXREYXRhIGxldC1maWVsZD1cImRhdGFcIiBsZXQtZ3JvdXA9XCJncm91cFwiPlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PSAnSU1BR0UnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYm94XCI+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJkdW1teS1pbWFnZVwiIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvbWFzdGVyL2FkZC1pbWFnZS5zdmdcIlxuICAgICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIGFsdD1cIlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmNfYnJvd3NlX2J0blwiIGlkPVwiZGlzcGxheV9icm93c2VfYnRuXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+Q2xpY2sgdG9cbiAgICAgICAgICAgIHVwbG9hZDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgaWQ9XCJ2ZW5kb3JJbWFnZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIm15ZmlsZVwiIGFjY2VwdD1cImltYWdlL3gtcG5nLGltYWdlL2pwZWcsaW1hZ2UvanBnXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVBZG1pc3Npb25JbWFnZSgkZXZlbnQpXCIgY2xhc3M9XCJwYy1idG5cIiBpZD1cImJyb3dzZV9jb250YWN0X2ltYWdlXCIgI2ZpbGVJbnB1dCAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ1RFWFQnICYmIGZpZWxkLmlzRGlzcGxheVwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgW3BsYWNlaG9sZGVyXT1cIidFbnRlciAnK2ZpZWxkLmZpZWxkTGFiZWxcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdOVU1CRVInICYmIGZpZWxkLmlzRGlzcGxheVwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImlucHV0LXRleHRcIiBbcGxhY2Vob2xkZXJdPVwiJ0VudGVyICcrZmllbGQuZmllbGRMYWJlbFwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ01PTkVZJyAmJiBmaWVsZC5pc0Rpc3BsYXlcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIFtwbGFjZWhvbGRlcl09XCInRW50ZXIgJytmaWVsZC5maWVsZExhYmVsXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnREFURScgJiYgZmllbGQuaXNEaXNwbGF5XCI+XG4gICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImlucHV0LXRleHRcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCAnK2ZpZWxkLmZpZWxkTGFiZWxcIiBbbWF4XT1cImdldE1heERhdGUoZmllbGQpXCI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnRFJPUERPV04nICYmIGZpZWxkLmlzRGlzcGxheVwiIGNsYXNzPVwiYWRtaXNzaW9uXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dC10ZXh0LTEgaW5wdXRfY2FyZFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgc3R5bGU9XCJ3aWR0aDoxMDAlXCI+XG4gICAgICAgIDxtYXQtc2VsZWN0IGNsYXNzPVwiaW5wdXRTdHlsZVwiIHBsYWNlaG9sZGVyPVwiLS1TZWxlY3QtLVwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVNlbGVjdGlvblwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPiAwXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC52YWx1ZVwiIFt2YWx1ZV09XCJpdGVtPy52YWx1ZVwiIChjbGljayk9XCJtYXN0ZXJEcm9wZG93blZhbHVlQ2hhbmdlKGl0ZW0sIGZpZWxkKVwiPnt7aXRlbS5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPT0gMFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaW5wdXRGaWVsZENoYW5nZShpdGVtLCBmaWVsZClcIiBbdmFsdWVdPVwiaXRlbT8ubmFtZVwiPnt7aXRlbS5uYW1lfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnICYmIGZpZWxkLmlzRGlzcGxheVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnZhbHVlXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiXCIgaWQ9XCJmbGV4Q2hlY2tDaGVja2VkXCIgWyhuZ01vZGVsKV09XCJkYXRhLmNoZWNrZWRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrQ2hlY2tlZFwiPlxuICAgICAgICAgICAge3tkYXRhLmxhYmVsfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID09IDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbWItNVwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnNvdXJjZURhdGFbZmllbGQuZGF0YVNvdXJjZVR5cGVdXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiXCIgaWQ9XCJmbGV4Q2hlY2tDaGVja2VkXCIgWyhuZ01vZGVsKV09XCJkYXRhLmNoZWNrZWRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrQ2hlY2tlZFwiPlxuICAgICAgICAgICAge3tkYXRhLm5hbWV9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnUkFESU9CVVRUT04nICYmIGZpZWxkLmlzRGlzcGxheVwiPlxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMjBweDsgbWFyZ2luLXRvcDogMTBweDsgaGVpZ2h0OiAzNXB4O2FsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPiAwXCI+XG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiIG1iLTVcIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWVsZC52YWx1ZVwiPlxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gW3ZhbHVlXT1cImRhdGEudmFsdWVcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj57e2RhdGEubGFiZWx9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPG1hdC1yYWRpby1ncm91cCBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIiAoY2hhbmdlKT1cInJhZGlvQnV0dG9uQ2hhbmdlZChmaWVsZCxzZWxlY3RlZEtleSxncm91cClcIj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0Zvcj1cImxldCBkYXRhIG9mIGZpZWxkLnZhbHVlXCIgW3ZhbHVlXT1cImRhdGEudmFsdWVcIj5cbiAgICAgICAgICAgICAge3sgZGF0YS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPT0gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTVcIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWVsZC52YWx1ZVwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJyYWRpb1wiIFt2YWx1ZV09XCJkYXRhLm5hbWVcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIiAvPlxuICBcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbZm9yXT1cIidyYWRpb18nICsgZGF0YS5uYW1lXCI+XG4gICAgICAgICAgICAgIHt7IGRhdGEubmFtZSB9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZXM/LmRldmlkZXI/LmRpc3BsYXlcIj5cbiAgICA8c2ltcG8tc3ZnLWRpdmlkZXIgW2RpdmlkZXJUeXBlXT1cInN0eWxlcz8uZGV2aWRlcj8uZGV2aWRlclR5cGVcIlxuICAgICAgW2NvbG9yXT1cIm5leHRDb21wb25lbnRDb2xvcj8uY29sb3JcIj48L3NpbXBvLXN2Zy1kaXZpZGVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxuICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3N0eWxlcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgU1BBQ0lOR19UWVBFID0gJ25vbmUnIHwgJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyB8ICdyZW1vdmUnO1xuZXhwb3J0IHR5cGUgQUxJR04gPSAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCc7XG5leHBvcnQgdHlwZSBMQVlPVVRQT1NJVElPTiA9ICdsZWZ0JyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nO1xuZXhwb3J0IHR5cGUgQ09OVEVOVFBPU0lUSU9OID0gJ2ltYWdlIGNlbnRlcicgfCAnaW1hZ2UgdG9wJyB8ICdpbWFnZSBib3R0b20nO1xuZXhwb3J0IHR5cGUgRklUID0gJ2NvbnRlbnQnIHwgJ3NjcmVlbic7XG5leHBvcnQgdHlwZSBDQVJEX1NJWkUgPSAnU21hbGwnIHwgJ01lZGl1bScgfCAnTGFyZ2UnXG5leHBvcnQgdHlwZSBBTklNQVRJT05fRElSRUNUSU9OID1cbiAgfCAnbGVmdCdcbiAgfCAndG9wJ1xuICB8ICdib3R0b20nXG4gIHwgJ3JpZ2h0J1xuICB8ICdmYWRlSW4nXG4gIHwgJ3pvb20nXG4gIHwgJ25vbmUnO1xuZXhwb3J0IHR5cGUgQk9SREVSX0RJUkVDVElPTiA9IFwiQUxMXCIgfCBcIkxFRlRcIiB8IFwiUklHSFRcIiB8IFwiVE9QXCIgfCBcIkJPVFRPTVwiXG5leHBvcnQgdHlwZSBBTklNQVRJT05fU1BFRUQgPSAnc2xvdycgfCAnbWVkaXVtJyB8ICdmYXN0JztcbmV4cG9ydCB0eXBlIExJTktfVFlQRSA9ICdCdXR0b24nIHwgJ0xpc3QgSXRlbSdcbmV4cG9ydCB0eXBlIEJVVFRPTl9UWVBFID0gJ1NvbGlkJyB8ICdPdXRsaW5lJ1xuZXhwb3J0IHR5cGUgQlVUVE9OX1NIQVBFID0gJ1JvdW5kJyB8ICdTcXVhcmUnO1xuZXhwb3J0IHR5cGUgRk9PVEVSX0lNQUdFX1NPVVJDRSA9ICdCUkFORElORycgfCAnVVBMT0FEJztcbmV4cG9ydCB0eXBlIFNPQ0lBTF9JQ09OX1NJWkUgPSAnbGFyZ2UnIHwgJ21lZGl1bScgfCAnc21hbGwnO1xuZXhwb3J0IHR5cGUgU09DSUFMX0lDT05fU0hBUEUgPSAnY2lyY2xlJyB8ICdzcXVhcmUnIHwgJ3JvdW5kZWQnO1xuZXhwb3J0IHR5cGUgU09DSUFMX0lDT05fVFlQRSA9J3NvbGlkJyB8ICdvdXRsaW5lJztcbmV4cG9ydCB0eXBlIFNJVEVfTkFNRV9MT0dvID0gJ2N1c3RvbScgfCAnc2FtZSBhcyBoZWFkZXInO1xuZXhwb3J0IHR5cGUgSU5QVVRfRklFTERTX1RZUEUgPSBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImRlc2NcIiB8IFwicGFzc3dvcmRcIiB8IFwiY2hlY2tib3hcIiB8IFwib3B0aW9uXCIgfCBcIm1vbmV5XCIgfCBcInJhdGluZ1wiIHwgXCJkcm9wZG93blwiIHwgXCJhZGRyZXNzXCIgfCBcImVtYWlsXCIgfCBcImRhdGVcIiB8IFwicmFkaW9CdXR0b25cIjtcbmV4cG9ydCB0eXBlIE1BUF9TVFlMRSA9ICdTdHJlZXRzJyB8ICdPdXRkb29ycycgfCAnTGlnaHQnIHwgJ0RhcmsnIHwgJ1NhdGVsbGl0ZScgfCAnU2F0ZWxsaXRlX3N0cmVldCcgfCAnbmF2aWdhdGlvbl9kYXknIHwgJ25hdmlnYXRpb25fbmlnaHQnO1xuZXhwb3J0IHR5cGUgQkFOTkVSX1RSQU5TSVRJT04gPSAnSG9yaXpvbnRhbCcgfCAnQW5pbWF0ZWQnXG5leHBvcnQgdHlwZSBGSUxFX1RZUEUgPSAnSW1hZ2UnIHwgJ1ZpZGVvJyBcbmV4cG9ydCB0eXBlIEJBQ0tHUk9VTkRfVFlQRSA9ICdTb2xpZCcgfCAnR3JhZGllbnQnO1xuZXhwb3J0IHR5cGUgR1JBRElFTlRfRElSRUNUSU9OID0gJ0RPV04nIHwgJ1JJR0hUJyB8ICdESUFHT05BTF9SSUdIVCcgfCAnRElBR09OQUxfTEVGVCc7XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3N0eWxlcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgU1BBQ0lOR19UWVBFID0gJ25vbmUnIHwgJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyB8ICdyZW1vdmUnO1xuZXhwb3J0IHR5cGUgQUxJR04gPSAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCc7XG5leHBvcnQgdHlwZSBMQVlPVVRQT1NJVElPTiA9ICdsZWZ0JyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nO1xuZXhwb3J0IHR5cGUgQ09OVEVOVFBPU0lUSU9OID0gJ2ltYWdlIGNlbnRlcicgfCAnaW1hZ2UgdG9wJyB8ICdpbWFnZSBib3R0b20nO1xuZXhwb3J0IHR5cGUgRklUID0gJ2NvbnRlbnQnIHwgJ3NjcmVlbic7XG5leHBvcnQgdHlwZSBDQVJEX1NJWkUgPSAnU21hbGwnIHwgJ01lZGl1bScgfCAnTGFyZ2UnXG5leHBvcnQgdHlwZSBBTklNQVRJT05fRElSRUNUSU9OID1cbiAgfCAnbGVmdCdcbiAgfCAndG9wJ1xuICB8ICdib3R0b20nXG4gIHwgJ3JpZ2h0J1xuICB8ICdmYWRlSW4nXG4gIHwgJ3pvb20nXG4gIHwgJ25vbmUnO1xuZXhwb3J0IHR5cGUgQk9SREVSX0RJUkVDVElPTiA9IFwiQUxMXCIgfCBcIkxFRlRcIiB8IFwiUklHSFRcIiB8IFwiVE9QXCIgfCBcIkJPVFRPTVwiXG5leHBvcnQgdHlwZSBBTklNQVRJT05fU1BFRUQgPSAnc2xvdycgfCAnbWVkaXVtJyB8ICdmYXN0JztcbmV4cG9ydCB0eXBlIExJTktfVFlQRSA9ICdCdXR0b24nIHwgJ0xpc3QgSXRlbSdcbmV4cG9ydCB0eXBlIEJVVFRPTl9UWVBFID0gJ1NvbGlkJyB8ICdPdXRsaW5lJ1xuZXhwb3J0IHR5cGUgQlVUVE9OX1NIQVBFID0gJ1JvdW5kJyB8ICdTcXVhcmUnO1xuZXhwb3J0IHR5cGUgRk9PVEVSX0lNQUdFX1NPVVJDRSA9ICdCUkFORElORycgfCAnVVBMT0FEJztcbmV4cG9ydCB0eXBlIFNPQ0lBTF9JQ09OX1NJWkUgPSAnbGFyZ2UnIHwgJ21lZGl1bScgfCAnc21hbGwnO1xuZXhwb3J0IHR5cGUgU09DSUFMX0lDT05fU0hBUEUgPSAnY2lyY2xlJyB8ICdzcXVhcmUnIHwgJ3JvdW5kZWQnO1xuZXhwb3J0IHR5cGUgU09DSUFMX0lDT05fVFlQRSA9J3NvbGlkJyB8ICdvdXRsaW5lJztcbmV4cG9ydCB0eXBlIFNJVEVfTkFNRV9MT0dvID0gJ2N1c3RvbScgfCAnc2FtZSBhcyBoZWFkZXInO1xuZXhwb3J0IHR5cGUgSU5QVVRfRklFTERTX1RZUEUgPSBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImRlc2NcIiB8IFwicGFzc3dvcmRcIiB8IFwiY2hlY2tib3hcIiB8IFwib3B0aW9uXCIgfCBcIm1vbmV5XCIgfCBcInJhdGluZ1wiIHwgXCJkcm9wZG93blwiIHwgXCJhZGRyZXNzXCIgfCBcImVtYWlsXCIgfCBcImRhdGVcIiB8IFwicmFkaW9CdXR0b25cIiB8IFwidGV4dF9maWVsXCI7XG5leHBvcnQgdHlwZSBNQVBfU1RZTEUgPSAnU3RyZWV0cycgfCAnT3V0ZG9vcnMnIHwgJ0xpZ2h0JyB8ICdEYXJrJyB8ICdTYXRlbGxpdGUnIHwgJ1NhdGVsbGl0ZV9zdHJlZXQnIHwgJ25hdmlnYXRpb25fZGF5JyB8ICduYXZpZ2F0aW9uX25pZ2h0JztcbmV4cG9ydCB0eXBlIEJBTk5FUl9UUkFOU0lUSU9OID0gJ0hvcml6b250YWwnIHwgJ0FuaW1hdGVkJ1xuZXhwb3J0IHR5cGUgRklMRV9UWVBFID0gJ0ltYWdlJyB8ICdWaWRlbycgXG5leHBvcnQgdHlwZSBCQUNLR1JPVU5EX1RZUEUgPSAnU29saWQnIHwgJ0dyYWRpZW50JztcbmV4cG9ydCB0eXBlIEdSQURJRU5UX0RJUkVDVElPTiA9ICdET1dOJyB8ICdSSUdIVCcgfCAnRElBR09OQUxfUklHSFQnIHwgJ0RJQUdPTkFMX0xFRlQnO1xuIl19
@@ -11120,31 +11120,27 @@ class RegistrationFormComponent extends BaseSection {
11120
11120
  return response;
11121
11121
  }
11122
11122
  getMaxDate(item) {
11123
- const today = new Date();
11124
- let maxDate;
11125
- const formattedLabel = item.fieldLabel.trim().toLowerCase();
11123
+ const formattedLabel = (item.fieldLabel || '').trim().toLowerCase();
11126
11124
  const fieldGroupName = (item.fieldGroup || []).flatMap((g) => [
11127
- g.fieldGroupName?.toLowerCase() || '',
11128
- g.fieldStepName?.toLowerCase() || ''
11125
+ (g.fieldGroupName || '').toLowerCase(),
11126
+ (g.fieldStepName || '').toLowerCase()
11129
11127
  ]);
11130
11128
  if (formattedLabel.includes('dob')) {
11129
+ const tempDate = new Date();
11131
11130
  if (fieldGroupName.some((name) => name.includes('student'))) {
11132
- maxDate = new Date(today.setFullYear(today.getFullYear() - 3));
11131
+ tempDate.setFullYear(tempDate.getFullYear() - 3);
11132
+ return tempDate.toISOString().split('T')[0];
11133
11133
  }
11134
- else if (fieldGroupName.some((name) => name.includes('mother'))) {
11135
- maxDate = new Date(today.setFullYear(today.getFullYear() - 18));
11134
+ if (fieldGroupName.some((name) => name.includes('mother'))) {
11135
+ tempDate.setFullYear(tempDate.getFullYear() - 18);
11136
+ return tempDate.toISOString().split('T')[0];
11136
11137
  }
11137
- else if (fieldGroupName.some((name) => name.includes('father') || name.includes('guardian'))) {
11138
- maxDate = new Date(today.setFullYear(today.getFullYear() - 21));
11139
- }
11140
- else {
11141
- maxDate = new Date();
11138
+ if (fieldGroupName.some((name) => name.includes('father') || name.includes('guardian'))) {
11139
+ tempDate.setFullYear(tempDate.getFullYear() - 21);
11140
+ return tempDate.toISOString().split('T')[0];
11142
11141
  }
11143
11142
  }
11144
- else {
11145
- maxDate = new Date();
11146
- }
11147
- return maxDate.toISOString().split('T')[0];
11143
+ return null;
11148
11144
  }
11149
11145
  radioButtonChanged(item, selectedKey, group) {
11150
11146
  if (item.type === 'PASSPORT_AVAILABLE') {