@cqa-lib/cqa-ui 1.1.99 → 1.1.100

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.
@@ -77,16 +77,16 @@ export class BasicStepComponent extends BaseStepComponent {
77
77
  this.config.expanded = this.isExpanded;
78
78
  }
79
79
  }
80
- // Initialize loading state when nested steps are added and step is expanded
81
- if (changes['nestedSteps'] && this.isExpanded && this.nestedSteps && this.nestedSteps.length > 0) {
82
- this.loadingSteps.clear();
83
- this.nestedSteps.forEach(step => {
84
- const stepId = step.testStepResultId || step.id;
85
- if (stepId) {
86
- this.loadingSteps.add(String(stepId));
87
- }
88
- });
89
- }
80
+ // // Initialize loading state when nested steps are added and step is expanded
81
+ // if (changes['nestedSteps'] && this.isExpanded && this.nestedSteps && this.nestedSteps.length > 0) {
82
+ // this.loadingSteps.clear();
83
+ // this.nestedSteps.forEach(step => {
84
+ // const stepId = step.testStepResultId || step.id;
85
+ // if (stepId) {
86
+ // this.loadingSteps.add(String(stepId));
87
+ // }
88
+ // });
89
+ // }
90
90
  // Initialize loading state if already expanded when component initializes
91
91
  if (changes['expanded'] && this.isExpanded && this.nestedSteps && this.nestedSteps.length > 0) {
92
92
  this.loadingSteps.clear();
@@ -286,4 +286,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
286
286
  }], selfHealAction: [{
287
287
  type: Output
288
288
  }] } });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtc3RlcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2V4ZWN1dGlvbi1zY3JlZW4vYmFzaWMtc3RlcC9iYXNpYy1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9iYXNpYy1zdGVwL2Jhc2ljLXN0ZXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFvQyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFRM0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQUx6RDs7UUFzQlcsd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLDRCQUF1QixHQUFHLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBMEJ2Qix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQUNuRSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3pELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ25DLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN4QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFvRCxDQUFDO1FBS2hHLHVEQUF1RDtRQUN2RCxpQkFBWSxHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBZ0d0QywwQkFBcUIsR0FBWSxLQUFLLENBQUM7S0F5R3hDO0lBdk1VLFFBQVE7UUFFZixzQ0FBc0M7UUFDdEMsa0VBQWtFO1FBQ2xFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBRTFDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixF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QTJCO3NCQUFuQyxLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyw0QkFBNEI7c0JBQXBDLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLCtCQUErQjtzQkFBdkMsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBRUksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2ljU3RlcENvbmZpZywgU2VsZkhlYWxBY3Rpb24sIFN1YlN0ZXAsIFN0ZXBTdGF0dXMsIFRpbWluZ0JyZWFrZG93biwgU2VsZkhlYWxBbmFseXNpc0RhdGEsIEZhaWx1cmVEZXRhaWxzLCBFeGVjdXRpb25TdGVwQ29uZmlnLCBDb25kaXRpb25CcmFuY2ggfSBmcm9tICcuLi9leGVjdXRpb24tc3RlcC5tb2RlbHMnO1xuaW1wb3J0IHsgQmFzZVN0ZXBDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IG1ha2VDdXJyZW50QmFzZWxpbmVFdmVudCwgdXBsb2FkQmFzZWxpbmVFdmVudCB9IGZyb20gJy4uL3Zpc3VhbC1jb21wYXJpc29uL3Zpc3VhbC1jb21wYXJpc29uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1iYXNpYy1zdGVwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2ljLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgQmFzaWNTdGVwQ29tcG9uZW50IGV4dGVuZHMgQmFzZVN0ZXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8vIEluZGl2aWR1YWwgaW5wdXRzXG4gIEBJbnB1dCgpIGlkITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXN0U3RlcFJlc3VsdElkITogc3RyaW5nO1xuICBASW5wdXQoKSBzdGVwTnVtYmVyITogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZztcbiAgQElucHV0KCkgc3RhdHVzITogU3RlcFN0YXR1cztcbiAgQElucHV0KCkgZHVyYXRpb24hOiBudW1iZXI7XG4gIEBJbnB1dCgpIHRpbWluZ0JyZWFrZG93bj86IFRpbWluZ0JyZWFrZG93bjtcbiAgQElucHV0KCkgZXhwYW5kZWQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBzdWJTdGVwcyE6IFN1YlN0ZXBbXTtcbiAgQElucHV0KCkgc2VsZkhlYWxBbmFseXNpcz86IFNlbGZIZWFsQW5hbHlzaXNEYXRhO1xuICBASW5wdXQoKSBzZWxmSGVhbGVkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VsZkhlYWxEdXJhdGlvbj86IG51bWJlcjtcbiAgQElucHV0KCkgZmFpbHVyZURldGFpbHM/OiBGYWlsdXJlRGV0YWlscztcbiAgQElucHV0KCkgcmVhc29uaW5nPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIGNvbmZpZGVuY2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzVXBsb2FkaW5nQmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgaXNNYWtpbmdDdXJyZW50QmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgaXNMaXZlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG5lc3RlZFN0ZXBzPzogRXhlY3V0aW9uU3RlcENvbmZpZ1tdO1xuICBASW5wdXQoKSBoYXNDaGlsZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIC8vIEhhbmRsZXIgZnVuY3Rpb24gdG8gcGFzcyBkb3duIHRvIG5lc3RlZCBjaGlsZCBzdGVwIGdyb3VwcyBmb3IgcmVjdXJzaXZlIGV4cGFuc2lvblxuICBASW5wdXQoKSBvbkV4cGFuZEhhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gdm9pZDtcbiAgXG4gIC8vIEhhbmRsZXIgZnVuY3Rpb25zIGZvciBjb25kaXRpb24gc3RlcHNcbiAgQElucHV0KCkgZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IENvbmRpdGlvbkJyYW5jaFtdO1xuICBASW5wdXQoKSBvbkNvbmRpdGlvbkJyYW5jaENsaWNrSGFuZGxlcj86IChzdGVwOiBhbnksIGJyYW5jaDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBpc1N0ZXBMb2FkaW5nSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBib29sZWFuO1xuICBASW5wdXQoKSBpc1N0ZXBFeHBhbmRlZEhhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYm9vbGVhbjtcbiAgQElucHV0KCkgY29udmVydE1zVG9TZWNvbmRzSGFuZGxlcj86IChkdXJhdGlvbjogbnVtYmVyKSA9PiBudW1iZXI7XG4gIEBJbnB1dCgpIGZvcm1hdEZhaWx1cmVEZXRhaWxzSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBhbnk7XG4gIEBJbnB1dCgpIGdldFNlbGZIZWFsQW5hbHlzaXNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGFueTtcbiAgQElucHV0KCkgb25NYWtlQ3VycmVudEJhc2VsaW5lSGFuZGxlcj86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBvblVwbG9hZEJhc2VsaW5lSGFuZGxlcj86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBvbkFuYWx5emVIYW5kbGVyPzogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25WaWV3RnVsbExvZ3NIYW5kbGVyPzogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25TZWxmSGVhbEFjdGlvbkhhbmRsZXI/OiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgQElucHV0KCkgZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcj86ICgpID0+IHsgaXNMb2FkaW5nQWNjZXB0OiBib29sZWFuOyBpc0xvYWRpbmdNb2RpZnlBY2NlcHQ6IGJvb2xlYW4gfTtcbiAgQElucHV0KCkgZ2V0TG9vcEl0ZXJhdGlvbnNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGFueVtdO1xuICBASW5wdXQoKSBnZXRBcGlBc3NlcnRpb25zSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBhbnlbXTtcbiAgQElucHV0KCkgZm9ybWF0QWN0aW9uc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYW55W107XG4gIEBJbnB1dCgpIG9uVmlld0FsbEl0ZXJhdGlvbnNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IHZvaWQ7XG4gIFxuICBAT3V0cHV0KCkgbWFrZUN1cnJlbnRCYXNlbGluZSA9IG5ldyBFdmVudEVtaXR0ZXI8bWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgdXBsb2FkQmFzZWxpbmUgPSBuZXcgRXZlbnRFbWl0dGVyPHVwbG9hZEJhc2VsaW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBhbmFseXplID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlld0Z1bGxMb2dzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2VsZkhlYWxBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgdHlwZTogU2VsZkhlYWxBY3Rpb247IGhlYWxlZExvY2F0b3I6IHN0cmluZzsgfT4oKTtcblxuICAvLyBDb25maWcgcHJvcGVydHkgZm9yIGJhc2UgY2xhc3MgLSBidWlsdCBmcm9tIGluZGl2aWR1YWwgaW5wdXRzIGluIG5nT25Jbml0XG4gIG92ZXJyaWRlIGNvbmZpZyE6IEJhc2ljU3RlcENvbmZpZztcbiAgXG4gIC8vIFRyYWNrIHdoaWNoIHN0ZXBzIGFyZSBzdGlsbCBsb2FkaW5nIHRvIHNob3cgc2tlbGV0b25cbiAgbG9hZGluZ1N0ZXBzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBcbiAgICAvLyBCdWlsZCBjb25maWcgZnJvbSBpbmRpdmlkdWFsIGlucHV0c1xuICAgIC8vIFVzZSBuZXN0ZWRTdGVwcyBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byBlbXB0eSBhcnJheVxuICAgIGNvbnN0IHN0ZXBzVG9Vc2UgPSB0aGlzLm5lc3RlZFN0ZXBzIHx8IFtdO1xuICAgIFxuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0ZXN0U3RlcFJlc3VsdElkOiB0aGlzLnRlc3RTdGVwUmVzdWx0SWQsXG4gICAgICBzdGVwTnVtYmVyOiB0aGlzLnN0ZXBOdW1iZXIsXG4gICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBkdXJhdGlvbjogdGhpcy5kdXJhdGlvbixcbiAgICAgIHR5cGU6ICdiYXNpYycsXG4gICAgICBzdWJTdGVwczogdGhpcy5zdWJTdGVwcyB8fCBbXSxcbiAgICAgIHNlbGZIZWFsQW5hbHlzaXM6IHRoaXMuc2VsZkhlYWxBbmFseXNpcyxcbiAgICAgIHNlbGZIZWFsZWQ6IHRoaXMuc2VsZkhlYWxlZCxcbiAgICAgIHNlbGZIZWFsRHVyYXRpb246IHRoaXMuc2VsZkhlYWxEdXJhdGlvbixcbiAgICAgIHRpbWluZ0JyZWFrZG93bjogdGhpcy50aW1pbmdCcmVha2Rvd24sXG4gICAgICBleHBhbmRlZDogdGhpcy5leHBhbmRlZCxcbiAgICAgIG5lc3RlZFN0ZXBzOiBzdGVwc1RvVXNlLFxuICAgIH0gYXMgQmFzaWNTdGVwQ29uZmlnO1xuICAgIFxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgXG4gICAgLy8gSW5pdGlhbGl6ZSBsb2FkaW5nIHN0YXRlIGlmIGFscmVhZHkgZXhwYW5kZWRcbiAgICBpZiAodGhpcy5pc0V4cGFuZGVkICYmIHRoaXMubmVzdGVkU3RlcHMgJiYgdGhpcy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgICAgdGhpcy5uZXN0ZWRTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICAgICAgaWYgKHN0ZXBJZCkge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmFkZChTdHJpbmcoc3RlcElkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBVcGRhdGUgY29uZmlnIHdoZW4gc3RhdHVzIGNoYW5nZXNcbiAgICBpZiAoY2hhbmdlc1snc3RhdHVzJ10gJiYgdGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnLnN0YXR1cyA9IGNoYW5nZXNbJ3N0YXR1cyddLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgY29uZmlnIHdoZW4gZHVyYXRpb24gY2hhbmdlc1xuICAgIGlmIChjaGFuZ2VzWydkdXJhdGlvbiddICYmIHRoaXMuY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZy5kdXJhdGlvbiA9IGNoYW5nZXNbJ2R1cmF0aW9uJ10uY3VycmVudFZhbHVlIHx8IDA7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGNvbmZpZyB3aGVuIHN1YlN0ZXBzIGNoYW5nZXNcbiAgICBpZiAoY2hhbmdlc1snc3ViU3RlcHMnXSAmJiB0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcuc3ViU3RlcHMgPSB0aGlzLnN1YlN0ZXBzIHx8IFtdO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBjb25maWcgd2hlbiBuZXN0ZWRTdGVwcyBjaGFuZ2VzXG4gICAgaWYgKGNoYW5nZXNbJ25lc3RlZFN0ZXBzJ10gJiYgdGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzID0gdGhpcy5uZXN0ZWRTdGVwcyB8fCBbXTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgY29uZmlnIHdoZW4gZXhwYW5kZWQgY2hhbmdlc1xuICAgIGlmIChjaGFuZ2VzWydleHBhbmRlZCddICYmIHRoaXMuZXhwYW5kZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pc0V4cGFuZGVkID0gdGhpcy5leHBhbmRlZCA/PyBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgICB0aGlzLmNvbmZpZy5leHBhbmRlZCA9IHRoaXMuaXNFeHBhbmRlZDtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gSW5pdGlhbGl6ZSBsb2FkaW5nIHN0YXRlIHdoZW4gbmVzdGVkIHN0ZXBzIGFyZSBhZGRlZCBhbmQgc3RlcCBpcyBleHBhbmRlZFxuICAgIGlmIChjaGFuZ2VzWyduZXN0ZWRTdGVwcyddICYmIHRoaXMuaXNFeHBhbmRlZCAmJiB0aGlzLm5lc3RlZFN0ZXBzICYmIHRoaXMubmVzdGVkU3RlcHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuY2xlYXIoKTtcbiAgICAgIHRoaXMubmVzdGVkU3RlcHMuZm9yRWFjaChzdGVwID0+IHtcbiAgICAgICAgY29uc3Qgc3RlcElkID0gc3RlcC50ZXN0U3RlcFJlc3VsdElkIHx8IHN0ZXAuaWQ7XG4gICAgICAgIGlmIChzdGVwSWQpIHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdGVwcy5hZGQoU3RyaW5nKHN0ZXBJZCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgLy8gSW5pdGlhbGl6ZSBsb2FkaW5nIHN0YXRlIGlmIGFscmVhZHkgZXhwYW5kZWQgd2hlbiBjb21wb25lbnQgaW5pdGlhbGl6ZXNcbiAgICBpZiAoY2hhbmdlc1snZXhwYW5kZWQnXSAmJiB0aGlzLmlzRXhwYW5kZWQgJiYgdGhpcy5uZXN0ZWRTdGVwcyAmJiB0aGlzLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgICB0aGlzLm5lc3RlZFN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgICAgICBpZiAoc3RlcElkKSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuYWRkKFN0cmluZyhzdGVwSWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGhhc1N1YlN0ZXBzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN1YlN0ZXBzICYmIHRoaXMuc3ViU3RlcHMubGVuZ3RoID4gMDtcbiAgfVxuXG5cbiAgc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgb25WaWV3TW9yZUZhaWxlZFN0ZXBDbGljayhleHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZXhwYW5kZWQ7XG4gIH1cbiAgb25TZWxmSGVhbEFjdGlvbihldmVudDogeyB0eXBlOiBTZWxmSGVhbEFjdGlvbjsgaGVhbGVkTG9jYXRvcjogc3RyaW5nOyB9KTogdm9pZCB7XG4gICAgdGhpcy5zZWxmSGVhbEFjdGlvbi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uTWFrZUN1cnJlbnRCYXNlbGluZShldmVudDogbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tYWtlQ3VycmVudEJhc2VsaW5lLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25VcGxvYWRCYXNlbGluZShldmVudDogdXBsb2FkQmFzZWxpbmVFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkQmFzZWxpbmUuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkFuYWx5emUoKTogdm9pZCB7XG4gICAgdGhpcy5hbmFseXplLmVtaXQoKTtcbiAgfVxuXG4gIG9uVmlld0Z1bGxMb2dzKCk6IHZvaWQge1xuICAgIHRoaXMudmlld0Z1bGxMb2dzLmVtaXQoKTtcbiAgfVxuXG4gIGdldCBzaG93Vmlld01vcmVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFeHBhbmRlZCAmJiBCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHMpICYmXG4gICAgICAoXG4gICAgICAgIChCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LmV4cGVjdGVkIHx8IHRoaXMuZmFpbHVyZURldGFpbHM/LmFjdHVhbCkpIHx8XG4gICAgICAgIChCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LnNjcmVlbnNob3RzPy5jdXJyZW50IHx8IHRoaXMuZmFpbHVyZURldGFpbHM/LnNjcmVlbnNob3RzPy5iYXNlbGluZSB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uZGlmZmVyZW5jZSlcbiAgICAgICAgICB8fCBCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LmxvZ3M/Lmxlbmd0aCkpIHx8IFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5haUZpeEFwcGxpZWQgJiYgKHRoaXMuZmFpbHVyZURldGFpbHM/LmFpRml4TWVzc2FnZSB8fCB0aGlzLmNvbmZpZGVuY2UgfHwgdGhpcy5yZWFzb25pbmc/Lmxlbmd0aCkpKVxuICAgICAgKVxuICB9XG5cbiAgb3ZlcnJpZGUgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGNvbnN0IHdhc0V4cGFuZGVkID0gdGhpcy5pc0V4cGFuZGVkO1xuICAgIHN1cGVyLnRvZ2dsZSgpO1xuICAgIC8vIEVtaXQgZXZlbnQgd2hlbiBleHBhbmRpbmcgKHRyYW5zaXRpb25pbmcgZnJvbSBjb2xsYXBzZWQgdG8gZXhwYW5kZWQpXG4gICAgaWYgKCF3YXNFeHBhbmRlZCAmJiB0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIC8vIElmIHRoaXMgc3RlcCBoYXMgY2hpbGRyZW4gKGhhc0NoaWxkIGlzIHRydWUpIGFuZCBvbkV4cGFuZEhhbmRsZXIgaXMgcHJvdmlkZWQsIGNhbGwgaXQgdG8gZmV0Y2ggY2hpbGRyZW5cbiAgICAgIGlmICh0aGlzLm9uRXhwYW5kSGFuZGxlciAmJiB0aGlzLmNvbmZpZyAmJiB0aGlzLmhhc0NoaWxkKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ1dpdGhOZXN0ZWQgPSB0aGlzLmNvbmZpZyBhcyBCYXNpY1N0ZXBDb25maWc7XG4gICAgICAgIC8vIENyZWF0ZSBhIHN0ZXAgY29uZmlnIG9iamVjdCBmb3IgdGhlIGhhbmRsZXIgd2l0aCBoYXNDaGlsZCBwcm9wZXJ0eVxuICAgICAgICBjb25zdCBzdGVwQ29uZmlnID0ge1xuICAgICAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgICAgIGhhc0NoaWxkOiB0cnVlLFxuICAgICAgICAgIGV4cGFuZGVkOiB0cnVlLCAvLyBFbnN1cmUgZXhwYW5kZWQgaXMgc2V0XG4gICAgICAgICAgdGVzdFN0ZXBUeXBlOiAodGhpcy5jb25maWcgYXMgYW55KS50ZXN0U3RlcFR5cGUgfHwgJ0JBU0lDJyxcbiAgICAgICAgICBjaGlsZHJlbjogY29uZmlnV2l0aE5lc3RlZC5uZXN0ZWRTdGVwcyB8fCBbXSxcbiAgICAgICAgICB0ZXN0U3RlcFJlc3VsdElkOiB0aGlzLnRlc3RTdGVwUmVzdWx0SWQsXG4gICAgICAgICAgaWQ6IHRoaXMuaWRcbiAgICAgICAgfSBhcyBFeGVjdXRpb25TdGVwQ29uZmlnO1xuICAgICAgICB0aGlzLm9uRXhwYW5kSGFuZGxlcihzdGVwQ29uZmlnKTtcbiAgICAgIH1cbiAgICAgIC8vIEluaXRpYWxpemUgbG9hZGluZyBzdGF0ZSBmb3IgYWxsIG5lc3RlZCBzdGVwc1xuICAgICAgaWYgKHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzICYmIHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5jb25maWcubmVzdGVkU3RlcHMuZm9yRWFjaChzdGVwID0+IHtcbiAgICAgICAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICAgICAgICBpZiAoc3RlcElkKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTdGVwcy5hZGQoU3RyaW5nKHN0ZXBJZCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghdGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICAvLyBDbGVhciBsb2FkaW5nIHN0YXRlIHdoZW4gY29sbGFwc2luZ1xuICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuY2xlYXIoKTtcbiAgICB9XG4gICAgXG4gICAgLy8gRW5zdXJlIGV4cGFuZGVkIHN0YXRlIGlzIHN5bmNlZCB3aXRoIGNvbmZpZ1xuICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcuZXhwYW5kZWQgPSB0aGlzLmlzRXhwYW5kZWQ7XG4gICAgfVxuICB9XG4gIFxuICAvLyBDaGVjayBpZiBhIHN0ZXAgaXMgc3RpbGwgbG9hZGluZ1xuICBpc05lc3RlZFN0ZXBMb2FkaW5nKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICByZXR1cm4gc3RlcElkID8gdGhpcy5sb2FkaW5nU3RlcHMuaGFzKFN0cmluZyhzdGVwSWQpKSA6IGZhbHNlO1xuICB9XG4gIFxuICAvLyBNYXJrIGEgc3RlcCBhcyBsb2FkZWQgKGNhbGxlZCB3aGVuIHN0ZXAtcmVuZGVyZXIgaXMgcmVhZHkpXG4gIG1hcmtTdGVwTG9hZGVkKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICBpZiAoc3RlcElkKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdGVwcy5kZWxldGUoU3RyaW5nKHN0ZXBJZCkpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUhlYWRlcigpIHtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIGlmKCF0aGlzLmlzRXhwYW5kZWQpe1xuICAgICAgdGhpcy5zaG93RmFpbGVkU3RlcERldGFpbHMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGlzIHN0ZXAgaXMgY3VycmVudGx5IGxvYWRpbmcgbmVzdGVkIGNoaWxkcmVuXG4gIGlzU3RlcExvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNTdGVwTG9hZGluZ0hhbmRsZXIgJiYgdGhpcy5jb25maWcpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzU3RlcExvYWRpbmdIYW5kbGVyKHRoaXMuY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNMb2FkaW5nIHx8IGZhbHNlO1xuICB9XG4gIFxufVxuIiwiPGRpdj5cbiAgPCEtLSBIZWFkZXIgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1wLTIgY3FhLWN1cnNvci1wb2ludGVyXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlSGVhZGVyKClcIlxuICAgICBzdHlsZT1cImJvcmRlci1ib3R0b206ICcxcHggc29saWQgI0YzRjRGNidcIlxuICAgID5cbiAgICBcbiAgICA8IS0tIFN0YXR1cyBJY29uIC0tPlxuICAgIDwhLS0ge3sgZ2V0U3RhdHVzSWNvbihjb25maWcuc3RhdHVzKSB9fSAtLT5cbjwhLS0gU3VjY2VzcyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnc3VjY2VzcydcIiA+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLjkwMDUgNC45OTk5OUMxMS4xMjg5IDYuMTIwNjQgMTAuOTY2MiA3LjI4NTcxIDEwLjQzOTUgOC4zMDA4OUM5LjkxMjc5IDkuMzE2MDggOS4wNTQgMTAuMTIgOC4wMDYzMSAxMC41Nzg3QzYuOTU4NjIgMTEuMDM3MyA1Ljc4NTM2IDExLjEyMjkgNC42ODIyIDEwLjgyMTJDMy41NzkwNCAxMC41MTk1IDIuNjEyNjUgOS44NDg2OSAxLjk0NDE5IDguOTIwNzFDMS4yNzU3MyA3Ljk5MjcyIDAuOTQ1NjExIDYuODYzNjEgMS4wMDg4OCA1LjcyMTY5QzEuMDcyMTUgNC41Nzk3NiAxLjUyNDk5IDMuNDk0MDQgMi4yOTE4OCAyLjY0NTU4QzMuMDU4NzYgMS43OTcxMiA0LjA5MzM0IDEuMjM3MjEgNS4yMjMwOCAxLjA1OTIyQzYuMzUyODIgMC44ODEyMzMgNy41MDk0NCAxLjA5NTkyIDguNTAwMDUgMS42Njc0OVwiIHN0cm9rZT1cIiMyMkM1NUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00LjUgNS41TDYgN0wxMSAyXCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEZhaWx1cmUgLS0+XG4gICAgPGRpdiAqbmdJZj1cImNvbmZpZy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWx1cmUnIHx8IGNvbmZpZy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWxlZCdcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNy41IDQuNUw0LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA0LjVMNy41IDcuNVwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBQZW5kaW5nIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWcuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdwZW5kaW5nJ1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gUnVubmluZyAtIFNob3cgc3Bpbm5lciAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAncnVubmluZydcIj5cbiAgICAgIDxzdmcgY2xhc3M9XCJjcWEtYW5pbWF0ZS1zcGluIGNxYS10ZXh0LVsjM0I4MkY2XVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgb3BhY2l0eT1cIjAuMjVcIi8+XG4gICAgICAgIDxwYXRoIGQ9XCJNNiAxQTUgNSAwIDAgMSAxMSA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFN0ZXAgTnVtYmVyIGFuZCBUaXRsZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtYm9sZCBjcWEtZmxleC0xIGNxYS10ZXh0LVsjMzM0MTU1XSBjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzEzcHhdXCI+XG4gICAgICB7eyBzdGVwTnVtYmVyIH19LiA8c3BhbiBbaW5uZXJIVE1MXT1cInRpdGxlXCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXVwiPlxuICAgICAgICB7eyBmb3JtYXREdXJhdGlvbihkdXJhdGlvbikgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzdmcgKm5nSWY9XCJoYXNTdWJTdGVwcyB8fCAoY29uZmlnLm5lc3RlZFN0ZXBzICYmIGNvbmZpZy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKVwiIFtjbGFzcy5jcWEtcm90YXRlLTE4MF09XCJpc0V4cGFuZGVkXCIgY2xhc3M9XCJjcWEtdHJhbnNpdGlvbi10cmFuc2Zvcm1cIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0zLjUgNUw3IDguNUwxMC41IDVcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMC44MzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRXhwYW5kZWQgQ29udGVudCAtLT5cbiAgPGRpdiAqbmdJZj1cImlzRXhwYW5kZWQgJiYgKGhhc1N1YlN0ZXBzIHx8IChjb25maWcubmVzdGVkU3RlcHMgJiYgY29uZmlnLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApKVwiPlxuICAgIDwhLS0gU3ViLXN0ZXBzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xIGNxYS1wdC0xIGNxYS1wbC05XCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCBzdWJTdGVwIG9mIHN1YlN0ZXBzXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHktWzUuNXB4XSBjcWEtcHgtM1wiPlxuICAgICAgICBcbiAgICAgICAgPCEtLSBTdWItc3RlcCBTdGF0dXMgSWNvbiAtLT5cbiAgICAgICAgPCEtLSA8bWF0LWljb25cbiAgICAgICAgICBjbGFzcz1cIiFjcWEtdy00ICFjcWEtaC00ICFjcWEtdGV4dC1bMTZweF1cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldFN0YXR1c0NvbG9yQ2xhc3Moc3ViU3RlcC5zdGF0dXMpXCI+XG4gICAgICAgICAge3sgZ2V0U3RhdHVzSWNvbihzdWJTdGVwLnN0YXR1cykgfX1cbiAgICAgICAgPC9tYXQtaWNvbj4gLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdzdWNjZXNzJyB8fCBzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdwYXNzZWQnXCIgPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTAuOTAwNSA0Ljk5OTk5QzExLjEyODkgNi4xMjA2NCAxMC45NjYyIDcuMjg1NzEgMTAuNDM5NSA4LjMwMDg5QzkuOTEyNzkgOS4zMTYwOCA5LjA1NCAxMC4xMiA4LjAwNjMxIDEwLjU3ODdDNi45NTg2MiAxMS4wMzczIDUuNzg1MzYgMTEuMTIyOSA0LjY4MjIgMTAuODIxMkMzLjU3OTA0IDEwLjUxOTUgMi42MTI2NSA5Ljg0ODY5IDEuOTQ0MTkgOC45MjA3MUMxLjI3NTczIDcuOTkyNzIgMC45NDU2MTEgNi44NjM2MSAxLjAwODg4IDUuNzIxNjlDMS4wNzIxNSA0LjU3OTc2IDEuNTI0OTkgMy40OTQwNCAyLjI5MTg4IDIuNjQ1NThDMy4wNTg3NiAxLjc5NzEyIDQuMDkzMzQgMS4yMzcyMSA1LjIyMzA4IDEuMDU5MjJDNi4zNTI4MiAwLjg4MTIzMyA3LjUwOTQ0IDEuMDk1OTIgOC41MDAwNSAxLjY2NzQ5XCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA1LjVMNiA3TDExIDJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBGYWlsdXJlIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbHVyZScgfHwgc3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbGVkJ1wiPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNy41IDQuNUw0LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA0LjVMNy41IDcuNVwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFBlbmRpbmcgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdwZW5kaW5nJ1wiPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gUnVubmluZyAtIFNob3cgc3Bpbm5lciAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3J1bm5pbmcnXCI+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImNxYS1hbmltYXRlLXNwaW4gY3FhLXRleHQtWyMzQjgyRjZdXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgb3BhY2l0eT1cIjAuMjVcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTYgMUE1IDUgMCAwIDEgMTEgNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBTdWItc3RlcCBEZXNjcmlwdGlvbiAtLT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZmxleC0xIGNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTNweF0gY3FhLXRleHQtWyMzNjQxNTNdXCI+XG4gICAgICAgICAge3sgc3ViU3RlcC5kZXNjcmlwdGlvbiB9fVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPCEtLSBTdWItc3RlcCBEdXJhdGlvbiAtLT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1tZXRhZGF0YS1rZXlcIj5cbiAgICAgICAgICB7eyBmb3JtYXREdXJhdGlvbihzdWJTdGVwLmR1cmF0aW9uKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTmVzdGVkIFN0ZXBzIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJoYXNDaGlsZCB8fCAoY29uZmlnLm5lc3RlZFN0ZXBzICYmIGNvbmZpZy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKVwiIGNsYXNzPVwiY3FhLW1sLTkgY3FhLXBiLTFcIiBzdHlsZT1cImJvcmRlci1ib3R0b206ICcxcHggc29saWQgI0YzRjRGNidcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzczNzM3M10gY3FhLXB5LVsycHhdIGNxYS1weC0zXCI+TmVzdGVkIHN0ZXBzPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtcGwtWzE4cHhdXCIgc3R5bGU9XCJib3JkZXItbGVmdDogMnB4IHNvbGlkICNDNUM3RkE7XCI+XG4gICAgICAgIDwhLS0gTG9hZGluZyBpbmRpY2F0b3IgZm9yIG5lc3RlZCBzdGVwcyAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImhhc0NoaWxkICYmICghY29uZmlnLm5lc3RlZFN0ZXBzIHx8IGNvbmZpZy5uZXN0ZWRTdGVwcy5sZW5ndGggPT09IDApICYmIGlzU3RlcExvYWRpbmcoKVwiIFxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcHktMiBjcWEtcHgtM1wiPlxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJjcWEtYW5pbWF0ZS1zcGluIGNxYS10ZXh0LVsjM0I4MkY2XVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI3XCIgY3k9XCI3XCIgcj1cIjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIG9wYWNpdHk9XCIwLjI1XCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk03IDFBNiA2IDAgMCAxIDEzIDdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzEzcHhdIGNxYS10ZXh0LVsjNzM3MzczXVwiPkxvYWRpbmcgbmVzdGVkIHN0ZXBzLi4uPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN0ZXAgb2YgY29uZmlnLm5lc3RlZFN0ZXBzXCI+XG4gICAgICAgICAgPCEtLSBXcmFwcGVyIHRvIHNob3cgc2tlbGV0b24gd2hpbGUgc3RlcC1yZW5kZXJlciBpcyBsb2FkaW5nIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc3RlcC1yZW5kZXJlci13cmFwcGVyXCIgW2NsYXNzLmxvYWRlZF09XCIhaXNOZXN0ZWRTdGVwTG9hZGluZyhzdGVwKVwiPlxuICAgICAgICAgICAgPCEtLSBMb2FkaW5nIHNrZWxldG9uIG92ZXJsYXkgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNOZXN0ZWRTdGVwTG9hZGluZyhzdGVwKVwiIGNsYXNzPVwiY3FhLXN0ZXAtc2tlbGV0b24tb3ZlcmxheVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXN0ZXAtc2tlbGV0b24gY3FhLW14LTMgY3FhLW15LTFcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBVc2Ugc3RlcC1yZW5kZXJlciBmb3IgYWxsIG5lc3RlZCBzdGVwcyB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgLS0+XG4gICAgICAgICAgICA8IS0tIFRoZSBzdGVwLXJlbmRlcmVyIHdpbGwgZHluYW1pY2FsbHkgbG9hZCB0aGUgYXBwcm9wcmlhdGUgY29tcG9uZW50IGFuZCBwYXNzIGhhbmRsZXJzIC0tPlxuICAgICAgICAgICAgPGNxYS1zdGVwLXJlbmRlcmVyIFxuICAgICAgICAgICAgICBbc3RlcF09XCJzdGVwXCJcbiAgICAgICAgICAgICAgW29uRXhwYW5kSGFuZGxlcl09XCJvbkV4cGFuZEhhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25Db25kaXRpb25CcmFuY2hDbGlja0hhbmRsZXJdPVwib25Db25kaXRpb25CcmFuY2hDbGlja0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyXT1cImdldENvbmRpdGlvbkJyYW5jaGVzSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtpc1N0ZXBMb2FkaW5nSGFuZGxlcl09XCJpc1N0ZXBMb2FkaW5nSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtpc1N0ZXBFeHBhbmRlZEhhbmRsZXJdPVwiaXNTdGVwRXhwYW5kZWRIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2NvbnZlcnRNc1RvU2Vjb25kc0hhbmRsZXJdPVwiY29udmVydE1zVG9TZWNvbmRzSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtmb3JtYXRGYWlsdXJlRGV0YWlsc0hhbmRsZXJdPVwiZm9ybWF0RmFpbHVyZURldGFpbHNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2dldFNlbGZIZWFsQW5hbHlzaXNIYW5kbGVyXT1cImdldFNlbGZIZWFsQW5hbHlzaXNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2dldExvb3BJdGVyYXRpb25zSGFuZGxlcl09XCJnZXRMb29wSXRlcmF0aW9uc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbZ2V0QXBpQXNzZXJ0aW9uc0hhbmRsZXJdPVwiZ2V0QXBpQXNzZXJ0aW9uc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbZm9ybWF0QWN0aW9uc0hhbmRsZXJdPVwiZm9ybWF0QWN0aW9uc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25WaWV3QWxsSXRlcmF0aW9uc0hhbmRsZXJdPVwib25WaWV3QWxsSXRlcmF0aW9uc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25NYWtlQ3VycmVudEJhc2VsaW5lSGFuZGxlcl09XCJvbk1ha2VDdXJyZW50QmFzZWxpbmVIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uVXBsb2FkQmFzZWxpbmVIYW5kbGVyXT1cIm9uVXBsb2FkQmFzZWxpbmVIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uQW5hbHl6ZUhhbmRsZXJdPVwib25BbmFseXplSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvblZpZXdGdWxsTG9nc0hhbmRsZXJdPVwib25WaWV3RnVsbExvZ3NIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uU2VsZkhlYWxBY3Rpb25IYW5kbGVyXT1cIm9uU2VsZkhlYWxBY3Rpb25IYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2lzVXBsb2FkaW5nQmFzZWxpbmVdPVwiaXNVcGxvYWRpbmdCYXNlbGluZVwiXG4gICAgICAgICAgICAgIFtpc01ha2luZ0N1cnJlbnRCYXNlbGluZV09XCJpc01ha2luZ0N1cnJlbnRCYXNlbGluZVwiXG4gICAgICAgICAgICAgIFtpc0xpdmVdPVwiaXNMaXZlXCJcbiAgICAgICAgICAgICAgKGNvbXBvbmVudFJlYWR5KT1cIm1hcmtTdGVwTG9hZGVkKHN0ZXApXCI+XG4gICAgICAgICAgICA8L2NxYS1zdGVwLXJlbmRlcmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWxmIEhlYWwgQW5hbHlzaXMgLS0+XG4gICAgPGNxYS1zZWxmLWhlYWwtYW5hbHlzaXMgXG4gICAgICAqbmdJZj1cInNlbGZIZWFsQW5hbHlzaXNcIiBcbiAgICAgIFtvcmlnaW5hbExvY2F0b3JdPVwic2VsZkhlYWxBbmFseXNpcy5vcmlnaW5hbExvY2F0b3JcIlxuICAgICAgW2hlYWxlZExvY2F0b3JdPVwic2VsZkhlYWxBbmFseXNpcy5oZWFsZWRMb2NhdG9yXCJcbiAgICAgIFtjb25maWRlbmNlXT1cInNlbGZIZWFsQW5hbHlzaXMuY29uZmlkZW5jZVwiXG4gICAgICBbaGVhbE1ldGhvZF09XCJzZWxmSGVhbEFuYWx5c2lzLmhlYWxNZXRob2RcIlxuICAgICAgW2lzTG9hZGluZ0FjY2VwdF09XCJnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyID8gZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcigpLmlzTG9hZGluZ0FjY2VwdCA6IGZhbHNlXCJcbiAgICAgIFtpc0xvYWRpbmdNb2RpZnlBY2NlcHRdPVwiZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlciA/IGdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIoKS5pc0xvYWRpbmdNb2RpZnlBY2NlcHQgOiBmYWxzZVwiXG4gICAgICAoYWN0aW9uKT1cIm9uU2VsZkhlYWxBY3Rpb24oJGV2ZW50KVwiPlxuICAgIDwvY3FhLXNlbGYtaGVhbC1hbmFseXNpcz5cblxuICAgIDwhLS0gVGltaW5nIEJyZWFrZG93biAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwidGltaW5nQnJlYWtkb3duXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWVuZCBjcWEtZ2FwLTUgY3FhLW10LTEgY3FhLXB0LTQgY3FhLXB4LTQgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM5Q0EzQUZdXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgM1Y2TDggN1wiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+PC9kaXY+XG4gICAgICAgIDxzcGFuPlRpbWluZyBicmVha2Rvd248L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtZGlhbG9nLW11dGVkIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgQXBwIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtZ3JheS03MDBcIj57eyBmb3JtYXREdXJhdGlvbih0aW1pbmdCcmVha2Rvd24uYXBwKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+PHN2ZyB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMSAxMVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNLTMuODE0N2UtMDYgMTAuMzJWLTcuMTUyNTZlLTA3SDAuOTU5OTk2VjEwLjMySC0zLjgxNDdlLTA2WlwiIGZpbGw9XCIjRTVFN0VCXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIFRvb2wgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1ncmF5LTcwMFwiPnt7IGZvcm1hdER1cmF0aW9uKHRpbWluZ0JyZWFrZG93bi50b29sKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVmlldyBNb3JlIEZhaWxlZCBTdGVwIEJ1dHRvbiAtIHNob3duIHdoZW4gZXhwYW5kZWQgYW5kIGZhaWx1cmUgZGV0YWlscyBleGlzdCAtLT5cbiAgPGRpdiAqbmdJZj1cInNob3dWaWV3TW9yZUJ1dHRvblwiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB4LTRcIj5cbiAgICA8Y3FhLXZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b25cbiAgICAgIFt0aW1pbmdCcmVha2Rvd25dPVwidGltaW5nQnJlYWtkb3duXCJcbiAgICAgIFtzdWJTdGVwc109XCJzdWJTdGVwc1wiXG4gICAgICBbZmFpbHVyZURldGFpbHNdPVwiZmFpbHVyZURldGFpbHNcIlxuICAgICAgW2lzRXhwYW5kZWRdPVwic2hvd0ZhaWxlZFN0ZXBEZXRhaWxzXCJcbiAgICAgICh2aWV3TW9yZUNsaWNrKT1cIm9uVmlld01vcmVGYWlsZWRTdGVwQ2xpY2soJGV2ZW50KVwiPlxuICAgIDwvY3FhLXZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVXBkYXRlZCBGYWlsZWQgU3RlcCBDb21wb25lbnQgLSBzaG93biB3aGVuIGJ1dHRvbiBpcyBjbGlja2VkIC0tPlxuICA8ZGl2ICpuZ0lmPVwic2hvd1ZpZXdNb3JlQnV0dG9uICYmIHNob3dGYWlsZWRTdGVwRGV0YWlscyAmJiBmYWlsdXJlRGV0YWlsc1wiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB4LTRcIj5cbiAgICA8Y3FhLXVwZGF0ZWQtZmFpbGVkLXN0ZXBcbiAgICAgIFt0ZXN0U3RlcFJlc3VsdElkXT1cInRlc3RTdGVwUmVzdWx0SWRcIlxuICAgICAgW3RpbWluZ0JyZWFrZG93bl09XCJ0aW1pbmdCcmVha2Rvd25cIlxuICAgICAgW2V4cGFuZGVkXT1cInRydWVcIlxuICAgICAgW3N1YlN0ZXBzXT1cInN1YlN0ZXBzXCJcbiAgICAgIFtmYWlsdXJlRGV0YWlsc109XCJmYWlsdXJlRGV0YWlsc1wiXG4gICAgICBbcmVhc29uaW5nXT1cInJlYXNvbmluZ1wiXG4gICAgICBbY29uZmlkZW5jZV09XCJjb25maWRlbmNlXCJcbiAgICAgIFtpc1VwbG9hZGluZ0Jhc2VsaW5lXT1cImlzVXBsb2FkaW5nQmFzZWxpbmVcIlxuICAgICAgW2lzTWFraW5nQ3VycmVudEJhc2VsaW5lXT1cImlzTWFraW5nQ3VycmVudEJhc2VsaW5lXCJcbiAgICAgIFtpc0xpdmVdPVwiaXNMaXZlXCJcbiAgICAgIChtYWtlQ3VycmVudEJhc2VsaW5lKT1cIm9uTWFrZUN1cnJlbnRCYXNlbGluZSgkZXZlbnQpXCJcbiAgICAgICh1cGxvYWRCYXNlbGluZSk9XCJvblVwbG9hZEJhc2VsaW5lKCRldmVudClcIlxuICAgICAgKGFuYWx5emUpPVwib25BbmFseXplKClcIlxuICAgICAgKHZpZXdGdWxsTG9ncyk9XCJvblZpZXdGdWxsTG9ncygpXCI+XG4gICAgPC9jcWEtdXBkYXRlZC1mYWlsZWQtc3RlcD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtc3RlcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2V4ZWN1dGlvbi1zY3JlZW4vYmFzaWMtc3RlcC9iYXNpYy1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9iYXNpYy1zdGVwL2Jhc2ljLXN0ZXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFvQyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFRM0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQUx6RDs7UUFzQlcsd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLDRCQUF1QixHQUFHLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBMEJ2Qix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQUNuRSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3pELFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ25DLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN4QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFvRCxDQUFDO1FBS2hHLHVEQUF1RDtRQUN2RCxpQkFBWSxHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBZ0d0QywwQkFBcUIsR0FBWSxLQUFLLENBQUM7S0F5R3hDO0lBdk1VLFFBQVE7UUFFZixzQ0FBc0M7UUFDdEMsa0VBQWtFO1FBQ2xFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBRTFDLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixF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bEMsS0FBSztnQkFFSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzaWNTdGVwQ29uZmlnLCBTZWxmSGVhbEFjdGlvbiwgU3ViU3RlcCwgU3RlcFN0YXR1cywgVGltaW5nQnJlYWtkb3duLCBTZWxmSGVhbEFuYWx5c2lzRGF0YSwgRmFpbHVyZURldGFpbHMsIEV4ZWN1dGlvblN0ZXBDb25maWcsIENvbmRpdGlvbkJyYW5jaCB9IGZyb20gJy4uL2V4ZWN1dGlvbi1zdGVwLm1vZGVscyc7XG5pbXBvcnQgeyBCYXNlU3RlcENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50LCB1cGxvYWRCYXNlbGluZUV2ZW50IH0gZnJvbSAnLi4vdmlzdWFsLWNvbXBhcmlzb24vdmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWJhc2ljLXN0ZXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFzaWMtc3RlcC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfVxufSlcbmV4cG9ydCBjbGFzcyBCYXNpY1N0ZXBDb21wb25lbnQgZXh0ZW5kcyBCYXNlU3RlcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLy8gSW5kaXZpZHVhbCBpbnB1dHNcbiAgQElucHV0KCkgaWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRlc3RTdGVwUmVzdWx0SWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0ZXBOdW1iZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlITogc3RyaW5nO1xuICBASW5wdXQoKSBzdGF0dXMhOiBTdGVwU3RhdHVzO1xuICBASW5wdXQoKSBkdXJhdGlvbiE6IG51bWJlcjtcbiAgQElucHV0KCkgdGltaW5nQnJlYWtkb3duPzogVGltaW5nQnJlYWtkb3duO1xuICBASW5wdXQoKSBleHBhbmRlZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIHN1YlN0ZXBzITogU3ViU3RlcFtdO1xuICBASW5wdXQoKSBzZWxmSGVhbEFuYWx5c2lzPzogU2VsZkhlYWxBbmFseXNpc0RhdGE7XG4gIEBJbnB1dCgpIHNlbGZIZWFsZWQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxmSGVhbER1cmF0aW9uPzogbnVtYmVyO1xuICBASW5wdXQoKSBmYWlsdXJlRGV0YWlscz86IEZhaWx1cmVEZXRhaWxzO1xuICBASW5wdXQoKSByZWFzb25pbmc/OiBzdHJpbmdbXTtcbiAgQElucHV0KCkgY29uZmlkZW5jZT86IHN0cmluZztcbiAgQElucHV0KCkgaXNVcGxvYWRpbmdCYXNlbGluZSA9IHt9O1xuICBASW5wdXQoKSBpc01ha2luZ0N1cnJlbnRCYXNlbGluZSA9IHt9O1xuICBASW5wdXQoKSBpc0xpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbmVzdGVkU3RlcHM/OiBFeGVjdXRpb25TdGVwQ29uZmlnW107XG4gIEBJbnB1dCgpIGhhc0NoaWxkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgLy8gSGFuZGxlciBmdW5jdGlvbiB0byBwYXNzIGRvd24gdG8gbmVzdGVkIGNoaWxkIHN0ZXAgZ3JvdXBzIGZvciByZWN1cnNpdmUgZXhwYW5zaW9uXG4gIEBJbnB1dCgpIG9uRXhwYW5kSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiB2b2lkO1xuICBcbiAgLy8gSGFuZGxlciBmdW5jdGlvbnMgZm9yIGNvbmRpdGlvbiBzdGVwc1xuICBASW5wdXQoKSBnZXRDb25kaXRpb25CcmFuY2hlc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gQ29uZGl0aW9uQnJhbmNoW107XG4gIEBJbnB1dCgpIG9uQ29uZGl0aW9uQnJhbmNoQ2xpY2tIYW5kbGVyPzogKHN0ZXA6IGFueSwgYnJhbmNoOiBhbnkpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIGlzU3RlcExvYWRpbmdIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzU3RlcEV4cGFuZGVkSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBib29sZWFuO1xuICBASW5wdXQoKSBjb252ZXJ0TXNUb1NlY29uZHNIYW5kbGVyPzogKGR1cmF0aW9uOiBudW1iZXIpID0+IG51bWJlcjtcbiAgQElucHV0KCkgZm9ybWF0RmFpbHVyZURldGFpbHNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGFueTtcbiAgQElucHV0KCkgZ2V0U2VsZkhlYWxBbmFseXNpc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYW55O1xuICBASW5wdXQoKSBvbk1ha2VDdXJyZW50QmFzZWxpbmVIYW5kbGVyPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIG9uVXBsb2FkQmFzZWxpbmVIYW5kbGVyPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIG9uQW5hbHl6ZUhhbmRsZXI/OiAoKSA9PiB2b2lkO1xuICBASW5wdXQoKSBvblZpZXdGdWxsTG9nc0hhbmRsZXI/OiAoKSA9PiB2b2lkO1xuICBASW5wdXQoKSBvblNlbGZIZWFsQWN0aW9uSGFuZGxlcj86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyPzogKCkgPT4geyBpc0xvYWRpbmdBY2NlcHQ6IGJvb2xlYW47IGlzTG9hZGluZ01vZGlmeUFjY2VwdDogYm9vbGVhbiB9O1xuICBASW5wdXQoKSBnZXRMb29wSXRlcmF0aW9uc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYW55W107XG4gIEBJbnB1dCgpIGdldEFwaUFzc2VydGlvbnNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGFueVtdO1xuICBASW5wdXQoKSBmb3JtYXRBY3Rpb25zSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBhbnlbXTtcbiAgQElucHV0KCkgb25WaWV3QWxsSXRlcmF0aW9uc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gdm9pZDtcbiAgXG4gIEBPdXRwdXQoKSBtYWtlQ3VycmVudEJhc2VsaW5lID0gbmV3IEV2ZW50RW1pdHRlcjxtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWRCYXNlbGluZSA9IG5ldyBFdmVudEVtaXR0ZXI8dXBsb2FkQmFzZWxpbmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFuYWx5emUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB2aWV3RnVsbExvZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxmSGVhbEFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0eXBlOiBTZWxmSGVhbEFjdGlvbjsgaGVhbGVkTG9jYXRvcjogc3RyaW5nOyB9PigpO1xuXG4gIC8vIENvbmZpZyBwcm9wZXJ0eSBmb3IgYmFzZSBjbGFzcyAtIGJ1aWx0IGZyb20gaW5kaXZpZHVhbCBpbnB1dHMgaW4gbmdPbkluaXRcbiAgb3ZlcnJpZGUgY29uZmlnITogQmFzaWNTdGVwQ29uZmlnO1xuICBcbiAgLy8gVHJhY2sgd2hpY2ggc3RlcHMgYXJlIHN0aWxsIGxvYWRpbmcgdG8gc2hvdyBza2VsZXRvblxuICBsb2FkaW5nU3RlcHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIFxuICAgIC8vIEJ1aWxkIGNvbmZpZyBmcm9tIGluZGl2aWR1YWwgaW5wdXRzXG4gICAgLy8gVXNlIG5lc3RlZFN0ZXBzIGlmIHByb3ZpZGVkLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvIGVtcHR5IGFycmF5XG4gICAgY29uc3Qgc3RlcHNUb1VzZSA9IHRoaXMubmVzdGVkU3RlcHMgfHwgW107XG4gICAgXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHRlc3RTdGVwUmVzdWx0SWQ6IHRoaXMudGVzdFN0ZXBSZXN1bHRJZCxcbiAgICAgIHN0ZXBOdW1iZXI6IHRoaXMuc3RlcE51bWJlcixcbiAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICAgIGR1cmF0aW9uOiB0aGlzLmR1cmF0aW9uLFxuICAgICAgdHlwZTogJ2Jhc2ljJyxcbiAgICAgIHN1YlN0ZXBzOiB0aGlzLnN1YlN0ZXBzIHx8IFtdLFxuICAgICAgc2VsZkhlYWxBbmFseXNpczogdGhpcy5zZWxmSGVhbEFuYWx5c2lzLFxuICAgICAgc2VsZkhlYWxlZDogdGhpcy5zZWxmSGVhbGVkLFxuICAgICAgc2VsZkhlYWxEdXJhdGlvbjogdGhpcy5zZWxmSGVhbER1cmF0aW9uLFxuICAgICAgdGltaW5nQnJlYWtkb3duOiB0aGlzLnRpbWluZ0JyZWFrZG93bixcbiAgICAgIGV4cGFuZGVkOiB0aGlzLmV4cGFuZGVkLFxuICAgICAgbmVzdGVkU3RlcHM6IHN0ZXBzVG9Vc2UsXG4gICAgfSBhcyBCYXNpY1N0ZXBDb25maWc7XG4gICAgXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBcbiAgICAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgaWYgYWxyZWFkeSBleHBhbmRlZFxuICAgIGlmICh0aGlzLmlzRXhwYW5kZWQgJiYgdGhpcy5uZXN0ZWRTdGVwcyAmJiB0aGlzLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgICB0aGlzLm5lc3RlZFN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgICAgICBpZiAoc3RlcElkKSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuYWRkKFN0cmluZyhzdGVwSWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIFVwZGF0ZSBjb25maWcgd2hlbiBzdGF0dXMgY2hhbmdlc1xuICAgIGlmIChjaGFuZ2VzWydzdGF0dXMnXSAmJiB0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcuc3RhdHVzID0gY2hhbmdlc1snc3RhdHVzJ10uY3VycmVudFZhbHVlO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBjb25maWcgd2hlbiBkdXJhdGlvbiBjaGFuZ2VzXG4gICAgaWYgKGNoYW5nZXNbJ2R1cmF0aW9uJ10gJiYgdGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnLmR1cmF0aW9uID0gY2hhbmdlc1snZHVyYXRpb24nXS5jdXJyZW50VmFsdWUgfHwgMDtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgY29uZmlnIHdoZW4gc3ViU3RlcHMgY2hhbmdlc1xuICAgIGlmIChjaGFuZ2VzWydzdWJTdGVwcyddICYmIHRoaXMuY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZy5zdWJTdGVwcyA9IHRoaXMuc3ViU3RlcHMgfHwgW107XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGNvbmZpZyB3aGVuIG5lc3RlZFN0ZXBzIGNoYW5nZXNcbiAgICBpZiAoY2hhbmdlc1snbmVzdGVkU3RlcHMnXSAmJiB0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcubmVzdGVkU3RlcHMgPSB0aGlzLm5lc3RlZFN0ZXBzIHx8IFtdO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBjb25maWcgd2hlbiBleHBhbmRlZCBjaGFuZ2VzXG4gICAgaWYgKGNoYW5nZXNbJ2V4cGFuZGVkJ10gJiYgdGhpcy5leHBhbmRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkID8/IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmV4cGFuZGVkID0gdGhpcy5pc0V4cGFuZGVkO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgd2hlbiBuZXN0ZWQgc3RlcHMgYXJlIGFkZGVkIGFuZCBzdGVwIGlzIGV4cGFuZGVkXG4gICAgLy8gaWYgKGNoYW5nZXNbJ25lc3RlZFN0ZXBzJ10gJiYgdGhpcy5pc0V4cGFuZGVkICYmIHRoaXMubmVzdGVkU3RlcHMgJiYgdGhpcy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgIC8vICAgdGhpcy5uZXN0ZWRTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgIC8vICAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICAvLyAgICAgaWYgKHN0ZXBJZCkge1xuICAgIC8vICAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmFkZChTdHJpbmcoc3RlcElkKSk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH0pO1xuICAgIC8vIH1cbiAgICBcbiAgICAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgaWYgYWxyZWFkeSBleHBhbmRlZCB3aGVuIGNvbXBvbmVudCBpbml0aWFsaXplc1xuICAgIGlmIChjaGFuZ2VzWydleHBhbmRlZCddICYmIHRoaXMuaXNFeHBhbmRlZCAmJiB0aGlzLm5lc3RlZFN0ZXBzICYmIHRoaXMubmVzdGVkU3RlcHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuY2xlYXIoKTtcbiAgICAgIHRoaXMubmVzdGVkU3RlcHMuZm9yRWFjaChzdGVwID0+IHtcbiAgICAgICAgY29uc3Qgc3RlcElkID0gc3RlcC50ZXN0U3RlcFJlc3VsdElkIHx8IHN0ZXAuaWQ7XG4gICAgICAgIGlmIChzdGVwSWQpIHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdGVwcy5hZGQoU3RyaW5nKHN0ZXBJZCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgaGFzU3ViU3RlcHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3ViU3RlcHMgJiYgdGhpcy5zdWJTdGVwcy5sZW5ndGggPiAwO1xuICB9XG5cblxuICBzaG93RmFpbGVkU3RlcERldGFpbHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBvblZpZXdNb3JlRmFpbGVkU3RlcENsaWNrKGV4cGFuZGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RmFpbGVkU3RlcERldGFpbHMgPSBleHBhbmRlZDtcbiAgfVxuICBvblNlbGZIZWFsQWN0aW9uKGV2ZW50OiB7IHR5cGU6IFNlbGZIZWFsQWN0aW9uOyBoZWFsZWRMb2NhdG9yOiBzdHJpbmc7IH0pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGZIZWFsQWN0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25NYWtlQ3VycmVudEJhc2VsaW5lKGV2ZW50OiBtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1ha2VDdXJyZW50QmFzZWxpbmUuZW1pdChldmVudCk7XG4gIH1cblxuICBvblVwbG9hZEJhc2VsaW5lKGV2ZW50OiB1cGxvYWRCYXNlbGluZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy51cGxvYWRCYXNlbGluZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uQW5hbHl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5emUuZW1pdCgpO1xuICB9XG5cbiAgb25WaWV3RnVsbExvZ3MoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3RnVsbExvZ3MuZW1pdCgpO1xuICB9XG5cbiAgZ2V0IHNob3dWaWV3TW9yZUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0V4cGFuZGVkICYmIEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscykgJiZcbiAgICAgIChcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uZXhwZWN0ZWQgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uYWN0dWFsKSkgfHxcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmN1cnJlbnQgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmJhc2VsaW5lIHx8IHRoaXMuZmFpbHVyZURldGFpbHM/LnNjcmVlbnNob3RzPy5kaWZmZXJlbmNlKVxuICAgICAgICAgIHx8IEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8ubG9ncz8ubGVuZ3RoKSkgfHwgXG4gICAgICAgIChCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LmFpRml4QXBwbGllZCAmJiAodGhpcy5mYWlsdXJlRGV0YWlscz8uYWlGaXhNZXNzYWdlIHx8IHRoaXMuY29uZmlkZW5jZSB8fCB0aGlzLnJlYXNvbmluZz8ubGVuZ3RoKSkpXG4gICAgICApXG4gIH1cblxuICBvdmVycmlkZSB0b2dnbGUoKTogdm9pZCB7XG4gICAgY29uc3Qgd2FzRXhwYW5kZWQgPSB0aGlzLmlzRXhwYW5kZWQ7XG4gICAgc3VwZXIudG9nZ2xlKCk7XG4gICAgLy8gRW1pdCBldmVudCB3aGVuIGV4cGFuZGluZyAodHJhbnNpdGlvbmluZyBmcm9tIGNvbGxhcHNlZCB0byBleHBhbmRlZClcbiAgICBpZiAoIXdhc0V4cGFuZGVkICYmIHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgLy8gSWYgdGhpcyBzdGVwIGhhcyBjaGlsZHJlbiAoaGFzQ2hpbGQgaXMgdHJ1ZSkgYW5kIG9uRXhwYW5kSGFuZGxlciBpcyBwcm92aWRlZCwgY2FsbCBpdCB0byBmZXRjaCBjaGlsZHJlblxuICAgICAgaWYgKHRoaXMub25FeHBhbmRIYW5kbGVyICYmIHRoaXMuY29uZmlnICYmIHRoaXMuaGFzQ2hpbGQpIHtcbiAgICAgICAgY29uc3QgY29uZmlnV2l0aE5lc3RlZCA9IHRoaXMuY29uZmlnIGFzIEJhc2ljU3RlcENvbmZpZztcbiAgICAgICAgLy8gQ3JlYXRlIGEgc3RlcCBjb25maWcgb2JqZWN0IGZvciB0aGUgaGFuZGxlciB3aXRoIGhhc0NoaWxkIHByb3BlcnR5XG4gICAgICAgIGNvbnN0IHN0ZXBDb25maWcgPSB7XG4gICAgICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICAgICAgaGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgICAgZXhwYW5kZWQ6IHRydWUsIC8vIEVuc3VyZSBleHBhbmRlZCBpcyBzZXRcbiAgICAgICAgICB0ZXN0U3RlcFR5cGU6ICh0aGlzLmNvbmZpZyBhcyBhbnkpLnRlc3RTdGVwVHlwZSB8fCAnQkFTSUMnLFxuICAgICAgICAgIGNoaWxkcmVuOiBjb25maWdXaXRoTmVzdGVkLm5lc3RlZFN0ZXBzIHx8IFtdLFxuICAgICAgICAgIHRlc3RTdGVwUmVzdWx0SWQ6IHRoaXMudGVzdFN0ZXBSZXN1bHRJZCxcbiAgICAgICAgICBpZDogdGhpcy5pZFxuICAgICAgICB9IGFzIEV4ZWN1dGlvblN0ZXBDb25maWc7XG4gICAgICAgIHRoaXMub25FeHBhbmRIYW5kbGVyKHN0ZXBDb25maWcpO1xuICAgICAgfVxuICAgICAgLy8gSW5pdGlhbGl6ZSBsb2FkaW5nIHN0YXRlIGZvciBhbGwgbmVzdGVkIHN0ZXBzXG4gICAgICBpZiAodGhpcy5jb25maWcubmVzdGVkU3RlcHMgJiYgdGhpcy5jb25maWcubmVzdGVkU3RlcHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgICAgICB0aGlzLmNvbmZpZy5uZXN0ZWRTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgICAgICAgIGlmIChzdGVwSWQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmFkZChTdHJpbmcoc3RlcElkKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIC8vIENsZWFyIGxvYWRpbmcgc3RhdGUgd2hlbiBjb2xsYXBzaW5nXG4gICAgICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgIH1cbiAgICBcbiAgICAvLyBFbnN1cmUgZXhwYW5kZWQgc3RhdGUgaXMgc3luY2VkIHdpdGggY29uZmlnXG4gICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZy5leHBhbmRlZCA9IHRoaXMuaXNFeHBhbmRlZDtcbiAgICB9XG4gIH1cbiAgXG4gIC8vIENoZWNrIGlmIGEgc3RlcCBpcyBzdGlsbCBsb2FkaW5nXG4gIGlzTmVzdGVkU3RlcExvYWRpbmcoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgIHJldHVybiBzdGVwSWQgPyB0aGlzLmxvYWRpbmdTdGVwcy5oYXMoU3RyaW5nKHN0ZXBJZCkpIDogZmFsc2U7XG4gIH1cbiAgXG4gIC8vIE1hcmsgYSBzdGVwIGFzIGxvYWRlZCAoY2FsbGVkIHdoZW4gc3RlcC1yZW5kZXJlciBpcyByZWFkeSlcbiAgbWFya1N0ZXBMb2FkZWQoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgIGlmIChzdGVwSWQpIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmRlbGV0ZShTdHJpbmcoc3RlcElkKSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlSGVhZGVyKCkge1xuICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgaWYoIXRoaXMuaXNFeHBhbmRlZCl7XG4gICAgICB0aGlzLnNob3dGYWlsZWRTdGVwRGV0YWlscyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoaXMgc3RlcCBpcyBjdXJyZW50bHkgbG9hZGluZyBuZXN0ZWQgY2hpbGRyZW5cbiAgaXNTdGVwTG9hZGluZygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc1N0ZXBMb2FkaW5nSGFuZGxlciAmJiB0aGlzLmNvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXMuaXNTdGVwTG9hZGluZ0hhbmRsZXIodGhpcy5jb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmcgfHwgZmFsc2U7XG4gIH1cbiAgXG59XG4iLCI8ZGl2PlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXAtMiBjcWEtY3Vyc29yLXBvaW50ZXJcIlxuICAgIChjbGljayk9XCJ0b2dnbGVIZWFkZXIoKVwiXG4gICAgIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogJzFweCBzb2xpZCAjRjNGNEY2J1wiXG4gICAgPlxuICAgIFxuICAgIDwhLS0gU3RhdHVzIEljb24gLS0+XG4gICAgPCEtLSB7eyBnZXRTdGF0dXNJY29uKGNvbmZpZy5zdGF0dXMpIH19IC0tPlxuPCEtLSBTdWNjZXNzIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWcuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdzdWNjZXNzJ1wiID5cbiAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTAuOTAwNSA0Ljk5OTk5QzExLjEyODkgNi4xMjA2NCAxMC45NjYyIDcuMjg1NzEgMTAuNDM5NSA4LjMwMDg5QzkuOTEyNzkgOS4zMTYwOCA5LjA1NCAxMC4xMiA4LjAwNjMxIDEwLjU3ODdDNi45NTg2MiAxMS4wMzczIDUuNzg1MzYgMTEuMTIyOSA0LjY4MjIgMTAuODIxMkMzLjU3OTA0IDEwLjUxOTUgMi42MTI2NSA5Ljg0ODY5IDEuOTQ0MTkgOC45MjA3MUMxLjI3NTczIDcuOTkyNzIgMC45NDU2MTEgNi44NjM2MSAxLjAwODg4IDUuNzIxNjlDMS4wNzIxNSA0LjU3OTc2IDEuNTI0OTkgMy40OTQwNCAyLjI5MTg4IDIuNjQ1NThDMy4wNTg3NiAxLjc5NzEyIDQuMDkzMzQgMS4yMzcyMSA1LjIyMzA4IDEuMDU5MjJDNi4zNTI4MiAwLjg4MTIzMyA3LjUwOTQ0IDEuMDk1OTIgOC41MDAwNSAxLjY2NzQ5XCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA1LjVMNiA3TDExIDJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gRmFpbHVyZSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbHVyZScgfHwgY29uZmlnLnN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbGVkJ1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk03LjUgNC41TDQuNSA3LjVcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDQuNUw3LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFBlbmRpbmcgLS0+XG4gICAgPGRpdiAqbmdJZj1cImNvbmZpZy5zdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgM1Y2TDggN1wiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBSdW5uaW5nIC0gU2hvdyBzcGlubmVyIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWcuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdydW5uaW5nJ1wiPlxuICAgICAgPHN2ZyBjbGFzcz1cImNxYS1hbmltYXRlLXNwaW4gY3FhLXRleHQtWyMzQjgyRjZdXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBvcGFjaXR5PVwiMC4yNVwiLz5cbiAgICAgICAgPHBhdGggZD1cIk02IDFBNSA1IDAgMCAxIDExIDZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU3RlcCBOdW1iZXIgYW5kIFRpdGxlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZm9udC1ib2xkIGNxYS1mbGV4LTEgY3FhLXRleHQtWyMzMzQxNTVdIGNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTNweF1cIj5cbiAgICAgIHt7IHN0ZXBOdW1iZXIgfX0uIDxzcGFuIFtpbm5lckhUTUxdPVwidGl0bGVcIj48L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM5Q0EzQUZdXCI+XG4gICAgICAgIHt7IGZvcm1hdER1cmF0aW9uKGR1cmF0aW9uKSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHN2ZyAqbmdJZj1cImhhc1N1YlN0ZXBzIHx8IChjb25maWcubmVzdGVkU3RlcHMgJiYgY29uZmlnLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApXCIgW2NsYXNzLmNxYS1yb3RhdGUtMTgwXT1cImlzRXhwYW5kZWRcIiBjbGFzcz1cImNxYS10cmFuc2l0aW9uLXRyYW5zZm9ybVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTMuNSA1TDcgOC41TDEwLjUgNVwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIwLjgzMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBFeHBhbmRlZCBDb250ZW50IC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXNFeHBhbmRlZCAmJiAoaGFzU3ViU3RlcHMgfHwgKGNvbmZpZy5uZXN0ZWRTdGVwcyAmJiBjb25maWcubmVzdGVkU3RlcHMubGVuZ3RoID4gMCkpXCI+XG4gICAgPCEtLSBTdWItc3RlcHMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEgY3FhLXB0LTEgY3FhLXBsLTlcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IHN1YlN0ZXAgb2Ygc3ViU3RlcHNcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weS1bNS41cHhdIGNxYS1weC0zXCI+XG4gICAgICAgIFxuICAgICAgICA8IS0tIFN1Yi1zdGVwIFN0YXR1cyBJY29uIC0tPlxuICAgICAgICA8IS0tIDxtYXQtaWNvblxuICAgICAgICAgIGNsYXNzPVwiIWNxYS13LTQgIWNxYS1oLTQgIWNxYS10ZXh0LVsxNnB4XVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzQ29sb3JDbGFzcyhzdWJTdGVwLnN0YXR1cylcIj5cbiAgICAgICAgICB7eyBnZXRTdGF0dXNJY29uKHN1YlN0ZXAuc3RhdHVzKSB9fVxuICAgICAgICA8L21hdC1pY29uPiAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3N1Y2Nlc3MnIHx8IHN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3Bhc3NlZCdcIiA+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMC45MDA1IDQuOTk5OTlDMTEuMTI4OSA2LjEyMDY0IDEwLjk2NjIgNy4yODU3MSAxMC40Mzk1IDguMzAwODlDOS45MTI3OSA5LjMxNjA4IDkuMDU0IDEwLjEyIDguMDA2MzEgMTAuNTc4N0M2Ljk1ODYyIDExLjAzNzMgNS43ODUzNiAxMS4xMjI5IDQuNjgyMiAxMC44MjEyQzMuNTc5MDQgMTAuNTE5NSAyLjYxMjY1IDkuODQ4NjkgMS45NDQxOSA4LjkyMDcxQzEuMjc1NzMgNy45OTI3MiAwLjk0NTYxMSA2Ljg2MzYxIDEuMDA4ODggNS43MjE2OUMxLjA3MjE1IDQuNTc5NzYgMS41MjQ5OSAzLjQ5NDA0IDIuMjkxODggMi42NDU1OEMzLjA1ODc2IDEuNzk3MTIgNC4wOTMzNCAxLjIzNzIxIDUuMjIzMDggMS4wNTkyMkM2LjM1MjgyIDAuODgxMjMzIDcuNTA5NDQgMS4wOTU5MiA4LjUwMDA1IDEuNjY3NDlcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDUuNUw2IDdMMTEgMlwiIHN0cm9rZT1cIiMyMkM1NUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIEZhaWx1cmUgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsdXJlJyB8fCBzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsZWQnXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk03LjUgNC41TDQuNSA3LjVcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDQuNUw3LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gUGVuZGluZyAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBSdW5uaW5nIC0gU2hvdyBzcGlubmVyIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAncnVubmluZydcIj5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3FhLWFuaW1hdGUtc3BpbiBjcWEtdGV4dC1bIzNCODJGNl1cIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBvcGFjaXR5PVwiMC4yNVwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxQTUgNSAwIDAgMSAxMSA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFN1Yi1zdGVwIERlc2NyaXB0aW9uIC0tPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxM3B4XSBjcWEtdGV4dC1bIzM2NDE1M11cIj5cbiAgICAgICAgICB7eyBzdWJTdGVwLmRlc2NyaXB0aW9uIH19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8IS0tIFN1Yi1zdGVwIER1cmF0aW9uIC0tPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LW1ldGFkYXRhLWtleVwiPlxuICAgICAgICAgIHt7IGZvcm1hdER1cmF0aW9uKHN1YlN0ZXAuZHVyYXRpb24pIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBOZXN0ZWQgU3RlcHMgLS0+XG4gICAgPGRpdiAqbmdJZj1cImhhc0NoaWxkIHx8IChjb25maWcubmVzdGVkU3RlcHMgJiYgY29uZmlnLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApXCIgY2xhc3M9XCJjcWEtbWwtOSBjcWEtcGItMVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogJzFweCBzb2xpZCAjRjNGNEY2J1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNzM3MzczXSBjcWEtcHktWzJweF0gY3FhLXB4LTNcIj5OZXN0ZWQgc3RlcHM8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1wbC1bMThweF1cIiBzdHlsZT1cImJvcmRlci1sZWZ0OiAycHggc29saWQgI0M1QzdGQTtcIj5cbiAgICAgICAgPCEtLSBMb2FkaW5nIGluZGljYXRvciBmb3IgbmVzdGVkIHN0ZXBzIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGFzQ2hpbGQgJiYgKCFjb25maWcubmVzdGVkU3RlcHMgfHwgY29uZmlnLm5lc3RlZFN0ZXBzLmxlbmd0aCA9PT0gMCkgJiYgaXNTdGVwTG9hZGluZygpXCIgXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1weS0yIGNxYS1weC0zXCI+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImNxYS1hbmltYXRlLXNwaW4gY3FhLXRleHQtWyMzQjgyRjZdXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjdcIiBjeT1cIjdcIiByPVwiNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgb3BhY2l0eT1cIjAuMjVcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTcgMUE2IDYgMCAwIDEgMTMgN1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTNweF0gY3FhLXRleHQtWyM3MzczNzNdXCI+TG9hZGluZyBuZXN0ZWQgc3RlcHMuLi48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RlcCBvZiBjb25maWcubmVzdGVkU3RlcHNcIj5cbiAgICAgICAgICA8IS0tIFdyYXBwZXIgdG8gc2hvdyBza2VsZXRvbiB3aGlsZSBzdGVwLXJlbmRlcmVyIGlzIGxvYWRpbmcgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1zdGVwLXJlbmRlcmVyLXdyYXBwZXJcIiBbY2xhc3MubG9hZGVkXT1cIiFpc05lc3RlZFN0ZXBMb2FkaW5nKHN0ZXApXCI+XG4gICAgICAgICAgICA8IS0tIExvYWRpbmcgc2tlbGV0b24gb3ZlcmxheSAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc05lc3RlZFN0ZXBMb2FkaW5nKHN0ZXApXCIgY2xhc3M9XCJjcWEtc3RlcC1za2VsZXRvbi1vdmVybGF5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc3RlcC1za2VsZXRvbiBjcWEtbXgtMyBjcWEtbXktMVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFVzZSBzdGVwLXJlbmRlcmVyIGZvciBhbGwgbmVzdGVkIHN0ZXBzIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyAtLT5cbiAgICAgICAgICAgIDwhLS0gVGhlIHN0ZXAtcmVuZGVyZXIgd2lsbCBkeW5hbWljYWxseSBsb2FkIHRoZSBhcHByb3ByaWF0ZSBjb21wb25lbnQgYW5kIHBhc3MgaGFuZGxlcnMgLS0+XG4gICAgICAgICAgICA8Y3FhLXN0ZXAtcmVuZGVyZXIgXG4gICAgICAgICAgICAgIFtzdGVwXT1cInN0ZXBcIlxuICAgICAgICAgICAgICBbb25FeHBhbmRIYW5kbGVyXT1cIm9uRXhwYW5kSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvbkNvbmRpdGlvbkJyYW5jaENsaWNrSGFuZGxlcl09XCJvbkNvbmRpdGlvbkJyYW5jaENsaWNrSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtnZXRDb25kaXRpb25CcmFuY2hlc0hhbmRsZXJdPVwiZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2lzU3RlcExvYWRpbmdIYW5kbGVyXT1cImlzU3RlcExvYWRpbmdIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2lzU3RlcEV4cGFuZGVkSGFuZGxlcl09XCJpc1N0ZXBFeHBhbmRlZEhhbmRsZXJcIlxuICAgICAgICAgICAgICBbY29udmVydE1zVG9TZWNvbmRzSGFuZGxlcl09XCJjb252ZXJ0TXNUb1NlY29uZHNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2Zvcm1hdEZhaWx1cmVEZXRhaWxzSGFuZGxlcl09XCJmb3JtYXRGYWlsdXJlRGV0YWlsc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbZ2V0U2VsZkhlYWxBbmFseXNpc0hhbmRsZXJdPVwiZ2V0U2VsZkhlYWxBbmFseXNpc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbZ2V0TG9vcEl0ZXJhdGlvbnNIYW5kbGVyXT1cImdldExvb3BJdGVyYXRpb25zSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtnZXRBcGlBc3NlcnRpb25zSGFuZGxlcl09XCJnZXRBcGlBc3NlcnRpb25zSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtmb3JtYXRBY3Rpb25zSGFuZGxlcl09XCJmb3JtYXRBY3Rpb25zSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvblZpZXdBbGxJdGVyYXRpb25zSGFuZGxlcl09XCJvblZpZXdBbGxJdGVyYXRpb25zSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvbk1ha2VDdXJyZW50QmFzZWxpbmVIYW5kbGVyXT1cIm9uTWFrZUN1cnJlbnRCYXNlbGluZUhhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25VcGxvYWRCYXNlbGluZUhhbmRsZXJdPVwib25VcGxvYWRCYXNlbGluZUhhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25BbmFseXplSGFuZGxlcl09XCJvbkFuYWx5emVIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uVmlld0Z1bGxMb2dzSGFuZGxlcl09XCJvblZpZXdGdWxsTG9nc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25TZWxmSGVhbEFjdGlvbkhhbmRsZXJdPVwib25TZWxmSGVhbEFjdGlvbkhhbmRsZXJcIlxuICAgICAgICAgICAgICBbaXNVcGxvYWRpbmdCYXNlbGluZV09XCJpc1VwbG9hZGluZ0Jhc2VsaW5lXCJcbiAgICAgICAgICAgICAgW2lzTWFraW5nQ3VycmVudEJhc2VsaW5lXT1cImlzTWFraW5nQ3VycmVudEJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgW2lzTGl2ZV09XCJpc0xpdmVcIlxuICAgICAgICAgICAgICAoY29tcG9uZW50UmVhZHkpPVwibWFya1N0ZXBMb2FkZWQoc3RlcClcIj5cbiAgICAgICAgICAgIDwvY3FhLXN0ZXAtcmVuZGVyZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlbGYgSGVhbCBBbmFseXNpcyAtLT5cbiAgICA8Y3FhLXNlbGYtaGVhbC1hbmFseXNpcyBcbiAgICAgICpuZ0lmPVwic2VsZkhlYWxBbmFseXNpc1wiIFxuICAgICAgW29yaWdpbmFsTG9jYXRvcl09XCJzZWxmSGVhbEFuYWx5c2lzLm9yaWdpbmFsTG9jYXRvclwiXG4gICAgICBbaGVhbGVkTG9jYXRvcl09XCJzZWxmSGVhbEFuYWx5c2lzLmhlYWxlZExvY2F0b3JcIlxuICAgICAgW2NvbmZpZGVuY2VdPVwic2VsZkhlYWxBbmFseXNpcy5jb25maWRlbmNlXCJcbiAgICAgIFtoZWFsTWV0aG9kXT1cInNlbGZIZWFsQW5hbHlzaXMuaGVhbE1ldGhvZFwiXG4gICAgICBbaXNMb2FkaW5nQWNjZXB0XT1cImdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIgPyBnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyKCkuaXNMb2FkaW5nQWNjZXB0IDogZmFsc2VcIlxuICAgICAgW2lzTG9hZGluZ01vZGlmeUFjY2VwdF09XCJnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyID8gZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcigpLmlzTG9hZGluZ01vZGlmeUFjY2VwdCA6IGZhbHNlXCJcbiAgICAgIChhY3Rpb24pPVwib25TZWxmSGVhbEFjdGlvbigkZXZlbnQpXCI+XG4gICAgPC9jcWEtc2VsZi1oZWFsLWFuYWx5c2lzPlxuXG4gICAgPCEtLSBUaW1pbmcgQnJlYWtkb3duIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJ0aW1pbmdCcmVha2Rvd25cIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktZW5kIGNxYS1nYXAtNSBjcWEtbXQtMSBjcWEtcHQtNCBjcWEtcHgtNCBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzlDQTNBRl1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICA8ZGl2Pjxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cbiAgICAgICAgPHNwYW4+VGltaW5nIGJyZWFrZG93bjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1kaWFsb2ctbXV0ZWQgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBBcHAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1ncmF5LTcwMFwiPnt7IGZvcm1hdER1cmF0aW9uKHRpbWluZ0JyZWFrZG93bi5hcHApIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiMVwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxIDExXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0tMy44MTQ3ZS0wNiAxMC4zMlYtNy4xNTI1NmUtMDdIMC45NTk5OTZWMTAuMzJILTMuODE0N2UtMDZaXCIgZmlsbD1cIiNFNUU3RUJcIi8+PC9zdmc+PC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgVG9vbCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWdyYXktNzAwXCI+e3sgZm9ybWF0RHVyYXRpb24odGltaW5nQnJlYWtkb3duLnRvb2wpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBWaWV3IE1vcmUgRmFpbGVkIFN0ZXAgQnV0dG9uIC0gc2hvd24gd2hlbiBleHBhbmRlZCBhbmQgZmFpbHVyZSBkZXRhaWxzIGV4aXN0IC0tPlxuICA8ZGl2ICpuZ0lmPVwic2hvd1ZpZXdNb3JlQnV0dG9uXCIgY2xhc3M9XCJjcWEtbXQtMiBjcWEtcHgtNFwiPlxuICAgIDxjcWEtdmlldy1tb3JlLWZhaWxlZC1zdGVwLWJ1dHRvblxuICAgICAgW3RpbWluZ0JyZWFrZG93bl09XCJ0aW1pbmdCcmVha2Rvd25cIlxuICAgICAgW3N1YlN0ZXBzXT1cInN1YlN0ZXBzXCJcbiAgICAgIFtmYWlsdXJlRGV0YWlsc109XCJmYWlsdXJlRGV0YWlsc1wiXG4gICAgICBbaXNFeHBhbmRlZF09XCJzaG93RmFpbGVkU3RlcERldGFpbHNcIlxuICAgICAgKHZpZXdNb3JlQ2xpY2spPVwib25WaWV3TW9yZUZhaWxlZFN0ZXBDbGljaygkZXZlbnQpXCI+XG4gICAgPC9jcWEtdmlldy1tb3JlLWZhaWxlZC1zdGVwLWJ1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBVcGRhdGVkIEZhaWxlZCBTdGVwIENvbXBvbmVudCAtIHNob3duIHdoZW4gYnV0dG9uIGlzIGNsaWNrZWQgLS0+XG4gIDxkaXYgKm5nSWY9XCJzaG93Vmlld01vcmVCdXR0b24gJiYgc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzICYmIGZhaWx1cmVEZXRhaWxzXCIgY2xhc3M9XCJjcWEtbXQtMiBjcWEtcHgtNFwiPlxuICAgIDxjcWEtdXBkYXRlZC1mYWlsZWQtc3RlcFxuICAgICAgW3Rlc3RTdGVwUmVzdWx0SWRdPVwidGVzdFN0ZXBSZXN1bHRJZFwiXG4gICAgICBbdGltaW5nQnJlYWtkb3duXT1cInRpbWluZ0JyZWFrZG93blwiXG4gICAgICBbZXhwYW5kZWRdPVwidHJ1ZVwiXG4gICAgICBbc3ViU3RlcHNdPVwic3ViU3RlcHNcIlxuICAgICAgW2ZhaWx1cmVEZXRhaWxzXT1cImZhaWx1cmVEZXRhaWxzXCJcbiAgICAgIFtyZWFzb25pbmddPVwicmVhc29uaW5nXCJcbiAgICAgIFtjb25maWRlbmNlXT1cImNvbmZpZGVuY2VcIlxuICAgICAgW2lzVXBsb2FkaW5nQmFzZWxpbmVdPVwiaXNVcGxvYWRpbmdCYXNlbGluZVwiXG4gICAgICBbaXNNYWtpbmdDdXJyZW50QmFzZWxpbmVdPVwiaXNNYWtpbmdDdXJyZW50QmFzZWxpbmVcIlxuICAgICAgW2lzTGl2ZV09XCJpc0xpdmVcIlxuICAgICAgKG1ha2VDdXJyZW50QmFzZWxpbmUpPVwib25NYWtlQ3VycmVudEJhc2VsaW5lKCRldmVudClcIlxuICAgICAgKHVwbG9hZEJhc2VsaW5lKT1cIm9uVXBsb2FkQmFzZWxpbmUoJGV2ZW50KVwiXG4gICAgICAoYW5hbHl6ZSk9XCJvbkFuYWx5emUoKVwiXG4gICAgICAodmlld0Z1bGxMb2dzKT1cIm9uVmlld0Z1bGxMb2dzKClcIj5cbiAgICA8L2NxYS11cGRhdGVkLWZhaWxlZC1zdGVwPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -142,15 +142,17 @@ export class ConditionStepComponent extends BaseStepComponent {
142
142
  }
143
143
  }
144
144
  // Initialize loading state when nested steps are added and step is expanded
145
- if (changes['nestedSteps'] && this.isExpanded && this.nestedSteps && this.nestedSteps.length > 0) {
146
- this.loadingSteps.clear();
147
- this.nestedSteps.forEach(step => {
148
- const stepId = step.testStepResultId || step.id;
149
- if (stepId) {
150
- this.loadingSteps.add(String(stepId));
151
- }
152
- });
153
- }
145
+ // if (changes['nestedSteps'] && this.isExpanded && this.nestedSteps && this.nestedSteps.length > 0) {
146
+ // console.log("NESTED STEPS", this.loadingSteps)
147
+ // this.loadingSteps.clear();
148
+ // this.nestedSteps.forEach(step => {
149
+ // const stepId = step.testStepResultId || step.id;
150
+ // if (stepId) {
151
+ // this.loadingSteps.add(String(stepId));
152
+ // }
153
+ // });
154
+ // console.log("NESTED STEPS", this.loadingSteps)
155
+ // }
154
156
  // Initialize loading state if already expanded when component initializes
155
157
  if (changes['expanded'] && this.isExpanded && this.nestedSteps && this.nestedSteps.length > 0) {
156
158
  this.loadingSteps.clear();
@@ -436,4 +438,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
436
438
  }], selfHealAction: [{
437
439
  type: Output
438
440
  }] } });
439
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2NvbmRpdGlvbi1zdGVwL2NvbmRpdGlvbi1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9jb25kaXRpb24tc3RlcC9jb25kaXRpb24tc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFFNUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFRM0QsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGlCQUFpQjtJQStEM0QsWUFBb0IsR0FBc0I7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUFEVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBEakMsYUFBUSxHQUFzQixFQUFFLENBQUM7UUFNakMsZ0JBQVcsR0FBMkIsRUFBRSxDQUFDO1FBMkJ4Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUN6RCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNyQyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsNEJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDdkIsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBb0Qs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QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRywrQkFBK0I7c0JBQXZDLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUNHLDZCQUE2QjtzQkFBckMsS0FBSztnQkFFSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRSxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmRpdGlvblN0ZXBDb25maWcsIENvbmRpdGlvbkJyYW5jaCwgU3RlcFN0YXR1cywgVGltaW5nQnJlYWtkb3duLCBGYWlsdXJlRGV0YWlscywgU3ViU3RlcCwgU2VsZkhlYWxBbmFseXNpc0RhdGEsIFNlbGZIZWFsQWN0aW9uLCBFeGVjdXRpb25TdGVwQ29uZmlnIH0gZnJvbSAnLi4vZXhlY3V0aW9uLXN0ZXAubW9kZWxzJztcbmltcG9ydCB7IEJhc2VTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQsIHVwbG9hZEJhc2VsaW5lRXZlbnQgfSBmcm9tICcuLi92aXN1YWwtY29tcGFyaXNvbi92aXN1YWwtY29tcGFyaXNvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtY29uZGl0aW9uLXN0ZXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZGl0aW9uLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uU3RlcENvbXBvbmVudCBleHRlbmRzIEJhc2VTdGVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvLyBJbmRpdmlkdWFsIGlucHV0c1xuICBASW5wdXQoKSBpZCE6IHN0cmluZztcbiAgQElucHV0KCkgdGVzdFN0ZXBSZXN1bHRJZCE6IHN0cmluZztcbiAgQElucHV0KCkgc3RlcE51bWJlciE6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0YXR1cyE6IFN0ZXBTdGF0dXM7XG4gIEBJbnB1dCgpIGR1cmF0aW9uITogbnVtYmVyO1xuICBASW5wdXQoKSB0aW1pbmdCcmVha2Rvd24/OiBUaW1pbmdCcmVha2Rvd247XG4gIEBJbnB1dCgpIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgY29uZGl0aW9uVGV4dCE6IHN0cmluZztcbiAgQElucHV0KCkgYnJhbmNoZXM6IENvbmRpdGlvbkJyYW5jaFtdID0gW107XG4gIEBJbnB1dCgpIGZhaWx1cmVEZXRhaWxzPzogRmFpbHVyZURldGFpbHM7XG4gIEBJbnB1dCgpIHJlYXNvbmluZz86IHN0cmluZ1tdO1xuICBASW5wdXQoKSBjb25maWRlbmNlPzogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxmSGVhbEFuYWx5c2lzPzogU2VsZkhlYWxBbmFseXNpc0RhdGE7XG4gIEBJbnB1dCgpIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIEBJbnB1dCgpIG5lc3RlZFN0ZXBzPzogRXhlY3V0aW9uU3RlcENvbmZpZ1tdID0gW107XG4gIEBJbnB1dCgpIGhhc0NoaWxkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaWZDaGlsZD86IGFueTsgLy8gaWZDaGlsZCBkYXRhIGZyb20gQVBJIC0gaWYgbnVsbCBhbmQgaGFzQ2hpbGQgaXMgdHJ1ZSwgd2UgbmVlZCB0byBjYWxsIEFQSVxuICBASW5wdXQoKSBhY3RpdmVCcmFuY2hTdGVwSWQ/OiBzdHJpbmcgfCBudW1iZXI7IC8vIElEIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlL3NlbGVjdGVkIGJyYW5jaCBzdGVwXG5cbiAgLy8gSGFuZGxlciBmdW5jdGlvbiB0byBwYXNzIGRvd24gdG8gbmVzdGVkIGNoaWxkIHN0ZXAgZ3JvdXBzIGZvciByZWN1cnNpdmUgZXhwYW5zaW9uXG4gIEBJbnB1dCgpIG9uRXhwYW5kSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiB2b2lkO1xuXG4gIC8vIEhhbmRsZXIgZnVuY3Rpb25zIGZvciBjb25kaXRpb24gc3RlcHNcbiAgQElucHV0KCkgZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IENvbmRpdGlvbkJyYW5jaFtdO1xuICBASW5wdXQoKSBpc1N0ZXBMb2FkaW5nSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBib29sZWFuO1xuICBASW5wdXQoKSBpc1N0ZXBFeHBhbmRlZEhhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYm9vbGVhbjtcbiAgQElucHV0KCkgY29udmVydE1zVG9TZWNvbmRzSGFuZGxlcj86IChkdXJhdGlvbjogbnVtYmVyKSA9PiBudW1iZXI7XG4gIEBJbnB1dCgpIGZvcm1hdEZhaWx1cmVEZXRhaWxzSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBhbnk7XG4gIEBJbnB1dCgpIGdldFNlbGZIZWFsQW5hbHlzaXNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGFueTtcbiAgQElucHV0KCkgb25NYWtlQ3VycmVudEJhc2VsaW5lSGFuZGxlcj86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBvblVwbG9hZEJhc2VsaW5lSGFuZGxlcj86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBvbkFuYWx5emVIYW5kbGVyPzogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25WaWV3RnVsbExvZ3NIYW5kbGVyPzogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25TZWxmSGVhbEFjdGlvbkhhbmRsZXI/OiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgQElucHV0KCkgZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcj86ICgpID0+IHsgaXNMb2FkaW5nQWNjZXB0OiBib29sZWFuOyBpc0xvYWRpbmdNb2RpZnlBY2NlcHQ6IGJvb2xlYW4gfTtcbiAgQElucHV0KCkgZ2V0TG9vcEl0ZXJhdGlvbnNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGFueVtdO1xuICBASW5wdXQoKSBnZXRBcGlBc3NlcnRpb25zSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBhbnlbXTtcbiAgQElucHV0KCkgZm9ybWF0QWN0aW9uc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYW55W107XG4gIEBJbnB1dCgpIG9uVmlld0FsbEl0ZXJhdGlvbnNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIG9uQ29uZGl0aW9uQnJhbmNoQ2xpY2tIYW5kbGVyPzogKHN0ZXA6IGFueSwgYnJhbmNoOiBhbnkpID0+IHZvaWQ7XG5cbiAgQE91dHB1dCgpIG9uQnJhbmNoQ2xpY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29uZGl0aW9uQnJhbmNoPigpO1xuICBAT3V0cHV0KCkgb25FeHBhbmQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBJbnB1dCgpIGlzVXBsb2FkaW5nQmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgaXNNYWtpbmdDdXJyZW50QmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgaXNMaXZlOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBtYWtlQ3VycmVudEJhc2VsaW5lID0gbmV3IEV2ZW50RW1pdHRlcjxtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSB1cGxvYWRCYXNlbGluZSA9IG5ldyBFdmVudEVtaXR0ZXI8dXBsb2FkQmFzZWxpbmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFuYWx5emUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB2aWV3RnVsbExvZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWxmSGVhbEFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0eXBlOiBTZWxmSGVhbEFjdGlvbjsgaGVhbGVkTG9jYXRvcjogc3RyaW5nOyB9PigpO1xuXG4gIHNob3dGYWlsZWRTdGVwRGV0YWlsczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIENvbmZpZyBwcm9wZXJ0eSBmb3IgYmFzZSBjbGFzcyAtIGJ1aWx0IGZyb20gaW5kaXZpZHVhbCBpbnB1dHMgaW4gbmdPbkluaXRcbiAgb3ZlcnJpZGUgY29uZmlnITogQ29uZGl0aW9uU3RlcENvbmZpZztcbiAgXG4gIC8vIFRyYWNrIHdoaWNoIHN0ZXBzIGFyZSBzdGlsbCBsb2FkaW5nIHRvIHNob3cgc2tlbGV0b25cbiAgbG9hZGluZ1N0ZXBzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQWx3YXlzIGRldGVybWluZSBhY3RpdmUgYnJhbmNoIGZyb20gZXhlY3V0ZWQgYnJhbmNoIChmb3IgbGl2ZSBtb2RlKVxuICAgIGlmICh0aGlzLmlzTGl2ZSkge1xuICAgICAgdGhpcy5kZXRlcm1pbmVBY3RpdmVCcmFuY2goKTtcbiAgICB9XG5cbiAgICAvLyBGaWx0ZXIgbmVzdGVkIHN0ZXBzIGJhc2VkIG9uIGFjdGl2ZSBicmFuY2ggKGRlcml2ZWQgZnJvbSBleGVjdXRlZCBicmFuY2gpXG4gICAgY29uc3Qgc3RlcHNUb1VzZSA9IHRoaXMubmVzdGVkU3RlcHMgfHwgW107XG5cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgdGVzdFN0ZXBSZXN1bHRJZDogdGhpcy50ZXN0U3RlcFJlc3VsdElkLFxuICAgICAgc3RlcE51bWJlcjogdGhpcy5zdGVwTnVtYmVyLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgZHVyYXRpb246IHRoaXMuZHVyYXRpb24sXG4gICAgICB0eXBlOiAnY29uZGl0aW9uJyxcbiAgICAgIGNvbmRpdGlvblRleHQ6IHRoaXMuY29uZGl0aW9uVGV4dCxcbiAgICAgIGJyYW5jaGVzOiB0aGlzLmJyYW5jaGVzLFxuICAgICAgdGltaW5nQnJlYWtkb3duOiB0aGlzLnRpbWluZ0JyZWFrZG93bixcbiAgICAgIGV4cGFuZGVkOiB0aGlzLmV4cGFuZGVkLFxuICAgICAgbmVzdGVkU3RlcHM6IHN0ZXBzVG9Vc2UsXG4gICAgfSBhcyBDb25kaXRpb25TdGVwQ29uZmlnO1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBcbiAgICAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgaWYgYWxyZWFkeSBleHBhbmRlZFxuICAgIGlmICh0aGlzLmlzRXhwYW5kZWQgJiYgdGhpcy5uZXN0ZWRTdGVwcyAmJiB0aGlzLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgICB0aGlzLm5lc3RlZFN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgICAgICBpZiAoc3RlcElkKSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuYWRkKFN0cmluZyhzdGVwSWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gT25seSBwcm9jZXNzIGNoYW5nZXMgaWYgY29uZmlnIGhhcyBiZWVuIGluaXRpYWxpemVkIChuZ09uSW5pdCBoYXMgYmVlbiBjYWxsZWQpXG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3MgaWZDaGlsZCBpZiBpdCdzIHByb3ZpZGVkIGFuZCBicmFuY2hlcyBuZWVkIHRvIGJlIHVwZGF0ZWRcbiAgICBpZiAoY2hhbmdlc1snaWZDaGlsZCddICYmIHRoaXMuaWZDaGlsZCAmJiBBcnJheS5pc0FycmF5KHRoaXMuaWZDaGlsZCkgJiYgdGhpcy5pZkNoaWxkLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIFByb2Nlc3MgaWZDaGlsZCB0byB1cGRhdGUgYnJhbmNoZXNcbiAgICAgIC8vIFRoaXMgZW5zdXJlcyBicmFuY2hlcyByZWZsZWN0IHRoZSBleGVjdXRlZCBjb25kaXRpb24gZnJvbSBpZkNoaWxkXG4gICAgICBpZiAodGhpcy5nZXRDb25kaXRpb25CcmFuY2hlc0hhbmRsZXIpIHtcbiAgICAgICAgLy8gVXNlIGhhbmRsZXIgdG8gZ2V0IHVwZGF0ZWQgYnJhbmNoZXMgZnJvbSBpZkNoaWxkXG4gICAgICAgIGNvbnN0IHN0ZXBXaXRoSWZDaGlsZCA9IHtcbiAgICAgICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgICAgICBpZkNoaWxkOiB0aGlzLmlmQ2hpbGRcbiAgICAgICAgfSBhcyBhbnk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRCcmFuY2hlcyA9IHRoaXMuZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyKHN0ZXBXaXRoSWZDaGlsZCk7XG4gICAgICAgIGlmICh1cGRhdGVkQnJhbmNoZXMgJiYgdXBkYXRlZEJyYW5jaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmJyYW5jaGVzID0gdXBkYXRlZEJyYW5jaGVzO1xuICAgICAgICAgIHRoaXMuY29uZmlnLmJyYW5jaGVzID0gdXBkYXRlZEJyYW5jaGVzLm1hcCgoYnJhbmNoOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAuLi5icmFuY2gsXG4gICAgICAgICAgICBzdWJTdGVwczogYnJhbmNoLnN1YlN0ZXBzID8gWy4uLmJyYW5jaC5zdWJTdGVwc10gOiBbXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmlzTGl2ZSkge1xuICAgICAgLy8gVXBkYXRlIGJyYW5jaGVzIGlmIGNoYW5nZWQgLSBjcmVhdGUgZGVlcCBjb3B5IHRvIGVuc3VyZSBjaGFuZ2UgZGV0ZWN0aW9uIHdvcmtzXG4gICAgICBpZiAoY2hhbmdlc1snYnJhbmNoZXMnXSAmJiB0aGlzLmJyYW5jaGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgZGVlcCBjb3B5IHRvIGVuc3VyZSBBbmd1bGFyIGNoYW5nZSBkZXRlY3Rpb24gcGlja3MgdXAgbmVzdGVkIGNoYW5nZXNcbiAgICAgICAgdGhpcy5jb25maWcuYnJhbmNoZXMgPSB0aGlzLmJyYW5jaGVzLm1hcCgoYnJhbmNoOiBhbnkpID0+ICh7XG4gICAgICAgICAgLi4uYnJhbmNoLFxuICAgICAgICAgIHN1YlN0ZXBzOiBicmFuY2guc3ViU3RlcHMgPyBbLi4uYnJhbmNoLnN1YlN0ZXBzXSA6IFtdXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5icmFuY2hlcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY29uZmlnLmJyYW5jaGVzICE9PSB0aGlzLmJyYW5jaGVzKSB7XG4gICAgICAgIC8vIEZhbGxiYWNrOiBjaGVjayBpZiBicmFuY2hlcyBjaGFuZ2VkIGV2ZW4gaWYgbmdPbkNoYW5nZXMgZGlkbid0IGRldGVjdCBpdFxuICAgICAgICAvLyBUaGlzIGhhbmRsZXMgY2FzZXMgd2hlcmUgbmVzdGVkIHN1YlN0ZXBzIHdlcmUgdXBkYXRlZFxuICAgICAgICBjb25zdCBjdXJyZW50U3ViU3RlcHNDb3VudCA9ICh0aGlzLmNvbmZpZy5icmFuY2hlcyB8fCBbXSkucmVkdWNlKChzdW06IG51bWJlciwgYjogYW55KSA9PiBzdW0gKyAoYi5zdWJTdGVwcz8ubGVuZ3RoIHx8IDApLCAwKTtcbiAgICAgICAgY29uc3QgbmV3U3ViU3RlcHNDb3VudCA9ICh0aGlzLmJyYW5jaGVzIHx8IFtdKS5yZWR1Y2UoKHN1bTogbnVtYmVyLCBiOiBhbnkpID0+IHN1bSArIChiLnN1YlN0ZXBzPy5sZW5ndGggfHwgMCksIDApO1xuXG4gICAgICAgIGlmIChjdXJyZW50U3ViU3RlcHNDb3VudCAhPT0gbmV3U3ViU3RlcHNDb3VudCB8fFxuICAgICAgICAgIHRoaXMuY29uZmlnLmJyYW5jaGVzICE9PSB0aGlzLmJyYW5jaGVzKSB7XG4gICAgICAgICAgdGhpcy5jb25maWcuYnJhbmNoZXMgPSB0aGlzLmJyYW5jaGVzLm1hcCgoYnJhbmNoOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAuLi5icmFuY2gsXG4gICAgICAgICAgICBzdWJTdGVwczogYnJhbmNoLnN1YlN0ZXBzID8gWy4uLmJyYW5jaC5zdWJTdGVwc10gOiBbXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgb3RoZXIgcHJvcGVydGllcyB0aGF0IG1pZ2h0IGNoYW5nZVxuICAgICAgaWYgKGNoYW5nZXNbJ3N0YXR1cyddICYmIHRoaXMuc3RhdHVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5jb25maWcuc3RhdHVzID0gdGhpcy5zdGF0dXM7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzWydkdXJhdGlvbiddICYmIHRoaXMuZHVyYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNvbmZpZy5kdXJhdGlvbiA9IHRoaXMuZHVyYXRpb247XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzWydleHBhbmRlZCddICYmIHRoaXMuZXhwYW5kZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNvbmZpZy5leHBhbmRlZCA9IHRoaXMuZXhwYW5kZWQ7XG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IHRoaXMuZXhwYW5kZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzWydjb25kaXRpb25UZXh0J10gJiYgdGhpcy5jb25kaXRpb25UZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5jb25maWcuY29uZGl0aW9uVGV4dCA9IHRoaXMuY29uZGl0aW9uVGV4dDtcbiAgICAgIH1cbiAgICAgIC8vIFVwZGF0ZSBhY3RpdmUgYnJhbmNoIGlmIGNoYW5nZWQgLSBhbHdheXMgZGVyaXZlIGZyb20gZXhlY3V0ZWQgYnJhbmNoXG4gICAgICBpZiAoY2hhbmdlc1snYWN0aXZlQnJhbmNoU3RlcElkJ10gfHwgY2hhbmdlc1snYnJhbmNoZXMnXSkge1xuICAgICAgICAvLyBDaGVjayBpZiBleGVjdXRlZCBicmFuY2ggY2hhbmdlZFxuICAgICAgICBjb25zdCBleGVjdXRlZEJyYW5jaENoYW5nZWQgPSBjaGFuZ2VzWydicmFuY2hlcyddICYmIFxuICAgICAgICAgIGNoYW5nZXNbJ2JyYW5jaGVzJ10ucHJldmlvdXNWYWx1ZSAmJiBcbiAgICAgICAgICBjaGFuZ2VzWydicmFuY2hlcyddLmN1cnJlbnRWYWx1ZSAmJlxuICAgICAgICAgIGNoYW5nZXNbJ2JyYW5jaGVzJ10ucHJldmlvdXNWYWx1ZS5zb21lKChwcmV2QnJhbmNoOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRCcmFuY2ggPSBjaGFuZ2VzWydicmFuY2hlcyddLmN1cnJlbnRWYWx1ZVtpbmRleF07XG4gICAgICAgICAgICByZXR1cm4gcHJldkJyYW5jaD8uZXhlY3V0ZWQgIT09IGN1cnJlbnRCcmFuY2g/LmV4ZWN1dGVkO1xuICAgICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgLy8gQWx3YXlzIGRldGVybWluZSBhY3RpdmUgYnJhbmNoIGZyb20gZXhlY3V0ZWQgYnJhbmNoXG4gICAgICAgIHRoaXMuZGV0ZXJtaW5lQWN0aXZlQnJhbmNoKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEZpbHRlciBuZXN0ZWQgc3RlcHMgYmFzZWQgb24gYWN0aXZlIGJyYW5jaFxuICAgICAgaWYgKGNoYW5nZXNbJ25lc3RlZFN0ZXBzJ10gfHwgY2hhbmdlc1snYWN0aXZlQnJhbmNoU3RlcElkJ10pIHtcbiAgICAgICAgdGhpcy5jb25maWcubmVzdGVkU3RlcHMgPSB0aGlzLm5lc3RlZFN0ZXBzO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlc1snYnJhbmNoZXMnXSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5icmFuY2hlcyA9IHRoaXMuYnJhbmNoZXM7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIEluaXRpYWxpemUgbG9hZGluZyBzdGF0ZSB3aGVuIG5lc3RlZCBzdGVwcyBhcmUgYWRkZWQgYW5kIHN0ZXAgaXMgZXhwYW5kZWRcbiAgICBpZiAoY2hhbmdlc1snbmVzdGVkU3RlcHMnXSAmJiB0aGlzLmlzRXhwYW5kZWQgJiYgdGhpcy5uZXN0ZWRTdGVwcyAmJiB0aGlzLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgICB0aGlzLm5lc3RlZFN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgICAgICBpZiAoc3RlcElkKSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuYWRkKFN0cmluZyhzdGVwSWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIC8vIEluaXRpYWxpemUgbG9hZGluZyBzdGF0ZSBpZiBhbHJlYWR5IGV4cGFuZGVkIHdoZW4gY29tcG9uZW50IGluaXRpYWxpemVzXG4gICAgaWYgKGNoYW5nZXNbJ2V4cGFuZGVkJ10gJiYgdGhpcy5pc0V4cGFuZGVkICYmIHRoaXMubmVzdGVkU3RlcHMgJiYgdGhpcy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgICAgdGhpcy5uZXN0ZWRTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICAgICAgaWYgKHN0ZXBJZCkge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmFkZChTdHJpbmcoc3RlcElkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICBjb25zdCB3YXNFeHBhbmRlZCA9IHRoaXMuaXNFeHBhbmRlZDtcbiAgICBzdXBlci50b2dnbGUoKTtcbiAgICBpZiAoIXdhc0V4cGFuZGVkICYmIHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgdGhpcy5vbkV4cGFuZC5lbWl0KCk7XG4gICAgICAvLyBBbHdheXMgY2FsbCBjaGlsZHJlbiBBUEkgaWYgaGFzQ2hpbGQgaXMgdHJ1ZSAobGlrZSBvdGhlciBzdGVwIHR5cGVzKVxuICAgICAgLy8gSWYgaWZDaGlsZCBleGlzdHMgYW5kIGhhcyBhbiBleGVjdXRlZCBjb25kaXRpb24gKHJlc3VsdDogXCJTVUNDRVNTXCIpLCB1c2UgdGhhdCBjb25kaXRpb24ncyB0ZXN0U3RlcFJlc3VsdElkXG4gICAgICBpZiAodGhpcy5vbkV4cGFuZEhhbmRsZXIgJiYgdGhpcy5jb25maWcgJiYgdGhpcy5oYXNDaGlsZCkge1xuICAgICAgICBjb25zdCBjb25maWdXaXRoTmVzdGVkID0gdGhpcy5jb25maWcgYXMgQ29uZGl0aW9uU3RlcENvbmZpZztcblxuICAgICAgICAvLyBGaW5kIHRoZSBleGVjdXRlZCBjb25kaXRpb24gZnJvbSBpZkNoaWxkICh0aGUgb25lIHdpdGggcmVzdWx0OiBcIlNVQ0NFU1NcIilcbiAgICAgICAgbGV0IGV4ZWN1dGVkQ29uZGl0aW9uVGVzdFN0ZXBSZXN1bHRJZCA9IHRoaXMudGVzdFN0ZXBSZXN1bHRJZDsgLy8gRGVmYXVsdCB0byBwYXJlbnQncyBJRFxuICAgICAgICBsZXQgZXhlY3V0ZWRDb25kaXRpb25IYXNDaGlsZCA9IHRoaXMuaGFzQ2hpbGQ7XG5cbiAgICAgICAgaWYgKHRoaXMuaWZDaGlsZCAmJiBBcnJheS5pc0FycmF5KHRoaXMuaWZDaGlsZCkgJiYgdGhpcy5pZkNoaWxkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBleGVjdXRlZENvbmRpdGlvbiA9IHRoaXMuaWZDaGlsZC5maW5kKChjb25kaXRpb246IGFueSkgPT5cbiAgICAgICAgICAgIGNvbmRpdGlvbi5yZXN1bHQgPT09ICdTVUNDRVNTJyB8fCBjb25kaXRpb24ucmVzdWx0ID09PSAnU1VDQ0VTUydcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGV4ZWN1dGVkQ29uZGl0aW9uICYmIGV4ZWN1dGVkQ29uZGl0aW9uLnRlc3RTdGVwUmVzdWx0SWQpIHtcbiAgICAgICAgICAgIC8vIFVzZSB0aGUgZXhlY3V0ZWQgY29uZGl0aW9uJ3MgdGVzdFN0ZXBSZXN1bHRJZCBhbmQgaGFzQ2hpbGRcbiAgICAgICAgICAgIGV4ZWN1dGVkQ29uZGl0aW9uVGVzdFN0ZXBSZXN1bHRJZCA9IGV4ZWN1dGVkQ29uZGl0aW9uLnRlc3RTdGVwUmVzdWx0SWQ7XG4gICAgICAgICAgICBleGVjdXRlZENvbmRpdGlvbkhhc0NoaWxkID0gZXhlY3V0ZWRDb25kaXRpb24uaGFzQ2hpbGQgfHwgZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgc3RlcCBjb25maWcgb2JqZWN0IGZvciB0aGUgaGFuZGxlclxuICAgICAgICBjb25zdCBzdGVwQ29uZmlnID0ge1xuICAgICAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgICAgIGhhc0NoaWxkOiBleGVjdXRlZENvbmRpdGlvbkhhc0NoaWxkLFxuICAgICAgICAgIGV4cGFuZGVkOiB0cnVlLCAvLyBFbnN1cmUgZXhwYW5kZWQgaXMgc2V0XG4gICAgICAgICAgdGVzdFN0ZXBUeXBlOiAodGhpcy5jb25maWcgYXMgYW55KS50ZXN0U3RlcFR5cGUgfHwgJ0NPTkRJVElPTl9JRicsXG4gICAgICAgICAgY2hpbGRyZW46IGNvbmZpZ1dpdGhOZXN0ZWQubmVzdGVkU3RlcHMgfHwgW10sXG4gICAgICAgICAgdGVzdFN0ZXBSZXN1bHRJZDogZXhlY3V0ZWRDb25kaXRpb25UZXN0U3RlcFJlc3VsdElkLCAvLyBVc2UgZXhlY3V0ZWQgY29uZGl0aW9uJ3MgSUQgZm9yIEFQSSBjYWxsXG4gICAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgICAgaWZDaGlsZDogdGhpcy5pZkNoaWxkIHx8IG51bGwsIC8vIFBhc3MgaWZDaGlsZCBmb3IgYnJhbmNoIGV4ZWN1dGlvbiBkZXRlcm1pbmF0aW9uXG4gICAgICAgICAgLy8gU3RvcmUgb3JpZ2luYWwgcGFyZW50IHRlc3RTdGVwUmVzdWx0SWQgZm9yIHRyYWNraW5nIHN0YXRlcyBhbmQgdXBkYXRpbmcgcGFyZW50IHN0cnVjdHVyZVxuICAgICAgICAgIG9yaWdpbmFsVGVzdFN0ZXBSZXN1bHRJZDogdGhpcy50ZXN0U3RlcFJlc3VsdElkXG4gICAgICAgIH0gYXMgRXhlY3V0aW9uU3RlcENvbmZpZyAmIHsgb3JpZ2luYWxUZXN0U3RlcFJlc3VsdElkPzogc3RyaW5nIHwgbnVtYmVyIH07XG4gICAgICAgIHRoaXMub25FeHBhbmRIYW5kbGVyKHN0ZXBDb25maWcpO1xuICAgICAgfVxuICAgICAgLy8gSW5pdGlhbGl6ZSBsb2FkaW5nIHN0YXRlIGZvciBhbGwgbmVzdGVkIHN0ZXBzXG4gICAgICBpZiAodGhpcy5jb25maWcubmVzdGVkU3RlcHMgJiYgdGhpcy5jb25maWcubmVzdGVkU3RlcHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgICAgICB0aGlzLmNvbmZpZy5uZXN0ZWRTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgICAgICAgIGlmIChzdGVwSWQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmFkZChTdHJpbmcoc3RlcElkKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIC8vIENsZWFyIGxvYWRpbmcgc3RhdGUgd2hlbiBjb2xsYXBzaW5nXG4gICAgICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBleHBhbmRlZCBzdGF0ZSBpcyBzeW5jZWQgd2l0aCBjb25maWdcbiAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnLmV4cGFuZGVkID0gdGhpcy5pc0V4cGFuZGVkO1xuICAgIH1cbiAgfVxuICBcbiAgLy8gQ2hlY2sgaWYgYSBzdGVwIGlzIHN0aWxsIGxvYWRpbmdcbiAgaXNOZXN0ZWRTdGVwTG9hZGluZyhzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RlcElkID0gc3RlcC50ZXN0U3RlcFJlc3VsdElkIHx8IHN0ZXAuaWQ7XG4gICAgcmV0dXJuIHN0ZXBJZCA/IHRoaXMubG9hZGluZ1N0ZXBzLmhhcyhTdHJpbmcoc3RlcElkKSkgOiBmYWxzZTtcbiAgfVxuICBcbiAgLy8gTWFyayBhIHN0ZXAgYXMgbG9hZGVkIChjYWxsZWQgd2hlbiBzdGVwLXJlbmRlcmVyIGlzIHJlYWR5KVxuICBtYXJrU3RlcExvYWRlZChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcElkID0gc3RlcC50ZXN0U3RlcFJlc3VsdElkIHx8IHN0ZXAuaWQ7XG4gICAgaWYgKHN0ZXBJZCkge1xuICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuZGVsZXRlKFN0cmluZyhzdGVwSWQpKTtcbiAgICB9XG4gIH1cblxuICBnZXRFeGVjdXRlZEJyYW5jaCgpOiBDb25kaXRpb25CcmFuY2ggfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5icmFuY2hlcy5maW5kKGJyYW5jaCA9PiBicmFuY2guZXhlY3V0ZWQpIHx8IG51bGw7XG4gIH1cblxuICBnZXRVbmV4ZWN1dGVkQnJhbmNoZXMoKTogQ29uZGl0aW9uQnJhbmNoW10ge1xuICAgIHJldHVybiB0aGlzLmJyYW5jaGVzPy5maWx0ZXIoYnJhbmNoID0+ICFicmFuY2guZXhlY3V0ZWQpIHx8IFtdO1xuICB9XG5cbiAgZ2V0U3ViU3RlcEluZGV4KHN1YlN0ZXBzOiBhbnlbXSwgc3ViU3RlcDogYW55KTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3ViU3RlcHMuaW5kZXhPZihzdWJTdGVwKSArIDE7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGlzIHN0ZXAgaXMgY3VycmVudGx5IGxvYWRpbmcgbmVzdGVkIGNoaWxkcmVuXG4gIGlzU3RlcExvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNTdGVwTG9hZGluZ0hhbmRsZXIgJiYgdGhpcy5jb25maWcpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzU3RlcExvYWRpbmdIYW5kbGVyKHRoaXMuY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNMb2FkaW5nIHx8IGZhbHNlO1xuICB9XG5cbiAgb25WaWV3TW9yZUZhaWxlZFN0ZXBDbGljayhleHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZXhwYW5kZWQ7XG4gIH1cblxuICBnZXRTdWJTdGVwc0ZvckZhaWxlZFN0ZXAoKTogU3ViU3RlcFtdIHtcbiAgICBjb25zdCBleGVjdXRlZEJyYW5jaCA9IHRoaXMuZ2V0RXhlY3V0ZWRCcmFuY2goKTtcbiAgICByZXR1cm4gZXhlY3V0ZWRCcmFuY2g/LnN1YlN0ZXBzIHx8IFtdO1xuICB9XG5cbiAgb25NYWtlQ3VycmVudEJhc2VsaW5lKGV2ZW50OiBtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1ha2VDdXJyZW50QmFzZWxpbmUuZW1pdChldmVudCk7XG4gIH1cblxuICBvblVwbG9hZEJhc2VsaW5lKGV2ZW50OiB1cGxvYWRCYXNlbGluZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy51cGxvYWRCYXNlbGluZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uQW5hbHl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5emUuZW1pdCgpO1xuICB9XG5cbiAgb25WaWV3RnVsbExvZ3MoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3RnVsbExvZ3MuZW1pdCgpO1xuICB9XG5cbiAgb25TZWxmSGVhbEFjdGlvbihldmVudDogeyB0eXBlOiBTZWxmSGVhbEFjdGlvbjsgaGVhbGVkTG9jYXRvcjogc3RyaW5nOyB9KTogdm9pZCB7XG4gICAgdGhpcy5zZWxmSGVhbEFjdGlvbi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGdldCBzaG93Vmlld01vcmVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFeHBhbmRlZCAmJiBCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHMpICYmXG4gICAgICAoXG4gICAgICAgIChCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LmV4cGVjdGVkIHx8IHRoaXMuZmFpbHVyZURldGFpbHM/LmFjdHVhbCkpIHx8XG4gICAgICAgIChCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LnNjcmVlbnNob3RzPy5jdXJyZW50IHx8IHRoaXMuZmFpbHVyZURldGFpbHM/LnNjcmVlbnNob3RzPy5iYXNlbGluZSB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uZGlmZmVyZW5jZSlcbiAgICAgICAgICB8fCBCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LmxvZ3M/Lmxlbmd0aCkpIHx8XG4gICAgICAgIChCb29sZWFuKHRoaXMuZmFpbHVyZURldGFpbHM/LmFpRml4QXBwbGllZCAmJiAodGhpcy5mYWlsdXJlRGV0YWlscz8uYWlGaXhNZXNzYWdlIHx8IHRoaXMuY29uZmlkZW5jZSB8fCB0aGlzLnJlYXNvbmluZz8ubGVuZ3RoKSkpXG4gICAgICApXG4gIH1cblxuICB0b2dnbGVIZWFkZXIoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGUoKTtcbiAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgdGhpcy5zaG93RmFpbGVkU3RlcERldGFpbHMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgaGFzRXhwYW5kYWJsZUNvbnRlbnQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaGFzQnJhbmNoU3ViU3RlcHMgPSB0aGlzLmNvbmZpZy5icmFuY2hlcz8uc29tZShicmFuY2ggPT5cbiAgICAgIGJyYW5jaC5zdWJTdGVwcyAmJiBicmFuY2guc3ViU3RlcHMubGVuZ3RoID4gMFxuICAgICkgfHwgZmFsc2U7XG4gICAgY29uc3QgaGFzTmVzdGVkU3RlcHMgPSAhISh0aGlzLmNvbmZpZy5uZXN0ZWRTdGVwcyAmJiB0aGlzLmNvbmZpZy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKTtcbiAgICByZXR1cm4gaGFzQnJhbmNoU3ViU3RlcHMgfHwgaGFzTmVzdGVkU3RlcHM7XG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZUFjdGl2ZUJyYW5jaCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYnJhbmNoZXMgfHwgIUFycmF5LmlzQXJyYXkodGhpcy5icmFuY2hlcykgfHwgdGhpcy5icmFuY2hlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBBbHdheXMgZmluZCB0aGUgZXhlY3V0ZWQgYnJhbmNoIGFuZCBzZXQgYWN0aXZlQnJhbmNoU3RlcElkIGZyb20gaXRcbiAgICBjb25zdCBleGVjdXRlZEJyYW5jaCA9IHRoaXMuYnJhbmNoZXMuZmluZCgoYjogYW55KSA9PiBiLmV4ZWN1dGVkKSBhcyBhbnk7XG4gICAgaWYgKGV4ZWN1dGVkQnJhbmNoICYmIGV4ZWN1dGVkQnJhbmNoLmJyYW5jaFN0ZXBJZCkge1xuICAgICAgLy8gVXBkYXRlIGFjdGl2ZUJyYW5jaFN0ZXBJZCB0byBtYXRjaCBleGVjdXRlZCBicmFuY2hcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUJyYW5jaFN0ZXBJZCAhPT0gZXhlY3V0ZWRCcmFuY2guYnJhbmNoU3RlcElkKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlQnJhbmNoU3RlcElkID0gZXhlY3V0ZWRCcmFuY2guYnJhbmNoU3RlcElkO1xuICAgICAgICAvLyBVcGRhdGUgbmVzdGVkIHN0ZXBzIHdoZW4gZXhlY3V0ZWQgYnJhbmNoIGNoYW5nZXNcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBubyBicmFuY2ggaXMgZXhlY3V0ZWQsIGRlZmF1bHQgdG8gZmlyc3QgYnJhbmNoIChJRiBicmFuY2gpIGJ1dCBkb24ndCBtYXJrIGl0IGFzIGV4ZWN1dGVkXG4gICAgY29uc3QgZmlyc3RCcmFuY2ggPSB0aGlzLmJyYW5jaGVzWzBdIGFzIGFueTtcbiAgICBpZiAoZmlyc3RCcmFuY2ggJiYgZmlyc3RCcmFuY2guYnJhbmNoU3RlcElkKSB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVCcmFuY2hTdGVwSWQgIT09IGZpcnN0QnJhbmNoLmJyYW5jaFN0ZXBJZCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUJyYW5jaFN0ZXBJZCA9IGZpcnN0QnJhbmNoLmJyYW5jaFN0ZXBJZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkJyYW5jaENsaWNrKGJyYW5jaDogQ29uZGl0aW9uQnJhbmNoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzTGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub25CcmFuY2hDbGlja0V2ZW50LmVtaXQoYnJhbmNoKTtcbiAgfVxuXG4gIGdldEJyYW5jaENsYXNzKGJyYW5jaDogYW55KTogc3RyaW5nIHtcbiAgICAvLyBJZiBicmFuY2ggaXMgZXhlY3V0ZWQsIHNob3cgZ3JlZW4gc3R5bGluZ1xuICAgIGlmIChicmFuY2guZXhlY3V0ZWQpIHtcbiAgICAgIHJldHVybiAnY3FhLWJnLVsjRENGQ0U3XSBjcWEtdGV4dC1bIzAwODIzNl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNCOUY4Q0ZdJztcbiAgICB9XG5cbiAgICAvLyBGb3IgbGl2ZSBtb2RlOiBpZiBubyBicmFuY2hlcyBhcmUgZXhlY3V0ZWQgYnV0IHRoZXJlJ3MgYW4gYWN0aXZlQnJhbmNoU3RlcElkLFxuICAgIC8vIHNob3cgdGhlIGFjdGl2ZSBicmFuY2ggd2l0aCBibHVlIGJvcmRlclxuICAgIGlmICh0aGlzLmlzTGl2ZSAmJiAhdGhpcy5oYXNBbnlFeGVjdXRlZEJyYW5jaCgpKSB7XG4gICAgICByZXR1cm4gJ2NxYS1iZy1bI0VGRjZGRl0gY3FhLXRleHQtWyMxRTQwQUZdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjM0I4MkY2XSc7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdDogZ3JheSBzdHlsaW5nIGZvciB1bmV4ZWN1dGVkIGJyYW5jaGVzXG4gICAgcmV0dXJuICdjcWEtYmctWyNGM0Y0RjZdIGNxYS10ZXh0LVsjOTlBMUFGXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTdFQl0nO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFueSBicmFuY2ggaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBwcml2YXRlIGhhc0FueUV4ZWN1dGVkQnJhbmNoKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5icmFuY2hlcyB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLmJyYW5jaGVzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5icmFuY2hlcy5zb21lKChiOiBhbnkpID0+IGIuZXhlY3V0ZWQgPT09IHRydWUpO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2IGNsYXNzPVwiY3FhLXAtMlwiPlxuICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXBiLTEuNSBjcWEtY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUhlYWRlcigpXCI+XG4gICAgICBcbiAgICAgIDwhLS0gU3RhdHVzIEljb24gLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwic3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdzdWNjZXNzJ1wiID48c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLjkwMDUgNC45OTk5OUMxMS4xMjg5IDYuMTIwNjQgMTAuOTY2MiA3LjI4NTcxIDEwLjQzOTUgOC4zMDA4OUM5LjkxMjc5IDkuMzE2MDggOS4wNTQgMTAuMTIgOC4wMDYzMSAxMC41Nzg3QzYuOTU4NjIgMTEuMDM3MyA1Ljc4NTM2IDExLjEyMjkgNC42ODIyIDEwLjgyMTJDMy41NzkwNCAxMC41MTk1IDIuNjEyNjUgOS44NDg2OSAxLjk0NDE5IDguOTIwNzFDMS4yNzU3MyA3Ljk5MjcyIDAuOTQ1NjExIDYuODYzNjEgMS4wMDg4OCA1LjcyMTY5QzEuMDcyMTUgNC41Nzk3NiAxLjUyNDk5IDMuNDk0MDQgMi4yOTE4OCAyLjY0NTU4QzMuMDU4NzYgMS43OTcxMiA0LjA5MzM0IDEuMjM3MjEgNS4yMjMwOCAxLjA1OTIyQzYuMzUyODIgMC44ODEyMzMgNy41MDk0NCAxLjA5NTkyIDguNTAwMDUgMS42Njc0OVwiIHN0cm9rZT1cIiMyMkM1NUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00LjUgNS41TDYgN0wxMSAyXCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWx1cmUnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbGVkJ1wiPjxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNy41IDQuNUw0LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA0LjVMNy41IDcuNVwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdwZW5kaW5nJ1wiPjxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3J1bm5pbmcnXCI+PHN2ZyBjbGFzcz1cImNxYS1hbmltYXRlLXNwaW4gY3FhLXRleHQtWyMzQjgyRjZdXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIG9wYWNpdHk9XCIwLjI1XCIvPjxwYXRoIGQ9XCJNNiAxQTUgNSAwIDAgMSAxMSA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPjwvc3ZnPjwvZGl2PlxuXG4gICAgICA8IS0tIENvbmRpdGlvbiBJY29uIC0tPlxuICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiByeD1cIjRcIiBmaWxsPVwiI0ZGRURENVwiLz48cGF0aCBkPVwiTTYgNVY5XCIgc3Ryb2tlPVwiI0ZEOUEwMFwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMCA3QzEwLjU1MjMgNyAxMSA2LjU1MjI4IDExIDZDMTEgNS40NDc3MiAxMC41NTIzIDUgMTAgNUM5LjQ0NzcyIDUgOSA1LjQ0NzcyIDkgNkM5IDYuNTUyMjggOS40NDc3MiA3IDEwIDdaXCIgc3Ryb2tlPVwiI0ZEOUEwMFwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDExQzYuNTUyMjggMTEgNyAxMC41NTIzIDcgMTBDNyA5LjQ0NzcyIDYuNTUyMjggOSA2IDlDNS40NDc3MiA5IDUgOS40NDc3MiA1IDEwQzUgMTAuNTUyMyA1LjQ0NzcyIDExIDYgMTFaXCIgc3Ryb2tlPVwiI0ZEOUEwMFwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMCA3QzEwIDcuNzk1NjUgOS42ODM5MyA4LjU1ODcxIDkuMTIxMzIgOS4xMjEzMkM4LjU1ODcxIDkuNjgzOTMgNy43OTU2NSAxMCA3IDEwXCIgc3Ryb2tlPVwiI0ZEOUEwMFwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+PC9kaXY+XG5cbiAgICAgIDwhLS0gU3RlcCBOdW1iZXIgYW5kIFRpdGxlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1ib2xkIGNxYS10ZXh0LVsjMzM0MTU1XSBjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzEzcHhdXCI+XG4gICAgICAgICAge3sgY29uZmlnLnN0ZXBOdW1iZXIgfX0uIENvbmRpdGlvbjogPHNwYW4gW2lubmVySFRNTF09XCJjb25maWcuY29uZGl0aW9uVGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICBcbiAgICAgICAgPCEtLSBDb25kaXRpb24gQmFkZ2UgLS0+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXB4LTEuNSBjcWEtcm91bmRlZC1mdWxsIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bI0VBNTgwQ10gY3FhLWJnLVsjRkZFREQ1XSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdXCI+XG4gICAgICAgICAgQ09ORElUSU9OXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTFcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bOXB4XSBjcWEtbGVhZGluZy1bMTFweF0gY3FhLXRleHQtWyM5Q0EzQUZdXCI+XG4gICAgICAgICAge3sgZm9ybWF0RHVyYXRpb24oY29uZmlnLmR1cmF0aW9uKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJoYXNFeHBhbmRhYmxlQ29udGVudFwiIFtjbGFzcy5jcWEtcm90YXRlLTE4MF09XCJpc0V4cGFuZGVkXCIgY2xhc3M9XCJjcWEtdHJhbnNpdGlvbi10cmFuc2Zvcm1cIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0zLjUgNUw3IDguNUwxMC41IDVcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMC44MzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEJyYW5jaCBCdXR0b25zIC0gUmVhZC1vbmx5LCBzaG93aW5nIGV4ZWN1dGVkIHN0YXR1cyBvbmx5IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHgtNCBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzczNzM3M10gY3FhLWZsZXgtd3JhcFwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgYnJhbmNoIG9mIGNvbmZpZy5icmFuY2hlc1wiXG4gICAgICAgIGNsYXNzPVwiY3FhLXB4LTIgY3FhLXB5LTEgY3FhLXJvdW5kZWQgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEuNVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldEJyYW5jaENsYXNzKGJyYW5jaClcIiAoY2xpY2spPVwib25CcmFuY2hDbGljayhicmFuY2gpXCI+XG4gICAgICAgIDwhLS0gQ2hlY2ttYXJrIGljb24gZm9yIGV4ZWN1dGVkIGJyYW5jaCAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImJyYW5jaC5leGVjdXRlZFwiPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAzTDQuNSA4LjVMMiA2XCIgc3Ryb2tlPVwiIzAwODIzNlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuPnt7IGJyYW5jaC50eXBlLnRvVXBwZXJDYXNlKCkgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBFeHBhbmRlZCBDb250ZW50IC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXNFeHBhbmRlZCAmJiAhaXNMb2FkaW5nXCI+XG5cbiAgICA8IS0tIEV4ZWN1dGVkIEJyYW5jaCBTdWItc3RlcHMgLS0+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYnJhbmNoIG9mIGNvbmZpZy5icmFuY2hlc1wiPlxuICAgICAgPGRpdiAqbmdJZj1cImJyYW5jaC5leGVjdXRlZCAmJiBicmFuY2guc3ViU3RlcHNcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEgY3FhLXBiLTEgY3FhLW1sLTlcIiBzdHlsZT1cImJvcmRlci1ib3R0b206ICcxcHggc29saWQgI0YzRjRGNidcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBzdWJTdGVwIG9mIGJyYW5jaC5zdWJTdGVwc1wiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHktWzUuNXB4XSBjcWEtcHgtM1wiPlxuICAgICAgICAgIFxuICAgICAgICAgIDwhLS0gU3ViLXN0ZXAgU3RhdHVzIEljb24gLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3N1Y2Nlc3MnIHx8IHN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3Bhc3NlZCdcIiA+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLjkwMDUgNC45OTk5OUMxMS4xMjg5IDYuMTIwNjQgMTAuOTY2MiA3LjI4NTcxIDEwLjQzOTUgOC4zMDA4OUM5LjkxMjc5IDkuMzE2MDggOS4wNTQgMTAuMTIgOC4wMDYzMSAxMC41Nzg3QzYuOTU4NjIgMTEuMDM3MyA1Ljc4NTM2IDExLjEyMjkgNC42ODIyIDEwLjgyMTJDMy41NzkwNCAxMC41MTk1IDIuNjEyNjUgOS44NDg2OSAxLjk0NDE5IDguOTIwNzFDMS4yNzU3MyA3Ljk5MjcyIDAuOTQ1NjExIDYuODYzNjEgMS4wMDg4OCA1LjcyMTY5QzEuMDcyMTUgNC41Nzk3NiAxLjUyNDk5IDMuNDk0MDQgMi4yOTE4OCAyLjY0NTU4QzMuMDU4NzYgMS43OTcxMiA0LjA5MzM0IDEuMjM3MjEgNS4yMjMwOCAxLjA1OTIyQzYuMzUyODIgMC44ODEyMzMgNy41MDk0NCAxLjA5NTkyIDguNTAwMDUgMS42Njc0OVwiIHN0cm9rZT1cIiMyMkM1NUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00LjUgNS41TDYgN0wxMSAyXCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIEZhaWx1cmUgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWx1cmUnIHx8IHN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWxlZCdcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNy41IDQuNUw0LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA0LjVMNy41IDcuNVwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBQZW5kaW5nIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdwZW5kaW5nJ1wiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gUnVubmluZyAtIFNob3cgc3Bpbm5lciAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAncnVubmluZydcIj5cbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjcWEtYW5pbWF0ZS1zcGluIGNxYS10ZXh0LVsjM0I4MkY2XVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgb3BhY2l0eT1cIjAuMjVcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxQTUgNSAwIDAgMSAxMSA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gIFxuXG4gICAgICAgICAgPCEtLSBTdWItc3RlcCBEZXNjcmlwdGlvbiAtLT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxM3B4XSBjcWEtdGV4dC1bIzM2NDE1M11cIj5cbiAgICAgICAgICAgIHt7IGNvbmZpZy5zdGVwTnVtYmVyIH19Lnt7IGdldFN1YlN0ZXBJbmRleChicmFuY2guc3ViU3RlcHMsIHN1YlN0ZXApIH19LiA8c3BhbiBbaW5uZXJIVE1MXT1cInN1YlN0ZXAuZGVzY3JpcHRpb25cIj48L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgPCEtLSBTdWItc3RlcCBEdXJhdGlvbiAtLT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LW1ldGFkYXRhLWtleVwiPlxuICAgICAgICAgICAge3sgZm9ybWF0RHVyYXRpb24oc3ViU3RlcC5kdXJhdGlvbikgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFVuZXhlY3V0ZWQgQnJhbmNoIE1lc3NhZ2UgLS0+XG4gICAgPGRpdiAqbmdJZj1cImdldFVuZXhlY3V0ZWRCcmFuY2hlcygpLmxlbmd0aCA+IDAgJiYgZ2V0VW5leGVjdXRlZEJyYW5jaGVzKCkubGVuZ3RoIDwgMlwiIGNsYXNzPVwiY3FhLW1sLTlcIj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXB4LTMgY3FhLXB5LVsxMHB4XSBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctNCBjcWEtdGV4dC1bIzczNzM3M10gY3FhLWl0YWxpY1wiPlxuICAgICAgICB7eyBnZXRVbmV4ZWN1dGVkQnJhbmNoZXMoKT8uWzBdPy50eXBlPy50b1VwcGVyQ2FzZSgpIH19IGJyYW5jaCBub3QgZXhlY3V0ZWRcbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJnZXRVbmV4ZWN1dGVkQnJhbmNoZXMoKS5sZW5ndGggPiAxXCIgY2xhc3M9XCJjcWEtbWwtOVwiPlxuICAgICAgPHAgY2xhc3M9XCJjcWEtcHgtMyBjcWEtcHktWzEwcHhdIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy00IGNxYS10ZXh0LVsjNzM3MzczXSBjcWEtaXRhbGljXCI+XG4gICAgICAgIHt7IGdldFVuZXhlY3V0ZWRCcmFuY2hlcygpPy5bMF0/LnR5cGU/LnRvVXBwZXJDYXNlKCkgfX0gYW5kIHt7IGdldFVuZXhlY3V0ZWRCcmFuY2hlcygpPy5bMV0/LnR5cGU/LnRvVXBwZXJDYXNlKCkgfX0gYnJhbmNoZXMgbm90IGV4ZWN1dGVkXG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE5lc3RlZCBTdGVwcyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiaGFzQ2hpbGQgfHwgKGNvbmZpZy5uZXN0ZWRTdGVwcyAmJiBjb25maWcubmVzdGVkU3RlcHMubGVuZ3RoID4gMClcIiBjbGFzcz1cImNxYS1tbC05IGNxYS1wYi0xXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAnMXB4IHNvbGlkICNGM0Y0RjYnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM3MzczNzNdIGNxYS1weS1bMnB4XSBjcWEtcHgtM1wiPk5lc3RlZCBzdGVwczwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLXBsLVsxOHB4XVwiIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQzVDN0ZBO1wiPlxuICAgICAgICA8IS0tIExvYWRpbmcgaW5kaWNhdG9yIGZvciBuZXN0ZWQgc3RlcHMgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJoYXNDaGlsZCAmJiAoIWNvbmZpZy5uZXN0ZWRTdGVwcyB8fCBjb25maWcubmVzdGVkU3RlcHMubGVuZ3RoID09PSAwKSAmJiBpc1N0ZXBMb2FkaW5nKClcIiBcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXB5LTIgY3FhLXB4LTNcIj5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3FhLWFuaW1hdGUtc3BpbiBjcWEtdGV4dC1bIzNCODJGNl1cIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiN1wiIGN5PVwiN1wiIHI9XCI2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBvcGFjaXR5PVwiMC4yNVwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyAxQTYgNiAwIDAgMSAxMyA3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzExcHhdIGNxYS1sZWFkaW5nLVsxM3B4XSBjcWEtdGV4dC1bIzczNzM3M11cIj5Mb2FkaW5nIG5lc3RlZCBzdGVwcy4uLjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RlcCBvZiBjb25maWcubmVzdGVkU3RlcHNcIj5cbiAgICAgICAgICA8IS0tIFdyYXBwZXIgdG8gc2hvdyBza2VsZXRvbiB3aGlsZSBzdGVwLXJlbmRlcmVyIGlzIGxvYWRpbmcgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1zdGVwLXJlbmRlcmVyLXdyYXBwZXJcIiBbY2xhc3MubG9hZGVkXT1cIiFpc05lc3RlZFN0ZXBMb2FkaW5nKHN0ZXApXCI+XG4gICAgICAgICAgICA8IS0tIExvYWRpbmcgc2tlbGV0b24gb3ZlcmxheSAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc05lc3RlZFN0ZXBMb2FkaW5nKHN0ZXApXCIgY2xhc3M9XCJjcWEtc3RlcC1za2VsZXRvbi1vdmVybGF5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc3RlcC1za2VsZXRvbiBjcWEtbXgtMyBjcWEtbXktMVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFVzZSBzdGVwLXJlbmRlcmVyIGZvciBhbGwgbmVzdGVkIHN0ZXBzIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyAtLT5cbiAgICAgICAgICAgIDwhLS0gVGhlIHN0ZXAtcmVuZGVyZXIgd2lsbCBkeW5hbWljYWxseSBsb2FkIHRoZSBhcHByb3ByaWF0ZSBjb21wb25lbnQgYW5kIHBhc3MgaGFuZGxlcnMgLS0+XG4gICAgICAgICAgICA8Y3FhLXN0ZXAtcmVuZGVyZXIgXG4gICAgICAgICAgICAgIFtzdGVwXT1cInN0ZXBcIlxuICAgICAgICAgICAgICBbb25Db25kaXRpb25CcmFuY2hDbGlja0hhbmRsZXJdPVwib25Db25kaXRpb25CcmFuY2hDbGlja0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25FeHBhbmRIYW5kbGVyXT1cIm9uRXhwYW5kSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtnZXRDb25kaXRpb25CcmFuY2hlc0hhbmRsZXJdPVwiZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2lzU3RlcExvYWRpbmdIYW5kbGVyXT1cImlzU3RlcExvYWRpbmdIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2lzU3RlcEV4cGFuZGVkSGFuZGxlcl09XCJpc1N0ZXBFeHBhbmRlZEhhbmRsZXJcIlxuICAgICAgICAgICAgICBbY29udmVydE1zVG9TZWNvbmRzSGFuZGxlcl09XCJjb252ZXJ0TXNUb1NlY29uZHNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2Zvcm1hdEZhaWx1cmVEZXRhaWxzSGFuZGxlcl09XCJmb3JtYXRGYWlsdXJlRGV0YWlsc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbZ2V0U2VsZkhlYWxBbmFseXNpc0hhbmRsZXJdPVwiZ2V0U2VsZkhlYWxBbmFseXNpc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbZ2V0TG9vcEl0ZXJhdGlvbnNIYW5kbGVyXT1cImdldExvb3BJdGVyYXRpb25zSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtnZXRBcGlBc3NlcnRpb25zSGFuZGxlcl09XCJnZXRBcGlBc3NlcnRpb25zSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtmb3JtYXRBY3Rpb25zSGFuZGxlcl09XCJmb3JtYXRBY3Rpb25zSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvblZpZXdBbGxJdGVyYXRpb25zSGFuZGxlcl09XCJvblZpZXdBbGxJdGVyYXRpb25zSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvbk1ha2VDdXJyZW50QmFzZWxpbmVIYW5kbGVyXT1cIm9uTWFrZUN1cnJlbnRCYXNlbGluZUhhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25VcGxvYWRCYXNlbGluZUhhbmRsZXJdPVwib25VcGxvYWRCYXNlbGluZUhhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25BbmFseXplSGFuZGxlcl09XCJvbkFuYWx5emVIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uVmlld0Z1bGxMb2dzSGFuZGxlcl09XCJvblZpZXdGdWxsTG9nc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25TZWxmSGVhbEFjdGlvbkhhbmRsZXJdPVwib25TZWxmSGVhbEFjdGlvbkhhbmRsZXJcIlxuICAgICAgICAgICAgICBbaXNVcGxvYWRpbmdCYXNlbGluZV09XCJpc1VwbG9hZGluZ0Jhc2VsaW5lXCJcbiAgICAgICAgICAgICAgW2lzTWFraW5nQ3VycmVudEJhc2VsaW5lXT1cImlzTWFraW5nQ3VycmVudEJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkSXRlcmF0aW9uSWRdPVwic3RlcD8uc2VsZWN0ZWRJdGVyYXRpb25JZCB8fCAnJ1wiXG4gICAgICAgICAgICAgIFtpc0xpdmVdPVwiaXNMaXZlXCJcbiAgICAgICAgICAgICAgKGNvbXBvbmVudFJlYWR5KT1cIm1hcmtTdGVwTG9hZGVkKHN0ZXApXCI+XG4gICAgICAgICAgICA8L2NxYS1zdGVwLXJlbmRlcmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFNlbGYgSGVhbCBBbmFseXNpcyAtLT5cbiAgICA8Y3FhLXNlbGYtaGVhbC1hbmFseXNpcyBcbiAgICAgICpuZ0lmPVwic2VsZkhlYWxBbmFseXNpc1wiIFxuICAgICAgW29yaWdpbmFsTG9jYXRvcl09XCJzZWxmSGVhbEFuYWx5c2lzLm9yaWdpbmFsTG9jYXRvclwiXG4gICAgICBbaGVhbGVkTG9jYXRvcl09XCJzZWxmSGVhbEFuYWx5c2lzLmhlYWxlZExvY2F0b3JcIlxuICAgICAgW2NvbmZpZGVuY2VdPVwic2VsZkhlYWxBbmFseXNpcy5jb25maWRlbmNlXCJcbiAgICAgIFtoZWFsTWV0aG9kXT1cInNlbGZIZWFsQW5hbHlzaXMuaGVhbE1ldGhvZFwiXG4gICAgICBbaXNMb2FkaW5nQWNjZXB0XT1cImdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIgPyBnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyKCkuaXNMb2FkaW5nQWNjZXB0IDogZmFsc2VcIlxuICAgICAgW2lzTG9hZGluZ01vZGlmeUFjY2VwdF09XCJnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyID8gZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcigpLmlzTG9hZGluZ01vZGlmeUFjY2VwdCA6IGZhbHNlXCJcbiAgICAgIChhY3Rpb24pPVwib25TZWxmSGVhbEFjdGlvbigkZXZlbnQpXCI+XG4gICAgPC9jcWEtc2VsZi1oZWFsLWFuYWx5c2lzPlxuXG4gICAgPCEtLSBUaW1pbmcgQnJlYWtkb3duIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWcudGltaW5nQnJlYWtkb3duXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWVuZCBjcWEtZ2FwLTUgY3FhLXB0LTEuNSBjcWEtcHgtNCBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzlDQTNBRl1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICA8ZGl2Pjxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cbiAgICAgICAgPHNwYW4+VGltaW5nIGJyZWFrZG93bjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1kaWFsb2ctbXV0ZWQgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBBcHAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1ncmF5LTcwMFwiPnt7IGZvcm1hdER1cmF0aW9uKGNvbmZpZy50aW1pbmdCcmVha2Rvd24uYXBwKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+PHN2ZyB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMSAxMVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNLTMuODE0N2UtMDYgMTAuMzJWLTcuMTUyNTZlLTA3SDAuOTU5OTk2VjEwLjMySC0zLjgxNDdlLTA2WlwiIGZpbGw9XCIjRTVFN0VCXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIFRvb2wgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1ncmF5LTcwMFwiPnt7IGZvcm1hdER1cmF0aW9uKGNvbmZpZy50aW1pbmdCcmVha2Rvd24udG9vbCkgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFZpZXcgTW9yZSBGYWlsZWQgU3RlcCBCdXR0b24gLSBzaG93biB3aGVuIGV4cGFuZGVkIGFuZCBmYWlsdXJlIGRldGFpbHMgZXhpc3QgLS0+XG4gIDxkaXYgKm5nSWY9XCJzaG93Vmlld01vcmVCdXR0b24gJiYgIWlzTG9hZGluZ1wiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB4LTRcIj5cbiAgICA8Y3FhLXZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b25cbiAgICAgIFt0aW1pbmdCcmVha2Rvd25dPVwidGltaW5nQnJlYWtkb3duXCJcbiAgICAgIFtzdWJTdGVwc109XCJnZXRTdWJTdGVwc0ZvckZhaWxlZFN0ZXAoKVwiXG4gICAgICBbZmFpbHVyZURldGFpbHNdPVwiZmFpbHVyZURldGFpbHNcIlxuICAgICAgW2lzRXhwYW5kZWRdPVwic2hvd0ZhaWxlZFN0ZXBEZXRhaWxzXCJcbiAgICAgICh2aWV3TW9yZUNsaWNrKT1cIm9uVmlld01vcmVGYWlsZWRTdGVwQ2xpY2soJGV2ZW50KVwiPlxuICAgIDwvY3FhLXZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVXBkYXRlZCBGYWlsZWQgU3RlcCBDb21wb25lbnQgLSBzaG93biB3aGVuIGJ1dHRvbiBpcyBjbGlja2VkIC0tPlxuICA8ZGl2ICpuZ0lmPVwic2hvd1ZpZXdNb3JlQnV0dG9uICYmIHNob3dGYWlsZWRTdGVwRGV0YWlscyAmJiBmYWlsdXJlRGV0YWlsc1wiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB4LTRcIj5cbiAgICA8Y3FhLXVwZGF0ZWQtZmFpbGVkLXN0ZXBcbiAgICAgIFt0aW1pbmdCcmVha2Rvd25dPVwidGltaW5nQnJlYWtkb3duXCJcbiAgICAgIFt0ZXN0U3RlcFJlc3VsdElkXT1cInRlc3RTdGVwUmVzdWx0SWRcIlxuICAgICAgW2V4cGFuZGVkXT1cInRydWVcIlxuICAgICAgW3N1YlN0ZXBzXT1cImdldFN1YlN0ZXBzRm9yRmFpbGVkU3RlcCgpXCJcbiAgICAgIFtmYWlsdXJlRGV0YWlsc109XCJmYWlsdXJlRGV0YWlsc1wiXG4gICAgICBbcmVhc29uaW5nXT1cInJlYXNvbmluZ1wiXG4gICAgICBbY29uZmlkZW5jZV09XCJjb25maWRlbmNlXCJcbiAgICAgIFtpc1VwbG9hZGluZ0Jhc2VsaW5lXT1cImlzVXBsb2FkaW5nQmFzZWxpbmVcIlxuICAgICAgW2lzTWFraW5nQ3VycmVudEJhc2VsaW5lXT1cImlzTWFraW5nQ3VycmVudEJhc2VsaW5lXCJcbiAgICAgIFtpc0xpdmVdPVwiaXNMaXZlXCJcbiAgICAgIChtYWtlQ3VycmVudEJhc2VsaW5lKT1cIm9uTWFrZUN1cnJlbnRCYXNlbGluZSgkZXZlbnQpXCJcbiAgICAgICh1cGxvYWRCYXNlbGluZSk9XCJvblVwbG9hZEJhc2VsaW5lKCRldmVudClcIlxuICAgICAgKGFuYWx5emUpPVwib25BbmFseXplKClcIlxuICAgICAgKHZpZXdGdWxsTG9ncyk9XCJvblZpZXdGdWxsTG9ncygpXCI+XG4gICAgPC9jcWEtdXBkYXRlZC1mYWlsZWQtc3RlcD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
441
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9leGVjdXRpb24tc2NyZWVuL2NvbmRpdGlvbi1zdGVwL2NvbmRpdGlvbi1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9jb25kaXRpb24tc3RlcC9jb25kaXRpb24tc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFFNUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFRM0QsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGlCQUFpQjtJQStEM0QsWUFBb0IsR0FBc0I7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUFEVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBEakMsYUFBUSxHQUFzQixFQUFFLENBQUM7UUFNakMsZ0JBQVcsR0FBMkIsRUFBRSxDQUFDO1FBMkJ4Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUN6RCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNyQyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsNEJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDdkIsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN6RCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBb0Qs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QUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25kaXRpb25TdGVwQ29uZmlnLCBDb25kaXRpb25CcmFuY2gsIFN0ZXBTdGF0dXMsIFRpbWluZ0JyZWFrZG93biwgRmFpbHVyZURldGFpbHMsIFN1YlN0ZXAsIFNlbGZIZWFsQW5hbHlzaXNEYXRhLCBTZWxmSGVhbEFjdGlvbiwgRXhlY3V0aW9uU3RlcENvbmZpZyB9IGZyb20gJy4uL2V4ZWN1dGlvbi1zdGVwLm1vZGVscyc7XG5pbXBvcnQgeyBCYXNlU3RlcENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50LCB1cGxvYWRCYXNlbGluZUV2ZW50IH0gZnJvbSAnLi4vdmlzdWFsLWNvbXBhcmlzb24vdmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWNvbmRpdGlvbi1zdGVwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmRpdGlvbi1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9XG59KVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvblN0ZXBDb21wb25lbnQgZXh0ZW5kcyBCYXNlU3RlcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLy8gSW5kaXZpZHVhbCBpbnB1dHNcbiAgQElucHV0KCkgaWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRlc3RTdGVwUmVzdWx0SWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0ZXBOdW1iZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlITogc3RyaW5nO1xuICBASW5wdXQoKSBzdGF0dXMhOiBTdGVwU3RhdHVzO1xuICBASW5wdXQoKSBkdXJhdGlvbiE6IG51bWJlcjtcbiAgQElucHV0KCkgdGltaW5nQnJlYWtkb3duPzogVGltaW5nQnJlYWtkb3duO1xuICBASW5wdXQoKSBleHBhbmRlZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvbmRpdGlvblRleHQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJyYW5jaGVzOiBDb25kaXRpb25CcmFuY2hbXSA9IFtdO1xuICBASW5wdXQoKSBmYWlsdXJlRGV0YWlscz86IEZhaWx1cmVEZXRhaWxzO1xuICBASW5wdXQoKSByZWFzb25pbmc/OiBzdHJpbmdbXTtcbiAgQElucHV0KCkgY29uZmlkZW5jZT86IHN0cmluZztcbiAgQElucHV0KCkgc2VsZkhlYWxBbmFseXNpcz86IFNlbGZIZWFsQW5hbHlzaXNEYXRhO1xuICBASW5wdXQoKSBpc0xvYWRpbmc/OiBib29sZWFuO1xuICBASW5wdXQoKSBuZXN0ZWRTdGVwcz86IEV4ZWN1dGlvblN0ZXBDb25maWdbXSA9IFtdO1xuICBASW5wdXQoKSBoYXNDaGlsZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlmQ2hpbGQ/OiBhbnk7IC8vIGlmQ2hpbGQgZGF0YSBmcm9tIEFQSSAtIGlmIG51bGwgYW5kIGhhc0NoaWxkIGlzIHRydWUsIHdlIG5lZWQgdG8gY2FsbCBBUElcbiAgQElucHV0KCkgYWN0aXZlQnJhbmNoU3RlcElkPzogc3RyaW5nIHwgbnVtYmVyOyAvLyBJRCBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZS9zZWxlY3RlZCBicmFuY2ggc3RlcFxuXG4gIC8vIEhhbmRsZXIgZnVuY3Rpb24gdG8gcGFzcyBkb3duIHRvIG5lc3RlZCBjaGlsZCBzdGVwIGdyb3VwcyBmb3IgcmVjdXJzaXZlIGV4cGFuc2lvblxuICBASW5wdXQoKSBvbkV4cGFuZEhhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gdm9pZDtcblxuICAvLyBIYW5kbGVyIGZ1bmN0aW9ucyBmb3IgY29uZGl0aW9uIHN0ZXBzXG4gIEBJbnB1dCgpIGdldENvbmRpdGlvbkJyYW5jaGVzSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBDb25kaXRpb25CcmFuY2hbXTtcbiAgQElucHV0KCkgaXNTdGVwTG9hZGluZ0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYm9vbGVhbjtcbiAgQElucHV0KCkgaXNTdGVwRXhwYW5kZWRIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvbnZlcnRNc1RvU2Vjb25kc0hhbmRsZXI/OiAoZHVyYXRpb246IG51bWJlcikgPT4gbnVtYmVyO1xuICBASW5wdXQoKSBmb3JtYXRGYWlsdXJlRGV0YWlsc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYW55O1xuICBASW5wdXQoKSBnZXRTZWxmSGVhbEFuYWx5c2lzSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBhbnk7XG4gIEBJbnB1dCgpIG9uTWFrZUN1cnJlbnRCYXNlbGluZUhhbmRsZXI/OiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25VcGxvYWRCYXNlbGluZUhhbmRsZXI/OiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25BbmFseXplSGFuZGxlcj86ICgpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIG9uVmlld0Z1bGxMb2dzSGFuZGxlcj86ICgpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIG9uU2VsZkhlYWxBY3Rpb25IYW5kbGVyPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIGdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXI/OiAoKSA9PiB7IGlzTG9hZGluZ0FjY2VwdDogYm9vbGVhbjsgaXNMb2FkaW5nTW9kaWZ5QWNjZXB0OiBib29sZWFuIH07XG4gIEBJbnB1dCgpIGdldExvb3BJdGVyYXRpb25zSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBhbnlbXTtcbiAgQElucHV0KCkgZ2V0QXBpQXNzZXJ0aW9uc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYW55W107XG4gIEBJbnB1dCgpIGZvcm1hdEFjdGlvbnNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGFueVtdO1xuICBASW5wdXQoKSBvblZpZXdBbGxJdGVyYXRpb25zSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiB2b2lkO1xuICBASW5wdXQoKSBvbkNvbmRpdGlvbkJyYW5jaENsaWNrSGFuZGxlcj86IChzdGVwOiBhbnksIGJyYW5jaDogYW55KSA9PiB2b2lkO1xuXG4gIEBPdXRwdXQoKSBvbkJyYW5jaENsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbmRpdGlvbkJyYW5jaD4oKTtcbiAgQE91dHB1dCgpIG9uRXhwYW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBASW5wdXQoKSBpc1VwbG9hZGluZ0Jhc2VsaW5lID0ge307XG4gIEBJbnB1dCgpIGlzTWFraW5nQ3VycmVudEJhc2VsaW5lID0ge307XG4gIEBJbnB1dCgpIGlzTGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgbWFrZUN1cnJlbnRCYXNlbGluZSA9IG5ldyBFdmVudEVtaXR0ZXI8bWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgdXBsb2FkQmFzZWxpbmUgPSBuZXcgRXZlbnRFbWl0dGVyPHVwbG9hZEJhc2VsaW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBhbmFseXplID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlld0Z1bGxMb2dzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2VsZkhlYWxBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgdHlwZTogU2VsZkhlYWxBY3Rpb247IGhlYWxlZExvY2F0b3I6IHN0cmluZzsgfT4oKTtcblxuICBzaG93RmFpbGVkU3RlcERldGFpbHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBDb25maWcgcHJvcGVydHkgZm9yIGJhc2UgY2xhc3MgLSBidWlsdCBmcm9tIGluZGl2aWR1YWwgaW5wdXRzIGluIG5nT25Jbml0XG4gIG92ZXJyaWRlIGNvbmZpZyE6IENvbmRpdGlvblN0ZXBDb25maWc7XG4gIFxuICAvLyBUcmFjayB3aGljaCBzdGVwcyBhcmUgc3RpbGwgbG9hZGluZyB0byBzaG93IHNrZWxldG9uXG4gIGxvYWRpbmdTdGVwczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEFsd2F5cyBkZXRlcm1pbmUgYWN0aXZlIGJyYW5jaCBmcm9tIGV4ZWN1dGVkIGJyYW5jaCAoZm9yIGxpdmUgbW9kZSlcbiAgICBpZiAodGhpcy5pc0xpdmUpIHtcbiAgICAgIHRoaXMuZGV0ZXJtaW5lQWN0aXZlQnJhbmNoKCk7XG4gICAgfVxuXG4gICAgLy8gRmlsdGVyIG5lc3RlZCBzdGVwcyBiYXNlZCBvbiBhY3RpdmUgYnJhbmNoIChkZXJpdmVkIGZyb20gZXhlY3V0ZWQgYnJhbmNoKVxuICAgIGNvbnN0IHN0ZXBzVG9Vc2UgPSB0aGlzLm5lc3RlZFN0ZXBzIHx8IFtdO1xuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHRlc3RTdGVwUmVzdWx0SWQ6IHRoaXMudGVzdFN0ZXBSZXN1bHRJZCxcbiAgICAgIHN0ZXBOdW1iZXI6IHRoaXMuc3RlcE51bWJlcixcbiAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICAgIGR1cmF0aW9uOiB0aGlzLmR1cmF0aW9uLFxuICAgICAgdHlwZTogJ2NvbmRpdGlvbicsXG4gICAgICBjb25kaXRpb25UZXh0OiB0aGlzLmNvbmRpdGlvblRleHQsXG4gICAgICBicmFuY2hlczogdGhpcy5icmFuY2hlcyxcbiAgICAgIHRpbWluZ0JyZWFrZG93bjogdGhpcy50aW1pbmdCcmVha2Rvd24sXG4gICAgICBleHBhbmRlZDogdGhpcy5leHBhbmRlZCxcbiAgICAgIG5lc3RlZFN0ZXBzOiBzdGVwc1RvVXNlLFxuICAgIH0gYXMgQ29uZGl0aW9uU3RlcENvbmZpZztcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgXG4gICAgLy8gSW5pdGlhbGl6ZSBsb2FkaW5nIHN0YXRlIGlmIGFscmVhZHkgZXhwYW5kZWRcbiAgICBpZiAodGhpcy5pc0V4cGFuZGVkICYmIHRoaXMubmVzdGVkU3RlcHMgJiYgdGhpcy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgICAgdGhpcy5uZXN0ZWRTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICAgICAgaWYgKHN0ZXBJZCkge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmFkZChTdHJpbmcoc3RlcElkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIE9ubHkgcHJvY2VzcyBjaGFuZ2VzIGlmIGNvbmZpZyBoYXMgYmVlbiBpbml0aWFsaXplZCAobmdPbkluaXQgaGFzIGJlZW4gY2FsbGVkKVxuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGlmQ2hpbGQgaWYgaXQncyBwcm92aWRlZCBhbmQgYnJhbmNoZXMgbmVlZCB0byBiZSB1cGRhdGVkXG4gICAgaWYgKGNoYW5nZXNbJ2lmQ2hpbGQnXSAmJiB0aGlzLmlmQ2hpbGQgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmlmQ2hpbGQpICYmIHRoaXMuaWZDaGlsZC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBQcm9jZXNzIGlmQ2hpbGQgdG8gdXBkYXRlIGJyYW5jaGVzXG4gICAgICAvLyBUaGlzIGVuc3VyZXMgYnJhbmNoZXMgcmVmbGVjdCB0aGUgZXhlY3V0ZWQgY29uZGl0aW9uIGZyb20gaWZDaGlsZFxuICAgICAgaWYgKHRoaXMuZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyKSB7XG4gICAgICAgIC8vIFVzZSBoYW5kbGVyIHRvIGdldCB1cGRhdGVkIGJyYW5jaGVzIGZyb20gaWZDaGlsZFxuICAgICAgICBjb25zdCBzdGVwV2l0aElmQ2hpbGQgPSB7XG4gICAgICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICAgICAgaWZDaGlsZDogdGhpcy5pZkNoaWxkXG4gICAgICAgIH0gYXMgYW55O1xuICAgICAgICBjb25zdCB1cGRhdGVkQnJhbmNoZXMgPSB0aGlzLmdldENvbmRpdGlvbkJyYW5jaGVzSGFuZGxlcihzdGVwV2l0aElmQ2hpbGQpO1xuICAgICAgICBpZiAodXBkYXRlZEJyYW5jaGVzICYmIHVwZGF0ZWRCcmFuY2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5icmFuY2hlcyA9IHVwZGF0ZWRCcmFuY2hlcztcbiAgICAgICAgICB0aGlzLmNvbmZpZy5icmFuY2hlcyA9IHVwZGF0ZWRCcmFuY2hlcy5tYXAoKGJyYW5jaDogYW55KSA9PiAoe1xuICAgICAgICAgICAgLi4uYnJhbmNoLFxuICAgICAgICAgICAgc3ViU3RlcHM6IGJyYW5jaC5zdWJTdGVwcyA/IFsuLi5icmFuY2guc3ViU3RlcHNdIDogW11cbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0xpdmUpIHtcbiAgICAgIC8vIFVwZGF0ZSBicmFuY2hlcyBpZiBjaGFuZ2VkIC0gY3JlYXRlIGRlZXAgY29weSB0byBlbnN1cmUgY2hhbmdlIGRldGVjdGlvbiB3b3Jrc1xuICAgICAgaWYgKGNoYW5nZXNbJ2JyYW5jaGVzJ10gJiYgdGhpcy5icmFuY2hlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIGRlZXAgY29weSB0byBlbnN1cmUgQW5ndWxhciBjaGFuZ2UgZGV0ZWN0aW9uIHBpY2tzIHVwIG5lc3RlZCBjaGFuZ2VzXG4gICAgICAgIHRoaXMuY29uZmlnLmJyYW5jaGVzID0gdGhpcy5icmFuY2hlcy5tYXAoKGJyYW5jaDogYW55KSA9PiAoe1xuICAgICAgICAgIC4uLmJyYW5jaCxcbiAgICAgICAgICBzdWJTdGVwczogYnJhbmNoLnN1YlN0ZXBzID8gWy4uLmJyYW5jaC5zdWJTdGVwc10gOiBbXVxuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYnJhbmNoZXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbmZpZy5icmFuY2hlcyAhPT0gdGhpcy5icmFuY2hlcykge1xuICAgICAgICAvLyBGYWxsYmFjazogY2hlY2sgaWYgYnJhbmNoZXMgY2hhbmdlZCBldmVuIGlmIG5nT25DaGFuZ2VzIGRpZG4ndCBkZXRlY3QgaXRcbiAgICAgICAgLy8gVGhpcyBoYW5kbGVzIGNhc2VzIHdoZXJlIG5lc3RlZCBzdWJTdGVwcyB3ZXJlIHVwZGF0ZWRcbiAgICAgICAgY29uc3QgY3VycmVudFN1YlN0ZXBzQ291bnQgPSAodGhpcy5jb25maWcuYnJhbmNoZXMgfHwgW10pLnJlZHVjZSgoc3VtOiBudW1iZXIsIGI6IGFueSkgPT4gc3VtICsgKGIuc3ViU3RlcHM/Lmxlbmd0aCB8fCAwKSwgMCk7XG4gICAgICAgIGNvbnN0IG5ld1N1YlN0ZXBzQ291bnQgPSAodGhpcy5icmFuY2hlcyB8fCBbXSkucmVkdWNlKChzdW06IG51bWJlciwgYjogYW55KSA9PiBzdW0gKyAoYi5zdWJTdGVwcz8ubGVuZ3RoIHx8IDApLCAwKTtcblxuICAgICAgICBpZiAoY3VycmVudFN1YlN0ZXBzQ291bnQgIT09IG5ld1N1YlN0ZXBzQ291bnQgfHxcbiAgICAgICAgICB0aGlzLmNvbmZpZy5icmFuY2hlcyAhPT0gdGhpcy5icmFuY2hlcykge1xuICAgICAgICAgIHRoaXMuY29uZmlnLmJyYW5jaGVzID0gdGhpcy5icmFuY2hlcy5tYXAoKGJyYW5jaDogYW55KSA9PiAoe1xuICAgICAgICAgICAgLi4uYnJhbmNoLFxuICAgICAgICAgICAgc3ViU3RlcHM6IGJyYW5jaC5zdWJTdGVwcyA/IFsuLi5icmFuY2guc3ViU3RlcHNdIDogW11cbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIG90aGVyIHByb3BlcnRpZXMgdGhhdCBtaWdodCBjaGFuZ2VcbiAgICAgIGlmIChjaGFuZ2VzWydzdGF0dXMnXSAmJiB0aGlzLnN0YXR1cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnN0YXR1cyA9IHRoaXMuc3RhdHVzO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlc1snZHVyYXRpb24nXSAmJiB0aGlzLmR1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5jb25maWcuZHVyYXRpb24gPSB0aGlzLmR1cmF0aW9uO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlc1snZXhwYW5kZWQnXSAmJiB0aGlzLmV4cGFuZGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5jb25maWcuZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlc1snY29uZGl0aW9uVGV4dCddICYmIHRoaXMuY29uZGl0aW9uVGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmNvbmRpdGlvblRleHQgPSB0aGlzLmNvbmRpdGlvblRleHQ7XG4gICAgICB9XG4gICAgICAvLyBVcGRhdGUgYWN0aXZlIGJyYW5jaCBpZiBjaGFuZ2VkIC0gYWx3YXlzIGRlcml2ZSBmcm9tIGV4ZWN1dGVkIGJyYW5jaFxuICAgICAgaWYgKGNoYW5nZXNbJ2FjdGl2ZUJyYW5jaFN0ZXBJZCddIHx8IGNoYW5nZXNbJ2JyYW5jaGVzJ10pIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgZXhlY3V0ZWQgYnJhbmNoIGNoYW5nZWRcbiAgICAgICAgY29uc3QgZXhlY3V0ZWRCcmFuY2hDaGFuZ2VkID0gY2hhbmdlc1snYnJhbmNoZXMnXSAmJiBcbiAgICAgICAgICBjaGFuZ2VzWydicmFuY2hlcyddLnByZXZpb3VzVmFsdWUgJiYgXG4gICAgICAgICAgY2hhbmdlc1snYnJhbmNoZXMnXS5jdXJyZW50VmFsdWUgJiZcbiAgICAgICAgICBjaGFuZ2VzWydicmFuY2hlcyddLnByZXZpb3VzVmFsdWUuc29tZSgocHJldkJyYW5jaDogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50QnJhbmNoID0gY2hhbmdlc1snYnJhbmNoZXMnXS5jdXJyZW50VmFsdWVbaW5kZXhdO1xuICAgICAgICAgICAgcmV0dXJuIHByZXZCcmFuY2g/LmV4ZWN1dGVkICE9PSBjdXJyZW50QnJhbmNoPy5leGVjdXRlZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIC8vIEFsd2F5cyBkZXRlcm1pbmUgYWN0aXZlIGJyYW5jaCBmcm9tIGV4ZWN1dGVkIGJyYW5jaFxuICAgICAgICB0aGlzLmRldGVybWluZUFjdGl2ZUJyYW5jaCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBGaWx0ZXIgbmVzdGVkIHN0ZXBzIGJhc2VkIG9uIGFjdGl2ZSBicmFuY2hcbiAgICAgIGlmIChjaGFuZ2VzWyduZXN0ZWRTdGVwcyddIHx8IGNoYW5nZXNbJ2FjdGl2ZUJyYW5jaFN0ZXBJZCddKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzID0gdGhpcy5uZXN0ZWRTdGVwcztcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZXNbJ2JyYW5jaGVzJ10pIHtcbiAgICAgICAgdGhpcy5jb25maWcuYnJhbmNoZXMgPSB0aGlzLmJyYW5jaGVzO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgd2hlbiBuZXN0ZWQgc3RlcHMgYXJlIGFkZGVkIGFuZCBzdGVwIGlzIGV4cGFuZGVkXG4gICAgLy8gaWYgKGNoYW5nZXNbJ25lc3RlZFN0ZXBzJ10gJiYgdGhpcy5pc0V4cGFuZGVkICYmIHRoaXMubmVzdGVkU3RlcHMgJiYgdGhpcy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBjb25zb2xlLmxvZyhcIk5FU1RFRCBTVEVQU1wiLCB0aGlzLmxvYWRpbmdTdGVwcylcbiAgICAvLyAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgLy8gICB0aGlzLm5lc3RlZFN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgIC8vICAgICBpZiAoc3RlcElkKSB7XG4gICAgLy8gICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuYWRkKFN0cmluZyhzdGVwSWQpKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfSk7XG4gICAgLy8gICBjb25zb2xlLmxvZyhcIk5FU1RFRCBTVEVQU1wiLCB0aGlzLmxvYWRpbmdTdGVwcylcbiAgICAvLyB9XG4gICAgXG4gICAgLy8gSW5pdGlhbGl6ZSBsb2FkaW5nIHN0YXRlIGlmIGFscmVhZHkgZXhwYW5kZWQgd2hlbiBjb21wb25lbnQgaW5pdGlhbGl6ZXNcbiAgICBpZiAoY2hhbmdlc1snZXhwYW5kZWQnXSAmJiB0aGlzLmlzRXhwYW5kZWQgJiYgdGhpcy5uZXN0ZWRTdGVwcyAmJiB0aGlzLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgICB0aGlzLm5lc3RlZFN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgICAgICBpZiAoc3RlcElkKSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuYWRkKFN0cmluZyhzdGVwSWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGNvbnN0IHdhc0V4cGFuZGVkID0gdGhpcy5pc0V4cGFuZGVkO1xuICAgIHN1cGVyLnRvZ2dsZSgpO1xuICAgIGlmICghd2FzRXhwYW5kZWQgJiYgdGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICB0aGlzLm9uRXhwYW5kLmVtaXQoKTtcbiAgICAgIC8vIEFsd2F5cyBjYWxsIGNoaWxkcmVuIEFQSSBpZiBoYXNDaGlsZCBpcyB0cnVlIChsaWtlIG90aGVyIHN0ZXAgdHlwZXMpXG4gICAgICAvLyBJZiBpZkNoaWxkIGV4aXN0cyBhbmQgaGFzIGFuIGV4ZWN1dGVkIGNvbmRpdGlvbiAocmVzdWx0OiBcIlNVQ0NFU1NcIiksIHVzZSB0aGF0IGNvbmRpdGlvbidzIHRlc3RTdGVwUmVzdWx0SWRcbiAgICAgIGlmICh0aGlzLm9uRXhwYW5kSGFuZGxlciAmJiB0aGlzLmNvbmZpZyAmJiB0aGlzLmhhc0NoaWxkKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ1dpdGhOZXN0ZWQgPSB0aGlzLmNvbmZpZyBhcyBDb25kaXRpb25TdGVwQ29uZmlnO1xuXG4gICAgICAgIC8vIEZpbmQgdGhlIGV4ZWN1dGVkIGNvbmRpdGlvbiBmcm9tIGlmQ2hpbGQgKHRoZSBvbmUgd2l0aCByZXN1bHQ6IFwiU1VDQ0VTU1wiKVxuICAgICAgICBsZXQgZXhlY3V0ZWRDb25kaXRpb25UZXN0U3RlcFJlc3VsdElkID0gdGhpcy50ZXN0U3RlcFJlc3VsdElkOyAvLyBEZWZhdWx0IHRvIHBhcmVudCdzIElEXG4gICAgICAgIGxldCBleGVjdXRlZENvbmRpdGlvbkhhc0NoaWxkID0gdGhpcy5oYXNDaGlsZDtcblxuICAgICAgICBpZiAodGhpcy5pZkNoaWxkICYmIEFycmF5LmlzQXJyYXkodGhpcy5pZkNoaWxkKSAmJiB0aGlzLmlmQ2hpbGQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGV4ZWN1dGVkQ29uZGl0aW9uID0gdGhpcy5pZkNoaWxkLmZpbmQoKGNvbmRpdGlvbjogYW55KSA9PlxuICAgICAgICAgICAgY29uZGl0aW9uLnJlc3VsdCA9PT0gJ1NVQ0NFU1MnIHx8IGNvbmRpdGlvbi5yZXN1bHQgPT09ICdTVUNDRVNTJ1xuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoZXhlY3V0ZWRDb25kaXRpb24gJiYgZXhlY3V0ZWRDb25kaXRpb24udGVzdFN0ZXBSZXN1bHRJZCkge1xuICAgICAgICAgICAgLy8gVXNlIHRoZSBleGVjdXRlZCBjb25kaXRpb24ncyB0ZXN0U3RlcFJlc3VsdElkIGFuZCBoYXNDaGlsZFxuICAgICAgICAgICAgZXhlY3V0ZWRDb25kaXRpb25UZXN0U3RlcFJlc3VsdElkID0gZXhlY3V0ZWRDb25kaXRpb24udGVzdFN0ZXBSZXN1bHRJZDtcbiAgICAgICAgICAgIGV4ZWN1dGVkQ29uZGl0aW9uSGFzQ2hpbGQgPSBleGVjdXRlZENvbmRpdGlvbi5oYXNDaGlsZCB8fCBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgYSBzdGVwIGNvbmZpZyBvYmplY3QgZm9yIHRoZSBoYW5kbGVyXG4gICAgICAgIGNvbnN0IHN0ZXBDb25maWcgPSB7XG4gICAgICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICAgICAgaGFzQ2hpbGQ6IGV4ZWN1dGVkQ29uZGl0aW9uSGFzQ2hpbGQsXG4gICAgICAgICAgZXhwYW5kZWQ6IHRydWUsIC8vIEVuc3VyZSBleHBhbmRlZCBpcyBzZXRcbiAgICAgICAgICB0ZXN0U3RlcFR5cGU6ICh0aGlzLmNvbmZpZyBhcyBhbnkpLnRlc3RTdGVwVHlwZSB8fCAnQ09ORElUSU9OX0lGJyxcbiAgICAgICAgICBjaGlsZHJlbjogY29uZmlnV2l0aE5lc3RlZC5uZXN0ZWRTdGVwcyB8fCBbXSxcbiAgICAgICAgICB0ZXN0U3RlcFJlc3VsdElkOiBleGVjdXRlZENvbmRpdGlvblRlc3RTdGVwUmVzdWx0SWQsIC8vIFVzZSBleGVjdXRlZCBjb25kaXRpb24ncyBJRCBmb3IgQVBJIGNhbGxcbiAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgICBpZkNoaWxkOiB0aGlzLmlmQ2hpbGQgfHwgbnVsbCwgLy8gUGFzcyBpZkNoaWxkIGZvciBicmFuY2ggZXhlY3V0aW9uIGRldGVybWluYXRpb25cbiAgICAgICAgICAvLyBTdG9yZSBvcmlnaW5hbCBwYXJlbnQgdGVzdFN0ZXBSZXN1bHRJZCBmb3IgdHJhY2tpbmcgc3RhdGVzIGFuZCB1cGRhdGluZyBwYXJlbnQgc3RydWN0dXJlXG4gICAgICAgICAgb3JpZ2luYWxUZXN0U3RlcFJlc3VsdElkOiB0aGlzLnRlc3RTdGVwUmVzdWx0SWRcbiAgICAgICAgfSBhcyBFeGVjdXRpb25TdGVwQ29uZmlnICYgeyBvcmlnaW5hbFRlc3RTdGVwUmVzdWx0SWQ/OiBzdHJpbmcgfCBudW1iZXIgfTtcbiAgICAgICAgdGhpcy5vbkV4cGFuZEhhbmRsZXIoc3RlcENvbmZpZyk7XG4gICAgICB9XG4gICAgICAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgZm9yIGFsbCBuZXN0ZWQgc3RlcHNcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5uZXN0ZWRTdGVwcyAmJiB0aGlzLmNvbmZpZy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RlcElkID0gc3RlcC50ZXN0U3RlcFJlc3VsdElkIHx8IHN0ZXAuaWQ7XG4gICAgICAgICAgaWYgKHN0ZXBJZCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuYWRkKFN0cmluZyhzdGVwSWQpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgLy8gQ2xlYXIgbG9hZGluZyBzdGF0ZSB3aGVuIGNvbGxhcHNpbmdcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGV4cGFuZGVkIHN0YXRlIGlzIHN5bmNlZCB3aXRoIGNvbmZpZ1xuICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcuZXhwYW5kZWQgPSB0aGlzLmlzRXhwYW5kZWQ7XG4gICAgfVxuICB9XG4gIFxuICAvLyBDaGVjayBpZiBhIHN0ZXAgaXMgc3RpbGwgbG9hZGluZ1xuICBpc05lc3RlZFN0ZXBMb2FkaW5nKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICByZXR1cm4gc3RlcElkID8gdGhpcy5sb2FkaW5nU3RlcHMuaGFzKFN0cmluZyhzdGVwSWQpKSA6IGZhbHNlO1xuICB9XG4gIFxuICAvLyBNYXJrIGEgc3RlcCBhcyBsb2FkZWQgKGNhbGxlZCB3aGVuIHN0ZXAtcmVuZGVyZXIgaXMgcmVhZHkpXG4gIG1hcmtTdGVwTG9hZGVkKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICBpZiAoc3RlcElkKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdGVwcy5kZWxldGUoU3RyaW5nKHN0ZXBJZCkpO1xuICAgIH1cbiAgfVxuXG4gIGdldEV4ZWN1dGVkQnJhbmNoKCk6IENvbmRpdGlvbkJyYW5jaCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmJyYW5jaGVzLmZpbmQoYnJhbmNoID0+IGJyYW5jaC5leGVjdXRlZCkgfHwgbnVsbDtcbiAgfVxuXG4gIGdldFVuZXhlY3V0ZWRCcmFuY2hlcygpOiBDb25kaXRpb25CcmFuY2hbXSB7XG4gICAgcmV0dXJuIHRoaXMuYnJhbmNoZXM/LmZpbHRlcihicmFuY2ggPT4gIWJyYW5jaC5leGVjdXRlZCkgfHwgW107XG4gIH1cblxuICBnZXRTdWJTdGVwSW5kZXgoc3ViU3RlcHM6IGFueVtdLCBzdWJTdGVwOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiBzdWJTdGVwcy5pbmRleE9mKHN1YlN0ZXApICsgMTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoaXMgc3RlcCBpcyBjdXJyZW50bHkgbG9hZGluZyBuZXN0ZWQgY2hpbGRyZW5cbiAgaXNTdGVwTG9hZGluZygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc1N0ZXBMb2FkaW5nSGFuZGxlciAmJiB0aGlzLmNvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXMuaXNTdGVwTG9hZGluZ0hhbmRsZXIodGhpcy5jb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmcgfHwgZmFsc2U7XG4gIH1cblxuICBvblZpZXdNb3JlRmFpbGVkU3RlcENsaWNrKGV4cGFuZGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RmFpbGVkU3RlcERldGFpbHMgPSBleHBhbmRlZDtcbiAgfVxuXG4gIGdldFN1YlN0ZXBzRm9yRmFpbGVkU3RlcCgpOiBTdWJTdGVwW10ge1xuICAgIGNvbnN0IGV4ZWN1dGVkQnJhbmNoID0gdGhpcy5nZXRFeGVjdXRlZEJyYW5jaCgpO1xuICAgIHJldHVybiBleGVjdXRlZEJyYW5jaD8uc3ViU3RlcHMgfHwgW107XG4gIH1cblxuICBvbk1ha2VDdXJyZW50QmFzZWxpbmUoZXZlbnQ6IG1ha2VDdXJyZW50QmFzZWxpbmVFdmVudCk6IHZvaWQge1xuICAgIHRoaXMubWFrZUN1cnJlbnRCYXNlbGluZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uVXBsb2FkQmFzZWxpbmUoZXZlbnQ6IHVwbG9hZEJhc2VsaW5lRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnVwbG9hZEJhc2VsaW5lLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25BbmFseXplKCk6IHZvaWQge1xuICAgIHRoaXMuYW5hbHl6ZS5lbWl0KCk7XG4gIH1cblxuICBvblZpZXdGdWxsTG9ncygpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdGdWxsTG9ncy5lbWl0KCk7XG4gIH1cblxuICBvblNlbGZIZWFsQWN0aW9uKGV2ZW50OiB7IHR5cGU6IFNlbGZIZWFsQWN0aW9uOyBoZWFsZWRMb2NhdG9yOiBzdHJpbmc7IH0pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGZIZWFsQWN0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgZ2V0IHNob3dWaWV3TW9yZUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0V4cGFuZGVkICYmIEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscykgJiZcbiAgICAgIChcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uZXhwZWN0ZWQgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uYWN0dWFsKSkgfHxcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmN1cnJlbnQgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmJhc2VsaW5lIHx8IHRoaXMuZmFpbHVyZURldGFpbHM/LnNjcmVlbnNob3RzPy5kaWZmZXJlbmNlKVxuICAgICAgICAgIHx8IEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8ubG9ncz8ubGVuZ3RoKSkgfHxcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uYWlGaXhBcHBsaWVkICYmICh0aGlzLmZhaWx1cmVEZXRhaWxzPy5haUZpeE1lc3NhZ2UgfHwgdGhpcy5jb25maWRlbmNlIHx8IHRoaXMucmVhc29uaW5nPy5sZW5ndGgpKSlcbiAgICAgIClcbiAgfVxuXG4gIHRvZ2dsZUhlYWRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIGlmICghdGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICB0aGlzLnNob3dGYWlsZWRTdGVwRGV0YWlscyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBoYXNFeHBhbmRhYmxlQ29udGVudCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBoYXNCcmFuY2hTdWJTdGVwcyA9IHRoaXMuY29uZmlnLmJyYW5jaGVzPy5zb21lKGJyYW5jaCA9PlxuICAgICAgYnJhbmNoLnN1YlN0ZXBzICYmIGJyYW5jaC5zdWJTdGVwcy5sZW5ndGggPiAwXG4gICAgKSB8fCBmYWxzZTtcbiAgICBjb25zdCBoYXNOZXN0ZWRTdGVwcyA9ICEhKHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzICYmIHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApO1xuICAgIHJldHVybiBoYXNCcmFuY2hTdWJTdGVwcyB8fCBoYXNOZXN0ZWRTdGVwcztcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lQWN0aXZlQnJhbmNoKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5icmFuY2hlcyB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLmJyYW5jaGVzKSB8fCB0aGlzLmJyYW5jaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFsd2F5cyBmaW5kIHRoZSBleGVjdXRlZCBicmFuY2ggYW5kIHNldCBhY3RpdmVCcmFuY2hTdGVwSWQgZnJvbSBpdFxuICAgIGNvbnN0IGV4ZWN1dGVkQnJhbmNoID0gdGhpcy5icmFuY2hlcy5maW5kKChiOiBhbnkpID0+IGIuZXhlY3V0ZWQpIGFzIGFueTtcbiAgICBpZiAoZXhlY3V0ZWRCcmFuY2ggJiYgZXhlY3V0ZWRCcmFuY2guYnJhbmNoU3RlcElkKSB7XG4gICAgICAvLyBVcGRhdGUgYWN0aXZlQnJhbmNoU3RlcElkIHRvIG1hdGNoIGV4ZWN1dGVkIGJyYW5jaFxuICAgICAgaWYgKHRoaXMuYWN0aXZlQnJhbmNoU3RlcElkICE9PSBleGVjdXRlZEJyYW5jaC5icmFuY2hTdGVwSWQpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVCcmFuY2hTdGVwSWQgPSBleGVjdXRlZEJyYW5jaC5icmFuY2hTdGVwSWQ7XG4gICAgICAgIC8vIFVwZGF0ZSBuZXN0ZWQgc3RlcHMgd2hlbiBleGVjdXRlZCBicmFuY2ggY2hhbmdlc1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIG5vIGJyYW5jaCBpcyBleGVjdXRlZCwgZGVmYXVsdCB0byBmaXJzdCBicmFuY2ggKElGIGJyYW5jaCkgYnV0IGRvbid0IG1hcmsgaXQgYXMgZXhlY3V0ZWRcbiAgICBjb25zdCBmaXJzdEJyYW5jaCA9IHRoaXMuYnJhbmNoZXNbMF0gYXMgYW55O1xuICAgIGlmIChmaXJzdEJyYW5jaCAmJiBmaXJzdEJyYW5jaC5icmFuY2hTdGVwSWQpIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUJyYW5jaFN0ZXBJZCAhPT0gZmlyc3RCcmFuY2guYnJhbmNoU3RlcElkKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlQnJhbmNoU3RlcElkID0gZmlyc3RCcmFuY2guYnJhbmNoU3RlcElkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQnJhbmNoQ2xpY2soYnJhbmNoOiBDb25kaXRpb25CcmFuY2gpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNMaXZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbkJyYW5jaENsaWNrRXZlbnQuZW1pdChicmFuY2gpO1xuICB9XG5cbiAgZ2V0QnJhbmNoQ2xhc3MoYnJhbmNoOiBhbnkpOiBzdHJpbmcge1xuICAgIC8vIElmIGJyYW5jaCBpcyBleGVjdXRlZCwgc2hvdyBncmVlbiBzdHlsaW5nXG4gICAgaWYgKGJyYW5jaC5leGVjdXRlZCkge1xuICAgICAgcmV0dXJuICdjcWEtYmctWyNEQ0ZDRTddIGNxYS10ZXh0LVsjMDA4MjM2XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0I5RjhDRl0nO1xuICAgIH1cblxuICAgIC8vIEZvciBsaXZlIG1vZGU6IGlmIG5vIGJyYW5jaGVzIGFyZSBleGVjdXRlZCBidXQgdGhlcmUncyBhbiBhY3RpdmVCcmFuY2hTdGVwSWQsXG4gICAgLy8gc2hvdyB0aGUgYWN0aXZlIGJyYW5jaCB3aXRoIGJsdWUgYm9yZGVyXG4gICAgaWYgKHRoaXMuaXNMaXZlICYmICF0aGlzLmhhc0FueUV4ZWN1dGVkQnJhbmNoKCkpIHtcbiAgICAgIHJldHVybiAnY3FhLWJnLVsjRUZGNkZGXSBjcWEtdGV4dC1bIzFFNDBBRl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyMzQjgyRjZdJztcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0OiBncmF5IHN0eWxpbmcgZm9yIHVuZXhlY3V0ZWQgYnJhbmNoZXNcbiAgICByZXR1cm4gJ2NxYS1iZy1bI0YzRjRGNl0gY3FhLXRleHQtWyM5OUExQUZdIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTVFN0VCXSc7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW55IGJyYW5jaCBpcyBleGVjdXRlZC5cbiAgICovXG4gIHByaXZhdGUgaGFzQW55RXhlY3V0ZWRCcmFuY2goKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmJyYW5jaGVzIHx8ICFBcnJheS5pc0FycmF5KHRoaXMuYnJhbmNoZXMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJyYW5jaGVzLnNvbWUoKGI6IGFueSkgPT4gYi5leGVjdXRlZCA9PT0gdHJ1ZSk7XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDxkaXYgY2xhc3M9XCJjcWEtcC0yXCI+XG4gICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcGItMS41IGNxYS1jdXJzb3ItcG9pbnRlclwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlSGVhZGVyKClcIj5cbiAgICAgIFxuICAgICAgPCEtLSBTdGF0dXMgSWNvbiAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3N1Y2Nlc3MnXCIgPjxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTAuOTAwNSA0Ljk5OTk5QzExLjEyODkgNi4xMjA2NCAxMC45NjYyIDcuMjg1NzEgMTAuNDM5NSA4LjMwMDg5QzkuOTEyNzkgOS4zMTYwOCA5LjA1NCAxMC4xMiA4LjAwNjMxIDEwLjU3ODdDNi45NTg2MiAxMS4wMzczIDUuNzg1MzYgMTEuMTIyOSA0LjY4MjIgMTAuODIxMkMzLjU3OTA0IDEwLjUxOTUgMi42MTI2NSA5Ljg0ODY5IDEuOTQ0MTkgOC45MjA3MUMxLjI3NTczIDcuOTkyNzIgMC45NDU2MTEgNi44NjM2MSAxLjAwODg4IDUuNzIxNjlDMS4wNzIxNSA0LjU3OTc2IDEuNTI0OTkgMy40OTQwNCAyLjI5MTg4IDIuNjQ1NThDMy4wNTg3NiAxLjc5NzEyIDQuMDkzMzQgMS4yMzcyMSA1LjIyMzA4IDEuMDU5MjJDNi4zNTI4MiAwLjg4MTIzMyA3LjUwOTQ0IDEuMDk1OTIgOC41MDAwNSAxLjY2NzQ5XCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA1LjVMNiA3TDExIDJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbHVyZScgfHwgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsZWQnXCI+PHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk03LjUgNC41TDQuNSA3LjVcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDQuNUw3LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnXCI+PHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAncnVubmluZydcIj48c3ZnIGNsYXNzPVwiY3FhLWFuaW1hdGUtc3BpbiBjcWEtdGV4dC1bIzNCODJGNl1cIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgb3BhY2l0eT1cIjAuMjVcIi8+PHBhdGggZD1cIk02IDFBNSA1IDAgMCAxIDExIDZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+PC9zdmc+PC9kaXY+XG5cbiAgICAgIDwhLS0gQ29uZGl0aW9uIEljb24gLS0+XG4gICAgICA8ZGl2Pjxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHJ4PVwiNFwiIGZpbGw9XCIjRkZFREQ1XCIvPjxwYXRoIGQ9XCJNNiA1VjlcIiBzdHJva2U9XCIjRkQ5QTAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTEwIDdDMTAuNTUyMyA3IDExIDYuNTUyMjggMTEgNkMxMSA1LjQ0NzcyIDEwLjU1MjMgNSAxMCA1QzkuNDQ3NzIgNSA5IDUuNDQ3NzIgOSA2QzkgNi41NTIyOCA5LjQ0NzcyIDcgMTAgN1pcIiBzdHJva2U9XCIjRkQ5QTAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgMTFDNi41NTIyOCAxMSA3IDEwLjU1MjMgNyAxMEM3IDkuNDQ3NzIgNi41NTIyOCA5IDYgOUM1LjQ0NzcyIDkgNSA5LjQ0NzcyIDUgMTBDNSAxMC41NTIzIDUuNDQ3NzIgMTEgNiAxMVpcIiBzdHJva2U9XCIjRkQ5QTAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTEwIDdDMTAgNy43OTU2NSA5LjY4MzkzIDguNTU4NzEgOS4xMjEzMiA5LjEyMTMyQzguNTU4NzEgOS42ODM5MyA3Ljc5NTY1IDEwIDcgMTBcIiBzdHJva2U9XCIjRkQ5QTAwXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cblxuICAgICAgPCEtLSBTdGVwIE51bWJlciBhbmQgVGl0bGUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtM1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mb250LWJvbGQgY3FhLXRleHQtWyMzMzQxNTVdIGNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTNweF1cIj5cbiAgICAgICAgICB7eyBjb25maWcuc3RlcE51bWJlciB9fS4gQ29uZGl0aW9uOiA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmZpZy5jb25kaXRpb25UZXh0XCI+PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIFxuICAgICAgICA8IS0tIENvbmRpdGlvbiBCYWRnZSAtLT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtcHgtMS41IGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjRUE1ODBDXSBjcWEtYmctWyNGRkVERDVdIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF1cIj5cbiAgICAgICAgICBDT05ESVRJT05cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVs5cHhdIGNxYS1sZWFkaW5nLVsxMXB4XSBjcWEtdGV4dC1bIzlDQTNBRl1cIj5cbiAgICAgICAgICB7eyBmb3JtYXREdXJhdGlvbihjb25maWcuZHVyYXRpb24pIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHN2ZyAqbmdJZj1cImhhc0V4cGFuZGFibGVDb250ZW50XCIgW2NsYXNzLmNxYS1yb3RhdGUtMTgwXT1cImlzRXhwYW5kZWRcIiBjbGFzcz1cImNxYS10cmFuc2l0aW9uLXRyYW5zZm9ybVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTMuNSA1TDcgOC41TDEwLjUgNVwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2Utd2lkdGg9XCIwLjgzMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gQnJhbmNoIEJ1dHRvbnMgLSBSZWFkLW9ubHksIHNob3dpbmcgZXhlY3V0ZWQgc3RhdHVzIG9ubHkgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weC00IGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNzM3MzczXSBjcWEtZmxleC13cmFwXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCBicmFuY2ggb2YgY29uZmlnLmJyYW5jaGVzXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtcHgtMiBjcWEtcHktMSBjcWEtcm91bmRlZCBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMS41XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0QnJhbmNoQ2xhc3MoYnJhbmNoKVwiIChjbGljayk9XCJvbkJyYW5jaENsaWNrKGJyYW5jaClcIj5cbiAgICAgICAgPCEtLSBDaGVja21hcmsgaWNvbiBmb3IgZXhlY3V0ZWQgYnJhbmNoIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYnJhbmNoLmV4ZWN1dGVkXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDNMNC41IDguNUwyIDZcIiBzdHJva2U9XCIjMDA4MjM2XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4+e3sgYnJhbmNoLnR5cGUudG9VcHBlckNhc2UoKSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEV4cGFuZGVkIENvbnRlbnQgLS0+XG4gIDxkaXYgKm5nSWY9XCJpc0V4cGFuZGVkICYmICFpc0xvYWRpbmdcIj5cblxuICAgIDwhLS0gRXhlY3V0ZWQgQnJhbmNoIFN1Yi1zdGVwcyAtLT5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBicmFuY2ggb2YgY29uZmlnLmJyYW5jaGVzXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYnJhbmNoLmV4ZWN1dGVkICYmIGJyYW5jaC5zdWJTdGVwc1wiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMSBjcWEtcGItMSBjcWEtbWwtOVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogJzFweCBzb2xpZCAjRjNGNEY2J1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nRm9yPVwibGV0IHN1YlN0ZXAgb2YgYnJhbmNoLnN1YlN0ZXBzXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weS1bNS41cHhdIGNxYS1weC0zXCI+XG4gICAgICAgICAgXG4gICAgICAgICAgPCEtLSBTdWItc3RlcCBTdGF0dXMgSWNvbiAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnc3VjY2VzcycgfHwgc3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAncGFzc2VkJ1wiID5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTAuOTAwNSA0Ljk5OTk5QzExLjEyODkgNi4xMjA2NCAxMC45NjYyIDcuMjg1NzEgMTAuNDM5NSA4LjMwMDg5QzkuOTEyNzkgOS4zMTYwOCA5LjA1NCAxMC4xMiA4LjAwNjMxIDEwLjU3ODdDNi45NTg2MiAxMS4wMzczIDUuNzg1MzYgMTEuMTIyOSA0LjY4MjIgMTAuODIxMkMzLjU3OTA0IDEwLjUxOTUgMi42MTI2NSA5Ljg0ODY5IDEuOTQ0MTkgOC45MjA3MUMxLjI3NTczIDcuOTkyNzIgMC45NDU2MTEgNi44NjM2MSAxLjAwODg4IDUuNzIxNjlDMS4wNzIxNSA0LjU3OTc2IDEuNTI0OTkgMy40OTQwNCAyLjI5MTg4IDIuNjQ1NThDMy4wNTg3NiAxLjc5NzEyIDQuMDkzMzQgMS4yMzcyMSA1LjIyMzA4IDEuMDU5MjJDNi4zNTI4MiAwLjg4MTIzMyA3LjUwOTQ0IDEuMDk1OTIgOC41MDAwNSAxLjY2NzQ5XCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA1LjVMNiA3TDExIDJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gRmFpbHVyZSAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbHVyZScgfHwgc3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbGVkJ1wiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk03LjUgNC41TDQuNSA3LjVcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDQuNUw3LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIFBlbmRpbmcgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgM1Y2TDggN1wiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBSdW5uaW5nIC0gU2hvdyBzcGlubmVyIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdydW5uaW5nJ1wiPlxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNxYS1hbmltYXRlLXNwaW4gY3FhLXRleHQtWyMzQjgyRjZdXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBvcGFjaXR5PVwiMC4yNVwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDFBNSA1IDAgMCAxIDExIDZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgXG5cbiAgICAgICAgICA8IS0tIFN1Yi1zdGVwIERlc2NyaXB0aW9uIC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzEzcHhdIGNxYS10ZXh0LVsjMzY0MTUzXVwiPlxuICAgICAgICAgICAge3sgY29uZmlnLnN0ZXBOdW1iZXIgfX0ue3sgZ2V0U3ViU3RlcEluZGV4KGJyYW5jaC5zdWJTdGVwcywgc3ViU3RlcCkgfX0uIDxzcGFuIFtpbm5lckhUTUxdPVwic3ViU3RlcC5kZXNjcmlwdGlvblwiPjwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICA8IS0tIFN1Yi1zdGVwIER1cmF0aW9uIC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtbWV0YWRhdGEta2V5XCI+XG4gICAgICAgICAgICB7eyBmb3JtYXREdXJhdGlvbihzdWJTdGVwLmR1cmF0aW9uKSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVW5leGVjdXRlZCBCcmFuY2ggTWVzc2FnZSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZ2V0VW5leGVjdXRlZEJyYW5jaGVzKCkubGVuZ3RoID4gMCAmJiBnZXRVbmV4ZWN1dGVkQnJhbmNoZXMoKS5sZW5ndGggPCAyXCIgY2xhc3M9XCJjcWEtbWwtOVwiPlxuICAgICAgPHAgY2xhc3M9XCJjcWEtcHgtMyBjcWEtcHktWzEwcHhdIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy00IGNxYS10ZXh0LVsjNzM3MzczXSBjcWEtaXRhbGljXCI+XG4gICAgICAgIHt7IGdldFVuZXhlY3V0ZWRCcmFuY2hlcygpPy5bMF0/LnR5cGU/LnRvVXBwZXJDYXNlKCkgfX0gYnJhbmNoIG5vdCBleGVjdXRlZFxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImdldFVuZXhlY3V0ZWRCcmFuY2hlcygpLmxlbmd0aCA+IDFcIiBjbGFzcz1cImNxYS1tbC05XCI+XG4gICAgICA8cCBjbGFzcz1cImNxYS1weC0zIGNxYS1weS1bMTBweF0gY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLTQgY3FhLXRleHQtWyM3MzczNzNdIGNxYS1pdGFsaWNcIj5cbiAgICAgICAge3sgZ2V0VW5leGVjdXRlZEJyYW5jaGVzKCk/LlswXT8udHlwZT8udG9VcHBlckNhc2UoKSB9fSBhbmQge3sgZ2V0VW5leGVjdXRlZEJyYW5jaGVzKCk/LlsxXT8udHlwZT8udG9VcHBlckNhc2UoKSB9fSBicmFuY2hlcyBub3QgZXhlY3V0ZWRcbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTmVzdGVkIFN0ZXBzIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJoYXNDaGlsZCB8fCAoY29uZmlnLm5lc3RlZFN0ZXBzICYmIGNvbmZpZy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKVwiIGNsYXNzPVwiY3FhLW1sLTkgY3FhLXBiLTFcIiBzdHlsZT1cImJvcmRlci1ib3R0b206ICcxcHggc29saWQgI0YzRjRGNidcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzczNzM3M10gY3FhLXB5LVsycHhdIGNxYS1weC0zXCI+TmVzdGVkIHN0ZXBzPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMiBjcWEtcGwtWzE4cHhdXCIgc3R5bGU9XCJib3JkZXItbGVmdDogMnB4IHNvbGlkICNDNUM3RkE7XCI+XG4gICAgICAgIDwhLS0gTG9hZGluZyBpbmRpY2F0b3IgZm9yIG5lc3RlZCBzdGVwcyAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImhhc0NoaWxkICYmICghY29uZmlnLm5lc3RlZFN0ZXBzIHx8IGNvbmZpZy5uZXN0ZWRTdGVwcy5sZW5ndGggPT09IDApICYmIGlzU3RlcExvYWRpbmcoKVwiIFxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcHktMiBjcWEtcHgtM1wiPlxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJjcWEtYW5pbWF0ZS1zcGluIGNxYS10ZXh0LVsjM0I4MkY2XVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI3XCIgY3k9XCI3XCIgcj1cIjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIG9wYWNpdHk9XCIwLjI1XCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk03IDFBNiA2IDAgMCAxIDEzIDdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzEzcHhdIGNxYS10ZXh0LVsjNzM3MzczXVwiPkxvYWRpbmcgbmVzdGVkIHN0ZXBzLi4uPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGVwIG9mIGNvbmZpZy5uZXN0ZWRTdGVwc1wiPlxuICAgICAgICAgIDwhLS0gV3JhcHBlciB0byBzaG93IHNrZWxldG9uIHdoaWxlIHN0ZXAtcmVuZGVyZXIgaXMgbG9hZGluZyAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXN0ZXAtcmVuZGVyZXItd3JhcHBlclwiIFtjbGFzcy5sb2FkZWRdPVwiIWlzTmVzdGVkU3RlcExvYWRpbmcoc3RlcClcIj5cbiAgICAgICAgICAgIDwhLS0gTG9hZGluZyBza2VsZXRvbiBvdmVybGF5IC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzTmVzdGVkU3RlcExvYWRpbmcoc3RlcClcIiBjbGFzcz1cImNxYS1zdGVwLXNrZWxldG9uLW92ZXJsYXlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1zdGVwLXNrZWxldG9uIGNxYS1teC0zIGNxYS1teS0xXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gVXNlIHN0ZXAtcmVuZGVyZXIgZm9yIGFsbCBuZXN0ZWQgc3RlcHMgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIC0tPlxuICAgICAgICAgICAgPCEtLSBUaGUgc3RlcC1yZW5kZXJlciB3aWxsIGR5bmFtaWNhbGx5IGxvYWQgdGhlIGFwcHJvcHJpYXRlIGNvbXBvbmVudCBhbmQgcGFzcyBoYW5kbGVycyAtLT5cbiAgICAgICAgICAgIDxjcWEtc3RlcC1yZW5kZXJlciBcbiAgICAgICAgICAgICAgW3N0ZXBdPVwic3RlcFwiXG4gICAgICAgICAgICAgIFtvbkNvbmRpdGlvbkJyYW5jaENsaWNrSGFuZGxlcl09XCJvbkNvbmRpdGlvbkJyYW5jaENsaWNrSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvbkV4cGFuZEhhbmRsZXJdPVwib25FeHBhbmRIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2dldENvbmRpdGlvbkJyYW5jaGVzSGFuZGxlcl09XCJnZXRDb25kaXRpb25CcmFuY2hlc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbaXNTdGVwTG9hZGluZ0hhbmRsZXJdPVwiaXNTdGVwTG9hZGluZ0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbaXNTdGVwRXhwYW5kZWRIYW5kbGVyXT1cImlzU3RlcEV4cGFuZGVkSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtjb252ZXJ0TXNUb1NlY29uZHNIYW5kbGVyXT1cImNvbnZlcnRNc1RvU2Vjb25kc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbZm9ybWF0RmFpbHVyZURldGFpbHNIYW5kbGVyXT1cImZvcm1hdEZhaWx1cmVEZXRhaWxzSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtnZXRTZWxmSGVhbEFuYWx5c2lzSGFuZGxlcl09XCJnZXRTZWxmSGVhbEFuYWx5c2lzSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtnZXRMb29wSXRlcmF0aW9uc0hhbmRsZXJdPVwiZ2V0TG9vcEl0ZXJhdGlvbnNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2dldEFwaUFzc2VydGlvbnNIYW5kbGVyXT1cImdldEFwaUFzc2VydGlvbnNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2Zvcm1hdEFjdGlvbnNIYW5kbGVyXT1cImZvcm1hdEFjdGlvbnNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uVmlld0FsbEl0ZXJhdGlvbnNIYW5kbGVyXT1cIm9uVmlld0FsbEl0ZXJhdGlvbnNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uTWFrZUN1cnJlbnRCYXNlbGluZUhhbmRsZXJdPVwib25NYWtlQ3VycmVudEJhc2VsaW5lSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvblVwbG9hZEJhc2VsaW5lSGFuZGxlcl09XCJvblVwbG9hZEJhc2VsaW5lSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvbkFuYWx5emVIYW5kbGVyXT1cIm9uQW5hbHl6ZUhhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25WaWV3RnVsbExvZ3NIYW5kbGVyXT1cIm9uVmlld0Z1bGxMb2dzSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvblNlbGZIZWFsQWN0aW9uSGFuZGxlcl09XCJvblNlbGZIZWFsQWN0aW9uSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtpc1VwbG9hZGluZ0Jhc2VsaW5lXT1cImlzVXBsb2FkaW5nQmFzZWxpbmVcIlxuICAgICAgICAgICAgICBbaXNNYWtpbmdDdXJyZW50QmFzZWxpbmVdPVwiaXNNYWtpbmdDdXJyZW50QmFzZWxpbmVcIlxuICAgICAgICAgICAgICBbc2VsZWN0ZWRJdGVyYXRpb25JZF09XCJzdGVwPy5zZWxlY3RlZEl0ZXJhdGlvbklkIHx8ICcnXCJcbiAgICAgICAgICAgICAgW2lzTGl2ZV09XCJpc0xpdmVcIlxuICAgICAgICAgICAgICAoY29tcG9uZW50UmVhZHkpPVwibWFya1N0ZXBMb2FkZWQoc3RlcClcIj5cbiAgICAgICAgICAgIDwvY3FhLXN0ZXAtcmVuZGVyZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gU2VsZiBIZWFsIEFuYWx5c2lzIC0tPlxuICAgIDxjcWEtc2VsZi1oZWFsLWFuYWx5c2lzIFxuICAgICAgKm5nSWY9XCJzZWxmSGVhbEFuYWx5c2lzXCIgXG4gICAgICBbb3JpZ2luYWxMb2NhdG9yXT1cInNlbGZIZWFsQW5hbHlzaXMub3JpZ2luYWxMb2NhdG9yXCJcbiAgICAgIFtoZWFsZWRMb2NhdG9yXT1cInNlbGZIZWFsQW5hbHlzaXMuaGVhbGVkTG9jYXRvclwiXG4gICAgICBbY29uZmlkZW5jZV09XCJzZWxmSGVhbEFuYWx5c2lzLmNvbmZpZGVuY2VcIlxuICAgICAgW2hlYWxNZXRob2RdPVwic2VsZkhlYWxBbmFseXNpcy5oZWFsTWV0aG9kXCJcbiAgICAgIFtpc0xvYWRpbmdBY2NlcHRdPVwiZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlciA/IGdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIoKS5pc0xvYWRpbmdBY2NlcHQgOiBmYWxzZVwiXG4gICAgICBbaXNMb2FkaW5nTW9kaWZ5QWNjZXB0XT1cImdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIgPyBnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyKCkuaXNMb2FkaW5nTW9kaWZ5QWNjZXB0IDogZmFsc2VcIlxuICAgICAgKGFjdGlvbik9XCJvblNlbGZIZWFsQWN0aW9uKCRldmVudClcIj5cbiAgICA8L2NxYS1zZWxmLWhlYWwtYW5hbHlzaXM+XG5cbiAgICA8IS0tIFRpbWluZyBCcmVha2Rvd24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImNvbmZpZy50aW1pbmdCcmVha2Rvd25cIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktZW5kIGNxYS1nYXAtNSBjcWEtcHQtMS41IGNxYS1weC00IGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxkaXY+PHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgICA8c3Bhbj5UaW1pbmcgYnJlYWtkb3duPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWRpYWxvZy1tdXRlZCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtM1wiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIEFwcCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWdyYXktNzAwXCI+e3sgZm9ybWF0RHVyYXRpb24oY29uZmlnLnRpbWluZ0JyZWFrZG93bi5hcHApIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiMVwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxIDExXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0tMy44MTQ3ZS0wNiAxMC4zMlYtNy4xNTI1NmUtMDdIMC45NTk5OTZWMTAuMzJILTMuODE0N2UtMDZaXCIgZmlsbD1cIiNFNUU3RUJcIi8+PC9zdmc+PC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgVG9vbCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWdyYXktNzAwXCI+e3sgZm9ybWF0RHVyYXRpb24oY29uZmlnLnRpbWluZ0JyZWFrZG93bi50b29sKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVmlldyBNb3JlIEZhaWxlZCBTdGVwIEJ1dHRvbiAtIHNob3duIHdoZW4gZXhwYW5kZWQgYW5kIGZhaWx1cmUgZGV0YWlscyBleGlzdCAtLT5cbiAgPGRpdiAqbmdJZj1cInNob3dWaWV3TW9yZUJ1dHRvbiAmJiAhaXNMb2FkaW5nXCIgY2xhc3M9XCJjcWEtbXQtMiBjcWEtcHgtNFwiPlxuICAgIDxjcWEtdmlldy1tb3JlLWZhaWxlZC1zdGVwLWJ1dHRvblxuICAgICAgW3RpbWluZ0JyZWFrZG93bl09XCJ0aW1pbmdCcmVha2Rvd25cIlxuICAgICAgW3N1YlN0ZXBzXT1cImdldFN1YlN0ZXBzRm9yRmFpbGVkU3RlcCgpXCJcbiAgICAgIFtmYWlsdXJlRGV0YWlsc109XCJmYWlsdXJlRGV0YWlsc1wiXG4gICAgICBbaXNFeHBhbmRlZF09XCJzaG93RmFpbGVkU3RlcERldGFpbHNcIlxuICAgICAgKHZpZXdNb3JlQ2xpY2spPVwib25WaWV3TW9yZUZhaWxlZFN0ZXBDbGljaygkZXZlbnQpXCI+XG4gICAgPC9jcWEtdmlldy1tb3JlLWZhaWxlZC1zdGVwLWJ1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBVcGRhdGVkIEZhaWxlZCBTdGVwIENvbXBvbmVudCAtIHNob3duIHdoZW4gYnV0dG9uIGlzIGNsaWNrZWQgLS0+XG4gIDxkaXYgKm5nSWY9XCJzaG93Vmlld01vcmVCdXR0b24gJiYgc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzICYmIGZhaWx1cmVEZXRhaWxzXCIgY2xhc3M9XCJjcWEtbXQtMiBjcWEtcHgtNFwiPlxuICAgIDxjcWEtdXBkYXRlZC1mYWlsZWQtc3RlcFxuICAgICAgW3RpbWluZ0JyZWFrZG93bl09XCJ0aW1pbmdCcmVha2Rvd25cIlxuICAgICAgW3Rlc3RTdGVwUmVzdWx0SWRdPVwidGVzdFN0ZXBSZXN1bHRJZFwiXG4gICAgICBbZXhwYW5kZWRdPVwidHJ1ZVwiXG4gICAgICBbc3ViU3RlcHNdPVwiZ2V0U3ViU3RlcHNGb3JGYWlsZWRTdGVwKClcIlxuICAgICAgW2ZhaWx1cmVEZXRhaWxzXT1cImZhaWx1cmVEZXRhaWxzXCJcbiAgICAgIFtyZWFzb25pbmddPVwicmVhc29uaW5nXCJcbiAgICAgIFtjb25maWRlbmNlXT1cImNvbmZpZGVuY2VcIlxuICAgICAgW2lzVXBsb2FkaW5nQmFzZWxpbmVdPVwiaXNVcGxvYWRpbmdCYXNlbGluZVwiXG4gICAgICBbaXNNYWtpbmdDdXJyZW50QmFzZWxpbmVdPVwiaXNNYWtpbmdDdXJyZW50QmFzZWxpbmVcIlxuICAgICAgW2lzTGl2ZV09XCJpc0xpdmVcIlxuICAgICAgKG1ha2VDdXJyZW50QmFzZWxpbmUpPVwib25NYWtlQ3VycmVudEJhc2VsaW5lKCRldmVudClcIlxuICAgICAgKHVwbG9hZEJhc2VsaW5lKT1cIm9uVXBsb2FkQmFzZWxpbmUoJGV2ZW50KVwiXG4gICAgICAoYW5hbHl6ZSk9XCJvbkFuYWx5emUoKVwiXG4gICAgICAodmlld0Z1bGxMb2dzKT1cIm9uVmlld0Z1bGxMb2dzKClcIj5cbiAgICA8L2NxYS11cGRhdGVkLWZhaWxlZC1zdGVwPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19