@cqa-lib/cqa-ui 1.1.233 → 1.1.235
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.
- package/esm2020/lib/add-prerequisite-cases-section/add-prerequisite-cases-section.component.mjs +48 -8
- package/esm2020/lib/execution-screen/api-step/api-step.component.mjs +21 -3
- package/esm2020/lib/execution-screen/basic-step/basic-step.component.mjs +19 -1
- package/esm2020/lib/execution-screen/db-verification-step/db-verification-step.component.mjs +285 -18
- package/esm2020/lib/execution-screen/execution-step.models.mjs +1 -1
- package/esm2020/lib/execution-screen/live-execution-step/live-execution-step.component.mjs +21 -1
- package/esm2020/lib/execution-screen/loop-step/loop-step.component.mjs +19 -1
- package/esm2020/lib/execution-screen/main-step-collapse/main-step-collapse.component.mjs +13 -8
- package/esm2020/lib/execution-screen/step-renderer/step-renderer.component.mjs +5 -3
- package/esm2020/lib/test-case-details/test-case-details.component.mjs +3 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +380 -53
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +438 -52
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/add-prerequisite-cases-section/add-prerequisite-cases-section.component.d.ts +20 -2
- package/lib/execution-screen/db-verification-step/db-verification-step.component.d.ts +19 -3
- package/lib/execution-screen/execution-step.models.d.ts +1 -0
- package/lib/execution-screen/main-step-collapse/main-step-collapse.component.d.ts +2 -1
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -857,6 +857,10 @@ export class LoopStepComponent extends BaseStepComponent {
|
|
|
857
857
|
if (newText)
|
|
858
858
|
this.waitLocatorGroupEntry.description = newText;
|
|
859
859
|
}
|
|
860
|
+
else {
|
|
861
|
+
// No active group – push FIND_LOCATOR normally once countdown is cleared
|
|
862
|
+
this.processedSubSteps.push({ ...subStep });
|
|
863
|
+
}
|
|
860
864
|
}
|
|
861
865
|
else if (uiType === 'LOCATOR_FOUND') {
|
|
862
866
|
if (status === 'failed' || status === 'failure') {
|
|
@@ -886,6 +890,13 @@ export class LoopStepComponent extends BaseStepComponent {
|
|
|
886
890
|
}
|
|
887
891
|
}
|
|
888
892
|
else if (uiType === 'AI_AUTO_HEAL') {
|
|
893
|
+
// If a WAIT_FOR_LOCATOR countdown is active, complete it as failed before starting AI auto-heal
|
|
894
|
+
if (this.waitLocatorGroupEntry) {
|
|
895
|
+
this.waitLocatorGroupEntry.status = 'failed';
|
|
896
|
+
this.waitLocatorGroupEntry.remainingSeconds = null;
|
|
897
|
+
this.clearCountdownTimer();
|
|
898
|
+
this.waitLocatorGroupEntry = null;
|
|
899
|
+
}
|
|
889
900
|
// Add single loading entry; will be replaced by AI_AUTO_HEAL_SUCCESS or AI_AUTO_HEAL_FAILED
|
|
890
901
|
this.aiAutoHealGroupEntry = {
|
|
891
902
|
...subStep,
|
|
@@ -896,6 +907,13 @@ export class LoopStepComponent extends BaseStepComponent {
|
|
|
896
907
|
this.processedSubSteps.push(this.aiAutoHealGroupEntry);
|
|
897
908
|
}
|
|
898
909
|
else if (uiType === 'AI_AUTO_HEAL_SUCCESS' || uiType === 'AI_AUTO_HEAL_FAILED') {
|
|
910
|
+
// If a WAIT_FOR_LOCATOR countdown is active, complete it as failed before handling AI auto-heal result
|
|
911
|
+
if (this.waitLocatorGroupEntry) {
|
|
912
|
+
this.waitLocatorGroupEntry.status = 'failed';
|
|
913
|
+
this.waitLocatorGroupEntry.remainingSeconds = null;
|
|
914
|
+
this.clearCountdownTimer();
|
|
915
|
+
this.waitLocatorGroupEntry = null;
|
|
916
|
+
}
|
|
899
917
|
// Remove loading entry and add TWO separate entries: value and reasoning (like AI_ANSWER)
|
|
900
918
|
if (this.aiAutoHealGroupEntry) {
|
|
901
919
|
this.processedSubSteps = this.processedSubSteps.filter(entry => entry !== this.aiAutoHealGroupEntry);
|
|
@@ -1187,4 +1205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
1187
1205
|
}], onIterationChange: [{
|
|
1188
1206
|
type: Output
|
|
1189
1207
|
}] } });
|
|
1190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9sb29wLXN0ZXAvbG9vcC1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9sb29wLXN0ZXAvbG9vcC1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXVELFNBQVMsRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFFM0osT0FBTyxFQUE0Tiw2QkFBNkIsRUFBc0IsOEJBQThCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2VixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUTNELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxpQkFBaUI7SUFMeEQ7O1FBa0JXLHFCQUFnQixHQUFzQixNQUFNLENBQUM7UUFJN0MsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUd4QixZQUFPLEdBQWEsS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQWEsS0FBSyxDQUFDO1FBRy9CLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDL0MsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDNUQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDL0QsdUJBQWtCLEdBQXdCLDZCQUE2QixDQUFDO1FBQ3hFLHdCQUFtQixHQUF5Qiw4QkFBOEIsQ0FBQztRQXFDM0Usc0JBQWlCLEdBQWtCLElBQUksQ0FBQztRQU14Qyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsNEJBQXVCLEdBQUcsRUFBRSxDQUFD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RyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBSTBCLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ0csbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFRdEIsUUFBUTtzQkFBakIsTUFBTTtnQkFHRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBR0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkLCBPbkRlc3Ryb3ksIERvQ2hlY2sgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBMb29wU3RlcENvbmZpZywgTG9vcEl0ZXJhdGlvbiwgRXhlY3V0aW9uU3RlcENvbmZpZywgU3RlcFN0YXR1cywgVGltaW5nQnJlYWtkb3duLCBGYWlsdXJlRGV0YWlscywgU3ViU3RlcCwgU2VsZkhlYWxBbmFseXNpc0RhdGEsIFNlbGZIZWFsQWN0aW9uLCBTdGVwR3JvdXBDb25maWcsIENvbmRpdGlvbkJyYW5jaCwgU2VsZkhlYWxBY3Rpb25FdmVudCwgQWRkU3RlcE1lbnVPcHRpb24sIERFRkFVTFRfQUREX1NURVBfTUVOVV9PUFRJT05TLCBTdGVwTW9yZU1lbnVPcHRpb24sIERFRkFVTFRfU1RFUF9NT1JFX01FTlVfT1BUSU9OUyB9IGZyb20gJy4uL2V4ZWN1dGlvbi1zdGVwLm1vZGVscyc7XG5pbXBvcnQgeyBCYXNlU3RlcENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50LCB1cGxvYWRCYXNlbGluZUV2ZW50IH0gZnJvbSAnLi4vdmlzdWFsLWNvbXBhcmlzb24vdmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWxvb3Atc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb29wLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QgY3FhLXctZnVsbCcgfVxufSlcbmV4cG9ydCBjbGFzcyBMb29wU3RlcENvbXBvbmVudCBleHRlbmRzIEJhc2VTdGVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgRG9DaGVjayB7XG4gIC8vIEluZGl2aWR1YWwgaW5wdXRzXG4gIEBJbnB1dCgpIGlkITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXN0U3RlcFJlc3VsdElkITogc3RyaW5nO1xuICBASW5wdXQoKSBzdGVwTnVtYmVyITogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZztcbiAgQElucHV0KCkgc3RhdHVzITogU3RlcFN0YXR1cztcbiAgQElucHV0KCkgZHVyYXRpb24hOiBudW1iZXI7XG4gIEBJbnB1dCgpIHRpbWluZ0JyZWFrZG93bj86IFRpbWluZ0JyZWFrZG93bjtcbiAgQElucHV0KCkgZXhwYW5kZWQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBsb29wVHlwZT86ICdmb3InIHwgJ3doaWxlJztcbiAgQElucHV0KCkgaXRlcmF0aW9ucyE6IExvb3BJdGVyYXRpb25bXTtcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVyYXRpb25JZD86IHN0cmluZztcbiAgQElucHV0KCkgZGVmYXVsdEl0ZXJhdGlvbj86ICdmaXJzdCcgfCAnbGFzdCcgPSAnbGFzdCc7XG4gIEBJbnB1dCgpIG5lc3RlZFN0ZXBzPzogRXhlY3V0aW9uU3RlcENvbmZpZ1tdO1xuICBASW5wdXQoKSBzaG93Vmlld0FsbEl0ZXJhdGlvbnM/OiBib29sZWFuO1xuICBASW5wdXQoKSBoYXNDaGlsZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzTGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0xvYWRpbmc/OiBib29sZWFuO1xuICBASW5wdXQoKSBzdGVwRGVsZXRlZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzRGVidWc/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRlYnVnUG9pbnRTZXQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGdldERlYnVnUG9pbnRTZXRIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGJvb2xlYW47XG4gIEBJbnB1dCgpIG9uRGVidWdQb2ludENoYW5nZUhhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZywgdmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIEBPdXRwdXQoKSBkZWJ1Z1BvaW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgZWRpdFN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBhZGRTdGVwT3B0aW9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGRTdGVwTWVudU9wdGlvbj4oKTtcbiAgQE91dHB1dCgpIHN0ZXBNb3JlT3B0aW9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwTW9yZU1lbnVPcHRpb24+KCk7XG4gIEBJbnB1dCgpIGFkZFN0ZXBNZW51T3B0aW9uczogQWRkU3RlcE1lbnVPcHRpb25bXSA9IERFRkFVTFRfQUREX1NURVBfTUVOVV9PUFRJT05TO1xuICBASW5wdXQoKSBzdGVwTW9yZU1lbnVPcHRpb25zOiBTdGVwTW9yZU1lbnVPcHRpb25bXSA9IERFRkFVTFRfU1RFUF9NT1JFX01FTlVfT1BUSU9OUztcblxuICAvLyBIYW5kbGVyIGZ1bmN0aW9uIHRvIHBhc3MgZG93biB0byBuZXN0ZWQgY2hpbGQgc3RlcCBncm91cHMgZm9yIHJlY3Vyc2l2ZSBleHBhbnNpb25cbiAgQElucHV0KCkgb25FeHBhbmRIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IHZvaWQ7XG4gIC8qKiBXaGVuIHByb3ZpZGVkLCBwYXNzZWQgdG8gbmVzdGVkIHN0ZXAtcmVuZGVyZXIgc28gRWRpdCBvbiBuZXN0ZWQgc3RlcHMgaXMgZm9yd2FyZGVkIHdpdGggdGhlIHN0ZXAgY29uZmlnLiAqL1xuICBASW5wdXQoKSBvbkVkaXRTdGVwSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiB2b2lkO1xuICBASW5wdXQoKSBvbkFkZFN0ZXBPcHRpb25TZWxlY3RIYW5kbGVyPzogKG9wdGlvbjogQWRkU3RlcE1lbnVPcHRpb24sIHN0ZXA/OiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiB2b2lkO1xuICBASW5wdXQoKSBvblN0ZXBNb3JlT3B0aW9uU2VsZWN0SGFuZGxlcj86IChvcHRpb246IFN0ZXBNb3JlTWVudU9wdGlvbiwgc3RlcD86IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IHZvaWQ7XG4gIC8qKiBXaGVuIHByb3ZpZGVkLCB1c2VkIHRvIGdldCBhZGQtc3RlcCBtZW51IG9wdGlvbnMgcGVyIG5lc3RlZCBzdGVwOyBvdGhlcndpc2UgYWRkU3RlcE1lbnVPcHRpb25zIGlzIHVzZWQgZm9yIGFsbC4gKi9cbiAgQElucHV0KCkgZ2V0QWRkU3RlcE1lbnVPcHRpb25zRm9yTmVzdGVkPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IEFkZFN0ZXBNZW51T3B0aW9uW107XG4gIC8qKiBXaGVuIHByb3ZpZGVkLCB1c2VkIHRvIGdldCBzdGVwLW1vcmUgbWVudSBvcHRpb25zIHBlciBuZXN0ZWQgc3RlcDsgb3RoZXJ3aXNlIHN0ZXBNb3JlTWVudU9wdGlvbnMgaXMgdXNlZCBmb3IgYWxsLiAqL1xuICBASW5wdXQoKSBnZXRTdGVwTW9yZU1lbnVPcHRpb25zRm9yTmVzdGVkPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IFN0ZXBNb3JlTWVudU9wdGlvbltdO1xuXG4gIC8vIEhhbmRsZXIgZnVuY3Rpb25zIGZvciBjb25kaXRpb24gc3RlcHNcbiAgQElucHV0KCkgZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IENvbmRpdGlvbkJyYW5jaFtdO1xuICBASW5wdXQoKSBvbkNvbmRpdGlvbkJyYW5jaENsaWNrSGFuZGxlcj86IChzdGVwOiBhbnksIGJyYW5jaDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBpc1N0ZXBMb2FkaW5nSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBib29sZWFuO1xuICBASW5wdXQoKSBpc1N0ZXBFeHBhbmRlZEhhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYm9vbGVhbjtcbiAgQElucHV0KCkgY29udmVydE1zVG9TZWNvbmRzSGFuZGxlcj86IChkdXJhdGlvbjogbnVtYmVyKSA9PiBudW1iZXI7XG4gIEBJbnB1dCgpIGZvcm1hdEZhaWx1cmVEZXRhaWxzSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBhbnk7XG4gIEBJbnB1dCgpIGdldFNlbGZIZWFsQW5hbHlzaXNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGFueTtcbiAgQElucHV0KCkgb25NYWtlQ3VycmVudEJhc2VsaW5lSGFuZGxlcj86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBvblVwbG9hZEJhc2VsaW5lSGFuZGxlcj86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBvbkFuYWx5emVIYW5kbGVyPzogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25WaWV3RnVsbExvZ3NIYW5kbGVyPzogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25TZWxmSGVhbEFjdGlvbkhhbmRsZXI/OiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgQElucHV0KCkgZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcj86ICgpID0+IHsgaXNMb2FkaW5nQWNjZXB0OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTsgaXNMb2FkaW5nTW9kaWZ5QWNjZXB0OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB9O1xuICBASW5wdXQoKSBnZXRMb29wSXRlcmF0aW9uc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYW55W107XG4gIEBJbnB1dCgpIGdldEFwaUFzc2VydGlvbnNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGFueVtdO1xuICBASW5wdXQoKSBmb3JtYXRBY3Rpb25zSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBhbnlbXTtcbiAgQElucHV0KCkgb25WaWV3QWxsSXRlcmF0aW9uc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gdm9pZDtcbiAgQElucHV0KCkgb25TdGVwQ2xpY2tIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcsIGV2ZW50PzogRXZlbnQpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIG9uSnNvblBhdGhDb3BpZWRIYW5kbGVyPzogKGV2ZW50OiB7IHBhdGg6IHN0cmluZzsgc291cmNlOiAncmVxdWVzdEJvZHknIHwgJ3Jlc3BvbnNlQm9keScgfCAncmVxdWVzdEhlYWRlcnMnIHwgJ3Jlc3BvbnNlSGVhZGVycycgfSkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25Eb3dubG9hZEhhbmRsZXI/OiAoZXZlbnQ6IHsgZmlsZU5hbWU6IHN0cmluZzsgZmlsZVBhdGg/OiBzdHJpbmc7IGZpbGVUeXBlOiBzdHJpbmc7IHRlc3RTdGVwUmVzdWx0SWQ6IHN0cmluZyB9KSA9PiB2b2lkO1xuICBASW5wdXQoKSBvbkZpbGVQYXRoQ29waWVkSGFuZGxlcj86IChldmVudDogeyBmaWxlUGF0aDogc3RyaW5nOyB0ZXN0U3RlcFJlc3VsdElkOiBzdHJpbmcgfSkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25UZXh0Q29waWVkSGFuZGxlcj86IChldmVudDogeyB0ZXh0OiBzdHJpbmc7IHRlc3RTdGVwUmVzdWx0SWQ6IHN0cmluZyB9KSA9PiB2b2lkO1xuICBASW5wdXQoKSBqdW1wVG9UaW1lc3RhbXBIYW5kbGVyPzogKHRpbWVzdGFtcDogbnVtYmVyLCB0ZXN0U3RlcElkPzogbnVtYmVyIHwgc3RyaW5nKSA9PiB2b2lkO1xuICBASW5wdXQoKSBkb3dubG9hZGluZ1N0ZXBJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHN0ZXA/OiBhbnk7XG5cbiAgQElucHV0KCkgZmFpbHVyZURldGFpbHM/OiBGYWlsdXJlRGV0YWlscztcbiAgQElucHV0KCkgcmVhc29uaW5nPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIGNvbmZpZGVuY2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzVXBsb2FkaW5nQmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgaXNNYWtpbmdDdXJyZW50QmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgc2VsZkhlYWxBbmFseXNpcz86IFNlbGZIZWFsQW5hbHlzaXNEYXRhO1xuICBASW5wdXQoKSBpdGVyYXRpb25EYXRhPzogYW55O1xuICBAT3V0cHV0KCkgbWFrZUN1cnJlbnRCYXNlbGluZSA9IG5ldyBFdmVudEVtaXR0ZXI8bWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgdXBsb2FkQmFzZWxpbmUgPSBuZXcgRXZlbnRFbWl0dGVyPHVwbG9hZEJhc2VsaW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBhbmFseXplID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlld0Z1bGxMb2dzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2VsZkhlYWxBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGZIZWFsQWN0aW9uRXZlbnQ+KCk7XG5cbiAgc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnYWRkU3RlcE1lbnVUcmlnZ2VyJykgYWRkU3RlcE1lbnVUcmlnZ2VyPzogTWF0TWVudVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoJ3N0ZXBNb3JlTWVudVRyaWdnZXInKSBzdGVwTW9yZU1lbnVUcmlnZ2VyPzogTWF0TWVudVRyaWdnZXI7XG5cbiAgLyoqIFNob3cgZGVidWcgaWNvbiB3aGVuIGRlYnVnIG1vZGUgaXMgb24gKHNob3duIG9uIHBhcmVudCBhbmQgYWxsIGNoaWxkIHN0ZXBzKS4gKi9cbiAgZ2V0IHNob3dEZWJ1Z0ljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEZWJ1ZyA9PT0gdHJ1ZTtcbiAgfVxuXG4gIC8vIE91dHB1dCBldmVudCBmb3Igd2hlbiB0aGUgbG9vcCBzdGVwIGV4cGFuZHNcbiAgQE91dHB1dCgpIG9uRXhwYW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8vIE91dHB1dCBldmVudCBmb3Igd2hlbiBcIlZpZXcgYWxsIGl0ZXJhdGlvbnNcIiBpcyBjbGlja2VkXG4gIEBPdXRwdXQoKSBvblZpZXdBbGxJdGVyYXRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8vIE91dHB1dCBldmVudCBmb3Igd2hlbiBpdGVyYXRpb24gc2VsZWN0aW9uIGNoYW5nZXNcbiAgQE91dHB1dCgpIG9uSXRlcmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8gQ29uZmlnIHByb3BlcnR5IGZvciBiYXNlIGNsYXNzIC0gYnVpbHQgZnJvbSBpbmRpdmlkdWFsIGlucHV0cyBpbiBuZ09uSW5pdFxuICBvdmVycmlkZSBjb25maWchOiBMb29wU3RlcENvbmZpZztcblxuICBzZWxlY3RlZEl0ZXJhdGlvbjogTG9vcEl0ZXJhdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwcmV2aW91c1N0YXR1cz86IFN0ZXBTdGF0dXM7XG4gIHByaXZhdGUgdXNlck1hbnVhbGx5Q2xvc2VkOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBUcmFja3MgdGhlIGFycmF5IGxlbmd0aCBzZWVuIGxhc3QgY3ljbGUgc28gaW4tcGxhY2UgcHVzaGVzIGFyZSBkZXRlY3RlZCB3aXRob3V0IGEgcmVmZXJlbmNlIGNoYW5nZS4gKi9cbiAgcHJpdmF0ZSBsYXN0TmVzdGVkU3RlcHNMZW5ndGg6IG51bWJlciA9IDA7XG4gIC8vIFRyYWNrIHdoaWNoIHN0ZXBzIGFyZSBzdGlsbCBsb2FkaW5nIHRvIHNob3cgc2tlbGV0b25cbiAgbG9hZGluZ1N0ZXBzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcblxuICAvLyBQcm9jZXNzZWQgc3ViLXN0ZXBzIGZvciBsaXZlIG1vZGUgV0FJVF9GT1JfTE9DQVRPUiBjb3VudGRvd24gZ3JvdXBpbmdcbiAgcHJvY2Vzc2VkU3ViU3RlcHM6IGFueVtdID0gW107XG4gIHByaXZhdGUgbGFzdFByb2Nlc3NlZEluZGV4OiBudW1iZXIgPSAwO1xuICBwcml2YXRlIHdhaXRMb2NhdG9yR3JvdXBFbnRyeTogYW55IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY291bnRkb3duSW50ZXJ2YWxJZDogYW55ID0gbnVsbDtcblxuICAvLyBBSV9BVVRPX0hFQUwgZ3JvdXBpbmc6IHNob3cgbG9hZGluZyB1bnRpbCBBSV9BVVRPX0hFQUxfU1VDQ0VTUyBvciBBSV9BVVRPX0hFQUxfRkFJTEVEXG4gIHByaXZhdGUgYWlBdXRvSGVhbEdyb3VwRW50cnk6IGFueSB8IG51bGwgPSBudWxsO1xuXG4gIC8vIFByb2Nlc3NlZCBzdWItc3RlcHMgZm9yIHJ1biByZXN1bHQgc2NyZWVuIChmaWx0ZXIgYW5kIHNwbGl0IEFJX0FVVE9fSEVBTF9TVUNDRVNTL0ZBSUxFRClcbiAgcHJvY2Vzc2VkU3ViU3RlcHNGb3JSdW5SZXN1bHQ6IGFueVtdID0gW107XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQnVpbGQgY29uZmlnIGZyb20gaW5kaXZpZHVhbCBpbnB1dHNcbiAgICAvLyBVc2UgbmVzdGVkU3RlcHMgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gZW1wdHkgYXJyYXlcbiAgICBjb25zdCBzdGVwc1RvVXNlID0gdGhpcy5uZXN0ZWRTdGVwcyB8fCBbXTtcblxuICAgIC8vIFVzZSBhY3Rpb24gYXMgZmFsbGJhY2sgZm9yIHRpdGxlIGlmIHRpdGxlIGlzIGVtcHR5XG4gICAgLy8gQ2hlY2sgYm90aCBpbnN0YW5jZSBwcm9wZXJ0eSBhbmQgY29uZmlnIGZvciBhY3Rpb25cbiAgICBjb25zdCBhY3Rpb25WYWx1ZSA9ICh0aGlzIGFzIGFueSkuYWN0aW9uIHx8ICcnO1xuICAgIGNvbnN0IHN0ZXBUaXRsZSA9ICh0aGlzLnRpdGxlICYmIHRoaXMudGl0bGUudHJpbSgpKSA/IHRoaXMudGl0bGUgOiBhY3Rpb25WYWx1ZTtcblxuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0ZXN0U3RlcElkOiB0aGlzLnN0ZXA/LnRlc3RTdGVwSWQgfHwgdW5kZWZpbmVkLFxuICAgICAgdGVzdFN0ZXBSZXN1bHRJZDogdGhpcy50ZXN0U3RlcFJlc3VsdElkLFxuICAgICAgc3RlcE51bWJlcjogdGhpcy5zdGVwTnVtYmVyLFxuICAgICAgdGl0bGU6IHN0ZXBUaXRsZSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBkdXJhdGlvbjogdGhpcy5kdXJhdGlvbixcbiAgICAgIHR5cGU6ICdsb29wJyxcbiAgICAgIGxvb3BUeXBlOiB0aGlzLmxvb3BUeXBlLFxuICAgICAgaXRlcmF0aW9uczogdGhpcy5pdGVyYXRpb25zLFxuICAgICAgc2VsZWN0ZWRJdGVyYXRpb25JZDogdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbklkLFxuICAgICAgZGVmYXVsdEl0ZXJhdGlvbjogdGhpcy5kZWZhdWx0SXRlcmF0aW9uLFxuICAgICAgbmVzdGVkU3RlcHM6IHN0ZXBzVG9Vc2UsXG4gICAgICBzdGVwRGVsZXRlZDogdGhpcy5zdGVwRGVsZXRlZCxcbiAgICAgIHNob3dWaWV3QWxsSXRlcmF0aW9uczogdGhpcy5zaG93Vmlld0FsbEl0ZXJhdGlvbnMsXG4gICAgICB0aW1pbmdCcmVha2Rvd246IHRoaXMudGltaW5nQnJlYWtkb3duLFxuICAgICAgZXhwYW5kZWQ6IHRoaXMuZXhwYW5kZWQsXG4gICAgfSBhcyBMb29wU3RlcENvbmZpZztcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAvLyBJbml0aWFsaXplIGxpdmUgc3ViLXN0ZXAgcHJvY2Vzc2luZyBmb3IgV0FJVF9GT1JfTE9DQVRPUiBncm91cGluZ1xuICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2Nlc3NMaXZlU3ViU3RlcHMoKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBQcm9jZXNzIGZvciBydW4gcmVzdWx0IHNjcmVlbjogZmlsdGVyIGFuZCBzcGxpdCBBSV9BVVRPX0hFQUxfU1VDQ0VTUy9GQUlMRURcbiAgICAgIHRoaXMucHJvY2Vzc1N1YlN0ZXBzRm9yUnVuUmVzdWx0KCk7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBzZWxlY3Rpb24gLSBwcmlvcml0aXplIHNlbGVjdGVkSXRlcmF0aW9uSWQgaW5wdXQsIHRoZW4gZGVmYXVsdFxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWQgJiYgdGhpcy5pdGVyYXRpb25zICYmIHRoaXMuaXRlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IHRoaXMuaXRlcmF0aW9ucy5maW5kKGl0ZXIgPT4gaXRlci5pZCA9PT0gdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbklkKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gZm91bmQ7XG4gICAgICAgIHRoaXMudXNlclNlbGVjdGVkSXRlcmF0aW9uSWQgPSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdERlZmF1bHRJdGVyYXRpb24oKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlcmF0aW9ucyAmJiB0aGlzLml0ZXJhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3REZWZhdWx0SXRlcmF0aW9uKCk7XG4gICAgICAvLyBJZiBkZWZhdWx0SXRlcmF0aW9uIGlzICdsYXN0JywgYWxzbyBzZXQgdXNlclNlbGVjdGVkSXRlcmF0aW9uSWQgdG8gdGhlIGxhc3QgaXRlcmF0aW9uXG4gICAgICBpZiAodGhpcy5kZWZhdWx0SXRlcmF0aW9uID09PSAnbGFzdCcgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbikge1xuICAgICAgICB0aGlzLnVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkID0gdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5pZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgaWYgYWxyZWFkeSBleHBhbmRlZFxuICAgIGlmICh0aGlzLmlzRXhwYW5kZWQgJiYgdGhpcy5uZXN0ZWRTdGVwcyAmJiB0aGlzLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgICB0aGlzLm5lc3RlZFN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgICAgICBpZiAoc3RlcElkKSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuYWRkKFN0cmluZyhzdGVwSWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIFVwZGF0ZSBzZWxlY3Rpb24gd2hlbiBzZWxlY3RlZEl0ZXJhdGlvbklkIGlucHV0IGNoYW5nZXNcbiAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWRJdGVyYXRpb25JZCddICYmIHRoaXMuaXRlcmF0aW9ucyAmJiB0aGlzLml0ZXJhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY2hhbmdlc1snc2VsZWN0ZWRJdGVyYXRpb25JZCddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBjaGFuZ2VzWydzZWxlY3RlZEl0ZXJhdGlvbklkJ10ucHJldmlvdXNWYWx1ZTtcblxuICAgICAgLy8gQWx3YXlzIHVwZGF0ZSB3aGVuIHNlbGVjdGVkSXRlcmF0aW9uSWQgaW5wdXQgY2hhbmdlcyBmcm9tIHBhcmVudFxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICBpZiAoY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLml0ZXJhdGlvbnMuZmluZChpdGVyID0+IGl0ZXIuaWQgPT09IGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAvLyBSZXNldCBwcm9jZXNzaW5nIHdoZW4gc3dpdGNoaW5nIHRvIGEgZGlmZmVyZW50IGl0ZXJhdGlvblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5pZCAhPT0gZm91bmQuaWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNldExpdmVQcm9jZXNzaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gZm91bmQ7XG4gICAgICAgICAgICAvLyBTeW5jIHVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkIHdpdGggdGhlIGlucHV0IHZhbHVlXG4gICAgICAgICAgICB0aGlzLnVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkID0gY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgLy8gUHJvY2VzcyBsaXZlIHN1Yi1zdGVwcyB3aGVuIGl0ZXJhdGlvbiBjaGFuZ2VzXG4gICAgICAgICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0xpdmVTdWJTdGVwcygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJvY2Vzc1N1YlN0ZXBzRm9yUnVuUmVzdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIG5vdCBmb3VuZCwgc2VsZWN0IGRlZmF1bHRcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVmYXVsdEl0ZXJhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiBubyB2YWx1ZSBwcm92aWRlZCwgc2VsZWN0IGRlZmF1bHRcbiAgICAgICAgICB0aGlzLnNlbGVjdERlZmF1bHRJdGVyYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBVcGRhdGUgc2VsZWN0aW9uIHdoZW4gaXRlcmF0aW9ucyBhcnJheSBjaGFuZ2VzXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZXJhdGlvbnMnXSAmJiB0aGlzLml0ZXJhdGlvbnMgJiYgdGhpcy5pdGVyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIElmIHdlIGhhdmUgYSB1c2VyIHNlbGVjdGlvbiwgdHJ5IHRvIHByZXNlcnZlIGl0XG4gICAgICBpZiAodGhpcy51c2VyU2VsZWN0ZWRJdGVyYXRpb25JZCkge1xuICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuaXRlcmF0aW9ucy5maW5kKGl0ZXIgPT4gaXRlci5pZCA9PT0gdGhpcy51c2VyU2VsZWN0ZWRJdGVyYXRpb25JZCk7XG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgIC8vIFJlc2V0IHByb2Nlc3Npbmcgd2hlbiBzd2l0Y2hpbmcgdG8gYSBkaWZmZXJlbnQgaXRlcmF0aW9uXG4gICAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5pZCAhPT0gZm91bmQuaWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gZm91bmQ7XG4gICAgICAgICAgLy8gUHJvY2VzcyBsaXZlIHN1Yi1zdGVwcyB3aGVuIGl0ZXJhdGlvbiBjaGFuZ2VzXG4gICAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwcykge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzTGl2ZVN1YlN0ZXBzKCk7XG4gICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NTdWJTdGVwc0ZvclJ1blJlc3VsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBVc2VyIHNlbGVjdGlvbiBubyBsb25nZXIgdmFsaWQsIHVzZSBzZWxlY3RlZEl0ZXJhdGlvbklkIG9yIGRlZmF1bHRcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZXJhdGlvbklkKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZEJ5SWQgPSB0aGlzLml0ZXJhdGlvbnMuZmluZChpdGVyID0+IGl0ZXIuaWQgPT09IHRoaXMuc2VsZWN0ZWRJdGVyYXRpb25JZCk7XG4gICAgICAgICAgICBpZiAoZm91bmRCeUlkKSB7XG4gICAgICAgICAgICAgIC8vIFJlc2V0IHByb2Nlc3Npbmcgd2hlbiBzd2l0Y2hpbmcgdG8gYSBkaWZmZXJlbnQgaXRlcmF0aW9uXG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uaWQgIT09IGZvdW5kQnlJZC5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gPSBmb3VuZEJ5SWQ7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaXZlU3ViU3RlcHMoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzU3ViU3RlcHNGb3JSdW5SZXN1bHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3REZWZhdWx0SXRlcmF0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVmYXVsdEl0ZXJhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiB8fCAhdGhpcy5pdGVyYXRpb25zLnNvbWUoaXRlciA9PiBpdGVyLmlkID09PSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uPy5pZCkpIHtcbiAgICAgICAgLy8gTm8gdXNlciBzZWxlY3Rpb24sIHVzZSBzZWxlY3RlZEl0ZXJhdGlvbklkIG9yIGRlZmF1bHRcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVyYXRpb25JZCkge1xuICAgICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5pdGVyYXRpb25zLmZpbmQoaXRlciA9PiBpdGVyLmlkID09PSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWQpO1xuICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgLy8gUmVzZXQgcHJvY2Vzc2luZyB3aGVuIHN3aXRjaGluZyB0byBhIGRpZmZlcmVudCBpdGVyYXRpb25cbiAgICAgICAgICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uaWQgIT09IGZvdW5kLmlkKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiA9IGZvdW5kO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwcykge1xuICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaXZlU3ViU3RlcHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3REZWZhdWx0SXRlcmF0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0RGVmYXVsdEl0ZXJhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFVwZGF0ZSB0aXRsZSBpZiBpdCBjaGFuZ2VzIC0gYWxzbyBjaGVjayBmb3IgYWN0aW9uIGluIGNvbmZpZyBvciBpbnN0YW5jZVxuICAgIGlmIChjaGFuZ2VzWyd0aXRsZSddKSB7XG4gICAgICBjb25zdCBhY3Rpb25WYWx1ZSA9ICh0aGlzIGFzIGFueSkuYWN0aW9uIHx8ICh0aGlzLmNvbmZpZyBhcyBhbnkpPy5hY3Rpb24gfHwgJyc7XG4gICAgICBjb25zdCBzdGVwVGl0bGUgPSAodGhpcy50aXRsZSAmJiB0aGlzLnRpdGxlLnRyaW0oKSkgPyB0aGlzLnRpdGxlIDogYWN0aW9uVmFsdWU7XG4gICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgdGhpcy5jb25maWcudGl0bGUgPSBzdGVwVGl0bGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3N0ZXBEZWxldGVkJ10gJiYgdGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnLnN0ZXBEZWxldGVkID0gY2hhbmdlc1snc3RlcERlbGV0ZWQnXS5jdXJyZW50VmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2V4cGFuZGVkJ10gJiYgdGhpcy5leHBhbmRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmxvZygnZXhwYW5kZWQgY2hhbmdlZCBpbiBsb29wLXN0ZXAnLCB0aGlzLmlkLCBjaGFuZ2VzWydleHBhbmRlZCddKTtcbiAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IHRoaXMuZXhwYW5kZWQ7XG4gICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgdGhpcy5jb25maWcuZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBjb25maWcgd2hlbiBpbnB1dHMgY2hhbmdlXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZXJhdGlvbnMnXSB8fCBjaGFuZ2VzWydzZWxlY3RlZEl0ZXJhdGlvbklkJ10gfHwgY2hhbmdlc1snbmVzdGVkU3RlcHMnXSkge1xuICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLml0ZXJhdGlvbnMgPSB0aGlzLml0ZXJhdGlvbnM7XG4gICAgICAgIHRoaXMuY29uZmlnLnNlbGVjdGVkSXRlcmF0aW9uSWQgPSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWQ7XG4gICAgICAgIHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzID0gdGhpcy5uZXN0ZWRTdGVwcyB8fCBbXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgd2hlbiBuZXN0ZWQgc3RlcHMgYXJlIGFkZGVkIGFuZCBzdGVwIGlzIGV4cGFuZGVkXG4gICAgLy8gaWYgKGNoYW5nZXNbJ25lc3RlZFN0ZXBzJ10gJiYgdGhpcy5pc0V4cGFuZGVkICYmIHRoaXMubmVzdGVkU3RlcHMgJiYgdGhpcy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgIC8vICAgdGhpcy5uZXN0ZWRTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgIC8vICAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICAvLyAgICAgaWYgKHN0ZXBJZCkge1xuICAgIC8vICAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmFkZChTdHJpbmcoc3RlcElkKSk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH0pO1xuICAgIC8vIH1cblxuICAgIC8vIEluaXRpYWxpemUgbG9hZGluZyBzdGF0ZSBpZiBhbHJlYWR5IGV4cGFuZGVkIHdoZW4gY29tcG9uZW50IGluaXRpYWxpemVzXG4gICAgaWYgKGNoYW5nZXNbJ2V4cGFuZGVkJ10gJiYgdGhpcy5pc0V4cGFuZGVkICYmIHRoaXMubmVzdGVkU3RlcHMgJiYgdGhpcy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgICAgdGhpcy5uZXN0ZWRTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICAgICAgaWYgKHN0ZXBJZCkge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmFkZChTdHJpbmcoc3RlcElkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFsc28gaGFuZGxlIHdoZW4gbmVzdGVkU3RlcHMgaXMgcGFzc2VkIHZpYSBjaGlsZHJlbiBwcm9wZXJ0eSAoZm9yIHN0ZXAtcmVuZGVyZXIgY29tcGF0aWJpbGl0eSlcbiAgICBpZiAoY2hhbmdlc1snbmVzdGVkU3RlcHMnXSAmJiB0aGlzLm5lc3RlZFN0ZXBzKSB7XG4gICAgICAvLyBFbnN1cmUgY29uZmlnIGlzIHVwZGF0ZWQgd2l0aCBuZXN0ZWRTdGVwc1xuICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzID0gdGhpcy5uZXN0ZWRTdGVwcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBuZXN0ZWRTdGVwcyBpcyBub3QgcHJvdmlkZWQgYnV0IGNoaWxkcmVuIGlzIChmcm9tIHN0ZXAtcmVuZGVyZXIpLCB1c2UgY2hpbGRyZW5cbiAgICBpZiAoIXRoaXMubmVzdGVkU3RlcHMgJiYgKHRoaXMuY29uZmlnIGFzIGFueSkuY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheSgodGhpcy5jb25maWcgYXMgYW55KS5jaGlsZHJlbikpIHtcbiAgICAgIHRoaXMubmVzdGVkU3RlcHMgPSAodGhpcy5jb25maWcgYXMgYW55KS5jaGlsZHJlbjtcbiAgICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgICB0aGlzLmNvbmZpZy5uZXN0ZWRTdGVwcyA9IHRoaXMubmVzdGVkU3RlcHM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNMaXZlKSB7XG4gICAgICAvLyBVcGRhdGUgc3ViU3RlcHMgYXJyYXkgd2hlbiBuZXcgb25lcyBhcmUgYWRkZWRcbiAgICAgIGlmIChjaGFuZ2VzWyduZXN0ZWRTdGVwcyddKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU3ViU3RlcHNDb3VudCA9IGNoYW5nZXNbJ25lc3RlZFN0ZXBzJ10ucHJldmlvdXNWYWx1ZT8ubGVuZ3RoIHx8IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdWJTdGVwc0NvdW50ID0gKHRoaXMubmVzdGVkU3RlcHMgfHwgW10pLmxlbmd0aDtcblxuICAgICAgICAvLyBTdWItc3RlcHMgYXJlIGFwcGVuZGVkIGV4dGVybmFsbHksIHNvIHdlIGp1c3QgdXBkYXRlIHRoZSBjb25maWdcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgICAgdGhpcy5jb25maWcubmVzdGVkU3RlcHMgPSB0aGlzLm5lc3RlZFN0ZXBzIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBBdXRvLWV4cGFuZCBpZiBzdGVwIGlzIHJ1bm5pbmcgYW5kIG5ldyBzdWJTdGVwcyBhcmUgYWRkZWQgKGxvZ3MgY29taW5nIGluKVxuICAgICAgICBpZiAoIWNoYW5nZXNbJ25lc3RlZFN0ZXBzJ10uZmlyc3RDaGFuZ2UgJiYgXG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnICYmIFxuICAgICAgICAgICAgY3VycmVudFN1YlN0ZXBzQ291bnQgPiBwcmV2aW91c1N1YlN0ZXBzQ291bnQgJiZcbiAgICAgICAgICAgIHRoaXMuaGFzU3ViU3RlcHMgJiYgXG4gICAgICAgICAgICAhdGhpcy5pc0V4cGFuZGVkICYmIFxuICAgICAgICAgICAgIXRoaXMudXNlck1hbnVhbGx5Q2xvc2VkKSB7XG4gICAgICAgICAgdGhpcy5hdXRvRXhwYW5kKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIHN0YXR1cyBjaGFuZ2VzIC0gYXV0by1leHBhbmQgd2hlbiBzdGVwIHN0YXJ0cyBleGVjdXRpbmdcbiAgICAgIGlmIChjaGFuZ2VzWydzdGF0dXMnXSAmJiAhY2hhbmdlc1snc3RhdHVzJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gY2hhbmdlc1snc3RhdHVzJ10uY3VycmVudFZhbHVlO1xuICAgICAgICBjb25zdCBvbGRTdGF0dXMgPSBjaGFuZ2VzWydzdGF0dXMnXS5wcmV2aW91c1ZhbHVlO1xuXG4gICAgICAgIC8vIEF1dG8tZXhwYW5kIHdoZW4gc3RhdHVzIGNoYW5nZXMgdG8gJ3J1bm5pbmcnIGFuZCBoYXMgc3ViU3RlcHMgKG9yIHdpbGwgaGF2ZSBzb29uKVxuICAgICAgICBpZiAobmV3U3RhdHVzID09PSAncnVubmluZycgJiYgb2xkU3RhdHVzICE9PSAncnVubmluZycgJiYgIXRoaXMudXNlck1hbnVhbGx5Q2xvc2VkKSB7XG4gICAgICAgICAgLy8gRXhwYW5kIGltbWVkaWF0ZWx5IGlmIGFscmVhZHkgaGFzIHN1YlN0ZXBzLCBvciB3YWl0IGZvciB0aGVtXG4gICAgICAgICAgaWYgKHRoaXMuaGFzU3ViU3RlcHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b0V4cGFuZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJldmlvdXNTdGF0dXMgPSBuZXdTdGF0dXM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIC8vIEJ1ZyAzIGZpeDogZGV0ZWN0IGluLXBsYWNlIG5lc3RlZFN0ZXBzIGFycmF5IGdyb3d0aCBkdXJpbmcgbGl2ZSBleGVjdXRpb24uXG4gICAgLy8gbmdPbkNoYW5nZXMoJ25lc3RlZFN0ZXBzJykgbmV2ZXIgZmlyZXMgd2hlbiBpdGVtcyBhcmUgcHVzaGVkIG9udG8gdGhlIHNhbWUgYXJyYXlcbiAgICAvLyByZWZlcmVuY2UsIHNvIGNvbmZpZy5uZXN0ZWRTdGVwcyBmYWxscyBvdXQgb2Ygc3luYyB3aXRoIHRoZSBsaXZlIGRhdGEuXG4gICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMubmVzdGVkU3RlcHMgJiYgdGhpcy5jb25maWcpIHtcbiAgICAgIGNvbnN0IG5lc3RlZExlbmd0aCA9IHRoaXMubmVzdGVkU3RlcHMubGVuZ3RoO1xuICAgICAgaWYgKG5lc3RlZExlbmd0aCAhPT0gdGhpcy5sYXN0TmVzdGVkU3RlcHNMZW5ndGgpIHtcbiAgICAgICAgdGhpcy5sYXN0TmVzdGVkU3RlcHNMZW5ndGggPSBuZXN0ZWRMZW5ndGg7XG4gICAgICAgIHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzID0gdGhpcy5uZXN0ZWRTdGVwcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNMaXZlIHx8ICF0aGlzLnNlbGVjdGVkSXRlcmF0aW9uKSByZXR1cm47XG4gICAgY29uc3QgY3VycmVudExlbmd0aCA9ICh0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzIHx8IFtdKS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGFzdFByb2Nlc3NlZEluZGV4ID4gMCAmJiBjdXJyZW50TGVuZ3RoIDwgdGhpcy5sYXN0UHJvY2Vzc2VkSW5kZXgpIHtcbiAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgIH1cbiAgICBpZiAoY3VycmVudExlbmd0aCAhPT0gdGhpcy5sYXN0UHJvY2Vzc2VkSW5kZXgpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0xpdmVTdWJTdGVwcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXV0b0V4cGFuZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCAmJiB0aGlzLmhhc1N1YlN0ZXBzKSB7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyTWFudWFsbHlDbG9zZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMudG9nZ2xlRXhwYW5kZWQuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaGFzU3ViU3RlcHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmVzdGVkU3RlcHMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBvdmVycmlkZSB0b2dnbGUoKTogdm9pZCB7XG4gICAgY29uc3Qgd2FzRXhwYW5kZWQgPSB0aGlzLmlzRXhwYW5kZWQ7XG4gICAgc3VwZXIudG9nZ2xlKCk7XG4gICAgLy8gRW1pdCBldmVudCB3aGVuIGV4cGFuZGluZyAodHJhbnNpdGlvbmluZyBmcm9tIGNvbGxhcHNlZCB0byBleHBhbmRlZClcbiAgICBpZiAoIXdhc0V4cGFuZGVkICYmIHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgdGhpcy5vbkV4cGFuZC5lbWl0KCk7XG4gICAgICAvLyBJZiB0aGlzIHN0ZXAgaGFzIGNoaWxkcmVuIChoYXNDaGlsZCBpcyB0cnVlKSBhbmQgb25FeHBhbmRIYW5kbGVyIGlzIHByb3ZpZGVkLCBjYWxsIGl0IHRvIGZldGNoIGNoaWxkcmVuXG4gICAgICBpZiAodGhpcy5vbkV4cGFuZEhhbmRsZXIgJiYgdGhpcy5jb25maWcgJiYgdGhpcy5oYXNDaGlsZCkge1xuICAgICAgICAvLyBDcmVhdGUgYSBzdGVwIGNvbmZpZyBvYmplY3QgZm9yIHRoZSBoYW5kbGVyIHdpdGggaGFzQ2hpbGQgcHJvcGVydHlcbiAgICAgICAgY29uc3Qgc3RlcENvbmZpZyA9IHtcbiAgICAgICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgICAgICBoYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgICBleHBhbmRlZDogdHJ1ZSwgLy8gRW5zdXJlIGV4cGFuZGVkIGlzIHNldFxuICAgICAgICAgIHRlc3RTdGVwVHlwZTogKHRoaXMuY29uZmlnIGFzIGFueSkudGVzdFN0ZXBUeXBlIHx8ICh0aGlzLmxvb3BUeXBlID09PSAnZm9yJyA/ICdGT1JfTE9PUCcgOiAnV0hJTEVfTE9PUCcpLFxuICAgICAgICAgIGNoaWxkcmVuOiB0aGlzLmNvbmZpZy5uZXN0ZWRTdGVwcyB8fCBbXSxcbiAgICAgICAgICB0ZXN0U3RlcFJlc3VsdElkOiB0aGlzLnRlc3RTdGVwUmVzdWx0SWQsXG4gICAgICAgICAgaWQ6IHRoaXMuaWRcbiAgICAgICAgfSBhcyBFeGVjdXRpb25TdGVwQ29uZmlnICYgeyBoYXNDaGlsZDogYm9vbGVhbjsgdGVzdFN0ZXBUeXBlPzogc3RyaW5nOyBjaGlsZHJlbj86IGFueVtdOyBleHBhbmRlZD86IGJvb2xlYW4gfTtcbiAgICAgICAgdGhpcy5vbkV4cGFuZEhhbmRsZXIoc3RlcENvbmZpZyk7XG4gICAgICB9XG4gICAgICAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgZm9yIGFsbCBuZXN0ZWQgc3RlcHNcbiAgICAgIGlmICh0aGlzLm5lc3RlZFN0ZXBzICYmIHRoaXMubmVzdGVkU3RlcHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgICAgICB0aGlzLm5lc3RlZFN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RlcElkID0gc3RlcC50ZXN0U3RlcFJlc3VsdElkIHx8IHN0ZXAuaWQ7XG4gICAgICAgICAgaWYgKHN0ZXBJZCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuYWRkKFN0cmluZyhzdGVwSWQpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgLy8gQ2xlYXIgbG9hZGluZyBzdGF0ZSB3aGVuIGNvbGxhcHNpbmdcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGV4cGFuZGVkIHN0YXRlIGlzIHN5bmNlZCB3aXRoIGNvbmZpZ1xuICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcuZXhwYW5kZWQgPSB0aGlzLmlzRXhwYW5kZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYSBzdGVwIGlzIHN0aWxsIGxvYWRpbmdcbiAgaXNOZXN0ZWRTdGVwTG9hZGluZyhzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RlcElkID0gc3RlcC50ZXN0U3RlcFJlc3VsdElkIHx8IHN0ZXAuaWQ7XG4gICAgcmV0dXJuIHN0ZXBJZCA/IHRoaXMubG9hZGluZ1N0ZXBzLmhhcyhTdHJpbmcoc3RlcElkKSkgOiBmYWxzZTtcbiAgfVxuXG4gIC8vIE1hcmsgYSBzdGVwIGFzIGxvYWRlZCAoY2FsbGVkIHdoZW4gc3RlcC1yZW5kZXJlciBpcyByZWFkeSlcbiAgbWFya1N0ZXBMb2FkZWQoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgIGlmIChzdGVwSWQpIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmRlbGV0ZShTdHJpbmcoc3RlcElkKSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0RGVmYXVsdEl0ZXJhdGlvbigpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCwgdHJ5IHRvIHVzZSBzZWxlY3RlZEl0ZXJhdGlvbklkIGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVyYXRpb25JZCkge1xuICAgICAgY29uc3QgZm91bmQgPSB0aGlzLml0ZXJhdGlvbnMuZmluZChcbiAgICAgICAgaXRlciA9PiBpdGVyLmlkID09PSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWRcbiAgICAgICk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgLy8gUmVzZXQgcHJvY2Vzc2luZyB3aGVuIHN3aXRjaGluZyB0byBhIGRpZmZlcmVudCBpdGVyYXRpb25cbiAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5pZCAhPT0gZm91bmQuaWQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0TGl2ZVByb2Nlc3NpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gZm91bmQ7XG4gICAgICAgIC8vIFByb2Nlc3MgbGl2ZSBzdWItc3RlcHMgd2hlbiBpdGVyYXRpb24gaXMgc2VsZWN0ZWRcbiAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwcykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0xpdmVTdWJTdGVwcygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB1c2VyIGhhcyBtYW51YWxseSBzZWxlY3RlZCBzb21ldGhpbmcsIHByZXNlcnZlIGl0XG4gICAgaWYgKHRoaXMudXNlclNlbGVjdGVkSXRlcmF0aW9uSWQpIHtcbiAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5pdGVyYXRpb25zLmZpbmQoaXRlciA9PiBpdGVyLmlkID09PSB0aGlzLnVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAvLyBSZXNldCBwcm9jZXNzaW5nIHdoZW4gc3dpdGNoaW5nIHRvIGEgZGlmZmVyZW50IGl0ZXJhdGlvblxuICAgICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLmlkICE9PSBmb3VuZC5pZCkge1xuICAgICAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gPSBmb3VuZDtcbiAgICAgICAgLy8gUHJvY2VzcyBsaXZlIHN1Yi1zdGVwcyB3aGVuIGl0ZXJhdGlvbiBpcyBzZWxlY3RlZFxuICAgICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzTGl2ZVN1YlN0ZXBzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFwcGx5IGRlZmF1bHQgYmFzZWQgb24gZGVmYXVsdEl0ZXJhdGlvbiBzZXR0aW5nXG4gICAgaWYgKHRoaXMuZGVmYXVsdEl0ZXJhdGlvbiA9PT0gJ2xhc3QnICYmIHRoaXMuaXRlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsYXN0SXRlcmF0aW9uID0gdGhpcy5pdGVyYXRpb25zW3RoaXMuaXRlcmF0aW9ucy5sZW5ndGggLSAxXTtcbiAgICAgIC8vIFJlc2V0IHByb2Nlc3Npbmcgd2hlbiBzd2l0Y2hpbmcgdG8gYSBkaWZmZXJlbnQgaXRlcmF0aW9uXG4gICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLmlkICE9PSBsYXN0SXRlcmF0aW9uLmlkKSB7XG4gICAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiA9IGxhc3RJdGVyYXRpb247XG4gICAgICAvLyBTZXQgdXNlclNlbGVjdGVkSXRlcmF0aW9uSWQgdG8gdHJhY2sgdGhlIGRlZmF1bHQgc2VsZWN0aW9uXG4gICAgICB0aGlzLnVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkID0gbGFzdEl0ZXJhdGlvbi5pZDtcbiAgICAgIC8vIFByb2Nlc3MgbGl2ZSBzdWItc3RlcHMgd2hlbiBpdGVyYXRpb24gaXMgc2VsZWN0ZWRcbiAgICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzTGl2ZVN1YlN0ZXBzKCk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3ViU3RlcHNGb3JSdW5SZXN1bHQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaXJzdEl0ZXJhdGlvbiA9IHRoaXMuaXRlcmF0aW9uc1swXTtcbiAgICAgIC8vIFJlc2V0IHByb2Nlc3Npbmcgd2hlbiBzd2l0Y2hpbmcgdG8gYSBkaWZmZXJlbnQgaXRlcmF0aW9uXG4gICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLmlkICE9PSBmaXJzdEl0ZXJhdGlvbi5pZCkge1xuICAgICAgICB0aGlzLnJlc2V0TGl2ZVByb2Nlc3NpbmcoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gPSBmaXJzdEl0ZXJhdGlvbjtcbiAgICAgIC8vIFNldCB1c2VyU2VsZWN0ZWRJdGVyYXRpb25JZCB0byB0cmFjayB0aGUgZGVmYXVsdCBzZWxlY3Rpb25cbiAgICAgIHRoaXMudXNlclNlbGVjdGVkSXRlcmF0aW9uSWQgPSBmaXJzdEl0ZXJhdGlvbi5pZDtcbiAgICAgIC8vIFByb2Nlc3MgbGl2ZSBzdWItc3RlcHMgd2hlbiBpdGVyYXRpb24gaXMgc2VsZWN0ZWRcbiAgICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzTGl2ZVN1YlN0ZXBzKCk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3ViU3RlcHNGb3JSdW5SZXN1bHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVJdGVyYXRpb25DaGFuZ2UoaXRlcmF0aW9uOiBMb29wSXRlcmF0aW9uKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coXCJJVEVSQVRJT04gQ0hBTkdFXCIsIHRoaXMuY29uZmlnICxpdGVyYXRpb24pXG4gICAgLy8gUmVzZXQgcHJvY2Vzc2luZyB3aGVuIHN3aXRjaGluZyBpdGVyYXRpb25zXG4gICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5pZCAhPT0gaXRlcmF0aW9uLmlkKSB7XG4gICAgICB0aGlzLnJlc2V0TGl2ZVByb2Nlc3NpbmcoKTtcbiAgICB9XG4gICAgLy8gU3RvcmUgdGhlIHVzZXIncyBtYW51YWwgc2VsZWN0aW9uXG4gICAgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiA9IGl0ZXJhdGlvbjtcbiAgICB0aGlzLnVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkID0gaXRlcmF0aW9uLmlkO1xuXG4gICAgaWYgKHRoaXMuaXNMaXZlKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlcmF0aW9ucy5maW5kSW5kZXgoaXRlciA9PiBpdGVyLmlkID09PSBpdGVyYXRpb24uaWQpO1xuXG4gICAgICBpZiAoaW5kZXggPiAtMSAmJiB0aGlzLml0ZXJhdGlvbkRhdGE/LltpbmRleF0gJiYgdGhpcy5uZXN0ZWRTdGVwcykge1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWROZXN0ZWRTdGVwczogRXhlY3V0aW9uU3RlcENvbmZpZ1tdID1cbiAgICAgICAgICB0aGlzLm5lc3RlZFN0ZXBzLm1hcChzdGVwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTdWJTdGVwcyA9IHRoaXMuaXRlcmF0aW9uRGF0YVtpbmRleF1bc3RlcC5pZF07XG4gICAgICAgICAgICBzdGVwLmR1cmF0aW9uID0gdXBkYXRlZFN1YlN0ZXBzLnJlZHVjZSgoYWNjOiBudW1iZXIsIHN1YlN0ZXA6IGFueSkgPT4gYWNjICsgc3ViU3RlcD8uZHVyYXRpb24gfHwgMCwgMCk7XG5cbiAgICAgICAgICAgIGlmICh1cGRhdGVkU3ViU3RlcHMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGVwLFxuICAgICAgICAgICAgICAgIHN1YlN0ZXBzOiBbLi4udXBkYXRlZFN1YlN0ZXBzXVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdGVwIH07XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5uZXN0ZWRTdGVwcyA9IHVwZGF0ZWROZXN0ZWRTdGVwcztcblxuICAgICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgICAgICAgbmVzdGVkU3RlcHM6IHVwZGF0ZWROZXN0ZWRTdGVwc1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyBsaXZlIHN1Yi1zdGVwcyB3aGVuIGl0ZXJhdGlvbiBjaGFuZ2VzXG4gICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0xpdmVTdWJTdGVwcygpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N1YlN0ZXBzRm9yUnVuUmVzdWx0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEVtaXQgdGhlIGV2ZW50IHdpdGggdGhlIGl0ZXJhdGlvbiBJRFxuICAgIHRoaXMub25JdGVyYXRpb25DaGFuZ2UuZW1pdChpdGVyYXRpb24uaWQpO1xuICB9XG5cbiAgY29tcGFyZUl0ZXJhdGlvbihhOiBMb29wSXRlcmF0aW9uLCBiOiBMb29wSXRlcmF0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEgJiYgYiA/IGEuaWQgPT09IGIuaWQgOiBhID09PSBiO1xuICB9XG5cbiAgZ2V0TG9vcFR5cGVCYWRnZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGJhZGdlczogc3RyaW5nW10gPSBbJ0xPT1AnXTtcbiAgICBpZiAodGhpcy5sb29wVHlwZSA9PT0gJ2ZvcicpIHtcbiAgICAgIGJhZGdlcy5wdXNoKCdGT1InKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9vcFR5cGUgPT09ICd3aGlsZScpIHtcbiAgICAgIGJhZGdlcy5wdXNoKCdXSElMRScpO1xuICAgIH1cbiAgICByZXR1cm4gYmFkZ2VzO1xuICB9XG5cbiAgZ2V0SXRlcmF0aW9uTGFiZWwoaXRlcmF0aW9uOiBMb29wSXRlcmF0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXRlcmF0aW9uLmxhYmVsO1xuICB9XG5cbiAgb25WaWV3QWxsSXRlcmF0aW9uc0NsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5vblZpZXdBbGxJdGVyYXRpb25zLmVtaXQoKTtcbiAgfVxuXG4gIG9uVmlld01vcmVGYWlsZWRTdGVwQ2xpY2soZXhwYW5kZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dGYWlsZWRTdGVwRGV0YWlscyA9IGV4cGFuZGVkO1xuICB9XG5cbiAgZ2V0U3ViU3RlcHNGb3JGYWlsZWRTdGVwKCk6IFN1YlN0ZXBbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24/LnN1YlN0ZXBzIHx8IFtdO1xuICB9XG5cbiAgb25NYWtlQ3VycmVudEJhc2VsaW5lKGV2ZW50OiBtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1ha2VDdXJyZW50QmFzZWxpbmUuZW1pdChldmVudCk7XG4gIH1cblxuICBvblVwbG9hZEJhc2VsaW5lKGV2ZW50OiB1cGxvYWRCYXNlbGluZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy51cGxvYWRCYXNlbGluZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uQW5hbHl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5emUuZW1pdCgpO1xuICB9XG5cbiAgb25WaWV3RnVsbExvZ3MoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3RnVsbExvZ3MuZW1pdCgpO1xuICB9XG5cbiAgb25TZWxmSGVhbEFjdGlvbihldmVudDogU2VsZkhlYWxBY3Rpb25FdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZkhlYWxBY3Rpb24uZW1pdChldmVudCk7XG4gIH1cblxuICBnZXQgc2hvd1ZpZXdNb3JlQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRXhwYW5kZWQgJiYgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzKSAmJlxuICAgICAgKFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5leHBlY3RlZCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5hY3R1YWwpKSB8fFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uY3VycmVudCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uYmFzZWxpbmUgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmRpZmZlcmVuY2UpXG4gICAgICAgICAgfHwgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5sb2dzPy5sZW5ndGgpKSB8fCBcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uYWlGaXhBcHBsaWVkICYmICh0aGlzLmZhaWx1cmVEZXRhaWxzPy5haUZpeE1lc3NhZ2UgfHwgdGhpcy5jb25maWRlbmNlIHx8IHRoaXMucmVhc29uaW5nPy5sZW5ndGgpKSlcbiAgICAgIClcbiAgfVxuXG4gIG9uRGVidWdQb2ludENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5kZWJ1Z1BvaW50Q2hhbmdlLmVtaXQoIXRoaXMuZGVidWdQb2ludFNldCk7XG4gIH1cblxuICBvbkVkaXRTdGVwKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5lZGl0U3RlcC5lbWl0KCk7XG4gIH1cblxuICBvbkFkZFN0ZXBPcHRpb25TZWxlY3Qob3B0aW9uOiBBZGRTdGVwTWVudU9wdGlvbiwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmFkZFN0ZXBPcHRpb25TZWxlY3QuZW1pdChvcHRpb24pO1xuICB9XG5cbiAgb25TdGVwTW9yZU9wdGlvblNlbGVjdChvcHRpb246IFN0ZXBNb3JlTWVudU9wdGlvbiwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnN0ZXBNb3JlT3B0aW9uU2VsZWN0LmVtaXQob3B0aW9uKTtcbiAgfVxuXG4gIHRvZ2dsZUhlYWRlcihldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLm9uU3RlcENsaWNrSGFuZGxlcikge1xuICAgICAgY29uc3Qgc3RlcFRvUGFzcyA9IHRoaXMuc3RlcCB8fCB0aGlzLmNvbmZpZztcbiAgICAgIGlmIChzdGVwVG9QYXNzKSB7XG4gICAgICAgIHRoaXMub25TdGVwQ2xpY2tIYW5kbGVyKHN0ZXBUb1Bhc3MsIGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogdHJhY2tCeSBmb3IgdGhlIG5lc3RlZC1zdGVwcyAqbmdGb3Ig4oCUIGtlZXBzIGV4aXN0aW5nIHZpZXdzIGFsaXZlIHdoZW4gYSBzdGVwIGdldHMgYSBuZXcgb2JqZWN0IHJlZmVyZW5jZS4gKi9cbiAgdHJhY2tOZXN0ZWRTdGVwKF9pbmRleDogbnVtYmVyLCBzdGVwOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBzdGVwPy5pZCA/PyBzdGVwPy50ZXN0U3RlcFJlc3VsdElkID8/IF9pbmRleDtcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gY2hlY2sgaWYgYSBzdGVwIGlzIGEgc3RlcC1ncm91cCB3aXRoIGhhc0NoaWxkXG4gIGlzTmVzdGVkU3RlcEdyb3VwV2l0aENoaWxkcmVuKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RlcC50eXBlID09PSAnc3RlcC1ncm91cCcgJiYgISEoc3RlcCBhcyBhbnkpLmhhc0NoaWxkO1xuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBnZXQgZ3JvdXBOYW1lIGZyb20gc3RlcCBjb25maWdcbiAgZ2V0R3JvdXBOYW1lKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBzdHJpbmcge1xuICAgIHJldHVybiAoc3RlcCBhcyBTdGVwR3JvdXBDb25maWcpLmdyb3VwTmFtZSB8fCAnJztcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gZ2V0IHN0ZXBzIGZyb20gc3RlcCBjb25maWdcbiAgZ2V0U3RlcHMoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IEV4ZWN1dGlvblN0ZXBDb25maWdbXSB7XG4gICAgY29uc3Qgc3RlcEdyb3VwID0gc3RlcCBhcyBTdGVwR3JvdXBDb25maWc7XG4gICAgcmV0dXJuIHN0ZXBHcm91cC5zdGVwcyB8fCAoc3RlcCBhcyBhbnkpLmNoaWxkcmVuIHx8IFtdO1xuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBjaGVjayBpZiBhIHN0ZXAgaXMgYSBjb25kaXRpb24gc3RlcFxuICBpc05lc3RlZENvbmRpdGlvblN0ZXAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHN0ZXBUeXBlID0gKHN0ZXAgYXMgYW55KS50ZXN0U3RlcFR5cGUgfHwgc3RlcC50eXBlO1xuICAgIHJldHVybiBzdGVwVHlwZSA9PT0gJ0NPTkRJVElPTl9JRicgfHwgc3RlcFR5cGUgPT09ICdDT05ESVRJT05fRUxTRScgfHwgXG4gICAgICAgICAgIHN0ZXBUeXBlID09PSAnQ09ORElUSU9OX0VMU0VfSUYnIHx8IHN0ZXBUeXBlID09PSAnQ09ORElUSU9OX0VMU0VJRicgfHxcbiAgICAgICAgICAgc3RlcFR5cGUgPT09ICdjb25kaXRpb24nO1xuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBjaGVjayBpZiBhIHN0ZXAgaXMgYSBsb29wIHN0ZXBcbiAgaXNOZXN0ZWRMb29wU3RlcChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RlcFR5cGUgPSAoc3RlcCBhcyBhbnkpLnRlc3RTdGVwVHlwZSB8fCBzdGVwLnR5cGU7XG4gICAgcmV0dXJuIHN0ZXBUeXBlID09PSAnRk9SX0xPT1AnIHx8IHN0ZXBUeXBlID09PSAnV0hJTEVfTE9PUCcgfHwgc3RlcFR5cGUgPT09ICdsb29wJztcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gZ2V0IGxvb3AgdHlwZSBmcm9tIHN0ZXAgY29uZmlnXG4gIGdldExvb3BUeXBlKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiAnZm9yJyB8ICd3aGlsZScgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHN0ZXBUeXBlID0gKHN0ZXAgYXMgYW55KS50ZXN0U3RlcFR5cGUgfHwgc3RlcC50eXBlO1xuICAgIGlmIChzdGVwVHlwZSA9PT0gJ0ZPUl9MT09QJyB8fCAoc3RlcCBhcyBMb29wU3RlcENvbmZpZykubG9vcFR5cGUgPT09ICdmb3InKSB7XG4gICAgICByZXR1cm4gJ2Zvcic7XG4gICAgfSBlbHNlIGlmIChzdGVwVHlwZSA9PT0gJ1dISUxFX0xPT1AnIHx8IChzdGVwIGFzIExvb3BTdGVwQ29uZmlnKS5sb29wVHlwZSA9PT0gJ3doaWxlJykge1xuICAgICAgcmV0dXJuICd3aGlsZSc7XG4gICAgfVxuICAgIHJldHVybiAoc3RlcCBhcyBMb29wU3RlcENvbmZpZykubG9vcFR5cGU7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCBpdGVyYXRpb25zIGZyb20gc3RlcCBjb25maWdcbiAgZ2V0TG9vcEl0ZXJhdGlvbnMoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IGFueVtdIHtcbiAgICAvLyBVc2UgaGFuZGxlciBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSB1c2UgY29uZmlnXG4gICAgaWYgKHRoaXMuZ2V0TG9vcEl0ZXJhdGlvbnNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRMb29wSXRlcmF0aW9uc0hhbmRsZXIoc3RlcCk7XG4gICAgfVxuICAgIGNvbnN0IGxvb3BTdGVwID0gc3RlcCBhcyBMb29wU3RlcENvbmZpZztcbiAgICByZXR1cm4gbG9vcFN0ZXAuaXRlcmF0aW9ucyB8fCBbXTtcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gZ2V0IG5lc3RlZCBzdGVwcyBmcm9tIGxvb3Agc3RlcCBjb25maWdcbiAgZ2V0TG9vcE5lc3RlZFN0ZXBzKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBFeGVjdXRpb25TdGVwQ29uZmlnW10ge1xuICAgIGNvbnN0IGxvb3BTdGVwID0gc3RlcCBhcyBMb29wU3RlcENvbmZpZztcbiAgICByZXR1cm4gbG9vcFN0ZXAubmVzdGVkU3RlcHMgfHwgKHN0ZXAgYXMgYW55KS5jaGlsZHJlbiB8fCBbXTtcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gaGFuZGxlIG5lc3RlZCBsb29wIHN0ZXAgZXhwYW5zaW9uXG4gIGhhbmRsZUxvb3BTdGVwRXhwYW5kKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vbkV4cGFuZEhhbmRsZXIpIHtcbiAgICAgIHRoaXMub25FeHBhbmRIYW5kbGVyKHN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gaGFuZGxlIG5lc3RlZCBsb29wIHN0ZXAgaXRlcmF0aW9uIGNoYW5nZVxuICBoYW5kbGVMb29wU3RlcEl0ZXJhdGlvbkNoYW5nZShzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnLCBpdGVyYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gVGhpcyB3b3VsZCB0eXBpY2FsbHkgYmUgaGFuZGxlZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudFxuICAgIC8vIEZvciBub3csIHdlIGp1c3QgZW1pdCB0aGUgZXhwYW5kIGV2ZW50XG4gICAgaWYgKHRoaXMub25FeHBhbmRIYW5kbGVyKSB7XG4gICAgICB0aGlzLm9uRXhwYW5kSGFuZGxlcihzdGVwKTtcbiAgICB9XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCBzdGVwIHRpdGxlXG4gIGdldFN0ZXBUaXRsZShzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHN0ZXAgYXMgYW55KS5hY3Rpb24gfHwgc3RlcC50aXRsZSB8fCAnJztcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gZ2V0IHN0ZXAgc3RhdHVzXG4gIGdldFN0ZXBTdGF0dXMoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IFN0ZXBTdGF0dXMge1xuICAgIGNvbnN0IHJlc3VsdCA9IChzdGVwIGFzIGFueSkucmVzdWx0O1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdExvd2VyID0gcmVzdWx0LnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAocmVzdWx0TG93ZXIgPT09ICdzdWNjZXNzJyB8fCByZXN1bHRMb3dlciA9PT0gJ3Bhc3NlZCcpIHtcbiAgICAgICAgcmV0dXJuICdzdWNjZXNzJztcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0TG93ZXIgPT09ICdmYWlsdXJlJyB8fCByZXN1bHRMb3dlciA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHRMb3dlciA9PT0gJ3BlbmRpbmcnIHx8IHJlc3VsdExvd2VyID09PSAnbm90LWV4ZWN1dGVkJykge1xuICAgICAgICByZXR1cm4gJ3BlbmRpbmcnO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHRMb3dlciA9PT0gJ3J1bm5pbmcnKSB7XG4gICAgICAgIHJldHVybiAncnVubmluZyc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdGVwLnN0YXR1cyB8fCAncGVuZGluZyc7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCBzdGVwIGR1cmF0aW9uXG4gIGdldFN0ZXBEdXJhdGlvbihzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHN0ZXAgYXMgYW55KS5kdXJhdGlvbiB8fCBzdGVwLmR1cmF0aW9uIHx8IDA7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kcyBmb3IgY29uZGl0aW9uIHN0ZXAgcHJvcGVydGllc1xuICBnZXRDb25kaXRpb25TdGVwRHVyYXRpb24oc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IG51bWJlciB7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLmdldFN0ZXBEdXJhdGlvbihzdGVwKTtcbiAgICBpZiAodGhpcy5jb252ZXJ0TXNUb1NlY29uZHNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0TXNUb1NlY29uZHNIYW5kbGVyKGR1cmF0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIGR1cmF0aW9uO1xuICB9XG5cbiAgZ2V0Q29uZGl0aW9uU3RlcEV4cGFuZGVkKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc1N0ZXBFeHBhbmRlZEhhbmRsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzU3RlcEV4cGFuZGVkSGFuZGxlcihzdGVwKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0ZXAuZXhwYW5kZWQgfHwgZmFsc2U7XG4gIH1cblxuICBnZXRDb25kaXRpb25TdGVwVGV4dChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHN0ZXAgYXMgYW55KS5hY3Rpb24gfHwgc3RlcC50aXRsZSB8fCAnJztcbiAgfVxuXG4gIGdldENvbmRpdGlvblN0ZXBCcmFuY2hlcyhzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogQ29uZGl0aW9uQnJhbmNoW10ge1xuICAgIGlmICh0aGlzLmdldENvbmRpdGlvbkJyYW5jaGVzSGFuZGxlcikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyKHN0ZXApO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRDb25kaXRpb25TdGVwTG9hZGluZyhzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNTdGVwTG9hZGluZ0hhbmRsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzU3RlcExvYWRpbmdIYW5kbGVyKHN0ZXApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBoYW5kbGVDb25kaXRpb25TdGVwRXhwYW5kKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vbkV4cGFuZEhhbmRsZXIpIHtcbiAgICAgIHRoaXMub25FeHBhbmRIYW5kbGVyKHN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbmRpdGlvblN0ZXBGYWlsdXJlRGV0YWlscyhzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogYW55IHtcbiAgICBpZiAodGhpcy5mb3JtYXRGYWlsdXJlRGV0YWlsc0hhbmRsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdEZhaWx1cmVEZXRhaWxzSGFuZGxlcihzdGVwKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldENvbmRpdGlvblN0ZXBTZWxmSGVhbEFuYWx5c2lzKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBhbnkge1xuICAgIGlmICh0aGlzLmdldFNlbGZIZWFsQW5hbHlzaXNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTZWxmSGVhbEFuYWx5c2lzSGFuZGxlcihzdGVwKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGhhbmRsZUNvbmRpdGlvblN0ZXBTZWxmSGVhbEFjdGlvbihldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25TZWxmSGVhbEFjdGlvbkhhbmRsZXIpIHtcbiAgICAgIHRoaXMub25TZWxmSGVhbEFjdGlvbkhhbmRsZXIoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNvbmRpdGlvblN0ZXBNYWtlQmFzZWxpbmUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uTWFrZUN1cnJlbnRCYXNlbGluZUhhbmRsZXIpIHtcbiAgICAgIHRoaXMub25NYWtlQ3VycmVudEJhc2VsaW5lSGFuZGxlcihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ29uZGl0aW9uU3RlcFVwbG9hZEJhc2VsaW5lKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vblVwbG9hZEJhc2VsaW5lSGFuZGxlcikge1xuICAgICAgdGhpcy5vblVwbG9hZEJhc2VsaW5lSGFuZGxlcihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ29uZGl0aW9uU3RlcEFuYWx5emUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25BbmFseXplSGFuZGxlcikge1xuICAgICAgdGhpcy5vbkFuYWx5emVIYW5kbGVyKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ29uZGl0aW9uU3RlcFZpZXdMb2dzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uVmlld0Z1bGxMb2dzSGFuZGxlcikge1xuICAgICAgdGhpcy5vblZpZXdGdWxsTG9nc0hhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kcyB0byBzYWZlbHkgYWNjZXNzIExvb3BTdGVwQ29uZmlnIHByb3BlcnRpZXNcbiAgZ2V0TG9vcFNlbGVjdGVkSXRlcmF0aW9uSWQoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbG9vcFN0ZXAgPSBzdGVwIGFzIExvb3BTdGVwQ29uZmlnO1xuICAgIHJldHVybiBsb29wU3RlcC5zZWxlY3RlZEl0ZXJhdGlvbklkO1xuICB9XG5cbiAgZ2V0TG9vcERlZmF1bHRJdGVyYXRpb24oc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6ICdmaXJzdCcgfCAnbGFzdCcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGxvb3BTdGVwID0gc3RlcCBhcyBMb29wU3RlcENvbmZpZztcbiAgICByZXR1cm4gbG9vcFN0ZXAuZGVmYXVsdEl0ZXJhdGlvbiB8fCAnbGFzdCc7XG4gIH1cblxuICBnZXRMb29wU2hvd1ZpZXdBbGxJdGVyYXRpb25zKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBsb29wU3RlcCA9IHN0ZXAgYXMgTG9vcFN0ZXBDb25maWc7XG4gICAgcmV0dXJuIGxvb3BTdGVwLnNob3dWaWV3QWxsSXRlcmF0aW9ucztcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoaXMgc3RlcCBpcyBjdXJyZW50bHkgbG9hZGluZyBuZXN0ZWQgY2hpbGRyZW5cbiAgaXNTdGVwTG9hZGluZygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc1N0ZXBMb2FkaW5nSGFuZGxlciAmJiB0aGlzLmNvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXMuaXNTdGVwTG9hZGluZ0hhbmRsZXIodGhpcy5jb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmcgfHwgZmFsc2U7XG4gIH1cblxuICBvbkp1bXBUb1RpbWVzdGFtcChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5qdW1wVG9UaW1lc3RhbXBIYW5kbGVyICYmIHRoaXMuc3RlcD8uZXhlY3V0ZWRSZXN1bHQ/LnZpZGVvX3N0YXJ0X3RpbWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnN0ZXA/LmV4ZWN1dGVkUmVzdWx0Py52aWRlb19zdGFydF90aW1lICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSB0eXBlb2YgdGhpcy5zdGVwLmV4ZWN1dGVkUmVzdWx0LnZpZGVvX3N0YXJ0X3RpbWUgPT09ICdudW1iZXInIFxuICAgICAgICA/IHRoaXMuc3RlcC5leGVjdXRlZFJlc3VsdC52aWRlb19zdGFydF90aW1lIFxuICAgICAgICA6IE51bWJlcih0aGlzLnN0ZXAuZXhlY3V0ZWRSZXN1bHQudmlkZW9fc3RhcnRfdGltZSk7XG4gICAgICBjb25zdCB0ZXN0U3RlcElkID0gdGhpcy5zdGVwPy50ZXN0U3RlcElkO1xuICAgICAgaWYgKGlzRmluaXRlKHRpbWVzdGFtcCkgJiYgdGltZXN0YW1wID49IDApIHtcbiAgICAgICAgdGhpcy5qdW1wVG9UaW1lc3RhbXBIYW5kbGVyKHRpbWVzdGFtcCwgdGVzdFN0ZXBJZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckNvdW50ZG93blRpbWVyKCk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NMaXZlU3ViU3RlcHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlcmF0aW9uIHx8ICF0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICB0aGlzLnJlc2V0TGl2ZVByb2Nlc3NpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhbGxTdWJTdGVwcyA9ICh0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzIHx8IFtdKSBhcyBhbnlbXTtcblxuICAgIC8vIFJlc2V0IGlmIHN1YlN0ZXBzIHdlcmUgY2xlYXJlZCBvciByZXBsYWNlZCB3aXRoIGZld2VyIGVudHJpZXNcbiAgICBpZiAoYWxsU3ViU3RlcHMubGVuZ3RoIDwgdGhpcy5sYXN0UHJvY2Vzc2VkSW5kZXgpIHtcbiAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSB0aGlzLmxhc3RQcm9jZXNzZWRJbmRleDsgaSA8IGFsbFN1YlN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzdWJTdGVwID0gYWxsU3ViU3RlcHNbaV07XG4gICAgICBjb25zdCB1aVR5cGU6IHN0cmluZyA9IHN1YlN0ZXA/LnVpVHlwZSB8fCBzdWJTdGVwPy50eXBlIHx8ICcnO1xuICAgICAgY29uc3Qgc3RhdHVzOiBzdHJpbmcgPSAoc3ViU3RlcD8uc3RhdHVzIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBpZiAodWlUeXBlID09PSAnV0FJVF9GT1JfTE9DQVRPUicpIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgc2luZ2xlIGdyb3VwZWQgZW50cnkgd2l0aCBhIGNvdW50ZG93bjsgYWJzb3JicyBGSU5EX0xPQ0FUT1IgYW5kIExPQ0FUT1JfRk9VTkRcbiAgICAgICAgY29uc3QgdGltZW91dFNlY29uZHMgPSB0eXBlb2Ygc3ViU3RlcC52YWx1ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IHN1YlN0ZXAudmFsdWVcbiAgICAgICAgICA6IChzdWJTdGVwLnZhbHVlID8gcGFyc2VGbG9hdChzdWJTdGVwLnZhbHVlKSA6IDMwKTtcblxuICAgICAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcblxuICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSA9IHtcbiAgICAgICAgICAuLi5zdWJTdGVwLFxuICAgICAgICAgIHJlbWFpbmluZ1NlY29uZHM6IHRpbWVvdXRTZWNvbmRzLFxuICAgICAgICAgIHN0YXR1czogJ3J1bm5pbmcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSk7XG5cbiAgICAgICAgLy8gVGljayBkb3duIGV2ZXJ5IHNlY29uZFxuICAgICAgICB0aGlzLmNvdW50ZG93bkludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5yZW1haW5pbmdTZWNvbmRzID0gTWF0aC5tYXgoMCwgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyAtIDEpO1xuICAgICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnJlbWFpbmluZ1NlY29uZHMgPD0gMCkge1xuICAgICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5zdGF0dXMgPSAnZmFpbGVkJztcbiAgICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyA9IG51bGw7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwKTtcblxuICAgICAgfSBlbHNlIGlmICh1aVR5cGUgPT09ICdGSU5EX0xPQ0FUT1InKSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09ICdmYWlsZWQnIHx8IHN0YXR1cyA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgICAgLy8gQWJvcnQgY291bnRkb3duLCByZXBsYWNlIGdyb3VwIGVudHJ5IHdpdGggdGhpcyBmYWlsZWQgbG9nXG4gICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzID0gdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5maWx0ZXIoZW50cnkgPT4gZW50cnkgIT09IHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLnB1c2goeyAuLi5zdWJTdGVwLCBzdGF0dXM6ICdmYWlsZWQnIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgLy8gVXBkYXRlIHRoZSBzaW5nbGUgZ3JvdXAgZW50cnkncyB0ZXh0IHNvIHRoZSB1c2VyIHNlZXMgcHJvZ3Jlc3NcbiAgICAgICAgICBjb25zdCBuZXdUZXh0ID0gc3ViU3RlcC5kZXNjcmlwdGlvbiB8fCBzdWJTdGVwLnRleHQgfHwgc3ViU3RlcC50aXRsZTtcbiAgICAgICAgICBpZiAobmV3VGV4dCkgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuZGVzY3JpcHRpb24gPSBuZXdUZXh0O1xuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSBpZiAodWlUeXBlID09PSAnTE9DQVRPUl9GT1VORCcpIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ2ZhaWxlZCcgfHwgc3RhdHVzID09PSAnZmFpbHVyZScpIHtcbiAgICAgICAgICAvLyBBYm9ydCBjb3VudGRvd24sIHJlcGxhY2UgZ3JvdXAgZW50cnkgd2l0aCB0aGlzIGZhaWxlZCBsb2dcbiAgICAgICAgICBpZiAodGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMgPSB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLmZpbHRlcihlbnRyeSA9PiBlbnRyeSAhPT0gdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkpO1xuICAgICAgICAgICAgdGhpcy5jbGVhckNvdW50ZG93blRpbWVyKCk7XG4gICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh7IC4uLnN1YlN0ZXAsIHN0YXR1czogJ2ZhaWxlZCcgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2VxdWVuY2UgY29tcGxldGUg4oCTIHVwZGF0ZSBncm91cCBlbnRyeSB0byBzaG93IExPQ0FUT1JfRk9VTkQgdGV4dCBhcyBzdWNjZXNzXG4gICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdUZXh0ID0gc3ViU3RlcC5kZXNjcmlwdGlvbiB8fCBzdWJTdGVwLnRleHQgfHwgc3ViU3RlcC50aXRsZTtcbiAgICAgICAgICAgIGlmIChuZXdUZXh0KSB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5kZXNjcmlwdGlvbiA9IG5ld1RleHQ7XG4gICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5zdGF0dXMgPSAnc3VjY2Vzcyc7XG4gICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5yZW1haW5pbmdTZWNvbmRzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBObyBhY3RpdmUgZ3JvdXAg4oCTIHB1c2ggTE9DQVRPUl9GT1VORCBub3JtYWxseVxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5wdXNoKHsgLi4uc3ViU3RlcCB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIGlmICh1aVR5cGUgPT09ICdBSV9BVVRPX0hFQUwnKSB7XG4gICAgICAgIC8vIEFkZCBzaW5nbGUgbG9hZGluZyBlbnRyeTsgd2lsbCBiZSByZXBsYWNlZCBieSBBSV9BVVRPX0hFQUxfU1VDQ0VTUyBvciBBSV9BVVRPX0hFQUxfRkFJTEVEXG4gICAgICAgIHRoaXMuYWlBdXRvSGVhbEdyb3VwRW50cnkgPSB7XG4gICAgICAgICAgLi4uc3ViU3RlcCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogc3ViU3RlcC5kZXNjcmlwdGlvbiB8fCBzdWJTdGVwLnRleHQgfHwgJ0FJIGF1dG8taGVhbCBzdGFydGVkJyxcbiAgICAgICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgICAgICB1aVR5cGU6ICdBSV9BVVRPX0hFQUwnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh0aGlzLmFpQXV0b0hlYWxHcm91cEVudHJ5KTtcblxuICAgICAgfSBlbHNlIGlmICh1aVR5cGUgPT09ICdBSV9BVVRPX0hFQUxfU1VDQ0VTUycgfHwgdWlUeXBlID09PSAnQUlfQVVUT19IRUFMX0ZBSUxFRCcpIHtcbiAgICAgICAgLy8gUmVtb3ZlIGxvYWRpbmcgZW50cnkgYW5kIGFkZCBUV08gc2VwYXJhdGUgZW50cmllczogdmFsdWUgYW5kIHJlYXNvbmluZyAobGlrZSBBSV9BTlNXRVIpXG4gICAgICAgIGlmICh0aGlzLmFpQXV0b0hlYWxHcm91cEVudHJ5KSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcyA9IHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMuZmlsdGVyKGVudHJ5ID0+IGVudHJ5ICE9PSB0aGlzLmFpQXV0b0hlYWxHcm91cEVudHJ5KTtcbiAgICAgICAgICB0aGlzLmFpQXV0b0hlYWxHcm91cEVudHJ5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc1N1Y2Nlc3MgPSB1aVR5cGUgPT09ICdBSV9BVVRPX0hFQUxfU1VDQ0VTUyc7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gc3ViU3RlcC52YWx1ZSA/PyBzdWJTdGVwLnRleHQgPz8gJyc7XG4gICAgICAgIGNvbnN0IHJlYXNvbmluZyA9IHN1YlN0ZXAucmVhc29uaW5nID8/IHN1YlN0ZXAuUmVhc29uaW5nID8/ICcnO1xuICAgICAgICBjb25zdCBiYXNlRHVyYXRpb24gPSBzdWJTdGVwLmR1cmF0aW9uIHx8IDA7XG4gICAgICAgIGNvbnN0IGZpbmFsU3RhdHVzID0gaXNTdWNjZXNzID8gJ3N1Y2Nlc3MnIDogJ2ZhaWxlZCc7XG5cbiAgICAgICAgLy8gRmlyc3QgZW50cnk6IHZhbHVlL2Rlc2NyaXB0aW9uXG4gICAgICAgIGNvbnN0IHZhbHVlRGVzY3JpcHRpb24gPSBzdWJTdGVwLnRleHQgfHwgc3ViU3RlcC5kZXNjcmlwdGlvbiB8fCAoaXNTdWNjZXNzXG4gICAgICAgICAgPyBgQUkgYXV0by1oZWFsIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlgXG4gICAgICAgICAgOiBgQUkgYXV0by1oZWFsIGZhaWxlZGApO1xuICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLnB1c2goe1xuICAgICAgICAgIC4uLnN1YlN0ZXAsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHZhbHVlRGVzY3JpcHRpb24sXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIHJlYXNvbmluZzogbnVsbCxcbiAgICAgICAgICBzdGF0dXM6IGZpbmFsU3RhdHVzLFxuICAgICAgICAgIHVpVHlwZTogJ0FJX0FVVE9fSEVBTF9WQUxVRScsXG4gICAgICAgICAgdHlwZTogJ0FJX0FVVE9fSEVBTF9WQUxVRScsXG4gICAgICAgICAgZHVyYXRpb246IGJhc2VEdXJhdGlvbixcbiAgICAgICAgICBpc0FpQXV0b0hlYWxSZXN1bHQ6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2Vjb25kIGVudHJ5OiByZWFzb25pbmcgKG9ubHkgaWYgcHJlc2VudClcbiAgICAgICAgaWYgKHJlYXNvbmluZykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh7XG4gICAgICAgICAgICAuLi5zdWJTdGVwLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHJlYXNvbmluZyxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgcmVhc29uaW5nOiByZWFzb25pbmcsXG4gICAgICAgICAgICBzdGF0dXM6IGZpbmFsU3RhdHVzLFxuICAgICAgICAgICAgdWlUeXBlOiAnQUlfQVVUT19IRUFMX1JFQVNPTklORycsXG4gICAgICAgICAgICB0eXBlOiAnQUlfQVVUT19IRUFMX1JFQVNPTklORycsXG4gICAgICAgICAgICBkdXJhdGlvbjogYmFzZUR1cmF0aW9uLFxuICAgICAgICAgICAgaXNBaUF1dG9IZWFsUmVzdWx0OiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQW55IGZhaWxlZCBsb2cgd2hpbGUgYSBjb3VudGRvd24gaXMgYWN0aXZlIOKAkyByZXNvbHZlIGl0IGFzIGZhaWxlZFxuICAgICAgICBpZiAoKHN0YXR1cyA9PT0gJ2ZhaWxlZCcgfHwgc3RhdHVzID09PSAnZmFpbHVyZScpICYmIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuc3RhdHVzID0gJ2ZhaWxlZCc7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5jbGVhckNvdW50ZG93blRpbWVyKCk7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaChzdWJTdGVwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxhc3RQcm9jZXNzZWRJbmRleCA9IGFsbFN1YlN0ZXBzLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRMaXZlUHJvY2Vzc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcbiAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzID0gW107XG4gICAgdGhpcy5sYXN0UHJvY2Vzc2VkSW5kZXggPSAwO1xuICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5ID0gbnVsbDtcbiAgICB0aGlzLmFpQXV0b0hlYWxHcm91cEVudHJ5ID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJDb3VudGRvd25UaW1lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb3VudGRvd25JbnRlcnZhbElkICE9PSBudWxsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuY291bnRkb3duSW50ZXJ2YWxJZCk7XG4gICAgICB0aGlzLmNvdW50ZG93bkludGVydmFsSWQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N1YlN0ZXBzRm9yUnVuUmVzdWx0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiB8fCAhdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwcykge1xuICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwc0ZvclJ1blJlc3VsdCA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbFN1YlN0ZXBzID0gKHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMgfHwgW10pIGFzIGFueVtdO1xuICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHNGb3JSdW5SZXN1bHQgPSBbXTtcblxuICAgIGZvciAoY29uc3Qgc3ViU3RlcCBvZiBhbGxTdWJTdGVwcykge1xuICAgICAgY29uc3QgdWlUeXBlOiBzdHJpbmcgPSBzdWJTdGVwPy51aVR5cGUgfHwgc3ViU3RlcD8udHlwZSB8fCAnJztcblxuICAgICAgLy8gU3BsaXQgQUlfQVVUT19IRUFMX1NVQ0NFU1MvRkFJTEVEIGludG8gdHdvIGVudHJpZXNcbiAgICAgIGlmICh1aVR5cGUgPT09ICdBSV9BVVRPX0hFQUxfU1VDQ0VTUycgfHwgdWlUeXBlID09PSAnQUlfQVVUT19IRUFMX0ZBSUxFRCcpIHtcbiAgICAgICAgY29uc3QgaXNTdWNjZXNzID0gdWlUeXBlID09PSAnQUlfQVVUT19IRUFMX1NVQ0NFU1MnO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHN1YlN0ZXAudmFsdWUgPz8gc3ViU3RlcC50ZXh0ID8/ICcnO1xuICAgICAgICBjb25zdCByZWFzb25pbmcgPSBzdWJTdGVwLnJlYXNvbmluZyA/PyBzdWJTdGVwLlJlYXNvbmluZyA/PyAnJztcbiAgICAgICAgY29uc3QgYmFzZUR1cmF0aW9uID0gc3ViU3RlcC5kdXJhdGlvbiB8fCAwO1xuICAgICAgICBjb25zdCBmaW5hbFN0YXR1cyA9IGlzU3VjY2VzcyA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnO1xuXG4gICAgICAgIC8vIEZpcnN0IGVudHJ5OiB2YWx1ZS9kZXNjcmlwdGlvblxuICAgICAgICBjb25zdCB2YWx1ZURlc2NyaXB0aW9uID0gKGlzU3VjY2Vzc1xuICAgICAgICAgID8gYEFJIGF1dG8taGVhbCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5YFxuICAgICAgICAgIDogYEFJIGF1dG8taGVhbCBmYWlsZWRgKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwc0ZvclJ1blJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAuLi5zdWJTdGVwLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB2YWx1ZURlc2NyaXB0aW9uLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICByZWFzb25pbmc6IG51bGwsXG4gICAgICAgICAgc3RhdHVzOiBmaW5hbFN0YXR1cyxcbiAgICAgICAgICB1aVR5cGU6ICdBSV9BVVRPX0hFQUxfVkFMVUUnLFxuICAgICAgICAgIHR5cGU6ICdBSV9BVVRPX0hFQUxfVkFMVUUnLFxuICAgICAgICAgIGR1cmF0aW9uOiBiYXNlRHVyYXRpb24sXG4gICAgICAgICAgaXNBaUF1dG9IZWFsUmVzdWx0OiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNlY29uZCBlbnRyeTogcmVhc29uaW5nIChvbmx5IGlmIHByZXNlbnQpXG4gICAgICAgIGlmIChyZWFzb25pbmcpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzRm9yUnVuUmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgLi4uc3ViU3RlcCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiByZWFzb25pbmcsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgIHJlYXNvbmluZzogcmVhc29uaW5nLFxuICAgICAgICAgICAgc3RhdHVzOiBmaW5hbFN0YXR1cyxcbiAgICAgICAgICAgIHVpVHlwZTogJ0FJX0FVVE9fSEVBTF9SRUFTT05JTkcnLFxuICAgICAgICAgICAgdHlwZTogJ0FJX0FVVE9fSEVBTF9SRUFTT05JTkcnLFxuICAgICAgICAgICAgZHVyYXRpb246IGJhc2VEdXJhdGlvbixcbiAgICAgICAgICAgIGlzQWlBdXRvSGVhbFJlc3VsdDogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSAoc3ViU3RlcD8uc3RhdHVzID8/ICcnKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGlzRmFpbGVkID0gc3RhdHVzID09PSAnZmFpbGVkJyB8fCBzdGF0dXMgPT09ICdmYWlsdXJlJztcbiAgICAgICAgY29uc3QgaXNMb2NhdG9yU3RlcCA9IHVpVHlwZSA9PT0gJ1dBSVRfRk9SX0xPQ0FUT1InIHx8IHVpVHlwZSA9PT0gJ0ZJTkRfTE9DQVRPUicgfHwgdWlUeXBlID09PSAnTE9DQVRPUl9GT1VORCc7XG4gICAgICAgIGlmIChpc0xvY2F0b3JTdGVwICYmIGlzRmFpbGVkKSB7XG4gICAgICAgICAgY29uc3QgYmFzZURlc2MgPSBzdWJTdGVwPy5kZXNjcmlwdGlvbiA/PyBzdWJTdGVwPy50ZXh0ID8/IHN1YlN0ZXA/LnRpdGxlID8/ICcnO1xuICAgICAgICAgIGNvbnN0IG5vdEZvdW5kU3VmZml4ID0gJyAtIEVsZW1lbnQgbm90IGZvdW5kJztcbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzRm9yUnVuUmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgLi4uc3ViU3RlcCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAoYmFzZURlc2MgPyBiYXNlRGVzYyArIG5vdEZvdW5kU3VmZml4IDogbm90Rm91bmRTdWZmaXgudHJpbSgpKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHNGb3JSdW5SZXN1bHQucHVzaChzdWJTdGVwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS1mb250LWludGVyIGNxYS13LWZ1bGxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gIDwhLS0gSGVhZGVyIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcC0yIGNxYS1jdXJzb3ItcG9pbnRlclwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZUhlYWRlcigkZXZlbnQpXCI+XG4gICAgPGRpdiAqbmdJZj1cInNob3dEZWJ1Z0ljb25cIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNxYS1wLTAgY3FhLWJvcmRlci0wIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXJvdW5kZWQtZnVsbCBob3ZlcjpjcWEtb3BhY2l0eS04MCBjcWEtdHJhbnNpdGlvbi1vcGFjaXR5IGZvY3VzOmNxYS1vdXRsaW5lLW5vbmVcIiAoY2xpY2spPVwib25EZWJ1Z1BvaW50Q2xpY2soJGV2ZW50KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZGVidWdQb2ludFNldCA/ICdSZW1vdmUgZGVidWcgcG9pbnQnIDogJ1NldCBkZWJ1ZyBwb2ludCdcIj5cbiAgICAgICAgPHN2ZyAqbmdJZj1cImRlYnVnUG9pbnRTZXRcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjdcIiBjeT1cIjdcIiByPVwiNlwiIGZpbGw9XCIjQzYzNTM1XCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHN2ZyAqbmdJZj1cIiFkZWJ1Z1BvaW50U2V0XCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI3XCIgY3k9XCI3XCIgcj1cIjZcIiBzdHJva2U9XCIjQzYzNTM1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIi8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTdGF0dXMgSWNvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDwhLS0gU3VjY2VzcyAtLT5cbiAgICAgIDxzdmcgKm5nSWY9XCJzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3N1Y2Nlc3MnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTAuOTAwNSA0Ljk5OTk5QzExLjEyODkgNi4xMjA2NCAxMC45NjYyIDcuMjg1NzEgMTAuNDM5NSA4LjMwMDg5QzkuOTEyNzkgOS4zMTYwOCA5LjA1NCAxMC4xMiA4LjAwNjMxIDEwLjU3ODdDNi45NTg2MiAxMS4wMzczIDUuNzg1MzYgMTEuMTIyOSA0LjY4MjIgMTAuODIxMkMzLjU3OTA0IDEwLjUxOTUgMi42MTI2NSA5Ljg0ODY5IDEuOTQ0MTkgOC45MjA3MUMxLjI3NTczIDcuOTkyNzIgMC45NDU2MTEgNi44NjM2MSAxLjAwODg4IDUuNzIxNjlDMS4wNzIxNSA0LjU3OTc2IDEuNTI0OTkgMy40OTQwNCAyLjI5MTg4IDIuNjQ1NThDMy4wNTg3NiAxLjc5NzEyIDQuMDkzMzQgMS4yMzcyMSA1LjIyMzA4IDEuMDU5MjJDNi4zNTI4MiAwLjg4MTIzMyA3LjUwOTQ0IDEuMDk1OTIgOC41MDAwNSAxLjY2NzQ5XCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA1LjVMNiA3TDExIDJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPCEtLSBGYWlsZWQgLS0+XG4gICAgICA8c3ZnICpuZ0lmPVwic3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsdXJlJyB8fCBzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWxlZCdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiNFRjQ0NDRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00IDRMOCA4TTggNEw0IDhcIiBzdHJva2U9XCIjRUY0NDQ0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPCEtLSBQZW5kaW5nIC0tPlxuICAgICAgPHN2ZyAqbmdJZj1cInN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAncGVuZGluZydcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPCEtLSBSdW5uaW5nIC0tPlxuICAgICAgPHN2ZyAqbmdJZj1cInN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAncnVubmluZydcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiMzQjgyRjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjM0I4MkY2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgXG4gICAgICAgIDxzcGFuICpuZ0lmPVwic3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdza2lwcGVkJ1wiICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgY3FhLXRleHQtWyM5Q0EzQUZdIGNxYS10ZXh0LVsxMnB4XVwiPlxuICAgICAgICAgIHNraXBfbmV4dFxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIExvb3AgSWNvbiAtLT5cbiAgICA8ZGl2Pjxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHJ4PVwiNFwiIGZpbGw9XCIjRUJFQ0ZEXCIvPjxwYXRoIGQ9XCJNOS42NjY2MyA0LjY2NjY2TDExIDUuOTk5OTlMOS42NjY2MyA3LjMzMzMyXCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTUgNy42NjY2N1Y3LjMzMzMzQzUgNi45Nzk3MSA1LjE0MDQ4IDYuNjQwNTcgNS4zOTA1MiA2LjM5MDUyQzUuNjQwNTcgNi4xNDA0OCA1Ljk3OTcxIDYgNi4zMzMzMyA2SDExXCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYuMzMzMzMgMTEuMzMzM0w1IDkuOTk5OTlMNi4zMzMzMyA4LjY2NjY2XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTExIDguMzMzMzRWOC42NjY2OEMxMSA5LjAyMDMgMTAuODU5NSA5LjM1OTQ0IDEwLjYwOTUgOS42MDk0OUMxMC4zNTk0IDkuODU5NTMgMTAuMDIwMyAxMCA5LjY2NjY3IDEwSDVcIiBzdHJva2U9XCIjM0Y0M0VFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvZGl2PlxuXG4gICAgPCEtLSBTdGVwIE51bWJlciBhbmQgVGl0bGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTMgY3FhLWZvbnQtaW50ZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtWyMzMzQxNTVdIGNxYS10ZXh0LVsxNHB4XSBjcWEtbGVhZGluZy1bMThweF1cIiBzdHlsZT1cIndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+XG4gICAgICAgIHt7IGNvbmZpZz8uc3RlcE51bWJlciB9fS4gPHNwYW4gW2lubmVySFRNTF09XCJjb25maWc/LnRpdGxlXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgXG4gICAgICA8IS0tIExvb3AgVHlwZSBCYWRnZXMgLS0+XG4gICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2YgZ2V0TG9vcFR5cGVCYWRnZXMoKVwiIFxuICAgICAgICBjbGFzcz1cImNxYS1weC0xLjUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtcHJpbWFyeSBjcWEtYmctWyNFQkVDRkRdIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF1cIj5cbiAgICAgICAge3sgYmFkZ2UgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnLnN0ZXBEZWxldGVkXCIgY2xhc3M9XCJjcWEtcHgtMS41IGNxYS1weS1bMnB4XSBjcWEtcm91bmRlZC1bNHB4XSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzEycHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bI0I0MjMxOF0gY3FhLWJnLVsjRkVGM0YyXSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNGRUU0RTJdXCI+XG4gICAgICAgIERlbGV0ZWRcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtZm9udC1pbnRlclwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJzZWxmSGVhbEFuYWx5c2lzXCIgY2xhc3M9XCJjcWEtcHgtMS41IGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMDk3RTUzXSBjcWEtYmctWyNDRkYyRTVdIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLW1pbi13LW1heCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzZweF1cIj5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiOVwiIHZpZXdCb3g9XCIwIDAgOSA5XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTQuNTA5NDEgMEM0LjU2NDg5IDAuMDIyNzM4NCA0LjU4ODU5IDAuMDc4MjY1MiA0LjYxMTMxIDAuMTI5ODQ2QzQuNjIyNjkgMC4xNTk5IDQuNjMzMTQgMC4xOTAxMTcgNC42NDMyOSAwLjIyMDU3NUM0LjY0NzI2IDAuMjMyMjQ3IDQuNjUxMjMgMC4yNDM5MTggNC42NTUzMiAwLjI1NTk0M0M0LjcwODA2IDAuNDEzMDA1IDQuNzU1MDQgMC41NzE3NDggNC44MDIyOSAwLjczMDM4QzQuODEyOTcgMC43NjYxOSA0LjgyMzY5IDAuODAxOTg3IDQuODM0NDIgMC44Mzc3ODNDNC44ODkwNSAxLjAyMDA0IDQuOTQzMjcgMS4yMDI0IDQuOTk3MTkgMS4zODQ4NEM1LjAwNDc2IDEuNDEwNDcgNS4wMTIzNCAxLjQzNjA5IDUuMDE5OTIgMS40NjE3MUM1LjA0MTI4IDEuNTMzOTUgNS4wNjI2MiAxLjYwNjE5IDUuMDgzODMgMS42Nzg0N0M1LjEyODY3IDEuODMxMiA1LjE3NDczIDEuOTgzNDcgNS4yMjM3OCAyLjEzNTAxQzUuMjI4MDcgMi4xNDgyNyA1LjIzMjM2IDIuMTYxNTIgNS4yMzY3NyAyLjE3NTE4QzUuMzY0MiAyLjU2NSA1LjU0NDgyIDIuOTE0MzcgNS44NDA5IDMuMjExOTZDNS44NDgyMyAzLjIxOTcgNS44NTU1NiAzLjIyNzQ0IDUuODYzMTIgMy4yMzU0MUM1Ljk4OTUgMy4zNjQzNyA2LjE1MTY5IDMuNDY3NzEgNi4zMTM4IDMuNTUxMTFDNi4zMjIwNiAzLjU1NTQyIDYuMzMwMzEgMy41NTk3NCA2LjMzODgyIDMuNTY0MTlDNi44MTU4NyAzLjgwOTI1IDcuMzg5NTEgMy45MTcwNCA3LjkwNjE5IDQuMDYwNUM4LjEzMjYgNC4xMjM0IDguMzU4MyA0LjE4ODI5IDguNTgzMTcgNC4yNTYwM0M4LjU5ODk3IDQuMjYwNzkgOC42MTQ3OCA0LjI2NTU0IDguNjMwNTggNC4yNzAyOEM4LjY3Nzg0IDQuMjg0NDUgOC43MjUgNC4yOTg4NyA4Ljc3MjExIDQuMzEzNDdDOC43ODMxIDQuMzE2NzkgOC43OTQwOCA0LjMyMDExIDguODA1MzkgNC4zMjM1M0M4Ljg3MDI5IDQuMzQ0MDYgOC45MzIzOSA0LjM2ODI5IDguOTg1NjYgNC40MTAyN0M5LjAwMTkxIDQuNDQ0MTggOS4wMDE5MSA0LjQ0NDE4IDguOTk3NDggNC40NzgxQzguOTQ1NjQgNC41MjczNiA4Ljg5NDIgNC41NTA0NiA4LjgyNTc4IDQuNTczQzguODE2IDQuNTc2MzIgOC44MDYyMiA0LjU3OTY1IDguNzk2MTQgNC41ODMwOEM4LjY4MDYxIDQuNjIxODMgOC41NjM1MSA0LjY1NTc1IDguNDQ2MjYgNC42ODkzNUM4LjQyMjIgNC42OTYzIDguMzk4MTQgNC43MDMyNiA4LjM3NDA4IDQuNzEwMjFDOC4yMjU3MSA0Ljc1MzAxIDguMDc3MDggNC43OTQ5IDcuOTI4MjkgNC44MzYzMkM3LjczMjMyIDQuODkwODggNy41MzY2MyA0Ljk0NjM0IDcuMzQxMTMgNS4wMDI0M0M3LjMwOTEgNS4wMTE2MiA3LjI3NzA2IDUuMDIwNzggNy4yNDUwMSA1LjAyOTkxQzcuMDc2NzEgNS4wNzc4NiA2LjkwOTIzIDUuMTI3NTMgNi43NDMxNCA1LjE4MjA4QzYuNzI5MzcgNS4xODY1OSA2LjcxNTU5IDUuMTkxMSA2LjcwMTM5IDUuMTk1NzRDNi4xNDUxMSA1LjM4MDgyIDUuNzIxMSA1LjcyNjA5IDUuNDU1NzEgNi4yMzA5OUM1LjMxMjYzIDYuNTE0NzUgNS4yMjgyMyA2LjgyMTYxIDUuMTQyMTQgNy4xMjQ0N0M1LjExODg0IDcuMjA2MTkgNS4wOTQwOSA3LjI4NzQ1IDUuMDY5MDUgNy4zNjg2OUM1LjA0OTQgNy40MzI2MSA1LjAzMDIgNy40OTY2MyA1LjAxMTQ5IDcuNTYwODFDNS4wMDkyNiA3LjU2ODQ0IDUuMDA3MDMgNy41NzYwOCA1LjAwNDczIDcuNTgzOTVDNC45OTM5NCA3LjYyMDk0IDQuOTgzMTkgNy42NTc5MyA0Ljk3MjUyIDcuNjk0OTVDNC45NDUxOSA3Ljc4ODc5IDQuOTE1NzggNy44ODE4NyA0Ljg4NTU1IDcuOTc0ODlDNC44MzE5MSA4LjE0MDIxIDQuNzgzMSA4LjMwNjc0IDQuNzM0NTkgOC40NzM1QzQuNjYxNDQgOC43MjQ1NyA0LjY2MTQ0IDguNzI0NTcgNC42MTk5NyA4Ljg0NTI3QzQuNjE3MjEgOC44NTMzNyA0LjYxNDQ2IDguODYxNDcgNC42MTE2MyA4Ljg2OTgyQzQuNTk2NDkgOC45MTI3OCA0LjU4MDkyIDguOTUyMzMgNC41NTIyNiA4Ljk4ODdDNC41MDg2NyA4Ljk5Nzg4IDQuNTA4NjcgOC45OTc4OCA0LjQ2OTUxIDlDNC40MjQ3MyA4LjkzNzU5IDQuMzk1MDggOC44NzcxMSA0LjM3MTMzIDguODA1MDhDNC4zNjc4NyA4Ljc5NDg3IDQuMzY0NDEgOC43ODQ2NiA0LjM2MDg1IDguNzc0MTVDNC4zMTY4NCA4LjY0MjQ4IDQuMjc3NTEgOC41MDk0NiA0LjIzODE3IDguMzc2NDZDNC4yMjkxNiA4LjM0NjA0IDQuMjIwMTEgOC4zMTU2NCA0LjIxMTA1IDguMjg1MjRDNC4xNDM2IDguMDU4NjMgNC4wNzcyNSA3LjgzMTc0IDQuMDExMDEgNy42MDQ4MUMzLjczNTA3IDYuNDgyMjQgMy43MzUwNyA2LjQ4MjI0IDMuMDM5IDUuNTc0NjZDMy4wMjc4NCA1LjU2NTk2IDMuMDE2NjkgNS41NTcyNiAzLjAwNTE5IDUuNTQ4M0MyLjU0OTEzIDUuMTk5MDIgMS45NDgzNCA1LjA2OTY5IDEuMzk4MTUgNC45MTgxM0MxLjI2MjA3IDQuODgwNjIgMS4xMjYwNSA0Ljg0MjkzIDAuOTkwMDMyIDQuODA1MjNDMC45NzgxMzggNC44MDE5MyAwLjk3ODEzOCA0LjgwMTkzIDAuOTY2MDAzIDQuNzk4NTdDMC43Njk4MTEgNC43NDQxNyAwLjU3MzY3NCA0LjY4OTYzIDAuMzc4MjI0IDQuNjMyODNDMC4zNjk5NTYgNC42MzA0NSAwLjM2MTY4OCA0LjYyODA2IDAuMzUzMTY5IDQuNjI1NjFDMC4wNTI4OTg5IDQuNTM4ODMgMC4wNTI4OTg5IDQuNTM4ODMgMC4wMDA2NDY1MzcgNC40NzgxQy0wLjAwMDgzMTI2MSA0LjQ1MDU0IC0wLjAwMDgzMTI2MSA0LjQ1MDU0IDAuMDEyNDY4OSA0LjQyMTU3QzAuMDY3MDgzNSA0LjM3MDQgMC4xMjAwNzcgNC4zNDg0OCAwLjE5MjE2IDQuMzI2MTlDMC4yMDI1OTcgNC4zMjI4NCAwLjIxMzAzNCA0LjMxOTQ4IDAuMjIzNzg3IDQuMzE2MDNDMC4yNTU3NTMgNC4zMDU4MiAwLjI4Nzc4OCA0LjI5NTg0IDAuMzE5ODUxIDQuMjg1OTJDMC4zMjkwMDEgNC4yODMwNSAwLjMzODE1MSA0LjI4MDE3IDAuMzQ3NTc4IDQuMjc3MjJDMC40MTIyODUgNC4yNTY5MyAwLjQ3NzIyNSA0LjIzNzQgMC41NDIyNTkgNC4yMTgwOUMwLjU1ODI0IDQuMjEzMzIgMC41NTgyNCA0LjIxMzMyIDAuNTc0NTQ0IDQuMjA4NDZDMC44NTIyNjkgNC4xMjU4NyAxLjEzMTgxIDQuMDQ5IDEuNDExMjYgMy45NzE5NkMxLjYxOTUgMy45MTQ1NSAxLjgyNzM4IDMuODU2MTggMi4wMzQ2IDMuNzk1NDhDMi4wNDQxMyAzLjc5MjcxIDIuMDUzNjUgMy43ODk5MyAyLjA2MzQ2IDMuNzg3MDdDMi41NDM1IDMuNjQ2OTYgMy4wMTI3OCAzLjQ0ODE2IDMuMzIyNzQgMy4wNTM3QzMuMzI3MzggMy4wNDc4NSAzLjMzMjAyIDMuMDQyIDMuMzM2OCAzLjAzNTk3QzMuNjgxOTcgMi41OTgxNSAzLjgxNjU4IDIuMDY1NzIgMy45NjY5NSAxLjU0NjIxQzQuMDE2NDMgMS4zNzUzNCA0LjA2NjQ5IDEuMjA0NjQgNC4xMTY3MyAxLjAzMzk5QzQuMTMwNjQgMC45ODY3MzMgNC4xNDQ1MyAwLjkzOTQ3MSA0LjE1ODM2IDAuODkyMTk0QzQuMjEzOTQgMC43MDIyODkgNC4yNzAzNSAwLjUxMjY0MiA0LjMzIDAuMzIzODY0QzQuMzM1NTggMC4zMDYxODYgNC4zNDExNCAwLjI4ODUwMSA0LjM0NjY2IDAuMjcwODA3QzQuNDMwMTcgMC4wMDM5ODc2MSA0LjQzMDE3IDAuMDAzOTg3NjEgNC41MDk0MSAwWlwiIGZpbGw9XCIjMERCRDdEXCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNNy4yMzU5NyAwLjU1NDg1OUM3LjI5MDI0IDAuNjEzNTk5IDcuMzAxMDkgMC42ODI2MzEgNy4zMTc5OSAwLjc1NzYzOEM3LjM3NDM2IDAuOTkzMjY5IDcuNDM5MjkgMS4yMDk5MyA3LjY2NDY3IDEuMzQ2ODFDNy44MDM3MSAxLjQyMDM1IDcuOTY5NDQgMS40NTM4MSA4LjEyMzUgMS40ODU0MUM4LjE4ODU0IDEuNDk5MDIgOC4yNDM0OCAxLjUxNzA5IDguMjk5MjQgMS41NTMyMUM4LjMxMTgxIDEuNTcyMjkgOC4zMTE4MSAxLjU3MjI5IDguMzExMDcgMS42MDU0OUM4LjI5ODE0IDEuNjQ1ODggOC4yODY3OCAxLjY1ODkgOC4yNTI2OSAxLjY4NTMzQzguMjE1NDMgMS42OTcyNiA4LjIxNTQzIDEuNjk3MjYgOC4xNzA2OCAxLjcwNjUzQzguMTUzNzUgMS43MTAyNSA4LjEzNjgzIDEuNzE0IDguMTE5OTIgMS43MTc3OUM4LjExMDg2IDEuNzE5OCA4LjEwMTgxIDEuNzIxODEgOC4wOTI0NyAxLjcyMzg4QzcuODE2OTYgMS43ODQ4MiA3LjgxNjk2IDEuNzg0ODIgNy41Nzg4MiAxLjkyMjczQzcuNTcxMDggMS45Mjg2OSA3LjU2MzMzIDEuOTM0NjYgNy41NTUzNiAxLjk0MDhDNy4zODUxNiAyLjA4NDMxIDcuMzQ5MTYgMi4zMjMwMyA3LjI5NzkzIDIuNTIzMDFDNy4yOTQ5OSAyLjUzMzk5IDcuMjkyMDYgMi41NDQ5NyA3LjI4OTAzIDIuNTU2MjlDNy4yODY0OSAyLjU2NjAxIDcuMjgzOTUgMi41NzU3MyA3LjI4MTMzIDIuNTg1NzVDNy4yNzAyOCAyLjYxNTQ0IDcuMjU4ODEgMi42MzQ3OSA3LjIzNTk3IDIuNjU3NTRDNy4xNzIzNCAyLjY2NTI3IDcuMTcyMzQgMi42NjUyNyA3LjE0MTM5IDIuNjU3NTRDNy4wOTIxNiAyLjYyMTA2IDcuMDgxMTQgMi41Nzk1IDcuMDY4MjggMi41MjM2NUM3LjA2NjEzIDIuNTE1MDEgNy4wNjM5OCAyLjUwNjM2IDcuMDYxNzYgMi40OTc0NUM3LjA1NDg5IDIuNDY5ODMgNy4wNDgyNCAyLjQ0MjE3IDcuMDQxNjQgMi40MTQ0OUM2Ljk4OTc5IDIuMTk4OTcgNi45MzEyNiAxLjk4NzUxIDYuNzI0NTEgMS44NjExOEM2LjU2MjkzIDEuNzc1MDEgNi4zNjY0NiAxLjczNDI2IDYuMTg1ODcgMS43MDEzNkM2LjEzNjM3IDEuNjkxNTEgNi4xMDgwMiAxLjY3OTExIDYuMDc3MzggMS42NDAxMkM2LjA3MDczIDEuNjAwNTUgNi4wNzA3MyAxLjYwMDU1IDYuMDc3MzggMS41NjA5OEM2LjEyNDQ3IDEuNTE0MzcgNi4xNzQwMiAxLjUwMjk5IDYuMjM3NzIgMS40ODg5MUM2LjI1Nzc4IDEuNDg0MTYgNi4yNzc4NCAxLjQ3OTM4IDYuMjk3ODkgMS40NzQ1NkM2LjMwODI1IDEuNDcyMDkgNi4zMTg2MSAxLjQ2OTYyIDYuMzI5MjkgMS40NjcwN0M2LjM4MjEyIDEuNDU0MDcgNi40MzQ0MyAxLjQzOTQ5IDYuNDg2NzMgMS40MjQ2MkM2LjQ5NjIzIDEuNDIxOTggNi41MDU3MyAxLjQxOTM1IDYuNTE1NTIgMS40MTY2M0M2LjYyMTgyIDEuMzg2MjQgNi43MTM1NiAxLjM0NzM3IDYuNzk4NTQgMS4yNzgzNkM2LjgwNjQ3IDEuMjcyMTMgNi44MTQzOSAxLjI2NTg5IDYuODIyNTUgMS4yNTk0NkM2Ljk1NDggMS4xNDU2NSA2Ljk5OTc0IDAuOTc0Njc0IDcuMDQwNTMgMC44MTUxMzRDNy4wNDM2NCAwLjgwMzAyMiA3LjA0Njc1IDAuNzkwOTEgNy4wNDk5NSAwLjc3ODQzMkM3LjA1NjE0IDAuNzU0MTAxIDcuMDYyMjIgMC43Mjk3NDMgNy4wNjgxNyAwLjcwNTM1OUM3LjA3MjQzIDAuNjg4Mzk0IDcuMDcyNDMgMC42ODgzOTQgNy4wNzY3OCAwLjY3MTA4NkM3LjA3OTI3IDAuNjYwOTUxIDcuMDgxNzUgMC42NTA4MTYgNy4wODQzMSAwLjY0MDM3M0M3LjA5NTIxIDAuNjA4MTA4IDcuMTA5NTIgMC41ODI3NzIgNy4xMjk1NyAwLjU1NDg1OUM3LjE2ODEgMC41MzY0MzUgNy4xOTUxNSAwLjU0NDc2NCA3LjIzNTk3IDAuNTU0ODU5WlwiIGZpbGw9XCIjMDc1RjNGXCIvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMS43OTU0NSA2LjI0NzFDMS44MDk1MSA2LjI0NzE5IDEuODA5NTEgNi4yNDcxOSAxLjgyMzg2IDYuMjQ3MjlDMS45MjQ3NyA2LjI1MDIyIDEuOTkzMDQgNi4yODExNSAyLjA2NzM2IDYuMzQ2MDFDMi4xNTM4NCA2LjQzNTMzIDIuMTkzNzcgNi41MzYxMSAyLjE5MTUgNi42NTY1QzIuMTgxNzggNi43NTQxMiAyLjEyMTU4IDYuODM5MzUgMi4wNDc3MyA2LjkwNTMzQzEuOTYwODEgNi45NzI0MiAxLjg3MzEzIDYuOTk0NTkgMS43NjIwNiA2Ljk5MTQ5QzEuNjY4NDEgNi45ODEwNyAxLjU4MDMgNi45Mzg1MiAxLjUxMzkzIDYuODc0NTFDMS40MzEzOCA2Ljc2NjgxIDEuNDA3MjUgNi42NjgwMyAxLjQxOTM1IDYuNTM1MzdDMS40NDQzMyA2LjQzMDkyIDEuNTE2MzcgNi4zNDYxMyAxLjYwODUgNi4yODY2NkMxLjY3MjUxIDYuMjU1NjQgMS43MjM5OSA2LjI0NjUyIDEuNzk1NDUgNi4yNDcxWlwiIGZpbGw9XCIjMERCRDdEXCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICBTZWxmLWhlYWxlZFxuICAgICAgPC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xIGNxYS1yb3VuZGVkLVs0cHhdIGNxYS1weS0wLjUgY3FhLXB4LTEgY3FhLWJnLVsjNjM2NkYxMUFdIGNxYS1tbC0xIGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtb3BhY2l0eS04MCBjcWEtdHJhbnNpdGlvbi1vcGFjaXR5XCIgXG4gICAgICAgICAgICpuZ0lmPVwic3RlcD8uZXhlY3V0ZWRSZXN1bHQ/LnZpZGVvX3N0YXJ0X3RpbWVcIiBcbiAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ0p1bXAgdG8gdmlkZW8gdGltZSdcIiBcbiAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICAoY2xpY2spPVwib25KdW1wVG9UaW1lc3RhbXAoJGV2ZW50KVwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjcWEtdGV4dC1bIzYzNjM2M10gIWNxYS10ZXh0LVsxMHB4XSAhY3FhLXctWzEwcHhdICFjcWEtaC1bMTBweF1cIj5cbiAgICAgICAgICBwbGF5X2Fycm93XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWzhweF0gY3FhLWxlYWRpbmctWzEycHhdIGNxYS1mb250LW5vcm1hbCBjcWEtdGV4dC1bIzYzNjM2M11cIj5cbiAgICAgICAgICB7eyBmb3JtYXREdXJhdGlvbkNsb2NrKHN0ZXA/LmV4ZWN1dGVkUmVzdWx0Py52aWRlb19zdGFydF90aW1lIHx8IDApIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImlzRGVidWdcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0wLjUgY3FhLXRleHQtWyM5Q0EzQUZdXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNxYS1wLTAgY3FhLWJvcmRlci0wIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtY3Vyc29yLXBvaW50ZXIgaG92ZXI6Y3FhLW9wYWNpdHktODAgY3FhLXRyYW5zaXRpb24tb3BhY2l0eSBmb2N1czpjcWEtb3V0bGluZS1ub25lXCIgYXJpYS1sYWJlbD1cIkVkaXRcIiAoY2xpY2spPVwib25FZGl0U3RlcCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiIWNxYS10ZXh0LVsxNHB4XSAhY3FhLXctWzE0cHhdICFjcWEtaC1bMTRweF1cIj5lZGl0PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNhZGRTdGVwTWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiIGNsYXNzPVwiY3FhLXAtMCBjcWEtYm9yZGVyLTAgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1jdXJzb3ItcG9pbnRlciBob3ZlcjpjcWEtb3BhY2l0eS04MCBjcWEtdHJhbnNpdGlvbi1vcGFjaXR5IGZvY3VzOmNxYS1vdXRsaW5lLW5vbmVcIiBhcmlhLWxhYmVsPVwiQWRkXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFkZFN0ZXBNZW51XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiIWNxYS10ZXh0LVsxNHB4XSAhY3FhLXctWzE0cHhdICFjcWEtaC1bMTRweF1cIj5hZGQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1tZW51ICNhZGRTdGVwTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImNxYS1hZGQtc3RlcC1tZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCIgeVBvc2l0aW9uPVwiYmVsb3dcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IG9wdCBvZiBhZGRTdGVwTWVudU9wdGlvbnNcIiAoY2xpY2spPVwib25BZGRTdGVwT3B0aW9uU2VsZWN0KG9wdCwgJGV2ZW50KVwiPlxuICAgICAgICAgICAge3sgb3B0LmxhYmVsIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNzdGVwTW9yZU1lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBjbGFzcz1cImNxYS1wLTAgY3FhLWJvcmRlci0wIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtY3Vyc29yLXBvaW50ZXIgaG92ZXI6Y3FhLW9wYWNpdHktODAgY3FhLXRyYW5zaXRpb24tb3BhY2l0eSBmb2N1czpjcWEtb3V0bGluZS1ub25lXCIgYXJpYS1sYWJlbD1cIk1vcmUgb3B0aW9uc1wiIFttYXRNZW51VHJpZ2dlckZvcl09XCJzdGVwTW9yZU1lbnVcIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCIhY3FhLXRleHQtWzE0cHhdICFjcWEtdy1bMTRweF0gIWNxYS1oLVsxNHB4XVwiPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LW1lbnUgI3N0ZXBNb3JlTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImNxYS1zdGVwLW1vcmUtbWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiIHlQb3NpdGlvbj1cImJlbG93XCI+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBvcHQgb2Ygc3RlcE1vcmVNZW51T3B0aW9uc1wiIChjbGljayk9XCJvblN0ZXBNb3JlT3B0aW9uU2VsZWN0KG9wdCwgJGV2ZW50KVwiPnt7IG9wdC5sYWJlbCB9fTwvYnV0dG9uPlxuICAgICAgICA8L21hdC1tZW51PlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXVwiPlxuICAgICAgICB7eyBmb3JtYXREdXJhdGlvbihjb25maWcuZHVyYXRpb24pIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3ZnIFtjbGFzcy5jcWEtcm90YXRlLTE4MF09XCJpc0V4cGFuZGVkXCIgY2xhc3M9XCJjcWEtdHJhbnNpdGlvbi10cmFuc2Zvcm1cIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0zLjUgNUw3IDguNUwxMC41IDVcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMC44MzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRXhwYW5kZWQgQ29udGVudCAtLT5cbiAgPGRpdiAqbmdJZj1cImlzRXhwYW5kZWRcIj5cbiAgICA8IS0tIEl0ZXJhdGlvbiBTZWxlY3RvciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTMgY3FhLXB4LTQgY3FhLXB5LTIgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM3MzczNzNdXCIgKm5nSWY9XCIhaXNMaXZlIHx8IChpc0xpdmUgJiYgY29uZmlnPy5pdGVyYXRpb25zICE9PSB1bmRlZmluZWQpXCI+XG4gICAgICA8bGFiZWw+SXRlcmF0aW9uPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLXctZnVsbCBjcWEtbWF4LXctWzE1NnB4XVwiPlxuICAgICAgICA8IS0tIFN0YXR1cyBpbmRpY2F0b3IgZm9yIHNlbGVjdGVkIGl0ZXJhdGlvbiAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkSXRlcmF0aW9uICYmIGNvbmZpZz8uaXRlcmF0aW9ucyAmJiBjb25maWc/Lml0ZXJhdGlvbnM/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtbGVmdC1bMTBweF0gY3FhLXRvcC0xLzIgY3FhLXRyYW5zZm9ybSBjcWEtLXRyYW5zbGF0ZS15LTEvMiBjcWEtcG9pbnRlci1ldmVudHMtbm9uZSBjcWEtei0xMFwiPlxuICAgICAgICAgIDxzdmcgKm5nSWY9XCJzZWxlY3RlZEl0ZXJhdGlvbi5zdGF0dXMgPT09ICdzdWNjZXNzJ1wiIHdpZHRoPVwiNlwiIGhlaWdodD1cIjZcIiB2aWV3Qm94PVwiMCAwIDYgNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgY3g9XCIzXCIgY3k9XCIzXCIgcj1cIjNcIiBmaWxsPVwiIzAwQTYzRVwiLz48L3N2Zz5cbiAgICAgICAgICA8c3ZnICpuZ0lmPVwic2VsZWN0ZWRJdGVyYXRpb24uc3RhdHVzID09PSAnZmFpbGVkJ1wiIHdpZHRoPVwiNlwiIGhlaWdodD1cIjZcIiB2aWV3Qm94PVwiMCAwIDYgNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgY3g9XCIzXCIgY3k9XCIzXCIgcj1cIjNcIiBmaWxsPVwiI0VGNDQ0NFwiLz48L3N2Zz5cbiAgICAgICAgICA8c3ZnICpuZ0lmPVwic2VsZWN0ZWRJdGVyYXRpb24uc3RhdHVzID09PSAncGVuZGluZydcIiB3aWR0aD1cIjZcIiBoZWlnaHQ9XCI2XCIgdmlld0JveD1cIjAgMCA2IDZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGN4PVwiM1wiIGN5PVwiM1wiIHI9XCIzXCIgZmlsbD1cIiM5Q0EzQUZcIi8+PC9zdmc+XG4gICAgICAgICAgPHN2ZyAqbmdJZj1cInNlbGVjdGVkSXRlcmF0aW9uLnN0YXR1cyA9PT0gJ3J1bm5pbmcnXCIgd2lkdGg9XCI2XCIgaGVpZ2h0PVwiNlwiIHZpZXdCb3g9XCIwIDAgNiA2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBjeD1cIjNcIiBjeT1cIjNcIiByPVwiM1wiIGZpbGw9XCIjM0I4MkY2XCIvPjwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzPVwiY3FhLXBsLVsyMnB4XSBjcWEtcHItNiBjcWEtcHktWzVweF0gY3FhLXctZnVsbCBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFNUU1RTVdIGNxYS1yb3VuZGVkLW1kIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1iZy1bI0ZBRkFGQV0gY3FhLXRleHQtYmxhY2stMTAwIGNxYS1hcHBlYXJhbmNlLW5vbmVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRJdGVyYXRpb25cIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZUl0ZXJhdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbY29tcGFyZVdpdGhdPVwiY29tcGFyZUl0ZXJhdGlvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIihpc0xpdmUgJiYgKHN0YXR1cyA9PT0gJ3J1bm5pbmcnIHx8IHN0YXR1cyA9PT0gJ1JVTk5JTkcnKSlcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0lmPVwiIWNvbmZpZz8uaXRlcmF0aW9ucyB8fCBjb25maWc/Lml0ZXJhdGlvbnM/Lmxlbmd0aCA9PT0gMFwiIHZhbHVlPVwiXCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICBObyBpdGVyYXRpb25zIGF2YWlsYWJsZVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZXJhdGlvbiBvZiBjb25maWcuaXRlcmF0aW9uc1wiIFtuZ1ZhbHVlXT1cIml0ZXJhdGlvblwiPlxuICAgICAgICAgICAge3sgZ2V0SXRlcmF0aW9uTGFiZWwoaXRlcmF0aW9uKSB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPCEtLSBEcm9wZG93biBhcnJvdyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtcmlnaHQtMiBjcWEtdG9wLTEvMiBjcWEtdHJhbnNmb3JtIGNxYS0tdHJhbnNsYXRlLXktMS8yIGNxYS1wb2ludGVyLWV2ZW50cy1ub25lXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiNlwiIHZpZXdCb3g9XCIwIDAgMTAgNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMSAxTDUgNUw5IDFcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtbWwtYXV0b1wiICpuZ0lmPVwiY29uZmlnPy5pdGVyYXRpb25zICYmIGNvbmZpZz8uaXRlcmF0aW9ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICBEZWZhdWx0OiB7eyBjb25maWcuZGVmYXVsdEl0ZXJhdGlvbiA9PT0gJ2xhc3QnID8gJ2xhc3QgaXRlcmF0aW9uJyA6ICdmaXJzdCBpdGVyYXRpb24nIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlbGVjdGVkIEl0ZXJhdGlvbiBTdWItc3RlcHMgLS0+XG4gICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkSXRlcmF0aW9uICYmIHNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xIGNxYS1weS0xIGNxYS1tbC05XCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAnMXB4IHNvbGlkICNGM0Y0RjYnXCI+XG4gICAgICA8IS0tIFNpbmdsZSBsb29wOiByZW5kZXIgYWxsIGVudHJpZXMgaW4gY2hyb25vbG9naWNhbCBvcmRlciAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YlN0ZXAgb2YgKGlzTGl2ZSA/IHByb2Nlc3NlZFN1YlN0ZXBzIDogcHJvY2Vzc2VkU3ViU3RlcHNGb3JSdW5SZXN1bHQpXCI+XG4gICAgICAgIDwhLS0gQUlfQVVUT19IRUFMX1NVQ0NFU1MvRkFJTEVEOiByZW5kZXIgd2l0aCBhaS1hZ2VudC1zdGVwIHN0eWxlIChib3RoIGxpdmUgYW5kIHJ1biByZXN1bHQgc2NyZWVucykgLS0+XG4gICAgICAgIDxjcWEtYWktbG9ncy13aXRoLXJlYXNvbmluZ1xuICAgICAgICAgICpuZ0lmPVwiJGFueShzdWJTdGVwKS5pc0FpQXV0b0hlYWxSZXN1bHRcIlxuICAgICAgICAgIFtzdGF0dXNdPVwic3ViU3RlcC5zdGF0dXNcIlxuICAgICAgICAgIFt0ZXh0XT1cIiRhbnkoc3ViU3RlcCkudGV4dCB8fCBzdWJTdGVwPy52YWx1ZVwiXG4gICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIiRhbnkoc3ViU3RlcCkuZGVzY3JpcHRpb24gfHwgc3ViU3RlcD8udGV4dCB8fCBzdWJTdGVwPy52YWx1ZVwiXG4gICAgICAgICAgW3JlYXNvbmluZ109XCIkYW55KHN1YlN0ZXApLnJlYXNvbmluZyB8fCBzdWJTdGVwPy5yZWFzb25pbmdcIlxuICAgICAgICAgIFtkdXJhdGlvbl09XCJzdWJTdGVwLmR1cmF0aW9uXCI+XG4gICAgICAgIDwvY3FhLWFpLWxvZ3Mtd2l0aC1yZWFzb25pbmc+XG5cbiAgICAgICAgPCEtLSBSZWd1bGFyIHN1Yi1zdGVwcyAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiISRhbnkoc3ViU3RlcCkuaXNBaUF1dG9IZWFsUmVzdWx0XCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weS1bNS41cHhdIGNxYS1weC0zXCI+XG4gICAgICAgICAgXG4gICAgICAgICAgPCEtLSBTdWItc3RlcCBTdGF0dXMgSWNvbiAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnc3VjY2VzcycgfHwgc3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAncGFzc2VkJ1wiID5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTAuOTAwNSA0Ljk5OTk5QzExLjEyODkgNi4xMjA2NCAxMC45NjYyIDcuMjg1NzEgMTAuNDM5NSA4LjMwMDg5QzkuOTEyNzkgOS4zMTYwOCA5LjA1NCAxMC4xMiA4LjAwNjMxIDEwLjU3ODdDNi45NTg2MiAxMS4wMzczIDUuNzg1MzYgMTEuMTIyOSA0LjY4MjIgMTAuODIxMkMzLjU3OTA0IDEwLjUxOTUgMi42MTI2NSA5Ljg0ODY5IDEuOTQ0MTkgOC45MjA3MUMxLjI3NTczIDcuOTkyNzIgMC45NDU2MTEgNi44NjM2MSAxLjAwODg4IDUuNzIxNjlDMS4wNzIxNSA0LjU3OTc2IDEuNTI0OTkgMy40OTQwNCAyLjI5MTg4IDIuNjQ1NThDMy4wNTg3NiAxLjc5NzEyIDQuMDkzMzQgMS4yMzcyMSA1LjIyMzA4IDEuMDU5MjJDNi4zNTI4MiAwLjg4MTIzMyA3LjUwOTQ0IDEuMDk1OTIgOC41MDAwNSAxLjY2NzQ5XCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA1LjVMNiA3TDExIDJcIiBzdHJva2U9XCIjMjJDNTVFXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gRmFpbHVyZSAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbHVyZScgfHwgc3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbGVkJ1wiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk03LjUgNC41TDQuNSA3LjVcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNC41IDQuNUw3LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIFBlbmRpbmcgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTYgMTFDOC43NjE0MiAxMSAxMSA4Ljc2MTQyIDExIDZDMTEgMy4yMzg1OCA4Ljc2MTQyIDEgNiAxQzMuMjM4NTggMSAxIDMuMjM4NTggMSA2QzEgOC43NjE0MiAzLjIzODU4IDExIDYgMTFaXCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTYgM1Y2TDggN1wiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBSdW5uaW5nIC0gU2hvdyBzcGlubmVyIChhbHNvIHVzZWQgZm9yIGFjdGl2ZSBXQUlUX0ZPUl9MT0NBVE9SIGNvdW50ZG93biBpbiBsaXZlIG1vZGUpIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdydW5uaW5nJ1wiPlxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNxYS1hbmltYXRlLXNwaW4gY3FhLXRleHQtWyMzQjgyRjZdXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBvcGFjaXR5PVwiMC4yNVwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk02IDFBNSA1IDAgMCAxIDExIDZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyXCIgKm5nSWY9XCJzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdza2lwcGVkJ1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGNxYS10ZXh0LVsjOUNBM0FGXSBjcWEtdGV4dC1bMTJweF1cIj5cbiAgICAgICAgICAgICAgc2tpcF9uZXh0XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIFN1Yi1zdGVwIERlc2NyaXB0aW9uIC0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtdGV4dC1bMTNweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS10ZXh0LVsjMzY0MTUzXVwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZS1saW5lOyB3b3JkLWJyZWFrOiBicmVhay13b3JkO1wiPlxuICAgICAgICAgICAge3sgJGFueShzdWJTdGVwKS5kZXNjcmlwdGlvbiB8fCAkYW55KHN1YlN0ZXApLnRleHQgfX1cbiAgICAgICAgICAgIDwhLS0gQ291bnRkb3duIGZvciBhY3RpdmUgV0FJVF9GT1JfTE9DQVRPUiBpbiBsaXZlIG1vZGUgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzTGl2ZSAmJiAkYW55KHN1YlN0ZXApLnJlbWFpbmluZ1NlY29uZHMgIT0gbnVsbFwiIGNsYXNzPVwiY3FhLXRleHQtWyNGOTczMTZdIGNxYS1mb250LW1lZGl1bSBjcWEtbWwtMVwiPih7eyAkYW55KHN1YlN0ZXApLnJlbWFpbmluZ1NlY29uZHMgfX1zIHJlbWFpbmluZyk8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgPCEtLSBTdWItc3RlcCBEdXJhdGlvbiAtLT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LW1ldGFkYXRhLWtleVwiPlxuICAgICAgICAgICAge3sgZm9ybWF0RHVyYXRpb24oc3ViU3RlcC5kdXJhdGlvbikgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE5lc3RlZCBTdGVwcyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiaGFzQ2hpbGQgfHwgKGNvbmZpZy5uZXN0ZWRTdGVwcyAmJiBjb25maWcubmVzdGVkU3RlcHMubGVuZ3RoID4gMClcIiBjbGFzcz1cImNxYS1tbC05IGNxYS1wYi0xIGNxYS1uZXN0ZWQtc3RlcHMtY29udGFpbmVyXCIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAnMXB4IHNvbGlkICNGM0Y0RjYnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyM3MzczNzNdIGNxYS1weS1bMnB4XSBjcWEtcHgtM1wiPk5lc3RlZCBzdGVwczwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLXBsLVsxOHB4XVwiIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjQzVDN0ZBO1wiPlxuICAgICAgICA8IS0tIExvYWRpbmcgaW5kaWNhdG9yIHdoZW4gbmVzdGVkIHN0ZXBzIGFyZSBiZWluZyBsb2FkZWQgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJoYXNDaGlsZCAmJiAoIWNvbmZpZy5uZXN0ZWRTdGVwcyB8fCBjb25maWcubmVzdGVkU3RlcHMubGVuZ3RoID09PSAwKSAmJiBpc1N0ZXBMb2FkaW5nKClcIiBcbiAgICAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1weS0yIGNxYS1weC0zXCI+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImNxYS1hbmltYXRlLXNwaW4gY3FhLXRleHQtWyMzQjgyRjZdXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjdcIiBjeT1cIjdcIiByPVwiNlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgb3BhY2l0eT1cIjAuMjVcIi8+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTcgMUE2IDYgMCAwIDEgMTMgN1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMXB4XSBjcWEtbGVhZGluZy1bMTNweF0gY3FhLXRleHQtWyM3MzczNzNdXCI+TG9hZGluZyBuZXN0ZWQgc3RlcHMuLi48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGVwIG9mIGNvbmZpZy5uZXN0ZWRTdGVwczsgaW5kZXggYXMgaTsgdHJhY2tCeTogdHJhY2tOZXN0ZWRTdGVwXCI+XG4gICAgICAgICAgPCEtLSBXcmFwcGVyIHRvIHNob3cgc2tlbGV0b24gd2hpbGUgc3RlcC1yZW5kZXJlciBpcyBsb2FkaW5nIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLXN0ZXAtcmVuZGVyZXItd3JhcHBlclwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCInZXhjLScgKyBzdGVwLmlkXCJcbiAgICAgICAgICAgIFtjbGFzcy5sb2FkZWRdPVwiIWlzTmVzdGVkU3RlcExvYWRpbmcoc3RlcClcIj5cbiAgICAgICAgICAgIDwhLS0gTG9hZGluZyBza2VsZXRvbiBvdmVybGF5IC0tPlxuICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiaXNOZXN0ZWRTdGVwTG9hZGluZyhzdGVwKVwiIGNsYXNzPVwiY3FhLXN0ZXAtc2tlbGV0b24tb3ZlcmxheVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXN0ZXAtc2tlbGV0b24gY3FhLW14LTMgY3FhLW15LTFcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDwhLS0gVXNlIHN0ZXAtcmVuZGVyZXIgZm9yIGFsbCBuZXN0ZWQgc3RlcHMgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIC0tPlxuICAgICAgICAgICAgPCEtLSBUaGUgc3RlcC1yZW5kZXJlciB3aWxsIGR5bmFtaWNhbGx5IGxvYWQgdGhlIGFwcHJvcHJpYXRlIGNvbXBvbmVudCBhbmQgcGFzcyBoYW5kbGVycyAtLT5cbiAgICAgICAgICAgIDxjcWEtc3RlcC1yZW5kZXJlciBcbiAgICAgICAgICAgICAgW3N0ZXBdPVwic3RlcFwiXG4gICAgICAgICAgICAgIFtzdGVwTnVtYmVyXT1cInN0ZXBOdW1iZXIgKyAnLicgKyAoaSArIDEpXCJcbiAgICAgICAgICAgICAgW29uRXhwYW5kSGFuZGxlcl09XCJvbkV4cGFuZEhhbmRsZXJcIlxuICAgICAgICAgICAgICBbZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyXT1cImdldENvbmRpdGlvbkJyYW5jaGVzSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvbkNvbmRpdGlvbkJyYW5jaENsaWNrSGFuZGxlcl09XCJvbkNvbmRpdGlvbkJyYW5jaENsaWNrSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtpc1N0ZXBMb2FkaW5nSGFuZGxlcl09XCJpc1N0ZXBMb2FkaW5nSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtpc1N0ZXBFeHBhbmRlZEhhbmRsZXJdPVwiaXNTdGVwRXhwYW5kZWRIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2NvbnZlcnRNc1RvU2Vjb25kc0hhbmRsZXJdPVwiY29udmVydE1zVG9TZWNvbmRzSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtmb3JtYXRGYWlsdXJlRGV0YWlsc0hhbmRsZXJdPVwiZm9ybWF0RmFpbHVyZURldGFpbHNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2dldFNlbGZIZWFsQW5hbHlzaXNIYW5kbGVyXT1cImdldFNlbGZIZWFsQW5hbHlzaXNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2dldExvb3BJdGVyYXRpb25zSGFuZGxlcl09XCJnZXRMb29wSXRlcmF0aW9uc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbZ2V0QXBpQXNzZXJ0aW9uc0hhbmRsZXJdPVwiZ2V0QXBpQXNzZXJ0aW9uc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbZm9ybWF0QWN0aW9uc0hhbmRsZXJdPVwiZm9ybWF0QWN0aW9uc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25WaWV3QWxsSXRlcmF0aW9uc0hhbmRsZXJdPVwib25WaWV3QWxsSXRlcmF0aW9uc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25NYWtlQ3VycmVudEJhc2VsaW5lSGFuZGxlcl09XCJvbk1ha2VDdXJyZW50QmFzZWxpbmVIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uVXBsb2FkQmFzZWxpbmVIYW5kbGVyXT1cIm9uVXBsb2FkQmFzZWxpbmVIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2dldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXJdPVwiZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvbkFuYWx5emVIYW5kbGVyXT1cIm9uQW5hbHl6ZUhhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25WaWV3RnVsbExvZ3NIYW5kbGVyXT1cIm9uVmlld0Z1bGxMb2dzSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvblNlbGZIZWFsQWN0aW9uSGFuZGxlcl09XCJvblNlbGZIZWFsQWN0aW9uSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvblN0ZXBDbGlja0hhbmRsZXJdPVwib25TdGVwQ2xpY2tIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uSnNvblBhdGhDb3BpZWRIYW5kbGVyXT1cIm9uSnNvblBhdGhDb3BpZWRIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uRG93bmxvYWRIYW5kbGVyXT1cIm9uRG93bmxvYWRIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uRmlsZVBhdGhDb3BpZWRIYW5kbGVyXT1cIm9uRmlsZVBhdGhDb3BpZWRIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uVGV4dENvcGllZEhhbmRsZXJdPVwib25UZXh0Q29waWVkSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtqdW1wVG9UaW1lc3RhbXBIYW5kbGVyXT1cImp1bXBUb1RpbWVzdGFtcEhhbmRsZXJcIlxuICAgICAgICAgICAgICBbZG93bmxvYWRpbmdTdGVwSWRdPVwiZG93bmxvYWRpbmdTdGVwSWRcIlxuICAgICAgICAgICAgICBbaXNVcGxvYWRpbmdCYXNlbGluZV09XCJpc1VwbG9hZGluZ0Jhc2VsaW5lXCJcbiAgICAgICAgICAgICAgW2lzTWFraW5nQ3VycmVudEJhc2VsaW5lXT1cImlzTWFraW5nQ3VycmVudEJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkSXRlcmF0aW9uSWRdPVwic3RlcD8uc2VsZWN0ZWRJdGVyYXRpb25JZCB8fCAnJ1wiXG4gICAgICAgICAgICBbaXNMaXZlXT1cImlzTGl2ZVwiXG4gICAgICAgICAgICBbaXNEZWJ1Z109XCJpc0RlYnVnXCJcbiAgICAgICAgICAgIFtkZWJ1Z1BvaW50U2V0XT1cImdldERlYnVnUG9pbnRTZXRIYW5kbGVyID8gZ2V0RGVidWdQb2ludFNldEhhbmRsZXIoc3RlcCkgOiBkZWJ1Z1BvaW50U2V0XCJcbiAgICAgICAgICAgIFtnZXREZWJ1Z1BvaW50U2V0SGFuZGxlcl09XCJnZXREZWJ1Z1BvaW50U2V0SGFuZGxlclwiXG4gICAgICAgICAgICBbb25EZWJ1Z1BvaW50Q2hhbmdlSGFuZGxlcl09XCJvbkRlYnVnUG9pbnRDaGFuZ2VIYW5kbGVyXCJcbiAgICAgICAgICAgIFtvbkVkaXRTdGVwSGFuZGxlcl09XCJvbkVkaXRTdGVwSGFuZGxlclwiXG4gICAgICAgICAgICBbYWRkU3RlcE1lbnVPcHRpb25zXT1cImdldEFkZFN0ZXBNZW51T3B0aW9uc0Zvck5lc3RlZCA/IGdldEFkZFN0ZXBNZW51T3B0aW9uc0Zvck5lc3RlZChzdGVwKSA6IGFkZFN0ZXBNZW51T3B0aW9uc1wiXG4gICAgICAgICAgICBbb25BZGRTdGVwT3B0aW9uU2VsZWN0SGFuZGxlcl09XCJvbkFkZFN0ZXBPcHRpb25TZWxlY3RIYW5kbGVyXCJcbiAgICAgICAgICAgIFtzdGVwTW9yZU1lbnVPcHRpb25zXT1cImdldFN0ZXBNb3JlTWVudU9wdGlvbnNGb3JOZXN0ZWQgPyBnZXRTdGVwTW9yZU1lbnVPcHRpb25zRm9yTmVzdGVkKHN0ZXApIDogc3RlcE1vcmVNZW51T3B0aW9uc1wiXG4gICAgICAgICAgICBbb25TdGVwTW9yZU9wdGlvblNlbGVjdEhhbmRsZXJdPVwib25TdGVwTW9yZU9wdGlvblNlbGVjdEhhbmRsZXJcIlxuICAgICAgICAgICAgW2dldEFkZFN0ZXBNZW51T3B0aW9uc0Zvck5lc3RlZF09XCJnZXRBZGRTdGVwTWVudU9wdGlvbnNGb3JOZXN0ZWRcIlxuICAgICAgICAgICAgW2dldFN0ZXBNb3JlTWVudU9wdGlvbnNGb3JOZXN0ZWRdPVwiZ2V0U3RlcE1vcmVNZW51T3B0aW9uc0Zvck5lc3RlZFwiXG4gICAgICAgICAgICAgIChjb21wb25lbnRSZWFkeSk9XCJtYXJrU3RlcExvYWRlZChzdGVwKVwiPlxuICAgICAgICAgICAgPC9jcWEtc3RlcC1yZW5kZXJlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVmlldyBBbGwgSXRlcmF0aW9ucyBMaW5rIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWcuc2hvd1ZpZXdBbGxJdGVyYXRpb25zICYmICFpc0xpdmVcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LWVuZCBjcWEtcHgtMyBjcWEtcHktWzEwcHhdXCI+XG4gICAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJvblZpZXdBbGxJdGVyYXRpb25zQ2xpY2soJGV2ZW50KVwiIGNsYXNzPVwiY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtbm8tdW5kZXJsaW5lIGNxYS10ZXh0LXByaW1hcnkgY3FhLWZvbnQtc2VtaWJvbGQgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTFcIj5cbiAgICAgICAgVmlldyBhbGwgaXRlcmF0aW9uc1xuICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTcuNjM2MzYgMTEuMjY3TDYuNzU4NTIgMTAuMzk3N0w5LjM4Nzc4IDcuNzY4NDdIM1Y2LjQ5ODU4SDkuMzg3NzhMNi43NTg1MiAzLjg3MzU4TDcuNjM2MzYgM0wxMS43Njk5IDcuMTMzNTJMNy42MzYzNiAxMS4yNjdaXCIgZmlsbD1cIiMzRjQzRUVcIi8+PC9zdmc+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gU2VsZiBIZWFsIEFuYWx5c2lzIC0tPlxuICAgIDxjcWEtc2VsZi1oZWFsLWFuYWx5c2lzIFxuICAgICAgKm5nSWY9XCJzZWxmSGVhbEFuYWx5c2lzXCJcbiAgICAgIFtpZF09XCJzdGVwPy50ZXN0U3RlcElkXCJcbiAgICAgIFtvcmlnaW5hbExvY2F0b3JdPVwic2VsZkhlYWxBbmFseXNpcy5vcmlnaW5hbExvY2F0b3JcIlxuICAgICAgW2hlYWxlZExvY2F0b3JdPVwic2VsZkhlYWxBbmFseXNpcy5oZWFsZWRMb2NhdG9yXCJcbiAgICAgIFtjb25maWRlbmNlXT1cInNlbGZIZWFsQW5hbHlzaXMuY29uZmlkZW5jZVwiXG4gICAgICBbaGVhbE1ldGhvZF09XCJzZWxmSGVhbEFuYWx5c2lzLmhlYWxNZXRob2RcIlxuICAgICAgW2lzTG9hZGluZ0FjY2VwdF09XCJnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyID8gZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcigpLmlzTG9hZGluZ0FjY2VwdD8uW3N0ZXA/LnRlc3RTdGVwSWRdIDogZmFsc2VcIlxuICAgICAgW2lzTG9hZGluZ01vZGlmeUFjY2VwdF09XCJnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyID8gZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcigpLmlzTG9hZGluZ01vZGlmeUFjY2VwdD8uW3N0ZXA/LnRlc3RTdGVwSWRdIDogZmFsc2VcIlxuICAgICAgKGFjdGlvbik9XCJvblNlbGZIZWFsQWN0aW9uKCRldmVudClcIj5cbiAgICA8L2NxYS1zZWxmLWhlYWwtYW5hbHlzaXM+XG5cbiAgICA8IS0tIFRpbWluZyBCcmVha2Rvd24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImNvbmZpZy50aW1pbmdCcmVha2Rvd25cIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktZW5kIGNxYS1nYXAtNSBjcWEtcHQtMS41IGNxYS1weC00IGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjOUNBM0FGXVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxkaXY+PHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgICA8c3Bhbj5UaW1pbmcgYnJlYWtkb3duPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWRpYWxvZy1tdXRlZCBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtM1wiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIEFwcCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWdyYXktNzAwXCI+e3sgZm9ybWF0RHVyYXRpb24oY29uZmlnLnRpbWluZ0JyZWFrZG93bi5hcHApIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj48c3ZnIHdpZHRoPVwiMVwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxIDExXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0tMy44MTQ3ZS0wNiAxMC4zMlYtNy4xNTI1NmUtMDdIMC45NTk5OTZWMTAuMzJILTMuODE0N2UtMDZaXCIgZmlsbD1cIiNFNUU3RUJcIi8+PC9zdmc+PC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgVG9vbCA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LWdyYXktNzAwXCI+e3sgZm9ybWF0RHVyYXRpb24oY29uZmlnLnRpbWluZ0JyZWFrZG93bi50b29sKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVmlldyBNb3JlIEZhaWxlZCBTdGVwIEJ1dHRvbiAtIHNob3duIHdoZW4gZXhwYW5kZWQgYW5kIGZhaWx1cmUgZGV0YWlscyBleGlzdCAtLT5cbiAgPGRpdiAqbmdJZj1cInNob3dWaWV3TW9yZUJ1dHRvblwiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB4LTRcIj5cbiAgICA8Y3FhLXZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b25cbiAgICAgIFt0aW1pbmdCcmVha2Rvd25dPVwidGltaW5nQnJlYWtkb3duXCJcbiAgICAgIFtzdWJTdGVwc109XCJnZXRTdWJTdGVwc0ZvckZhaWxlZFN0ZXAoKVwiXG4gICAgICBbZmFpbHVyZURldGFpbHNdPVwiZmFpbHVyZURldGFpbHNcIlxuICAgICAgW2lzRXhwYW5kZWRdPVwic2hvd0ZhaWxlZFN0ZXBEZXRhaWxzXCJcbiAgICAgICh2aWV3TW9yZUNsaWNrKT1cIm9uVmlld01vcmVGYWlsZWRTdGVwQ2xpY2soJGV2ZW50KVwiPlxuICAgIDwvY3FhLXZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVXBkYXRlZCBGYWlsZWQgU3RlcCBDb21wb25lbnQgLSBzaG93biB3aGVuIGJ1dHRvbiBpcyBjbGlja2VkIC0tPlxuICA8ZGl2ICpuZ0lmPVwic2hvd1ZpZXdNb3JlQnV0dG9uICYmc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzICYmIGZhaWx1cmVEZXRhaWxzXCIgY2xhc3M9XCJjcWEtbXQtMiBjcWEtcHgtNFwiPlxuICAgIDxjcWEtdXBkYXRlZC1mYWlsZWQtc3RlcFxuICAgICAgW3Rlc3RTdGVwUmVzdWx0SWRdPVwidGVzdFN0ZXBSZXN1bHRJZFwiXG4gICAgICBbdGltaW5nQnJlYWtkb3duXT1cInRpbWluZ0JyZWFrZG93blwiXG4gICAgICBbZXhwYW5kZWRdPVwidHJ1ZVwiXG4gICAgICBbc3ViU3RlcHNdPVwiZ2V0U3ViU3RlcHNGb3JGYWlsZWRTdGVwKClcIlxuICAgICAgW2ZhaWx1cmVEZXRhaWxzXT1cImZhaWx1cmVEZXRhaWxzXCJcbiAgICAgIFtyZWFzb25pbmddPVwicmVhc29uaW5nXCJcbiAgICAgIFtjb25maWRlbmNlXT1cImNvbmZpZGVuY2VcIlxuICAgICAgW2lzVXBsb2FkaW5nQmFzZWxpbmVdPVwiaXNVcGxvYWRpbmdCYXNlbGluZVwiXG4gICAgICBbaXNNYWtpbmdDdXJyZW50QmFzZWxpbmVdPVwiaXNNYWtpbmdDdXJyZW50QmFzZWxpbmVcIlxuICAgICAgW2lzTGl2ZV09XCJpc0xpdmVcIlxuICAgICAgKG1ha2VDdXJyZW50QmFzZWxpbmUpPVwib25NYWtlQ3VycmVudEJhc2VsaW5lKCRldmVudClcIlxuICAgICAgKHVwbG9hZEJhc2VsaW5lKT1cIm9uVXBsb2FkQmFzZWxpbmUoJGV2ZW50KVwiXG4gICAgICAoYW5hbHl6ZSk9XCJvbkFuYWx5emUoKVwiXG4gICAgICAodmlld0Z1bGxMb2dzKT1cIm9uVmlld0Z1bGxMb2dzKClcIj5cbiAgICA8L2NxYS11cGRhdGVkLWZhaWxlZC1zdGVwPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
1208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vcC1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9sb29wLXN0ZXAvbG9vcC1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZXhlY3V0aW9uLXNjcmVlbi9sb29wLXN0ZXAvbG9vcC1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXVELFNBQVMsRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFFM0osT0FBTyxFQUE0Tiw2QkFBNkIsRUFBc0IsOEJBQThCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2VixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUTNELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxpQkFBaUI7SUFMeEQ7O1FBa0JXLHFCQUFnQixHQUFzQixNQUFNLENBQUM7UUFJN0MsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUd4QixZQUFPLEdBQWEsS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQWEsS0FBSyxDQUFDO1FBRy9CLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDL0MsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDNUQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDL0QsdUJBQWtCLEdBQXdCLDZCQUE2QixDQUFDO1FBQ3hFLHdCQUFtQixHQUF5Qiw4QkFBOEIsQ0FBQztRQXFDM0Usc0JBQWlCLEdBQWtCLElBQUksQ0FBQztRQU14Qyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsNEJBQXVCLEdBQUcsRUFBRSxDQUFD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Uzt1QkFBQyxvQkFBb0I7Z0JBQ0csbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFRdEIsUUFBUTtzQkFBakIsTUFBTTtnQkFHRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBR0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkLCBPbkRlc3Ryb3ksIERvQ2hlY2sgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBMb29wU3RlcENvbmZpZywgTG9vcEl0ZXJhdGlvbiwgRXhlY3V0aW9uU3RlcENvbmZpZywgU3RlcFN0YXR1cywgVGltaW5nQnJlYWtkb3duLCBGYWlsdXJlRGV0YWlscywgU3ViU3RlcCwgU2VsZkhlYWxBbmFseXNpc0RhdGEsIFNlbGZIZWFsQWN0aW9uLCBTdGVwR3JvdXBDb25maWcsIENvbmRpdGlvbkJyYW5jaCwgU2VsZkhlYWxBY3Rpb25FdmVudCwgQWRkU3RlcE1lbnVPcHRpb24sIERFRkFVTFRfQUREX1NURVBfTUVOVV9PUFRJT05TLCBTdGVwTW9yZU1lbnVPcHRpb24sIERFRkFVTFRfU1RFUF9NT1JFX01FTlVfT1BUSU9OUyB9IGZyb20gJy4uL2V4ZWN1dGlvbi1zdGVwLm1vZGVscyc7XG5pbXBvcnQgeyBCYXNlU3RlcENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2Utc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgbWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50LCB1cGxvYWRCYXNlbGluZUV2ZW50IH0gZnJvbSAnLi4vdmlzdWFsLWNvbXBhcmlzb24vdmlzdWFsLWNvbXBhcmlzb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWxvb3Atc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb29wLXN0ZXAuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QgY3FhLXctZnVsbCcgfVxufSlcbmV4cG9ydCBjbGFzcyBMb29wU3RlcENvbXBvbmVudCBleHRlbmRzIEJhc2VTdGVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgRG9DaGVjayB7XG4gIC8vIEluZGl2aWR1YWwgaW5wdXRzXG4gIEBJbnB1dCgpIGlkITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXN0U3RlcFJlc3VsdElkITogc3RyaW5nO1xuICBASW5wdXQoKSBzdGVwTnVtYmVyITogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZztcbiAgQElucHV0KCkgc3RhdHVzITogU3RlcFN0YXR1cztcbiAgQElucHV0KCkgZHVyYXRpb24hOiBudW1iZXI7XG4gIEBJbnB1dCgpIHRpbWluZ0JyZWFrZG93bj86IFRpbWluZ0JyZWFrZG93bjtcbiAgQElucHV0KCkgZXhwYW5kZWQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBsb29wVHlwZT86ICdmb3InIHwgJ3doaWxlJztcbiAgQElucHV0KCkgaXRlcmF0aW9ucyE6IExvb3BJdGVyYXRpb25bXTtcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVyYXRpb25JZD86IHN0cmluZztcbiAgQElucHV0KCkgZGVmYXVsdEl0ZXJhdGlvbj86ICdmaXJzdCcgfCAnbGFzdCcgPSAnbGFzdCc7XG4gIEBJbnB1dCgpIG5lc3RlZFN0ZXBzPzogRXhlY3V0aW9uU3RlcENvbmZpZ1tdO1xuICBASW5wdXQoKSBzaG93Vmlld0FsbEl0ZXJhdGlvbnM/OiBib29sZWFuO1xuICBASW5wdXQoKSBoYXNDaGlsZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzTGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0xvYWRpbmc/OiBib29sZWFuO1xuICBASW5wdXQoKSBzdGVwRGVsZXRlZD86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzRGVidWc/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRlYnVnUG9pbnRTZXQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGdldERlYnVnUG9pbnRTZXRIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGJvb2xlYW47XG4gIEBJbnB1dCgpIG9uRGVidWdQb2ludENoYW5nZUhhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZywgdmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIEBPdXRwdXQoKSBkZWJ1Z1BvaW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgZWRpdFN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBhZGRTdGVwT3B0aW9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGRTdGVwTWVudU9wdGlvbj4oKTtcbiAgQE91dHB1dCgpIHN0ZXBNb3JlT3B0aW9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwTW9yZU1lbnVPcHRpb24+KCk7XG4gIEBJbnB1dCgpIGFkZFN0ZXBNZW51T3B0aW9uczogQWRkU3RlcE1lbnVPcHRpb25bXSA9IERFRkFVTFRfQUREX1NURVBfTUVOVV9PUFRJT05TO1xuICBASW5wdXQoKSBzdGVwTW9yZU1lbnVPcHRpb25zOiBTdGVwTW9yZU1lbnVPcHRpb25bXSA9IERFRkFVTFRfU1RFUF9NT1JFX01FTlVfT1BUSU9OUztcblxuICAvLyBIYW5kbGVyIGZ1bmN0aW9uIHRvIHBhc3MgZG93biB0byBuZXN0ZWQgY2hpbGQgc3RlcCBncm91cHMgZm9yIHJlY3Vyc2l2ZSBleHBhbnNpb25cbiAgQElucHV0KCkgb25FeHBhbmRIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IHZvaWQ7XG4gIC8qKiBXaGVuIHByb3ZpZGVkLCBwYXNzZWQgdG8gbmVzdGVkIHN0ZXAtcmVuZGVyZXIgc28gRWRpdCBvbiBuZXN0ZWQgc3RlcHMgaXMgZm9yd2FyZGVkIHdpdGggdGhlIHN0ZXAgY29uZmlnLiAqL1xuICBASW5wdXQoKSBvbkVkaXRTdGVwSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiB2b2lkO1xuICBASW5wdXQoKSBvbkFkZFN0ZXBPcHRpb25TZWxlY3RIYW5kbGVyPzogKG9wdGlvbjogQWRkU3RlcE1lbnVPcHRpb24sIHN0ZXA/OiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiB2b2lkO1xuICBASW5wdXQoKSBvblN0ZXBNb3JlT3B0aW9uU2VsZWN0SGFuZGxlcj86IChvcHRpb246IFN0ZXBNb3JlTWVudU9wdGlvbiwgc3RlcD86IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IHZvaWQ7XG4gIC8qKiBXaGVuIHByb3ZpZGVkLCB1c2VkIHRvIGdldCBhZGQtc3RlcCBtZW51IG9wdGlvbnMgcGVyIG5lc3RlZCBzdGVwOyBvdGhlcndpc2UgYWRkU3RlcE1lbnVPcHRpb25zIGlzIHVzZWQgZm9yIGFsbC4gKi9cbiAgQElucHV0KCkgZ2V0QWRkU3RlcE1lbnVPcHRpb25zRm9yTmVzdGVkPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IEFkZFN0ZXBNZW51T3B0aW9uW107XG4gIC8qKiBXaGVuIHByb3ZpZGVkLCB1c2VkIHRvIGdldCBzdGVwLW1vcmUgbWVudSBvcHRpb25zIHBlciBuZXN0ZWQgc3RlcDsgb3RoZXJ3aXNlIHN0ZXBNb3JlTWVudU9wdGlvbnMgaXMgdXNlZCBmb3IgYWxsLiAqL1xuICBASW5wdXQoKSBnZXRTdGVwTW9yZU1lbnVPcHRpb25zRm9yTmVzdGVkPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IFN0ZXBNb3JlTWVudU9wdGlvbltdO1xuXG4gIC8vIEhhbmRsZXIgZnVuY3Rpb25zIGZvciBjb25kaXRpb24gc3RlcHNcbiAgQElucHV0KCkgZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IENvbmRpdGlvbkJyYW5jaFtdO1xuICBASW5wdXQoKSBvbkNvbmRpdGlvbkJyYW5jaENsaWNrSGFuZGxlcj86IChzdGVwOiBhbnksIGJyYW5jaDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBpc1N0ZXBMb2FkaW5nSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBib29sZWFuO1xuICBASW5wdXQoKSBpc1N0ZXBFeHBhbmRlZEhhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYm9vbGVhbjtcbiAgQElucHV0KCkgY29udmVydE1zVG9TZWNvbmRzSGFuZGxlcj86IChkdXJhdGlvbjogbnVtYmVyKSA9PiBudW1iZXI7XG4gIEBJbnB1dCgpIGZvcm1hdEZhaWx1cmVEZXRhaWxzSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBhbnk7XG4gIEBJbnB1dCgpIGdldFNlbGZIZWFsQW5hbHlzaXNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGFueTtcbiAgQElucHV0KCkgb25NYWtlQ3VycmVudEJhc2VsaW5lSGFuZGxlcj86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBvblVwbG9hZEJhc2VsaW5lSGFuZGxlcj86IChldmVudDogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBvbkFuYWx5emVIYW5kbGVyPzogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25WaWV3RnVsbExvZ3NIYW5kbGVyPzogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25TZWxmSGVhbEFjdGlvbkhhbmRsZXI/OiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgQElucHV0KCkgZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlcj86ICgpID0+IHsgaXNMb2FkaW5nQWNjZXB0OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTsgaXNMb2FkaW5nTW9kaWZ5QWNjZXB0OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB9O1xuICBASW5wdXQoKSBnZXRMb29wSXRlcmF0aW9uc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gYW55W107XG4gIEBJbnB1dCgpIGdldEFwaUFzc2VydGlvbnNIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpID0+IGFueVtdO1xuICBASW5wdXQoKSBmb3JtYXRBY3Rpb25zSGFuZGxlcj86IChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKSA9PiBhbnlbXTtcbiAgQElucHV0KCkgb25WaWV3QWxsSXRlcmF0aW9uc0hhbmRsZXI/OiAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZykgPT4gdm9pZDtcbiAgQElucHV0KCkgb25TdGVwQ2xpY2tIYW5kbGVyPzogKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcsIGV2ZW50PzogRXZlbnQpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIG9uSnNvblBhdGhDb3BpZWRIYW5kbGVyPzogKGV2ZW50OiB7IHBhdGg6IHN0cmluZzsgc291cmNlOiAncmVxdWVzdEJvZHknIHwgJ3Jlc3BvbnNlQm9keScgfCAncmVxdWVzdEhlYWRlcnMnIHwgJ3Jlc3BvbnNlSGVhZGVycycgfSkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25Eb3dubG9hZEhhbmRsZXI/OiAoZXZlbnQ6IHsgZmlsZU5hbWU6IHN0cmluZzsgZmlsZVBhdGg/OiBzdHJpbmc7IGZpbGVUeXBlOiBzdHJpbmc7IHRlc3RTdGVwUmVzdWx0SWQ6IHN0cmluZyB9KSA9PiB2b2lkO1xuICBASW5wdXQoKSBvbkZpbGVQYXRoQ29waWVkSGFuZGxlcj86IChldmVudDogeyBmaWxlUGF0aDogc3RyaW5nOyB0ZXN0U3RlcFJlc3VsdElkOiBzdHJpbmcgfSkgPT4gdm9pZDtcbiAgQElucHV0KCkgb25UZXh0Q29waWVkSGFuZGxlcj86IChldmVudDogeyB0ZXh0OiBzdHJpbmc7IHRlc3RTdGVwUmVzdWx0SWQ6IHN0cmluZyB9KSA9PiB2b2lkO1xuICBASW5wdXQoKSBqdW1wVG9UaW1lc3RhbXBIYW5kbGVyPzogKHRpbWVzdGFtcDogbnVtYmVyLCB0ZXN0U3RlcElkPzogbnVtYmVyIHwgc3RyaW5nKSA9PiB2b2lkO1xuICBASW5wdXQoKSBkb3dubG9hZGluZ1N0ZXBJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHN0ZXA/OiBhbnk7XG5cbiAgQElucHV0KCkgZmFpbHVyZURldGFpbHM/OiBGYWlsdXJlRGV0YWlscztcbiAgQElucHV0KCkgcmVhc29uaW5nPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIGNvbmZpZGVuY2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzVXBsb2FkaW5nQmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgaXNNYWtpbmdDdXJyZW50QmFzZWxpbmUgPSB7fTtcbiAgQElucHV0KCkgc2VsZkhlYWxBbmFseXNpcz86IFNlbGZIZWFsQW5hbHlzaXNEYXRhO1xuICBASW5wdXQoKSBpdGVyYXRpb25EYXRhPzogYW55O1xuICBAT3V0cHV0KCkgbWFrZUN1cnJlbnRCYXNlbGluZSA9IG5ldyBFdmVudEVtaXR0ZXI8bWFrZUN1cnJlbnRCYXNlbGluZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgdXBsb2FkQmFzZWxpbmUgPSBuZXcgRXZlbnRFbWl0dGVyPHVwbG9hZEJhc2VsaW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBhbmFseXplID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlld0Z1bGxMb2dzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2VsZkhlYWxBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGZIZWFsQWN0aW9uRXZlbnQ+KCk7XG5cbiAgc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnYWRkU3RlcE1lbnVUcmlnZ2VyJykgYWRkU3RlcE1lbnVUcmlnZ2VyPzogTWF0TWVudVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoJ3N0ZXBNb3JlTWVudVRyaWdnZXInKSBzdGVwTW9yZU1lbnVUcmlnZ2VyPzogTWF0TWVudVRyaWdnZXI7XG5cbiAgLyoqIFNob3cgZGVidWcgaWNvbiB3aGVuIGRlYnVnIG1vZGUgaXMgb24gKHNob3duIG9uIHBhcmVudCBhbmQgYWxsIGNoaWxkIHN0ZXBzKS4gKi9cbiAgZ2V0IHNob3dEZWJ1Z0ljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEZWJ1ZyA9PT0gdHJ1ZTtcbiAgfVxuXG4gIC8vIE91dHB1dCBldmVudCBmb3Igd2hlbiB0aGUgbG9vcCBzdGVwIGV4cGFuZHNcbiAgQE91dHB1dCgpIG9uRXhwYW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8vIE91dHB1dCBldmVudCBmb3Igd2hlbiBcIlZpZXcgYWxsIGl0ZXJhdGlvbnNcIiBpcyBjbGlja2VkXG4gIEBPdXRwdXQoKSBvblZpZXdBbGxJdGVyYXRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8vIE91dHB1dCBldmVudCBmb3Igd2hlbiBpdGVyYXRpb24gc2VsZWN0aW9uIGNoYW5nZXNcbiAgQE91dHB1dCgpIG9uSXRlcmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8gQ29uZmlnIHByb3BlcnR5IGZvciBiYXNlIGNsYXNzIC0gYnVpbHQgZnJvbSBpbmRpdmlkdWFsIGlucHV0cyBpbiBuZ09uSW5pdFxuICBvdmVycmlkZSBjb25maWchOiBMb29wU3RlcENvbmZpZztcblxuICBzZWxlY3RlZEl0ZXJhdGlvbjogTG9vcEl0ZXJhdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwcmV2aW91c1N0YXR1cz86IFN0ZXBTdGF0dXM7XG4gIHByaXZhdGUgdXNlck1hbnVhbGx5Q2xvc2VkOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBUcmFja3MgdGhlIGFycmF5IGxlbmd0aCBzZWVuIGxhc3QgY3ljbGUgc28gaW4tcGxhY2UgcHVzaGVzIGFyZSBkZXRlY3RlZCB3aXRob3V0IGEgcmVmZXJlbmNlIGNoYW5nZS4gKi9cbiAgcHJpdmF0ZSBsYXN0TmVzdGVkU3RlcHNMZW5ndGg6IG51bWJlciA9IDA7XG4gIC8vIFRyYWNrIHdoaWNoIHN0ZXBzIGFyZSBzdGlsbCBsb2FkaW5nIHRvIHNob3cgc2tlbGV0b25cbiAgbG9hZGluZ1N0ZXBzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcblxuICAvLyBQcm9jZXNzZWQgc3ViLXN0ZXBzIGZvciBsaXZlIG1vZGUgV0FJVF9GT1JfTE9DQVRPUiBjb3VudGRvd24gZ3JvdXBpbmdcbiAgcHJvY2Vzc2VkU3ViU3RlcHM6IGFueVtdID0gW107XG4gIHByaXZhdGUgbGFzdFByb2Nlc3NlZEluZGV4OiBudW1iZXIgPSAwO1xuICBwcml2YXRlIHdhaXRMb2NhdG9yR3JvdXBFbnRyeTogYW55IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY291bnRkb3duSW50ZXJ2YWxJZDogYW55ID0gbnVsbDtcblxuICAvLyBBSV9BVVRPX0hFQUwgZ3JvdXBpbmc6IHNob3cgbG9hZGluZyB1bnRpbCBBSV9BVVRPX0hFQUxfU1VDQ0VTUyBvciBBSV9BVVRPX0hFQUxfRkFJTEVEXG4gIHByaXZhdGUgYWlBdXRvSGVhbEdyb3VwRW50cnk6IGFueSB8IG51bGwgPSBudWxsO1xuXG4gIC8vIFByb2Nlc3NlZCBzdWItc3RlcHMgZm9yIHJ1biByZXN1bHQgc2NyZWVuIChmaWx0ZXIgYW5kIHNwbGl0IEFJX0FVVE9fSEVBTF9TVUNDRVNTL0ZBSUxFRClcbiAgcHJvY2Vzc2VkU3ViU3RlcHNGb3JSdW5SZXN1bHQ6IGFueVtdID0gW107XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQnVpbGQgY29uZmlnIGZyb20gaW5kaXZpZHVhbCBpbnB1dHNcbiAgICAvLyBVc2UgbmVzdGVkU3RlcHMgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gZW1wdHkgYXJyYXlcbiAgICBjb25zdCBzdGVwc1RvVXNlID0gdGhpcy5uZXN0ZWRTdGVwcyB8fCBbXTtcblxuICAgIC8vIFVzZSBhY3Rpb24gYXMgZmFsbGJhY2sgZm9yIHRpdGxlIGlmIHRpdGxlIGlzIGVtcHR5XG4gICAgLy8gQ2hlY2sgYm90aCBpbnN0YW5jZSBwcm9wZXJ0eSBhbmQgY29uZmlnIGZvciBhY3Rpb25cbiAgICBjb25zdCBhY3Rpb25WYWx1ZSA9ICh0aGlzIGFzIGFueSkuYWN0aW9uIHx8ICcnO1xuICAgIGNvbnN0IHN0ZXBUaXRsZSA9ICh0aGlzLnRpdGxlICYmIHRoaXMudGl0bGUudHJpbSgpKSA/IHRoaXMudGl0bGUgOiBhY3Rpb25WYWx1ZTtcblxuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0ZXN0U3RlcElkOiB0aGlzLnN0ZXA/LnRlc3RTdGVwSWQgfHwgdW5kZWZpbmVkLFxuICAgICAgdGVzdFN0ZXBSZXN1bHRJZDogdGhpcy50ZXN0U3RlcFJlc3VsdElkLFxuICAgICAgc3RlcE51bWJlcjogdGhpcy5zdGVwTnVtYmVyLFxuICAgICAgdGl0bGU6IHN0ZXBUaXRsZSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBkdXJhdGlvbjogdGhpcy5kdXJhdGlvbixcbiAgICAgIHR5cGU6ICdsb29wJyxcbiAgICAgIGxvb3BUeXBlOiB0aGlzLmxvb3BUeXBlLFxuICAgICAgaXRlcmF0aW9uczogdGhpcy5pdGVyYXRpb25zLFxuICAgICAgc2VsZWN0ZWRJdGVyYXRpb25JZDogdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbklkLFxuICAgICAgZGVmYXVsdEl0ZXJhdGlvbjogdGhpcy5kZWZhdWx0SXRlcmF0aW9uLFxuICAgICAgbmVzdGVkU3RlcHM6IHN0ZXBzVG9Vc2UsXG4gICAgICBzdGVwRGVsZXRlZDogdGhpcy5zdGVwRGVsZXRlZCxcbiAgICAgIHNob3dWaWV3QWxsSXRlcmF0aW9uczogdGhpcy5zaG93Vmlld0FsbEl0ZXJhdGlvbnMsXG4gICAgICB0aW1pbmdCcmVha2Rvd246IHRoaXMudGltaW5nQnJlYWtkb3duLFxuICAgICAgZXhwYW5kZWQ6IHRoaXMuZXhwYW5kZWQsXG4gICAgfSBhcyBMb29wU3RlcENvbmZpZztcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAvLyBJbml0aWFsaXplIGxpdmUgc3ViLXN0ZXAgcHJvY2Vzc2luZyBmb3IgV0FJVF9GT1JfTE9DQVRPUiBncm91cGluZ1xuICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnByb2Nlc3NMaXZlU3ViU3RlcHMoKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBQcm9jZXNzIGZvciBydW4gcmVzdWx0IHNjcmVlbjogZmlsdGVyIGFuZCBzcGxpdCBBSV9BVVRPX0hFQUxfU1VDQ0VTUy9GQUlMRURcbiAgICAgIHRoaXMucHJvY2Vzc1N1YlN0ZXBzRm9yUnVuUmVzdWx0KCk7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBzZWxlY3Rpb24gLSBwcmlvcml0aXplIHNlbGVjdGVkSXRlcmF0aW9uSWQgaW5wdXQsIHRoZW4gZGVmYXVsdFxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWQgJiYgdGhpcy5pdGVyYXRpb25zICYmIHRoaXMuaXRlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IHRoaXMuaXRlcmF0aW9ucy5maW5kKGl0ZXIgPT4gaXRlci5pZCA9PT0gdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbklkKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gZm91bmQ7XG4gICAgICAgIHRoaXMudXNlclNlbGVjdGVkSXRlcmF0aW9uSWQgPSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdERlZmF1bHRJdGVyYXRpb24oKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlcmF0aW9ucyAmJiB0aGlzLml0ZXJhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3REZWZhdWx0SXRlcmF0aW9uKCk7XG4gICAgICAvLyBJZiBkZWZhdWx0SXRlcmF0aW9uIGlzICdsYXN0JywgYWxzbyBzZXQgdXNlclNlbGVjdGVkSXRlcmF0aW9uSWQgdG8gdGhlIGxhc3QgaXRlcmF0aW9uXG4gICAgICBpZiAodGhpcy5kZWZhdWx0SXRlcmF0aW9uID09PSAnbGFzdCcgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbikge1xuICAgICAgICB0aGlzLnVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkID0gdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5pZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgaWYgYWxyZWFkeSBleHBhbmRlZFxuICAgIGlmICh0aGlzLmlzRXhwYW5kZWQgJiYgdGhpcy5uZXN0ZWRTdGVwcyAmJiB0aGlzLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgICB0aGlzLm5lc3RlZFN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgICAgICBpZiAoc3RlcElkKSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuYWRkKFN0cmluZyhzdGVwSWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIFVwZGF0ZSBzZWxlY3Rpb24gd2hlbiBzZWxlY3RlZEl0ZXJhdGlvbklkIGlucHV0IGNoYW5nZXNcbiAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWRJdGVyYXRpb25JZCddICYmIHRoaXMuaXRlcmF0aW9ucyAmJiB0aGlzLml0ZXJhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY2hhbmdlc1snc2VsZWN0ZWRJdGVyYXRpb25JZCddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBjaGFuZ2VzWydzZWxlY3RlZEl0ZXJhdGlvbklkJ10ucHJldmlvdXNWYWx1ZTtcblxuICAgICAgLy8gQWx3YXlzIHVwZGF0ZSB3aGVuIHNlbGVjdGVkSXRlcmF0aW9uSWQgaW5wdXQgY2hhbmdlcyBmcm9tIHBhcmVudFxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICBpZiAoY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLml0ZXJhdGlvbnMuZmluZChpdGVyID0+IGl0ZXIuaWQgPT09IGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAvLyBSZXNldCBwcm9jZXNzaW5nIHdoZW4gc3dpdGNoaW5nIHRvIGEgZGlmZmVyZW50IGl0ZXJhdGlvblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5pZCAhPT0gZm91bmQuaWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNldExpdmVQcm9jZXNzaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gZm91bmQ7XG4gICAgICAgICAgICAvLyBTeW5jIHVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkIHdpdGggdGhlIGlucHV0IHZhbHVlXG4gICAgICAgICAgICB0aGlzLnVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkID0gY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgLy8gUHJvY2VzcyBsaXZlIHN1Yi1zdGVwcyB3aGVuIGl0ZXJhdGlvbiBjaGFuZ2VzXG4gICAgICAgICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0xpdmVTdWJTdGVwcygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJvY2Vzc1N1YlN0ZXBzRm9yUnVuUmVzdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIG5vdCBmb3VuZCwgc2VsZWN0IGRlZmF1bHRcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVmYXVsdEl0ZXJhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiBubyB2YWx1ZSBwcm92aWRlZCwgc2VsZWN0IGRlZmF1bHRcbiAgICAgICAgICB0aGlzLnNlbGVjdERlZmF1bHRJdGVyYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBVcGRhdGUgc2VsZWN0aW9uIHdoZW4gaXRlcmF0aW9ucyBhcnJheSBjaGFuZ2VzXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZXJhdGlvbnMnXSAmJiB0aGlzLml0ZXJhdGlvbnMgJiYgdGhpcy5pdGVyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIElmIHdlIGhhdmUgYSB1c2VyIHNlbGVjdGlvbiwgdHJ5IHRvIHByZXNlcnZlIGl0XG4gICAgICBpZiAodGhpcy51c2VyU2VsZWN0ZWRJdGVyYXRpb25JZCkge1xuICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuaXRlcmF0aW9ucy5maW5kKGl0ZXIgPT4gaXRlci5pZCA9PT0gdGhpcy51c2VyU2VsZWN0ZWRJdGVyYXRpb25JZCk7XG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgIC8vIFJlc2V0IHByb2Nlc3Npbmcgd2hlbiBzd2l0Y2hpbmcgdG8gYSBkaWZmZXJlbnQgaXRlcmF0aW9uXG4gICAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5pZCAhPT0gZm91bmQuaWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gZm91bmQ7XG4gICAgICAgICAgLy8gUHJvY2VzcyBsaXZlIHN1Yi1zdGVwcyB3aGVuIGl0ZXJhdGlvbiBjaGFuZ2VzXG4gICAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwcykge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzTGl2ZVN1YlN0ZXBzKCk7XG4gICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NTdWJTdGVwc0ZvclJ1blJlc3VsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBVc2VyIHNlbGVjdGlvbiBubyBsb25nZXIgdmFsaWQsIHVzZSBzZWxlY3RlZEl0ZXJhdGlvbklkIG9yIGRlZmF1bHRcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZXJhdGlvbklkKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZEJ5SWQgPSB0aGlzLml0ZXJhdGlvbnMuZmluZChpdGVyID0+IGl0ZXIuaWQgPT09IHRoaXMuc2VsZWN0ZWRJdGVyYXRpb25JZCk7XG4gICAgICAgICAgICBpZiAoZm91bmRCeUlkKSB7XG4gICAgICAgICAgICAgIC8vIFJlc2V0IHByb2Nlc3Npbmcgd2hlbiBzd2l0Y2hpbmcgdG8gYSBkaWZmZXJlbnQgaXRlcmF0aW9uXG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uaWQgIT09IGZvdW5kQnlJZC5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gPSBmb3VuZEJ5SWQ7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaXZlU3ViU3RlcHMoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzU3ViU3RlcHNGb3JSdW5SZXN1bHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3REZWZhdWx0SXRlcmF0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVmYXVsdEl0ZXJhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiB8fCAhdGhpcy5pdGVyYXRpb25zLnNvbWUoaXRlciA9PiBpdGVyLmlkID09PSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uPy5pZCkpIHtcbiAgICAgICAgLy8gTm8gdXNlciBzZWxlY3Rpb24sIHVzZSBzZWxlY3RlZEl0ZXJhdGlvbklkIG9yIGRlZmF1bHRcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVyYXRpb25JZCkge1xuICAgICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5pdGVyYXRpb25zLmZpbmQoaXRlciA9PiBpdGVyLmlkID09PSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWQpO1xuICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgLy8gUmVzZXQgcHJvY2Vzc2luZyB3aGVuIHN3aXRjaGluZyB0byBhIGRpZmZlcmVudCBpdGVyYXRpb25cbiAgICAgICAgICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uaWQgIT09IGZvdW5kLmlkKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiA9IGZvdW5kO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwcykge1xuICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NMaXZlU3ViU3RlcHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3REZWZhdWx0SXRlcmF0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0RGVmYXVsdEl0ZXJhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFVwZGF0ZSB0aXRsZSBpZiBpdCBjaGFuZ2VzIC0gYWxzbyBjaGVjayBmb3IgYWN0aW9uIGluIGNvbmZpZyBvciBpbnN0YW5jZVxuICAgIGlmIChjaGFuZ2VzWyd0aXRsZSddKSB7XG4gICAgICBjb25zdCBhY3Rpb25WYWx1ZSA9ICh0aGlzIGFzIGFueSkuYWN0aW9uIHx8ICh0aGlzLmNvbmZpZyBhcyBhbnkpPy5hY3Rpb24gfHwgJyc7XG4gICAgICBjb25zdCBzdGVwVGl0bGUgPSAodGhpcy50aXRsZSAmJiB0aGlzLnRpdGxlLnRyaW0oKSkgPyB0aGlzLnRpdGxlIDogYWN0aW9uVmFsdWU7XG4gICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgdGhpcy5jb25maWcudGl0bGUgPSBzdGVwVGl0bGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3N0ZXBEZWxldGVkJ10gJiYgdGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnLnN0ZXBEZWxldGVkID0gY2hhbmdlc1snc3RlcERlbGV0ZWQnXS5jdXJyZW50VmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2V4cGFuZGVkJ10gJiYgdGhpcy5leHBhbmRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmxvZygnZXhwYW5kZWQgY2hhbmdlZCBpbiBsb29wLXN0ZXAnLCB0aGlzLmlkLCBjaGFuZ2VzWydleHBhbmRlZCddKTtcbiAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IHRoaXMuZXhwYW5kZWQ7XG4gICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgdGhpcy5jb25maWcuZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBjb25maWcgd2hlbiBpbnB1dHMgY2hhbmdlXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZXJhdGlvbnMnXSB8fCBjaGFuZ2VzWydzZWxlY3RlZEl0ZXJhdGlvbklkJ10gfHwgY2hhbmdlc1snbmVzdGVkU3RlcHMnXSkge1xuICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLml0ZXJhdGlvbnMgPSB0aGlzLml0ZXJhdGlvbnM7XG4gICAgICAgIHRoaXMuY29uZmlnLnNlbGVjdGVkSXRlcmF0aW9uSWQgPSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWQ7XG4gICAgICAgIHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzID0gdGhpcy5uZXN0ZWRTdGVwcyB8fCBbXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgd2hlbiBuZXN0ZWQgc3RlcHMgYXJlIGFkZGVkIGFuZCBzdGVwIGlzIGV4cGFuZGVkXG4gICAgLy8gaWYgKGNoYW5nZXNbJ25lc3RlZFN0ZXBzJ10gJiYgdGhpcy5pc0V4cGFuZGVkICYmIHRoaXMubmVzdGVkU3RlcHMgJiYgdGhpcy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgIC8vICAgdGhpcy5uZXN0ZWRTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgIC8vICAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICAvLyAgICAgaWYgKHN0ZXBJZCkge1xuICAgIC8vICAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmFkZChTdHJpbmcoc3RlcElkKSk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH0pO1xuICAgIC8vIH1cblxuICAgIC8vIEluaXRpYWxpemUgbG9hZGluZyBzdGF0ZSBpZiBhbHJlYWR5IGV4cGFuZGVkIHdoZW4gY29tcG9uZW50IGluaXRpYWxpemVzXG4gICAgaWYgKGNoYW5nZXNbJ2V4cGFuZGVkJ10gJiYgdGhpcy5pc0V4cGFuZGVkICYmIHRoaXMubmVzdGVkU3RlcHMgJiYgdGhpcy5uZXN0ZWRTdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgICAgdGhpcy5uZXN0ZWRTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgICBjb25zdCBzdGVwSWQgPSBzdGVwLnRlc3RTdGVwUmVzdWx0SWQgfHwgc3RlcC5pZDtcbiAgICAgICAgaWYgKHN0ZXBJZCkge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmFkZChTdHJpbmcoc3RlcElkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFsc28gaGFuZGxlIHdoZW4gbmVzdGVkU3RlcHMgaXMgcGFzc2VkIHZpYSBjaGlsZHJlbiBwcm9wZXJ0eSAoZm9yIHN0ZXAtcmVuZGVyZXIgY29tcGF0aWJpbGl0eSlcbiAgICBpZiAoY2hhbmdlc1snbmVzdGVkU3RlcHMnXSAmJiB0aGlzLm5lc3RlZFN0ZXBzKSB7XG4gICAgICAvLyBFbnN1cmUgY29uZmlnIGlzIHVwZGF0ZWQgd2l0aCBuZXN0ZWRTdGVwc1xuICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzID0gdGhpcy5uZXN0ZWRTdGVwcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBuZXN0ZWRTdGVwcyBpcyBub3QgcHJvdmlkZWQgYnV0IGNoaWxkcmVuIGlzIChmcm9tIHN0ZXAtcmVuZGVyZXIpLCB1c2UgY2hpbGRyZW5cbiAgICBpZiAoIXRoaXMubmVzdGVkU3RlcHMgJiYgKHRoaXMuY29uZmlnIGFzIGFueSkuY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheSgodGhpcy5jb25maWcgYXMgYW55KS5jaGlsZHJlbikpIHtcbiAgICAgIHRoaXMubmVzdGVkU3RlcHMgPSAodGhpcy5jb25maWcgYXMgYW55KS5jaGlsZHJlbjtcbiAgICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgICB0aGlzLmNvbmZpZy5uZXN0ZWRTdGVwcyA9IHRoaXMubmVzdGVkU3RlcHM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNMaXZlKSB7XG4gICAgICAvLyBVcGRhdGUgc3ViU3RlcHMgYXJyYXkgd2hlbiBuZXcgb25lcyBhcmUgYWRkZWRcbiAgICAgIGlmIChjaGFuZ2VzWyduZXN0ZWRTdGVwcyddKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU3ViU3RlcHNDb3VudCA9IGNoYW5nZXNbJ25lc3RlZFN0ZXBzJ10ucHJldmlvdXNWYWx1ZT8ubGVuZ3RoIHx8IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdWJTdGVwc0NvdW50ID0gKHRoaXMubmVzdGVkU3RlcHMgfHwgW10pLmxlbmd0aDtcblxuICAgICAgICAvLyBTdWItc3RlcHMgYXJlIGFwcGVuZGVkIGV4dGVybmFsbHksIHNvIHdlIGp1c3QgdXBkYXRlIHRoZSBjb25maWdcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgICAgdGhpcy5jb25maWcubmVzdGVkU3RlcHMgPSB0aGlzLm5lc3RlZFN0ZXBzIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBBdXRvLWV4cGFuZCBpZiBzdGVwIGlzIHJ1bm5pbmcgYW5kIG5ldyBzdWJTdGVwcyBhcmUgYWRkZWQgKGxvZ3MgY29taW5nIGluKVxuICAgICAgICBpZiAoIWNoYW5nZXNbJ25lc3RlZFN0ZXBzJ10uZmlyc3RDaGFuZ2UgJiYgXG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnICYmIFxuICAgICAgICAgICAgY3VycmVudFN1YlN0ZXBzQ291bnQgPiBwcmV2aW91c1N1YlN0ZXBzQ291bnQgJiZcbiAgICAgICAgICAgIHRoaXMuaGFzU3ViU3RlcHMgJiYgXG4gICAgICAgICAgICAhdGhpcy5pc0V4cGFuZGVkICYmIFxuICAgICAgICAgICAgIXRoaXMudXNlck1hbnVhbGx5Q2xvc2VkKSB7XG4gICAgICAgICAgdGhpcy5hdXRvRXhwYW5kKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIHN0YXR1cyBjaGFuZ2VzIC0gYXV0by1leHBhbmQgd2hlbiBzdGVwIHN0YXJ0cyBleGVjdXRpbmdcbiAgICAgIGlmIChjaGFuZ2VzWydzdGF0dXMnXSAmJiAhY2hhbmdlc1snc3RhdHVzJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gY2hhbmdlc1snc3RhdHVzJ10uY3VycmVudFZhbHVlO1xuICAgICAgICBjb25zdCBvbGRTdGF0dXMgPSBjaGFuZ2VzWydzdGF0dXMnXS5wcmV2aW91c1ZhbHVlO1xuXG4gICAgICAgIC8vIEF1dG8tZXhwYW5kIHdoZW4gc3RhdHVzIGNoYW5nZXMgdG8gJ3J1bm5pbmcnIGFuZCBoYXMgc3ViU3RlcHMgKG9yIHdpbGwgaGF2ZSBzb29uKVxuICAgICAgICBpZiAobmV3U3RhdHVzID09PSAncnVubmluZycgJiYgb2xkU3RhdHVzICE9PSAncnVubmluZycgJiYgIXRoaXMudXNlck1hbnVhbGx5Q2xvc2VkKSB7XG4gICAgICAgICAgLy8gRXhwYW5kIGltbWVkaWF0ZWx5IGlmIGFscmVhZHkgaGFzIHN1YlN0ZXBzLCBvciB3YWl0IGZvciB0aGVtXG4gICAgICAgICAgaWYgKHRoaXMuaGFzU3ViU3RlcHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b0V4cGFuZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJldmlvdXNTdGF0dXMgPSBuZXdTdGF0dXM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIC8vIEJ1ZyAzIGZpeDogZGV0ZWN0IGluLXBsYWNlIG5lc3RlZFN0ZXBzIGFycmF5IGdyb3d0aCBkdXJpbmcgbGl2ZSBleGVjdXRpb24uXG4gICAgLy8gbmdPbkNoYW5nZXMoJ25lc3RlZFN0ZXBzJykgbmV2ZXIgZmlyZXMgd2hlbiBpdGVtcyBhcmUgcHVzaGVkIG9udG8gdGhlIHNhbWUgYXJyYXlcbiAgICAvLyByZWZlcmVuY2UsIHNvIGNvbmZpZy5uZXN0ZWRTdGVwcyBmYWxscyBvdXQgb2Ygc3luYyB3aXRoIHRoZSBsaXZlIGRhdGEuXG4gICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMubmVzdGVkU3RlcHMgJiYgdGhpcy5jb25maWcpIHtcbiAgICAgIGNvbnN0IG5lc3RlZExlbmd0aCA9IHRoaXMubmVzdGVkU3RlcHMubGVuZ3RoO1xuICAgICAgaWYgKG5lc3RlZExlbmd0aCAhPT0gdGhpcy5sYXN0TmVzdGVkU3RlcHNMZW5ndGgpIHtcbiAgICAgICAgdGhpcy5sYXN0TmVzdGVkU3RlcHNMZW5ndGggPSBuZXN0ZWRMZW5ndGg7XG4gICAgICAgIHRoaXMuY29uZmlnLm5lc3RlZFN0ZXBzID0gdGhpcy5uZXN0ZWRTdGVwcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNMaXZlIHx8ICF0aGlzLnNlbGVjdGVkSXRlcmF0aW9uKSByZXR1cm47XG4gICAgY29uc3QgY3VycmVudExlbmd0aCA9ICh0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzIHx8IFtdKS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGFzdFByb2Nlc3NlZEluZGV4ID4gMCAmJiBjdXJyZW50TGVuZ3RoIDwgdGhpcy5sYXN0UHJvY2Vzc2VkSW5kZXgpIHtcbiAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgIH1cbiAgICBpZiAoY3VycmVudExlbmd0aCAhPT0gdGhpcy5sYXN0UHJvY2Vzc2VkSW5kZXgpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0xpdmVTdWJTdGVwcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXV0b0V4cGFuZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCAmJiB0aGlzLmhhc1N1YlN0ZXBzKSB7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgdGhpcy51c2VyTWFudWFsbHlDbG9zZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMudG9nZ2xlRXhwYW5kZWQuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaGFzU3ViU3RlcHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmVzdGVkU3RlcHMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBvdmVycmlkZSB0b2dnbGUoKTogdm9pZCB7XG4gICAgY29uc3Qgd2FzRXhwYW5kZWQgPSB0aGlzLmlzRXhwYW5kZWQ7XG4gICAgc3VwZXIudG9nZ2xlKCk7XG4gICAgLy8gRW1pdCBldmVudCB3aGVuIGV4cGFuZGluZyAodHJhbnNpdGlvbmluZyBmcm9tIGNvbGxhcHNlZCB0byBleHBhbmRlZClcbiAgICBpZiAoIXdhc0V4cGFuZGVkICYmIHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgdGhpcy5vbkV4cGFuZC5lbWl0KCk7XG4gICAgICAvLyBJZiB0aGlzIHN0ZXAgaGFzIGNoaWxkcmVuIChoYXNDaGlsZCBpcyB0cnVlKSBhbmQgb25FeHBhbmRIYW5kbGVyIGlzIHByb3ZpZGVkLCBjYWxsIGl0IHRvIGZldGNoIGNoaWxkcmVuXG4gICAgICBpZiAodGhpcy5vbkV4cGFuZEhhbmRsZXIgJiYgdGhpcy5jb25maWcgJiYgdGhpcy5oYXNDaGlsZCkge1xuICAgICAgICAvLyBDcmVhdGUgYSBzdGVwIGNvbmZpZyBvYmplY3QgZm9yIHRoZSBoYW5kbGVyIHdpdGggaGFzQ2hpbGQgcHJvcGVydHlcbiAgICAgICAgY29uc3Qgc3RlcENvbmZpZyA9IHtcbiAgICAgICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgICAgICBoYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgICBleHBhbmRlZDogdHJ1ZSwgLy8gRW5zdXJlIGV4cGFuZGVkIGlzIHNldFxuICAgICAgICAgIHRlc3RTdGVwVHlwZTogKHRoaXMuY29uZmlnIGFzIGFueSkudGVzdFN0ZXBUeXBlIHx8ICh0aGlzLmxvb3BUeXBlID09PSAnZm9yJyA/ICdGT1JfTE9PUCcgOiAnV0hJTEVfTE9PUCcpLFxuICAgICAgICAgIGNoaWxkcmVuOiB0aGlzLmNvbmZpZy5uZXN0ZWRTdGVwcyB8fCBbXSxcbiAgICAgICAgICB0ZXN0U3RlcFJlc3VsdElkOiB0aGlzLnRlc3RTdGVwUmVzdWx0SWQsXG4gICAgICAgICAgaWQ6IHRoaXMuaWRcbiAgICAgICAgfSBhcyBFeGVjdXRpb25TdGVwQ29uZmlnICYgeyBoYXNDaGlsZDogYm9vbGVhbjsgdGVzdFN0ZXBUeXBlPzogc3RyaW5nOyBjaGlsZHJlbj86IGFueVtdOyBleHBhbmRlZD86IGJvb2xlYW4gfTtcbiAgICAgICAgdGhpcy5vbkV4cGFuZEhhbmRsZXIoc3RlcENvbmZpZyk7XG4gICAgICB9XG4gICAgICAvLyBJbml0aWFsaXplIGxvYWRpbmcgc3RhdGUgZm9yIGFsbCBuZXN0ZWQgc3RlcHNcbiAgICAgIGlmICh0aGlzLm5lc3RlZFN0ZXBzICYmIHRoaXMubmVzdGVkU3RlcHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdGVwcy5jbGVhcigpO1xuICAgICAgICB0aGlzLm5lc3RlZFN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RlcElkID0gc3RlcC50ZXN0U3RlcFJlc3VsdElkIHx8IHN0ZXAuaWQ7XG4gICAgICAgICAgaWYgKHN0ZXBJZCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3RlcHMuYWRkKFN0cmluZyhzdGVwSWQpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgLy8gQ2xlYXIgbG9hZGluZyBzdGF0ZSB3aGVuIGNvbGxhcHNpbmdcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGV4cGFuZGVkIHN0YXRlIGlzIHN5bmNlZCB3aXRoIGNvbmZpZ1xuICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcuZXhwYW5kZWQgPSB0aGlzLmlzRXhwYW5kZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYSBzdGVwIGlzIHN0aWxsIGxvYWRpbmdcbiAgaXNOZXN0ZWRTdGVwTG9hZGluZyhzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RlcElkID0gc3RlcC50ZXN0U3RlcFJlc3VsdElkIHx8IHN0ZXAuaWQ7XG4gICAgcmV0dXJuIHN0ZXBJZCA/IHRoaXMubG9hZGluZ1N0ZXBzLmhhcyhTdHJpbmcoc3RlcElkKSkgOiBmYWxzZTtcbiAgfVxuXG4gIC8vIE1hcmsgYSBzdGVwIGFzIGxvYWRlZCAoY2FsbGVkIHdoZW4gc3RlcC1yZW5kZXJlciBpcyByZWFkeSlcbiAgbWFya1N0ZXBMb2FkZWQoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXBJZCA9IHN0ZXAudGVzdFN0ZXBSZXN1bHRJZCB8fCBzdGVwLmlkO1xuICAgIGlmIChzdGVwSWQpIHtcbiAgICAgIHRoaXMubG9hZGluZ1N0ZXBzLmRlbGV0ZShTdHJpbmcoc3RlcElkKSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0RGVmYXVsdEl0ZXJhdGlvbigpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCwgdHJ5IHRvIHVzZSBzZWxlY3RlZEl0ZXJhdGlvbklkIGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVyYXRpb25JZCkge1xuICAgICAgY29uc3QgZm91bmQgPSB0aGlzLml0ZXJhdGlvbnMuZmluZChcbiAgICAgICAgaXRlciA9PiBpdGVyLmlkID09PSB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uSWRcbiAgICAgICk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgLy8gUmVzZXQgcHJvY2Vzc2luZyB3aGVuIHN3aXRjaGluZyB0byBhIGRpZmZlcmVudCBpdGVyYXRpb25cbiAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5pZCAhPT0gZm91bmQuaWQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0TGl2ZVByb2Nlc3NpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uID0gZm91bmQ7XG4gICAgICAgIC8vIFByb2Nlc3MgbGl2ZSBzdWItc3RlcHMgd2hlbiBpdGVyYXRpb24gaXMgc2VsZWN0ZWRcbiAgICAgICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwcykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0xpdmVTdWJTdGVwcygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB1c2VyIGhhcyBtYW51YWxseSBzZWxlY3RlZCBzb21ldGhpbmcsIHByZXNlcnZlIGl0XG4gICAgaWYgKHRoaXMudXNlclNlbGVjdGVkSXRlcmF0aW9uSWQpIHtcbiAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5pdGVyYXRpb25zLmZpbmQoaXRlciA9PiBpdGVyLmlkID09PSB0aGlzLnVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAvLyBSZXNldCBwcm9jZXNzaW5nIHdoZW4gc3dpdGNoaW5nIHRvIGEgZGlmZmVyZW50IGl0ZXJhdGlvblxuICAgICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLmlkICE9PSBmb3VuZC5pZCkge1xuICAgICAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gPSBmb3VuZDtcbiAgICAgICAgLy8gUHJvY2VzcyBsaXZlIHN1Yi1zdGVwcyB3aGVuIGl0ZXJhdGlvbiBpcyBzZWxlY3RlZFxuICAgICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzTGl2ZVN1YlN0ZXBzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFwcGx5IGRlZmF1bHQgYmFzZWQgb24gZGVmYXVsdEl0ZXJhdGlvbiBzZXR0aW5nXG4gICAgaWYgKHRoaXMuZGVmYXVsdEl0ZXJhdGlvbiA9PT0gJ2xhc3QnICYmIHRoaXMuaXRlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsYXN0SXRlcmF0aW9uID0gdGhpcy5pdGVyYXRpb25zW3RoaXMuaXRlcmF0aW9ucy5sZW5ndGggLSAxXTtcbiAgICAgIC8vIFJlc2V0IHByb2Nlc3Npbmcgd2hlbiBzd2l0Y2hpbmcgdG8gYSBkaWZmZXJlbnQgaXRlcmF0aW9uXG4gICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLmlkICE9PSBsYXN0SXRlcmF0aW9uLmlkKSB7XG4gICAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiA9IGxhc3RJdGVyYXRpb247XG4gICAgICAvLyBTZXQgdXNlclNlbGVjdGVkSXRlcmF0aW9uSWQgdG8gdHJhY2sgdGhlIGRlZmF1bHQgc2VsZWN0aW9uXG4gICAgICB0aGlzLnVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkID0gbGFzdEl0ZXJhdGlvbi5pZDtcbiAgICAgIC8vIFByb2Nlc3MgbGl2ZSBzdWItc3RlcHMgd2hlbiBpdGVyYXRpb24gaXMgc2VsZWN0ZWRcbiAgICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzTGl2ZVN1YlN0ZXBzKCk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3ViU3RlcHNGb3JSdW5SZXN1bHQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaXJzdEl0ZXJhdGlvbiA9IHRoaXMuaXRlcmF0aW9uc1swXTtcbiAgICAgIC8vIFJlc2V0IHByb2Nlc3Npbmcgd2hlbiBzd2l0Y2hpbmcgdG8gYSBkaWZmZXJlbnQgaXRlcmF0aW9uXG4gICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLmlkICE9PSBmaXJzdEl0ZXJhdGlvbi5pZCkge1xuICAgICAgICB0aGlzLnJlc2V0TGl2ZVByb2Nlc3NpbmcoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gPSBmaXJzdEl0ZXJhdGlvbjtcbiAgICAgIC8vIFNldCB1c2VyU2VsZWN0ZWRJdGVyYXRpb25JZCB0byB0cmFjayB0aGUgZGVmYXVsdCBzZWxlY3Rpb25cbiAgICAgIHRoaXMudXNlclNlbGVjdGVkSXRlcmF0aW9uSWQgPSBmaXJzdEl0ZXJhdGlvbi5pZDtcbiAgICAgIC8vIFByb2Nlc3MgbGl2ZSBzdWItc3RlcHMgd2hlbiBpdGVyYXRpb24gaXMgc2VsZWN0ZWRcbiAgICAgIGlmICh0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzTGl2ZVN1YlN0ZXBzKCk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzTGl2ZSAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3ViU3RlcHNGb3JSdW5SZXN1bHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVJdGVyYXRpb25DaGFuZ2UoaXRlcmF0aW9uOiBMb29wSXRlcmF0aW9uKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coXCJJVEVSQVRJT04gQ0hBTkdFXCIsIHRoaXMuY29uZmlnICxpdGVyYXRpb24pXG4gICAgLy8gUmVzZXQgcHJvY2Vzc2luZyB3aGVuIHN3aXRjaGluZyBpdGVyYXRpb25zXG4gICAgaWYgKHRoaXMuaXNMaXZlICYmIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbi5pZCAhPT0gaXRlcmF0aW9uLmlkKSB7XG4gICAgICB0aGlzLnJlc2V0TGl2ZVByb2Nlc3NpbmcoKTtcbiAgICB9XG4gICAgLy8gU3RvcmUgdGhlIHVzZXIncyBtYW51YWwgc2VsZWN0aW9uXG4gICAgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiA9IGl0ZXJhdGlvbjtcbiAgICB0aGlzLnVzZXJTZWxlY3RlZEl0ZXJhdGlvbklkID0gaXRlcmF0aW9uLmlkO1xuXG4gICAgaWYgKHRoaXMuaXNMaXZlKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlcmF0aW9ucy5maW5kSW5kZXgoaXRlciA9PiBpdGVyLmlkID09PSBpdGVyYXRpb24uaWQpO1xuXG4gICAgICBpZiAoaW5kZXggPiAtMSAmJiB0aGlzLml0ZXJhdGlvbkRhdGE/LltpbmRleF0gJiYgdGhpcy5uZXN0ZWRTdGVwcykge1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWROZXN0ZWRTdGVwczogRXhlY3V0aW9uU3RlcENvbmZpZ1tdID1cbiAgICAgICAgICB0aGlzLm5lc3RlZFN0ZXBzLm1hcChzdGVwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTdWJTdGVwcyA9IHRoaXMuaXRlcmF0aW9uRGF0YVtpbmRleF1bc3RlcC5pZF07XG4gICAgICAgICAgICBzdGVwLmR1cmF0aW9uID0gdXBkYXRlZFN1YlN0ZXBzLnJlZHVjZSgoYWNjOiBudW1iZXIsIHN1YlN0ZXA6IGFueSkgPT4gYWNjICsgc3ViU3RlcD8uZHVyYXRpb24gfHwgMCwgMCk7XG5cbiAgICAgICAgICAgIGlmICh1cGRhdGVkU3ViU3RlcHMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5zdGVwLFxuICAgICAgICAgICAgICAgIHN1YlN0ZXBzOiBbLi4udXBkYXRlZFN1YlN0ZXBzXVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyAuLi5zdGVwIH07XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5uZXN0ZWRTdGVwcyA9IHVwZGF0ZWROZXN0ZWRTdGVwcztcblxuICAgICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgICAgICAgbmVzdGVkU3RlcHM6IHVwZGF0ZWROZXN0ZWRTdGVwc1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyBsaXZlIHN1Yi1zdGVwcyB3aGVuIGl0ZXJhdGlvbiBjaGFuZ2VzXG4gICAgICBpZiAodGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0xpdmVTdWJTdGVwcygpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5pc0xpdmUgJiYgdGhpcy5zZWxlY3RlZEl0ZXJhdGlvbiAmJiB0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N1YlN0ZXBzRm9yUnVuUmVzdWx0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEVtaXQgdGhlIGV2ZW50IHdpdGggdGhlIGl0ZXJhdGlvbiBJRFxuICAgIHRoaXMub25JdGVyYXRpb25DaGFuZ2UuZW1pdChpdGVyYXRpb24uaWQpO1xuICB9XG5cbiAgY29tcGFyZUl0ZXJhdGlvbihhOiBMb29wSXRlcmF0aW9uLCBiOiBMb29wSXRlcmF0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEgJiYgYiA/IGEuaWQgPT09IGIuaWQgOiBhID09PSBiO1xuICB9XG5cbiAgZ2V0TG9vcFR5cGVCYWRnZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGJhZGdlczogc3RyaW5nW10gPSBbJ0xPT1AnXTtcbiAgICBpZiAodGhpcy5sb29wVHlwZSA9PT0gJ2ZvcicpIHtcbiAgICAgIGJhZGdlcy5wdXNoKCdGT1InKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9vcFR5cGUgPT09ICd3aGlsZScpIHtcbiAgICAgIGJhZGdlcy5wdXNoKCdXSElMRScpO1xuICAgIH1cbiAgICByZXR1cm4gYmFkZ2VzO1xuICB9XG5cbiAgZ2V0SXRlcmF0aW9uTGFiZWwoaXRlcmF0aW9uOiBMb29wSXRlcmF0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXRlcmF0aW9uLmxhYmVsO1xuICB9XG5cbiAgb25WaWV3QWxsSXRlcmF0aW9uc0NsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5vblZpZXdBbGxJdGVyYXRpb25zLmVtaXQoKTtcbiAgfVxuXG4gIG9uVmlld01vcmVGYWlsZWRTdGVwQ2xpY2soZXhwYW5kZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNob3dGYWlsZWRTdGVwRGV0YWlscyA9IGV4cGFuZGVkO1xuICB9XG5cbiAgZ2V0U3ViU3RlcHNGb3JGYWlsZWRTdGVwKCk6IFN1YlN0ZXBbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVyYXRpb24/LnN1YlN0ZXBzIHx8IFtdO1xuICB9XG5cbiAgb25NYWtlQ3VycmVudEJhc2VsaW5lKGV2ZW50OiBtYWtlQ3VycmVudEJhc2VsaW5lRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1ha2VDdXJyZW50QmFzZWxpbmUuZW1pdChldmVudCk7XG4gIH1cblxuICBvblVwbG9hZEJhc2VsaW5lKGV2ZW50OiB1cGxvYWRCYXNlbGluZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy51cGxvYWRCYXNlbGluZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uQW5hbHl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5emUuZW1pdCgpO1xuICB9XG5cbiAgb25WaWV3RnVsbExvZ3MoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3RnVsbExvZ3MuZW1pdCgpO1xuICB9XG5cbiAgb25TZWxmSGVhbEFjdGlvbihldmVudDogU2VsZkhlYWxBY3Rpb25FdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZkhlYWxBY3Rpb24uZW1pdChldmVudCk7XG4gIH1cblxuICBnZXQgc2hvd1ZpZXdNb3JlQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRXhwYW5kZWQgJiYgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzKSAmJlxuICAgICAgKFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5leHBlY3RlZCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5hY3R1YWwpKSB8fFxuICAgICAgICAoQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uY3VycmVudCB8fCB0aGlzLmZhaWx1cmVEZXRhaWxzPy5zY3JlZW5zaG90cz8uYmFzZWxpbmUgfHwgdGhpcy5mYWlsdXJlRGV0YWlscz8uc2NyZWVuc2hvdHM/LmRpZmZlcmVuY2UpXG4gICAgICAgICAgfHwgQm9vbGVhbih0aGlzLmZhaWx1cmVEZXRhaWxzPy5sb2dzPy5sZW5ndGgpKSB8fCBcbiAgICAgICAgKEJvb2xlYW4odGhpcy5mYWlsdXJlRGV0YWlscz8uYWlGaXhBcHBsaWVkICYmICh0aGlzLmZhaWx1cmVEZXRhaWxzPy5haUZpeE1lc3NhZ2UgfHwgdGhpcy5jb25maWRlbmNlIHx8IHRoaXMucmVhc29uaW5nPy5sZW5ndGgpKSlcbiAgICAgIClcbiAgfVxuXG4gIG9uRGVidWdQb2ludENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5kZWJ1Z1BvaW50Q2hhbmdlLmVtaXQoIXRoaXMuZGVidWdQb2ludFNldCk7XG4gIH1cblxuICBvbkVkaXRTdGVwKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5lZGl0U3RlcC5lbWl0KCk7XG4gIH1cblxuICBvbkFkZFN0ZXBPcHRpb25TZWxlY3Qob3B0aW9uOiBBZGRTdGVwTWVudU9wdGlvbiwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmFkZFN0ZXBPcHRpb25TZWxlY3QuZW1pdChvcHRpb24pO1xuICB9XG5cbiAgb25TdGVwTW9yZU9wdGlvblNlbGVjdChvcHRpb246IFN0ZXBNb3JlTWVudU9wdGlvbiwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnN0ZXBNb3JlT3B0aW9uU2VsZWN0LmVtaXQob3B0aW9uKTtcbiAgfVxuXG4gIHRvZ2dsZUhlYWRlcihldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuc2hvd0ZhaWxlZFN0ZXBEZXRhaWxzID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLm9uU3RlcENsaWNrSGFuZGxlcikge1xuICAgICAgY29uc3Qgc3RlcFRvUGFzcyA9IHRoaXMuc3RlcCB8fCB0aGlzLmNvbmZpZztcbiAgICAgIGlmIChzdGVwVG9QYXNzKSB7XG4gICAgICAgIHRoaXMub25TdGVwQ2xpY2tIYW5kbGVyKHN0ZXBUb1Bhc3MsIGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogdHJhY2tCeSBmb3IgdGhlIG5lc3RlZC1zdGVwcyAqbmdGb3Ig4oCUIGtlZXBzIGV4aXN0aW5nIHZpZXdzIGFsaXZlIHdoZW4gYSBzdGVwIGdldHMgYSBuZXcgb2JqZWN0IHJlZmVyZW5jZS4gKi9cbiAgdHJhY2tOZXN0ZWRTdGVwKF9pbmRleDogbnVtYmVyLCBzdGVwOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBzdGVwPy5pZCA/PyBzdGVwPy50ZXN0U3RlcFJlc3VsdElkID8/IF9pbmRleDtcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gY2hlY2sgaWYgYSBzdGVwIGlzIGEgc3RlcC1ncm91cCB3aXRoIGhhc0NoaWxkXG4gIGlzTmVzdGVkU3RlcEdyb3VwV2l0aENoaWxkcmVuKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RlcC50eXBlID09PSAnc3RlcC1ncm91cCcgJiYgISEoc3RlcCBhcyBhbnkpLmhhc0NoaWxkO1xuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBnZXQgZ3JvdXBOYW1lIGZyb20gc3RlcCBjb25maWdcbiAgZ2V0R3JvdXBOYW1lKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBzdHJpbmcge1xuICAgIHJldHVybiAoc3RlcCBhcyBTdGVwR3JvdXBDb25maWcpLmdyb3VwTmFtZSB8fCAnJztcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gZ2V0IHN0ZXBzIGZyb20gc3RlcCBjb25maWdcbiAgZ2V0U3RlcHMoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IEV4ZWN1dGlvblN0ZXBDb25maWdbXSB7XG4gICAgY29uc3Qgc3RlcEdyb3VwID0gc3RlcCBhcyBTdGVwR3JvdXBDb25maWc7XG4gICAgcmV0dXJuIHN0ZXBHcm91cC5zdGVwcyB8fCAoc3RlcCBhcyBhbnkpLmNoaWxkcmVuIHx8IFtdO1xuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBjaGVjayBpZiBhIHN0ZXAgaXMgYSBjb25kaXRpb24gc3RlcFxuICBpc05lc3RlZENvbmRpdGlvblN0ZXAoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHN0ZXBUeXBlID0gKHN0ZXAgYXMgYW55KS50ZXN0U3RlcFR5cGUgfHwgc3RlcC50eXBlO1xuICAgIHJldHVybiBzdGVwVHlwZSA9PT0gJ0NPTkRJVElPTl9JRicgfHwgc3RlcFR5cGUgPT09ICdDT05ESVRJT05fRUxTRScgfHwgXG4gICAgICAgICAgIHN0ZXBUeXBlID09PSAnQ09ORElUSU9OX0VMU0VfSUYnIHx8IHN0ZXBUeXBlID09PSAnQ09ORElUSU9OX0VMU0VJRicgfHxcbiAgICAgICAgICAgc3RlcFR5cGUgPT09ICdjb25kaXRpb24nO1xuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBjaGVjayBpZiBhIHN0ZXAgaXMgYSBsb29wIHN0ZXBcbiAgaXNOZXN0ZWRMb29wU3RlcChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RlcFR5cGUgPSAoc3RlcCBhcyBhbnkpLnRlc3RTdGVwVHlwZSB8fCBzdGVwLnR5cGU7XG4gICAgcmV0dXJuIHN0ZXBUeXBlID09PSAnRk9SX0xPT1AnIHx8IHN0ZXBUeXBlID09PSAnV0hJTEVfTE9PUCcgfHwgc3RlcFR5cGUgPT09ICdsb29wJztcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gZ2V0IGxvb3AgdHlwZSBmcm9tIHN0ZXAgY29uZmlnXG4gIGdldExvb3BUeXBlKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiAnZm9yJyB8ICd3aGlsZScgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHN0ZXBUeXBlID0gKHN0ZXAgYXMgYW55KS50ZXN0U3RlcFR5cGUgfHwgc3RlcC50eXBlO1xuICAgIGlmIChzdGVwVHlwZSA9PT0gJ0ZPUl9MT09QJyB8fCAoc3RlcCBhcyBMb29wU3RlcENvbmZpZykubG9vcFR5cGUgPT09ICdmb3InKSB7XG4gICAgICByZXR1cm4gJ2Zvcic7XG4gICAgfSBlbHNlIGlmIChzdGVwVHlwZSA9PT0gJ1dISUxFX0xPT1AnIHx8IChzdGVwIGFzIExvb3BTdGVwQ29uZmlnKS5sb29wVHlwZSA9PT0gJ3doaWxlJykge1xuICAgICAgcmV0dXJuICd3aGlsZSc7XG4gICAgfVxuICAgIHJldHVybiAoc3RlcCBhcyBMb29wU3RlcENvbmZpZykubG9vcFR5cGU7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCBpdGVyYXRpb25zIGZyb20gc3RlcCBjb25maWdcbiAgZ2V0TG9vcEl0ZXJhdGlvbnMoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IGFueVtdIHtcbiAgICAvLyBVc2UgaGFuZGxlciBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSB1c2UgY29uZmlnXG4gICAgaWYgKHRoaXMuZ2V0TG9vcEl0ZXJhdGlvbnNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRMb29wSXRlcmF0aW9uc0hhbmRsZXIoc3RlcCk7XG4gICAgfVxuICAgIGNvbnN0IGxvb3BTdGVwID0gc3RlcCBhcyBMb29wU3RlcENvbmZpZztcbiAgICByZXR1cm4gbG9vcFN0ZXAuaXRlcmF0aW9ucyB8fCBbXTtcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gZ2V0IG5lc3RlZCBzdGVwcyBmcm9tIGxvb3Agc3RlcCBjb25maWdcbiAgZ2V0TG9vcE5lc3RlZFN0ZXBzKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBFeGVjdXRpb25TdGVwQ29uZmlnW10ge1xuICAgIGNvbnN0IGxvb3BTdGVwID0gc3RlcCBhcyBMb29wU3RlcENvbmZpZztcbiAgICByZXR1cm4gbG9vcFN0ZXAubmVzdGVkU3RlcHMgfHwgKHN0ZXAgYXMgYW55KS5jaGlsZHJlbiB8fCBbXTtcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gaGFuZGxlIG5lc3RlZCBsb29wIHN0ZXAgZXhwYW5zaW9uXG4gIGhhbmRsZUxvb3BTdGVwRXhwYW5kKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vbkV4cGFuZEhhbmRsZXIpIHtcbiAgICAgIHRoaXMub25FeHBhbmRIYW5kbGVyKHN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gaGFuZGxlIG5lc3RlZCBsb29wIHN0ZXAgaXRlcmF0aW9uIGNoYW5nZVxuICBoYW5kbGVMb29wU3RlcEl0ZXJhdGlvbkNoYW5nZShzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnLCBpdGVyYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gVGhpcyB3b3VsZCB0eXBpY2FsbHkgYmUgaGFuZGxlZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudFxuICAgIC8vIEZvciBub3csIHdlIGp1c3QgZW1pdCB0aGUgZXhwYW5kIGV2ZW50XG4gICAgaWYgKHRoaXMub25FeHBhbmRIYW5kbGVyKSB7XG4gICAgICB0aGlzLm9uRXhwYW5kSGFuZGxlcihzdGVwKTtcbiAgICB9XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCBzdGVwIHRpdGxlXG4gIGdldFN0ZXBUaXRsZShzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHN0ZXAgYXMgYW55KS5hY3Rpb24gfHwgc3RlcC50aXRsZSB8fCAnJztcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gZ2V0IHN0ZXAgc3RhdHVzXG4gIGdldFN0ZXBTdGF0dXMoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IFN0ZXBTdGF0dXMge1xuICAgIGNvbnN0IHJlc3VsdCA9IChzdGVwIGFzIGFueSkucmVzdWx0O1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdExvd2VyID0gcmVzdWx0LnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAocmVzdWx0TG93ZXIgPT09ICdzdWNjZXNzJyB8fCByZXN1bHRMb3dlciA9PT0gJ3Bhc3NlZCcpIHtcbiAgICAgICAgcmV0dXJuICdzdWNjZXNzJztcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0TG93ZXIgPT09ICdmYWlsdXJlJyB8fCByZXN1bHRMb3dlciA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHRMb3dlciA9PT0gJ3BlbmRpbmcnIHx8IHJlc3VsdExvd2VyID09PSAnbm90LWV4ZWN1dGVkJykge1xuICAgICAgICByZXR1cm4gJ3BlbmRpbmcnO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHRMb3dlciA9PT0gJ3J1bm5pbmcnKSB7XG4gICAgICAgIHJldHVybiAncnVubmluZyc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdGVwLnN0YXR1cyB8fCAncGVuZGluZyc7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCBzdGVwIGR1cmF0aW9uXG4gIGdldFN0ZXBEdXJhdGlvbihzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHN0ZXAgYXMgYW55KS5kdXJhdGlvbiB8fCBzdGVwLmR1cmF0aW9uIHx8IDA7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kcyBmb3IgY29uZGl0aW9uIHN0ZXAgcHJvcGVydGllc1xuICBnZXRDb25kaXRpb25TdGVwRHVyYXRpb24oc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IG51bWJlciB7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLmdldFN0ZXBEdXJhdGlvbihzdGVwKTtcbiAgICBpZiAodGhpcy5jb252ZXJ0TXNUb1NlY29uZHNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0TXNUb1NlY29uZHNIYW5kbGVyKGR1cmF0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIGR1cmF0aW9uO1xuICB9XG5cbiAgZ2V0Q29uZGl0aW9uU3RlcEV4cGFuZGVkKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc1N0ZXBFeHBhbmRlZEhhbmRsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzU3RlcEV4cGFuZGVkSGFuZGxlcihzdGVwKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0ZXAuZXhwYW5kZWQgfHwgZmFsc2U7XG4gIH1cblxuICBnZXRDb25kaXRpb25TdGVwVGV4dChzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHN0ZXAgYXMgYW55KS5hY3Rpb24gfHwgc3RlcC50aXRsZSB8fCAnJztcbiAgfVxuXG4gIGdldENvbmRpdGlvblN0ZXBCcmFuY2hlcyhzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogQ29uZGl0aW9uQnJhbmNoW10ge1xuICAgIGlmICh0aGlzLmdldENvbmRpdGlvbkJyYW5jaGVzSGFuZGxlcikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29uZGl0aW9uQnJhbmNoZXNIYW5kbGVyKHN0ZXApO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRDb25kaXRpb25TdGVwTG9hZGluZyhzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNTdGVwTG9hZGluZ0hhbmRsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzU3RlcExvYWRpbmdIYW5kbGVyKHN0ZXApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBoYW5kbGVDb25kaXRpb25TdGVwRXhwYW5kKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vbkV4cGFuZEhhbmRsZXIpIHtcbiAgICAgIHRoaXMub25FeHBhbmRIYW5kbGVyKHN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbmRpdGlvblN0ZXBGYWlsdXJlRGV0YWlscyhzdGVwOiBFeGVjdXRpb25TdGVwQ29uZmlnKTogYW55IHtcbiAgICBpZiAodGhpcy5mb3JtYXRGYWlsdXJlRGV0YWlsc0hhbmRsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdEZhaWx1cmVEZXRhaWxzSGFuZGxlcihzdGVwKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldENvbmRpdGlvblN0ZXBTZWxmSGVhbEFuYWx5c2lzKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBhbnkge1xuICAgIGlmICh0aGlzLmdldFNlbGZIZWFsQW5hbHlzaXNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTZWxmSGVhbEFuYWx5c2lzSGFuZGxlcihzdGVwKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGhhbmRsZUNvbmRpdGlvblN0ZXBTZWxmSGVhbEFjdGlvbihldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25TZWxmSGVhbEFjdGlvbkhhbmRsZXIpIHtcbiAgICAgIHRoaXMub25TZWxmSGVhbEFjdGlvbkhhbmRsZXIoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNvbmRpdGlvblN0ZXBNYWtlQmFzZWxpbmUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uTWFrZUN1cnJlbnRCYXNlbGluZUhhbmRsZXIpIHtcbiAgICAgIHRoaXMub25NYWtlQ3VycmVudEJhc2VsaW5lSGFuZGxlcihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ29uZGl0aW9uU3RlcFVwbG9hZEJhc2VsaW5lKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vblVwbG9hZEJhc2VsaW5lSGFuZGxlcikge1xuICAgICAgdGhpcy5vblVwbG9hZEJhc2VsaW5lSGFuZGxlcihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ29uZGl0aW9uU3RlcEFuYWx5emUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub25BbmFseXplSGFuZGxlcikge1xuICAgICAgdGhpcy5vbkFuYWx5emVIYW5kbGVyKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ29uZGl0aW9uU3RlcFZpZXdMb2dzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uVmlld0Z1bGxMb2dzSGFuZGxlcikge1xuICAgICAgdGhpcy5vblZpZXdGdWxsTG9nc0hhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kcyB0byBzYWZlbHkgYWNjZXNzIExvb3BTdGVwQ29uZmlnIHByb3BlcnRpZXNcbiAgZ2V0TG9vcFNlbGVjdGVkSXRlcmF0aW9uSWQoc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbG9vcFN0ZXAgPSBzdGVwIGFzIExvb3BTdGVwQ29uZmlnO1xuICAgIHJldHVybiBsb29wU3RlcC5zZWxlY3RlZEl0ZXJhdGlvbklkO1xuICB9XG5cbiAgZ2V0TG9vcERlZmF1bHRJdGVyYXRpb24oc3RlcDogRXhlY3V0aW9uU3RlcENvbmZpZyk6ICdmaXJzdCcgfCAnbGFzdCcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGxvb3BTdGVwID0gc3RlcCBhcyBMb29wU3RlcENvbmZpZztcbiAgICByZXR1cm4gbG9vcFN0ZXAuZGVmYXVsdEl0ZXJhdGlvbiB8fCAnbGFzdCc7XG4gIH1cblxuICBnZXRMb29wU2hvd1ZpZXdBbGxJdGVyYXRpb25zKHN0ZXA6IEV4ZWN1dGlvblN0ZXBDb25maWcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBsb29wU3RlcCA9IHN0ZXAgYXMgTG9vcFN0ZXBDb25maWc7XG4gICAgcmV0dXJuIGxvb3BTdGVwLnNob3dWaWV3QWxsSXRlcmF0aW9ucztcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoaXMgc3RlcCBpcyBjdXJyZW50bHkgbG9hZGluZyBuZXN0ZWQgY2hpbGRyZW5cbiAgaXNTdGVwTG9hZGluZygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc1N0ZXBMb2FkaW5nSGFuZGxlciAmJiB0aGlzLmNvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXMuaXNTdGVwTG9hZGluZ0hhbmRsZXIodGhpcy5jb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmcgfHwgZmFsc2U7XG4gIH1cblxuICBvbkp1bXBUb1RpbWVzdGFtcChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5qdW1wVG9UaW1lc3RhbXBIYW5kbGVyICYmIHRoaXMuc3RlcD8uZXhlY3V0ZWRSZXN1bHQ/LnZpZGVvX3N0YXJ0X3RpbWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnN0ZXA/LmV4ZWN1dGVkUmVzdWx0Py52aWRlb19zdGFydF90aW1lICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSB0eXBlb2YgdGhpcy5zdGVwLmV4ZWN1dGVkUmVzdWx0LnZpZGVvX3N0YXJ0X3RpbWUgPT09ICdudW1iZXInIFxuICAgICAgICA/IHRoaXMuc3RlcC5leGVjdXRlZFJlc3VsdC52aWRlb19zdGFydF90aW1lIFxuICAgICAgICA6IE51bWJlcih0aGlzLnN0ZXAuZXhlY3V0ZWRSZXN1bHQudmlkZW9fc3RhcnRfdGltZSk7XG4gICAgICBjb25zdCB0ZXN0U3RlcElkID0gdGhpcy5zdGVwPy50ZXN0U3RlcElkO1xuICAgICAgaWYgKGlzRmluaXRlKHRpbWVzdGFtcCkgJiYgdGltZXN0YW1wID49IDApIHtcbiAgICAgICAgdGhpcy5qdW1wVG9UaW1lc3RhbXBIYW5kbGVyKHRpbWVzdGFtcCwgdGVzdFN0ZXBJZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckNvdW50ZG93blRpbWVyKCk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NMaXZlU3ViU3RlcHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlcmF0aW9uIHx8ICF0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzKSB7XG4gICAgICB0aGlzLnJlc2V0TGl2ZVByb2Nlc3NpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhbGxTdWJTdGVwcyA9ICh0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzIHx8IFtdKSBhcyBhbnlbXTtcblxuICAgIC8vIFJlc2V0IGlmIHN1YlN0ZXBzIHdlcmUgY2xlYXJlZCBvciByZXBsYWNlZCB3aXRoIGZld2VyIGVudHJpZXNcbiAgICBpZiAoYWxsU3ViU3RlcHMubGVuZ3RoIDwgdGhpcy5sYXN0UHJvY2Vzc2VkSW5kZXgpIHtcbiAgICAgIHRoaXMucmVzZXRMaXZlUHJvY2Vzc2luZygpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSB0aGlzLmxhc3RQcm9jZXNzZWRJbmRleDsgaSA8IGFsbFN1YlN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzdWJTdGVwID0gYWxsU3ViU3RlcHNbaV07XG4gICAgICBjb25zdCB1aVR5cGU6IHN0cmluZyA9IHN1YlN0ZXA/LnVpVHlwZSB8fCBzdWJTdGVwPy50eXBlIHx8ICcnO1xuICAgICAgY29uc3Qgc3RhdHVzOiBzdHJpbmcgPSAoc3ViU3RlcD8uc3RhdHVzIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBpZiAodWlUeXBlID09PSAnV0FJVF9GT1JfTE9DQVRPUicpIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgc2luZ2xlIGdyb3VwZWQgZW50cnkgd2l0aCBhIGNvdW50ZG93bjsgYWJzb3JicyBGSU5EX0xPQ0FUT1IgYW5kIExPQ0FUT1JfRk9VTkRcbiAgICAgICAgY29uc3QgdGltZW91dFNlY29uZHMgPSB0eXBlb2Ygc3ViU3RlcC52YWx1ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IHN1YlN0ZXAudmFsdWVcbiAgICAgICAgICA6IChzdWJTdGVwLnZhbHVlID8gcGFyc2VGbG9hdChzdWJTdGVwLnZhbHVlKSA6IDMwKTtcblxuICAgICAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcblxuICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSA9IHtcbiAgICAgICAgICAuLi5zdWJTdGVwLFxuICAgICAgICAgIHJlbWFpbmluZ1NlY29uZHM6IHRpbWVvdXRTZWNvbmRzLFxuICAgICAgICAgIHN0YXR1czogJ3J1bm5pbmcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSk7XG5cbiAgICAgICAgLy8gVGljayBkb3duIGV2ZXJ5IHNlY29uZFxuICAgICAgICB0aGlzLmNvdW50ZG93bkludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5yZW1haW5pbmdTZWNvbmRzID0gTWF0aC5tYXgoMCwgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyAtIDEpO1xuICAgICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnJlbWFpbmluZ1NlY29uZHMgPD0gMCkge1xuICAgICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeS5zdGF0dXMgPSAnZmFpbGVkJztcbiAgICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyA9IG51bGw7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgICAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwKTtcblxuICAgICAgfSBlbHNlIGlmICh1aVR5cGUgPT09ICdGSU5EX0xPQ0FUT1InKSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09ICdmYWlsZWQnIHx8IHN0YXR1cyA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgICAgLy8gQWJvcnQgY291bnRkb3duLCByZXBsYWNlIGdyb3VwIGVudHJ5IHdpdGggdGhpcyBmYWlsZWQgbG9nXG4gICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzID0gdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5maWx0ZXIoZW50cnkgPT4gZW50cnkgIT09IHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLnB1c2goeyAuLi5zdWJTdGVwLCBzdGF0dXM6ICdmYWlsZWQnIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgLy8gVXBkYXRlIHRoZSBzaW5nbGUgZ3JvdXAgZW50cnkncyB0ZXh0IHNvIHRoZSB1c2VyIHNlZXMgcHJvZ3Jlc3NcbiAgICAgICAgICBjb25zdCBuZXdUZXh0ID0gc3ViU3RlcC5kZXNjcmlwdGlvbiB8fCBzdWJTdGVwLnRleHQgfHwgc3ViU3RlcC50aXRsZTtcbiAgICAgICAgICBpZiAobmV3VGV4dCkgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuZGVzY3JpcHRpb24gPSBuZXdUZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE5vIGFjdGl2ZSBncm91cCDigJMgcHVzaCBGSU5EX0xPQ0FUT1Igbm9ybWFsbHkgb25jZSBjb3VudGRvd24gaXMgY2xlYXJlZFxuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh7IC4uLnN1YlN0ZXAgfSk7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIGlmICh1aVR5cGUgPT09ICdMT0NBVE9SX0ZPVU5EJykge1xuXG4gICAgICAgIGlmIChzdGF0dXMgPT09ICdmYWlsZWQnIHx8IHN0YXR1cyA9PT0gJ2ZhaWx1cmUnKSB7XG4gICAgICAgICAgLy8gQWJvcnQgY291bnRkb3duLCByZXBsYWNlIGdyb3VwIGVudHJ5IHdpdGggdGhpcyBmYWlsZWQgbG9nXG4gICAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzID0gdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5maWx0ZXIoZW50cnkgPT4gZW50cnkgIT09IHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLnB1c2goeyAuLi5zdWJTdGVwLCBzdGF0dXM6ICdmYWlsZWQnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNlcXVlbmNlIGNvbXBsZXRlIOKAkyB1cGRhdGUgZ3JvdXAgZW50cnkgdG8gc2hvdyBMT0NBVE9SX0ZPVU5EIHRleHQgYXMgc3VjY2Vzc1xuICAgICAgICAgIGlmICh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VGV4dCA9IHN1YlN0ZXAuZGVzY3JpcHRpb24gfHwgc3ViU3RlcC50ZXh0IHx8IHN1YlN0ZXAudGl0bGU7XG4gICAgICAgICAgICBpZiAobmV3VGV4dCkgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuZGVzY3JpcHRpb24gPSBuZXdUZXh0O1xuICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuc3RhdHVzID0gJ3N1Y2Nlc3MnO1xuICAgICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQ291bnRkb3duVGltZXIoKTtcbiAgICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5ID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTm8gYWN0aXZlIGdyb3VwIOKAkyBwdXNoIExPQ0FUT1JfRk9VTkQgbm9ybWFsbHlcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMucHVzaCh7IC4uLnN1YlN0ZXAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSBpZiAodWlUeXBlID09PSAnQUlfQVVUT19IRUFMJykge1xuICAgICAgICAvLyBJZiBhIFdBSVRfRk9SX0xPQ0FUT1IgY291bnRkb3duIGlzIGFjdGl2ZSwgY29tcGxldGUgaXQgYXMgZmFpbGVkIGJlZm9yZSBzdGFydGluZyBBSSBhdXRvLWhlYWxcbiAgICAgICAgaWYgKHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5KSB7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkuc3RhdHVzID0gJ2ZhaWxlZCc7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkucmVtYWluaW5nU2Vjb25kcyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5jbGVhckNvdW50ZG93blRpbWVyKCk7XG4gICAgICAgICAgdGhpcy53YWl0TG9jYXRvckdyb3VwRW50cnkgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIHNpbmdsZSBsb2FkaW5nIGVudHJ5OyB3aWxsIGJlIHJlcGxhY2VkIGJ5IEFJX0FVVE9fSEVBTF9TVUNDRVNTIG9yIEFJX0FVVE9fSEVBTF9GQUlMRURcbiAgICAgICAgdGhpcy5haUF1dG9IZWFsR3JvdXBFbnRyeSA9IHtcbiAgICAgICAgICAuLi5zdWJTdGVwLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdWJTdGVwLmRlc2NyaXB0aW9uIHx8IHN1YlN0ZXAudGV4dCB8fCAnQUkgYXV0by1oZWFsIHN0YXJ0ZWQnLFxuICAgICAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgICAgIHVpVHlwZTogJ0FJX0FVVE9fSEVBTCdcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5wdXNoKHRoaXMuYWlBdXRvSGVhbEdyb3VwRW50cnkpO1xuXG4gICAgICB9IGVsc2UgaWYgKHVpVHlwZSA9PT0gJ0FJX0FVVE9fSEVBTF9TVUNDRVNTJyB8fCB1aVR5cGUgPT09ICdBSV9BVVRPX0hFQUxfRkFJTEVEJykge1xuICAgICAgICAvLyBJZiBhIFdBSVRfRk9SX0xPQ0FUT1IgY291bnRkb3duIGlzIGFjdGl2ZSwgY29tcGxldGUgaXQgYXMgZmFpbGVkIGJlZm9yZSBoYW5kbGluZyBBSSBhdXRvLWhlYWwgcmVzdWx0XG4gICAgICAgIGlmICh0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSkge1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnN0YXR1cyA9ICdmYWlsZWQnO1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnJlbWFpbmluZ1NlY29uZHMgPSBudWxsO1xuICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSBsb2FkaW5nIGVudHJ5IGFuZCBhZGQgVFdPIHNlcGFyYXRlIGVudHJpZXM6IHZhbHVlIGFuZCByZWFzb25pbmcgKGxpa2UgQUlfQU5TV0VSKVxuICAgICAgICBpZiAodGhpcy5haUF1dG9IZWFsR3JvdXBFbnRyeSkge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHMgPSB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLmZpbHRlcihlbnRyeSA9PiBlbnRyeSAhPT0gdGhpcy5haUF1dG9IZWFsR3JvdXBFbnRyeSk7XG4gICAgICAgICAgdGhpcy5haUF1dG9IZWFsR3JvdXBFbnRyeSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNTdWNjZXNzID0gdWlUeXBlID09PSAnQUlfQVVUT19IRUFMX1NVQ0NFU1MnO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHN1YlN0ZXAudmFsdWUgPz8gc3ViU3RlcC50ZXh0ID8/ICcnO1xuICAgICAgICBjb25zdCByZWFzb25pbmcgPSBzdWJTdGVwLnJlYXNvbmluZyA/PyBzdWJTdGVwLlJlYXNvbmluZyA/PyAnJztcbiAgICAgICAgY29uc3QgYmFzZUR1cmF0aW9uID0gc3ViU3RlcC5kdXJhdGlvbiB8fCAwO1xuICAgICAgICBjb25zdCBmaW5hbFN0YXR1cyA9IGlzU3VjY2VzcyA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnO1xuXG4gICAgICAgIC8vIEZpcnN0IGVudHJ5OiB2YWx1ZS9kZXNjcmlwdGlvblxuICAgICAgICBjb25zdCB2YWx1ZURlc2NyaXB0aW9uID0gc3ViU3RlcC50ZXh0IHx8IHN1YlN0ZXAuZGVzY3JpcHRpb24gfHwgKGlzU3VjY2Vzc1xuICAgICAgICAgID8gYEFJIGF1dG8taGVhbCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5YFxuICAgICAgICAgIDogYEFJIGF1dG8taGVhbCBmYWlsZWRgKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcy5wdXNoKHtcbiAgICAgICAgICAuLi5zdWJTdGVwLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB2YWx1ZURlc2NyaXB0aW9uLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICByZWFzb25pbmc6IG51bGwsXG4gICAgICAgICAgc3RhdHVzOiBmaW5hbFN0YXR1cyxcbiAgICAgICAgICB1aVR5cGU6ICdBSV9BVVRPX0hFQUxfVkFMVUUnLFxuICAgICAgICAgIHR5cGU6ICdBSV9BVVRPX0hFQUxfVkFMVUUnLFxuICAgICAgICAgIGR1cmF0aW9uOiBiYXNlRHVyYXRpb24sXG4gICAgICAgICAgaXNBaUF1dG9IZWFsUmVzdWx0OiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNlY29uZCBlbnRyeTogcmVhc29uaW5nIChvbmx5IGlmIHByZXNlbnQpXG4gICAgICAgIGlmIChyZWFzb25pbmcpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLnB1c2goe1xuICAgICAgICAgICAgLi4uc3ViU3RlcCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiByZWFzb25pbmcsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgIHJlYXNvbmluZzogcmVhc29uaW5nLFxuICAgICAgICAgICAgc3RhdHVzOiBmaW5hbFN0YXR1cyxcbiAgICAgICAgICAgIHVpVHlwZTogJ0FJX0FVVE9fSEVBTF9SRUFTT05JTkcnLFxuICAgICAgICAgICAgdHlwZTogJ0FJX0FVVE9fSEVBTF9SRUFTT05JTkcnLFxuICAgICAgICAgICAgZHVyYXRpb246IGJhc2VEdXJhdGlvbixcbiAgICAgICAgICAgIGlzQWlBdXRvSGVhbFJlc3VsdDogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFueSBmYWlsZWQgbG9nIHdoaWxlIGEgY291bnRkb3duIGlzIGFjdGl2ZSDigJMgcmVzb2x2ZSBpdCBhcyBmYWlsZWRcbiAgICAgICAgaWYgKChzdGF0dXMgPT09ICdmYWlsZWQnIHx8IHN0YXR1cyA9PT0gJ2ZhaWx1cmUnKSAmJiB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSkge1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnN0YXR1cyA9ICdmYWlsZWQnO1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5LnJlbWFpbmluZ1NlY29uZHMgPSBudWxsO1xuICAgICAgICAgIHRoaXMuY2xlYXJDb3VudGRvd25UaW1lcigpO1xuICAgICAgICAgIHRoaXMud2FpdExvY2F0b3JHcm91cEVudHJ5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzLnB1c2goc3ViU3RlcCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0UHJvY2Vzc2VkSW5kZXggPSBhbGxTdWJTdGVwcy5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0TGl2ZVByb2Nlc3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckNvdW50ZG93blRpbWVyKCk7XG4gICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwcyA9IFtdO1xuICAgIHRoaXMubGFzdFByb2Nlc3NlZEluZGV4ID0gMDtcbiAgICB0aGlzLndhaXRMb2NhdG9yR3JvdXBFbnRyeSA9IG51bGw7XG4gICAgdGhpcy5haUF1dG9IZWFsR3JvdXBFbnRyeSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQ291bnRkb3duVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY291bnRkb3duSW50ZXJ2YWxJZCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmNvdW50ZG93bkludGVydmFsSWQpO1xuICAgICAgdGhpcy5jb3VudGRvd25JbnRlcnZhbElkID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTdWJTdGVwc0ZvclJ1blJlc3VsdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVyYXRpb24gfHwgIXRoaXMuc2VsZWN0ZWRJdGVyYXRpb24uc3ViU3RlcHMpIHtcbiAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHNGb3JSdW5SZXN1bHQgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhbGxTdWJTdGVwcyA9ICh0aGlzLnNlbGVjdGVkSXRlcmF0aW9uLnN1YlN0ZXBzIHx8IFtdKSBhcyBhbnlbXTtcbiAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzRm9yUnVuUmVzdWx0ID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHN1YlN0ZXAgb2YgYWxsU3ViU3RlcHMpIHtcbiAgICAgIGNvbnN0IHVpVHlwZTogc3RyaW5nID0gc3ViU3RlcD8udWlUeXBlIHx8IHN1YlN0ZXA/LnR5cGUgfHwgJyc7XG5cbiAgICAgIC8vIFNwbGl0IEFJX0FVVE9fSEVBTF9TVUNDRVNTL0ZBSUxFRCBpbnRvIHR3byBlbnRyaWVzXG4gICAgICBpZiAodWlUeXBlID09PSAnQUlfQVVUT19IRUFMX1NVQ0NFU1MnIHx8IHVpVHlwZSA9PT0gJ0FJX0FVVE9fSEVBTF9GQUlMRUQnKSB7XG4gICAgICAgIGNvbnN0IGlzU3VjY2VzcyA9IHVpVHlwZSA9PT0gJ0FJX0FVVE9fSEVBTF9TVUNDRVNTJztcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzdWJTdGVwLnZhbHVlID8/IHN1YlN0ZXAudGV4dCA/PyAnJztcbiAgICAgICAgY29uc3QgcmVhc29uaW5nID0gc3ViU3RlcC5yZWFzb25pbmcgPz8gc3ViU3RlcC5SZWFzb25pbmcgPz8gJyc7XG4gICAgICAgIGNvbnN0IGJhc2VEdXJhdGlvbiA9IHN1YlN0ZXAuZHVyYXRpb24gfHwgMDtcbiAgICAgICAgY29uc3QgZmluYWxTdGF0dXMgPSBpc1N1Y2Nlc3MgPyAnc3VjY2VzcycgOiAnZmFpbGVkJztcblxuICAgICAgICAvLyBGaXJzdCBlbnRyeTogdmFsdWUvZGVzY3JpcHRpb25cbiAgICAgICAgY29uc3QgdmFsdWVEZXNjcmlwdGlvbiA9IChpc1N1Y2Nlc3NcbiAgICAgICAgICA/IGBBSSBhdXRvLWhlYWwgY29tcGxldGVkIHN1Y2Nlc3NmdWxseWBcbiAgICAgICAgICA6IGBBSSBhdXRvLWhlYWwgZmFpbGVkYCk7XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkU3ViU3RlcHNGb3JSdW5SZXN1bHQucHVzaCh7XG4gICAgICAgICAgLi4uc3ViU3RlcCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdmFsdWVEZXNjcmlwdGlvbixcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgcmVhc29uaW5nOiBudWxsLFxuICAgICAgICAgIHN0YXR1czogZmluYWxTdGF0dXMsXG4gICAgICAgICAgdWlUeXBlOiAnQUlfQVVUT19IRUFMX1ZBTFVFJyxcbiAgICAgICAgICB0eXBlOiAnQUlfQVVUT19IRUFMX1ZBTFVFJyxcbiAgICAgICAgICBkdXJhdGlvbjogYmFzZUR1cmF0aW9uLFxuICAgICAgICAgIGlzQWlBdXRvSGVhbFJlc3VsdDogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZWNvbmQgZW50cnk6IHJlYXNvbmluZyAob25seSBpZiBwcmVzZW50KVxuICAgICAgICBpZiAocmVhc29uaW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwc0ZvclJ1blJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgIC4uLnN1YlN0ZXAsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVhc29uaW5nLFxuICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICByZWFzb25pbmc6IHJlYXNvbmluZyxcbiAgICAgICAgICAgIHN0YXR1czogZmluYWxTdGF0dXMsXG4gICAgICAgICAgICB1aVR5cGU6ICdBSV9BVVRPX0hFQUxfUkVBU09OSU5HJyxcbiAgICAgICAgICAgIHR5cGU6ICdBSV9BVVRPX0hFQUxfUkVBU09OSU5HJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBiYXNlRHVyYXRpb24sXG4gICAgICAgICAgICBpc0FpQXV0b0hlYWxSZXN1bHQ6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gKHN1YlN0ZXA/LnN0YXR1cyA/PyAnJykudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBpc0ZhaWxlZCA9IHN0YXR1cyA9PT0gJ2ZhaWxlZCcgfHwgc3RhdHVzID09PSAnZmFpbHVyZSc7XG4gICAgICAgIGNvbnN0IGlzTG9jYXRvclN0ZXAgPSB1aVR5cGUgPT09ICdXQUlUX0ZPUl9MT0NBVE9SJyB8fCB1aVR5cGUgPT09ICdGSU5EX0xPQ0FUT1InIHx8IHVpVHlwZSA9PT0gJ0xPQ0FUT1JfRk9VTkQnO1xuICAgICAgICBpZiAoaXNMb2NhdG9yU3RlcCAmJiBpc0ZhaWxlZCkge1xuICAgICAgICAgIGNvbnN0IGJhc2VEZXNjID0gc3ViU3RlcD8uZGVzY3JpcHRpb24gPz8gc3ViU3RlcD8udGV4dCA/PyBzdWJTdGVwPy50aXRsZSA/PyAnJztcbiAgICAgICAgICBjb25zdCBub3RGb3VuZFN1ZmZpeCA9ICcgLSBFbGVtZW50IG5vdCBmb3VuZCc7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWRTdWJTdGVwc0ZvclJ1blJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgIC4uLnN1YlN0ZXAsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogKGJhc2VEZXNjID8gYmFzZURlc2MgKyBub3RGb3VuZFN1ZmZpeCA6IG5vdEZvdW5kU3VmZml4LnRyaW0oKSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NlZFN1YlN0ZXBzRm9yUnVuUmVzdWx0LnB1c2goc3ViU3RlcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZm9udC1pbnRlciBjcWEtdy1mdWxsXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLXAtMiBjcWEtY3Vyc29yLXBvaW50ZXJcIlxuICAgIChjbGljayk9XCJ0b2dnbGVIZWFkZXIoJGV2ZW50KVwiPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVidWdJY29uXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjcWEtcC0wIGNxYS1ib3JkZXItMCBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1yb3VuZGVkLWZ1bGwgaG92ZXI6Y3FhLW9wYWNpdHktODAgY3FhLXRyYW5zaXRpb24tb3BhY2l0eSBmb2N1czpjcWEtb3V0bGluZS1ub25lXCIgKGNsaWNrKT1cIm9uRGVidWdQb2ludENsaWNrKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImRlYnVnUG9pbnRTZXQgPyAnUmVtb3ZlIGRlYnVnIHBvaW50JyA6ICdTZXQgZGVidWcgcG9pbnQnXCI+XG4gICAgICAgIDxzdmcgKm5nSWY9XCJkZWJ1Z1BvaW50U2V0XCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI3XCIgY3k9XCI3XCIgcj1cIjZcIiBmaWxsPVwiI0M2MzUzNVwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDxzdmcgKm5nSWY9XCIhZGVidWdQb2ludFNldFwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiN1wiIGN5PVwiN1wiIHI9XCI2XCIgc3Ryb2tlPVwiI0M2MzUzNVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gU3RhdHVzIEljb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8IS0tIFN1Y2Nlc3MgLS0+XG4gICAgICA8c3ZnICpuZ0lmPVwic3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdzdWNjZXNzJ1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLjkwMDUgNC45OTk5OUMxMS4xMjg5IDYuMTIwNjQgMTAuOTY2MiA3LjI4NTcxIDEwLjQzOTUgOC4zMDA4OUM5LjkxMjc5IDkuMzE2MDggOS4wNTQgMTAuMTIgOC4wMDYzMSAxMC41Nzg3QzYuOTU4NjIgMTEuMDM3MyA1Ljc4NTM2IDExLjEyMjkgNC42ODIyIDEwLjgyMTJDMy41NzkwNCAxMC41MTk1IDIuNjEyNjUgOS44NDg2OSAxLjk0NDE5IDguOTIwNzFDMS4yNzU3MyA3Ljk5MjcyIDAuOTQ1NjExIDYuODYzNjEgMS4wMDg4OCA1LjcyMTY5QzEuMDcyMTUgNC41Nzk3NiAxLjUyNDk5IDMuNDk0MDQgMi4yOTE4OCAyLjY0NTU4QzMuMDU4NzYgMS43OTcxMiA0LjA5MzM0IDEuMjM3MjEgNS4yMjMwOCAxLjA1OTIyQzYuMzUyODIgMC44ODEyMzMgNy41MDk0NCAxLjA5NTkyIDguNTAwMDUgMS42Njc0OVwiIHN0cm9rZT1cIiMyMkM1NUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00LjUgNS41TDYgN0wxMSAyXCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgIDwhLS0gRmFpbGVkIC0tPlxuICAgICAgPHN2ZyAqbmdJZj1cInN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnZmFpbHVyZScgfHwgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdmYWlsZWQnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjRUY0NDQ0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNCA0TDggOE04IDRMNCA4XCIgc3Ryb2tlPVwiI0VGNDQ0NFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgIDwhLS0gUGVuZGluZyAtLT5cbiAgICAgIDxzdmcgKm5nSWY9XCJzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgIDwhLS0gUnVubmluZyAtLT5cbiAgICAgIDxzdmcgKm5nSWY9XCJzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3J1bm5pbmcnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjM0I4MkY2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzNCODJGNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgIFxuICAgICAgICA8c3BhbiAqbmdJZj1cInN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnc2tpcHBlZCdcIiAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGNxYS10ZXh0LVsjOUNBM0FGXSBjcWEtdGV4dC1bMTJweF1cIj5cbiAgICAgICAgICBza2lwX25leHRcbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBMb29wIEljb24gLS0+XG4gICAgPGRpdj48c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiByeD1cIjRcIiBmaWxsPVwiI0VCRUNGRFwiLz48cGF0aCBkPVwiTTkuNjY2NjMgNC42NjY2NkwxMSA1Ljk5OTk5TDkuNjY2NjMgNy4zMzMzMlwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk01IDcuNjY2NjdWNy4zMzMzM0M1IDYuOTc5NzEgNS4xNDA0OCA2LjY0MDU3IDUuMzkwNTIgNi4zOTA1MkM1LjY0MDU3IDYuMTQwNDggNS45Nzk3MSA2IDYuMzMzMzMgNkgxMVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02LjMzMzMzIDExLjMzMzNMNSA5Ljk5OTk5TDYuMzMzMzMgOC42NjY2NlwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk0xMSA4LjMzMzM0VjguNjY2NjhDMTEgOS4wMjAzIDEwLjg1OTUgOS4zNTk0NCAxMC42MDk1IDkuNjA5NDlDMTAuMzU5NCA5Ljg1OTUzIDEwLjAyMDMgMTAgOS42NjY2NyAxMEg1XCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cblxuICAgIDwhLS0gU3RlcCBOdW1iZXIgYW5kIFRpdGxlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1mb250LWludGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsjMzM0MTU1XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE4cHhdXCIgc3R5bGU9XCJ3b3JkLWJyZWFrOiBicmVhay13b3JkO1wiPlxuICAgICAgICB7eyBjb25maWc/LnN0ZXBOdW1iZXIgfX0uIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnPy50aXRsZVwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIFxuICAgICAgPCEtLSBMb29wIFR5cGUgQmFkZ2VzIC0tPlxuICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGJhZGdlIG9mIGdldExvb3BUeXBlQmFkZ2VzKClcIiBcbiAgICAgICAgY2xhc3M9XCJjcWEtcHgtMS41IGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LXByaW1hcnkgY3FhLWJnLVsjRUJFQ0ZEXSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdXCI+XG4gICAgICAgIHt7IGJhZGdlIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZy5zdGVwRGVsZXRlZFwiIGNsYXNzPVwiY3FhLXB4LTEuNSBjcWEtcHktWzJweF0gY3FhLXJvdW5kZWQtWzRweF0gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxMnB4XSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyNCNDIzMThdIGNxYS1iZy1bI0ZFRjNGMl0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRkVFNEUyXVwiPlxuICAgICAgICBEZWxldGVkXG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTEgY3FhLWZvbnQtaW50ZXJcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwic2VsZkhlYWxBbmFseXNpc1wiIGNsYXNzPVwiY3FhLXB4LTEuNSBjcWEtcm91bmRlZC1mdWxsIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzA5N0U1M10gY3FhLWJnLVsjQ0ZGMkU1XSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1taW4tdy1tYXggY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVs2cHhdXCI+XG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiOVwiIGhlaWdodD1cIjlcIiB2aWV3Qm94PVwiMCAwIDkgOVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk00LjUwOTQxIDBDNC41NjQ4OSAwLjAyMjczODQgNC41ODg1OSAwLjA3ODI2NTIgNC42MTEzMSAwLjEyOTg0NkM0LjYyMjY5IDAuMTU5OSA0LjYzMzE0IDAuMTkwMTE3IDQuNjQzMjkgMC4yMjA1NzVDNC42NDcyNiAwLjIzMjI0NyA0LjY1MTIzIDAuMjQzOTE4IDQuNjU1MzIgMC4yNTU5NDNDNC43MDgwNiAwLjQxMzAwNSA0Ljc1NTA0IDAuNTcxNzQ4IDQuODAyMjkgMC43MzAzOEM0LjgxMjk3IDAuNzY2MTkgNC44MjM2OSAwLjgwMTk4NyA0LjgzNDQyIDAuODM3NzgzQzQuODg5MDUgMS4wMjAwNCA0Ljk0MzI3IDEuMjAyNCA0Ljk5NzE5IDEuMzg0ODRDNS4wMDQ3NiAxLjQxMDQ3IDUuMDEyMzQgMS40MzYwOSA1LjAxOTkyIDEuNDYxNzFDNS4wNDEyOCAxLjUzMzk1IDUuMDYyNjIgMS42MDYxOSA1LjA4MzgzIDEuNjc4NDdDNS4xMjg2NyAxLjgzMTIgNS4xNzQ3MyAxLjk4MzQ3IDUuMjIzNzggMi4xMzUwMUM1LjIyODA3IDIuMTQ4MjcgNS4yMzIzNiAyLjE2MTUyIDUuMjM2NzcgMi4xNzUxOEM1LjM2NDIgMi41NjUgNS41NDQ4MiAyLjkxNDM3IDUuODQwOSAzLjIxMTk2QzUuODQ4MjMgMy4yMTk3IDUuODU1NTYgMy4yMjc0NCA1Ljg2MzEyIDMuMjM1NDFDNS45ODk1IDMuMzY0MzcgNi4xNTE2OSAzLjQ2NzcxIDYuMzEzOCAzLjU1MTExQzYuMzIyMDYgMy41NTU0MiA2LjMzMDMxIDMuNTU5NzQgNi4zMzg4MiAzLjU2NDE5QzYuODE1ODcgMy44MDkyNSA3LjM4OTUxIDMuOTE3MDQgNy45MDYxOSA0LjA2MDVDOC4xMzI2IDQuMTIzNCA4LjM1ODMgNC4xODgyOSA4LjU4MzE3IDQuMjU2MDNDOC41OTg5NyA0LjI2MDc5IDguNjE0NzggNC4yNjU1NCA4LjYzMDU4IDQuMjcwMjhDOC42Nzc4NCA0LjI4NDQ1IDguNzI1IDQuMjk4ODcgOC43NzIxMSA0LjMxMzQ3QzguNzgzMSA0LjMxNjc5IDguNzk0MDggNC4zMjAxMSA4LjgwNTM5IDQuMzIzNTNDOC44NzAyOSA0LjM0NDA2IDguOTMyMzkgNC4zNjgyOSA4Ljk4NTY2IDQuNDEwMjdDOS4wMDE5MSA0LjQ0NDE4IDkuMDAxOTEgNC40NDQxOCA4Ljk5NzQ4IDQuNDc4MUM4Ljk0NTY0IDQuNTI3MzYgOC44OTQyIDQuNTUwNDYgOC44MjU3OCA0LjU3M0M4LjgxNiA0LjU3NjMyIDguODA2MjIgNC41Nzk2NSA4Ljc5NjE0IDQuNTgzMDhDOC42ODA2MSA0LjYyMTgzIDguNTYzNTEgNC42NTU3NSA4LjQ0NjI2IDQuNjg5MzVDOC40MjIyIDQuNjk2MyA4LjM5ODE0IDQuNzAzMjYgOC4zNzQwOCA0LjcxMDIxQzguMjI1NzEgNC43NTMwMSA4LjA3NzA4IDQuNzk0OSA3LjkyODI5IDQuODM2MzJDNy43MzIzMiA0Ljg5MDg4IDcuNTM2NjMgNC45NDYzNCA3LjM0MTEzIDUuMDAyNDNDNy4zMDkxIDUuMDExNjIgNy4yNzcwNiA1LjAyMDc4IDcuMjQ1MDEgNS4wMjk5MUM3LjA3NjcxIDUuMDc3ODYgNi45MDkyMyA1LjEyNzUzIDYuNzQzMTQgNS4xODIwOEM2LjcyOTM3IDUuMTg2NTkgNi43MTU1OSA1LjE5MTEgNi43MDEzOSA1LjE5NTc0QzYuMTQ1MTEgNS4zODA4MiA1LjcyMTEgNS43MjYwOSA1LjQ1NTcxIDYuMjMwOTlDNS4zMTI2MyA2LjUxNDc1IDUuMjI4MjMgNi44MjE2MSA1LjE0MjE0IDcuMTI0NDdDNS4xMTg4NCA3LjIwNjE5IDUuMDk0MDkgNy4yODc0NSA1LjA2OTA1IDcuMzY4NjlDNS4wNDk0IDcuNDMyNjEgNS4wMzAyIDcuNDk2NjMgNS4wMTE0OSA3LjU2MDgxQzUuMDA5MjYgNy41Njg0NCA1LjAwNzAzIDcuNTc2MDggNS4wMDQ3MyA3LjU4Mzk1QzQuOTkzOTQgNy42MjA5NCA0Ljk4MzE5IDcuNjU3OTMgNC45NzI1MiA3LjY5NDk1QzQuOTQ1MTkgNy43ODg3OSA0LjkxNTc4IDcuODgxODcgNC44ODU1NSA3Ljk3NDg5QzQuODMxOTEgOC4xNDAyMSA0Ljc4MzEgOC4zMDY3NCA0LjczNDU5IDguNDczNUM0LjY2MTQ0IDguNzI0NTcgNC42NjE0NCA4LjcyNDU3IDQuNjE5OTcgOC44NDUyN0M0LjYxNzIxIDguODUzMzcgNC42MTQ0NiA4Ljg2MTQ3IDQuNjExNjMgOC44Njk4MkM0LjU5NjQ5IDguOTEyNzggNC41ODA5MiA4Ljk1MjMzIDQuNTUyMjYgOC45ODg3QzQuNTA4NjcgOC45OTc4OCA0LjUwODY3IDguOTk3ODggNC40Njk1MSA5QzQuNDI0NzMgOC45Mzc1OSA0LjM5NTA4IDguODc3MTEgNC4zNzEzMyA4LjgwNTA4QzQuMzY3ODcgOC43OTQ4NyA0LjM2NDQxIDguNzg0NjYgNC4zNjA4NSA4Ljc3NDE1QzQuMzE2ODQgOC42NDI0OCA0LjI3NzUxIDguNTA5NDYgNC4yMzgxNyA4LjM3NjQ2QzQuMjI5MTYgOC4zNDYwNCA0LjIyMDExIDguMzE1NjQgNC4yMTEwNSA4LjI4NTI0QzQuMTQzNiA4LjA1ODYzIDQuMDc3MjUgNy44MzE3NCA0LjAxMTAxIDcuNjA0ODFDMy43MzUwNyA2LjQ4MjI0IDMuNzM1MDcgNi40ODIyNCAzLjAzOSA1LjU3NDY2QzMuMDI3ODQgNS41NjU5NiAzLjAxNjY5IDUuNTU3MjYgMy4wMDUxOSA1LjU0ODNDMi41NDkxMyA1LjE5OTAyIDEuOTQ4MzQgNS4wNjk2OSAxLjM5ODE1IDQuOTE4MTNDMS4yNjIwNyA0Ljg4MDYyIDEuMTI2MDUgNC44NDI5MyAwLjk5MDAzMiA0LjgwNTIzQzAuOTc4MTM4IDQuODAxOTMgMC45NzgxMzggNC44MDE5MyAwLjk2NjAwMyA0Ljc5ODU3QzAuNzY5ODExIDQuNzQ0MTcgMC41NzM2NzQgNC42ODk2MyAwLjM3ODIyNCA0LjYzMjgzQzAuMzY5OTU2IDQuNjMwNDUgMC4zNjE2ODggNC42MjgwNiAwLjM1MzE2OSA0LjYyNTYxQzAuMDUyODk4OSA0LjUzODgzIDAuMDUyODk4OSA0LjUzODgzIDAuMDAwNjQ2NTM3IDQuNDc4MUMtMC4wMDA4MzEyNjEgNC40NTA1NCAtMC4wMDA4MzEyNjEgNC40NTA1NCAwLjAxMjQ2ODkgNC40MjE1N0MwLjA2NzA4MzUgNC4zNzA0IDAuMTIwMDc3IDQuMzQ4NDggMC4xOTIxNiA0LjMyNjE5QzAuMjAyNTk3IDQuMzIyODQgMC4yMTMwMzQgNC4zMTk0OCAwLjIyMzc4NyA0LjMxNjAzQzAuMjU1NzUzIDQuMzA1ODIgMC4yODc3ODggNC4yOTU4NCAwLjMxOTg1MSA0LjI4NTkyQzAuMzI5MDAxIDQuMjgzMDUgMC4zMzgxNTEgNC4yODAxNyAwLjM0NzU3OCA0LjI3NzIyQzAuNDEyMjg1IDQuMjU2OTMgMC40NzcyMjUgNC4yMzc0IDAuNTQyMjU5IDQuMjE4MDlDMC41NTgyNCA0LjIxMzMyIDAuNTU4MjQgNC4yMTMzMiAwLjU3NDU0NCA0LjIwODQ2QzAuODUyMjY5IDQuMTI1ODcgMS4xMzE4MSA0LjA0OSAxLjQxMTI2IDMuOTcxOTZDMS42MTk1IDMuOTE0NTUgMS44MjczOCAzLjg1NjE4IDIuMDM0NiAzLjc5NTQ4QzIuMDQ0MTMgMy43OTI3MSAyLjA1MzY1IDMuNzg5OTMgMi4wNjM0NiAzLjc4NzA3QzIuNTQzNSAzLjY0Njk2IDMuMDEyNzggMy40NDgxNiAzLjMyMjc0IDMuMDUzN0MzLjMyNzM4IDMuMDQ3ODUgMy4zMzIwMiAzLjA0MiAzLjMzNjggMy4wMzU5N0MzLjY4MTk3IDIuNTk4MTUgMy44MTY1OCAyLjA2NTcyIDMuOTY2OTUgMS41NDYyMUM0LjAxNjQzIDEuMzc1MzQgNC4wNjY0OSAxLjIwNDY0IDQuMTE2NzMgMS4wMzM5OUM0LjEzMDY0IDAuOTg2NzMzIDQuMTQ0NTMgMC45Mzk0NzEgNC4xNTgzNiAwLjg5MjE5NEM0LjIxMzk0IDAuNzAyMjg5IDQuMjcwMzUgMC41MTI2NDIgNC4zMyAwLjMyMzg2NEM0LjMzNTU4IDAuMzA2MTg2IDQuMzQxMTQgMC4yODg1MDEgNC4zNDY2NiAwLjI3MDgwN0M0LjQzMDE3IDAuMDAzOTg3NjEgNC40MzAxNyAwLjAwMzk4NzYxIDQuNTA5NDEgMFpcIiBmaWxsPVwiIzBEQkQ3RFwiLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTcuMjM1OTcgMC41NTQ4NTlDNy4yOTAyNCAwLjYxMzU5OSA3LjMwMTA5IDAuNjgyNjMxIDcuMzE3OTkgMC43NTc2MzhDNy4zNzQzNiAwLjk5MzI2OSA3LjQzOTI5IDEuMjA5OTMgNy42NjQ2NyAxLjM0NjgxQzcuODAzNzEgMS40MjAzNSA3Ljk2OTQ0IDEuNDUzODEgOC4xMjM1IDEuNDg1NDFDOC4xODg1NCAxLjQ5OTAyIDguMjQzNDggMS41MTcwOSA4LjI5OTI0IDEuNTUzMjFDOC4zMTE4MSAxLjU3MjI5IDguMzExODEgMS41NzIyOSA4LjMxMTA3IDEuNjA1NDlDOC4yOTgxNCAxLjY0NTg4IDguMjg2NzggMS42NTg5IDguMjUyNjkgMS42ODUzM0M4LjIxNTQzIDEuNjk3MjYgOC4yMTU0MyAxLjY5NzI2IDguMTcwNjggMS43MDY1M0M4LjE1Mzc1IDEuNzEwMjUgOC4xMzY4MyAxLjcxNCA4LjExOTkyIDEuNzE3NzlDOC4xMTA4NiAxLjcxOTggOC4xMDE4MSAxLjcyMTgxIDguMDkyNDcgMS43MjM4OEM3LjgxNjk2IDEuNzg0ODIgNy44MTY5NiAxLjc4NDgyIDcuNTc4ODIgMS45MjI3M0M3LjU3MTA4IDEuOTI4NjkgNy41NjMzMyAxLjkzNDY2IDcuNTU1MzYgMS45NDA4QzcuMzg1MTYgMi4wODQzMSA3LjM0OTE2IDIuMzIzMDMgNy4yOTc5MyAyLjUyMzAxQzcuMjk0OTkgMi41MzM5OSA3LjI5MjA2IDIuNTQ0OTcgNy4yODkwMyAyLjU1NjI5QzcuMjg2NDkgMi41NjYwMSA3LjI4Mzk1IDIuNTc1NzMgNy4yODEzMyAyLjU4NTc1QzcuMjcwMjggMi42MTU0NCA3LjI1ODgxIDIuNjM0NzkgNy4yMzU5NyAyLjY1NzU0QzcuMTcyMzQgMi42NjUyNyA3LjE3MjM0IDIuNjY1MjcgNy4xNDEzOSAyLjY1NzU0QzcuMDkyMTYgMi42MjEwNiA3LjA4MTE0IDIuNTc5NSA3LjA2ODI4IDIuNTIzNjVDNy4wNjYxMyAyLjUxNTAxIDcuMDYzOTggMi41MDYzNiA3LjA2MTc2IDIuNDk3NDVDNy4wNTQ4OSAyLjQ2OTgzIDcuMDQ4MjQgMi40NDIxNyA3LjA0MTY0IDIuNDE0NDlDNi45ODk3OSAyLjE5ODk3IDYuOTMxMjYgMS45ODc1MSA2LjcyNDUxIDEuODYxMThDNi41NjI5MyAxLjc3NTAxIDYuMzY2NDYgMS43MzQyNiA2LjE4NTg3IDEuNzAxMzZDNi4xMzYzNyAxLjY5MTUxIDYuMTA4MDIgMS42NzkxMSA2LjA3NzM4IDEuNjQwMTJDNi4wNzA3MyAxLjYwMDU1IDYuMDcwNzMgMS42MDA1NSA2LjA3NzM4IDEuNTYwOThDNi4xMjQ0NyAxLjUxNDM3IDYuMTc0MDIgMS41MDI5OSA2LjIzNzcyIDEuNDg4OTFDNi4yNTc3OCAxLjQ4NDE2IDYuMjc3ODQgMS40NzkzOCA2LjI5Nzg5IDEuNDc0NTZDNi4zMDgyNSAxLjQ3MjA5IDYuMzE4NjEgMS40Njk2MiA2LjMyOTI5IDEuNDY3MDdDNi4zODIxMiAxLjQ1NDA3IDYuNDM0NDMgMS40Mzk0OSA2LjQ4NjczIDEuNDI0NjJDNi40OTYyMyAxLjQyMTk4IDYuNTA1NzMgMS40MTkzNSA2LjUxNTUyIDEuNDE2NjNDNi42MjE4MiAxLjM4NjI0IDYuNzEzNTYgMS4zNDczNyA2Ljc5ODU0IDEuMjc4MzZDNi44MDY0NyAxLjI3MjEzIDYuODE0MzkgMS4yNjU4OSA2LjgyMjU1IDEuMjU5NDZDNi45NTQ4IDEuMTQ1NjUgNi45OTk3NCAwLjk3NDY3NCA3LjA0MDUzIDAuODE1MTM0QzcuMDQzNjQgMC44MDMwMjIgNy4wNDY3NSAwLjc5MDkxIDcuMDQ5OTUgMC43Nzg0MzJDNy4wNTYxNCAwLjc1NDEwMSA3LjA2MjIyIDAuNzI5NzQzIDcuMDY4MTcgMC43MDUzNTlDNy4wNzI0MyAwLjY4ODM5NCA3LjA3MjQzIDAuNjg4Mzk0IDcuMDc2NzggMC42NzEwODZDNy4wNzkyNyAwLjY2MDk1MSA3LjA4MTc1IDAuNjUwODE2IDcuMDg0MzEgMC42NDAzNzNDNy4wOTUyMSAwLjYwODEwOCA3LjEwOTUyIDAuNTgyNzcyIDcuMTI5NTcgMC41NTQ4NTlDNy4xNjgxIDAuNTM2NDM1IDcuMTk1MTUgMC41NDQ3NjQgNy4yMzU5NyAwLjU1NDg1OVpcIiBmaWxsPVwiIzA3NUYzRlwiLz5cbiAgICAgICAgICA8cGF0aCBkPVwiTTEuNzk1NDUgNi4yNDcxQzEuODA5NTEgNi4yNDcxOSAxLjgwOTUxIDYuMjQ3MTkgMS44MjM4NiA2LjI0NzI5QzEuOTI0NzcgNi4yNTAyMiAxLjk5MzA0IDYuMjgxMTUgMi4wNjczNiA2LjM0NjAxQzIuMTUzODQgNi40MzUzMyAyLjE5Mzc3IDYuNTM2MTEgMi4xOTE1IDYuNjU2NUMyLjE4MTc4IDYuNzU0MTIgMi4xMjE1OCA2LjgzOTM1IDIuMDQ3NzMgNi45MDUzM0MxLjk2MDgxIDYuOTcyNDIgMS44NzMxMyA2Ljk5NDU5IDEuNzYyMDYgNi45OTE0OUMxLjY2ODQxIDYuOTgxMDcgMS41ODAzIDYuOTM4NTIgMS41MTM5MyA2Ljg3NDUxQzEuNDMxMzggNi43NjY4MSAxLjQwNzI1IDYuNjY4MDMgMS40MTkzNSA2LjUzNTM3QzEuNDQ0MzMgNi40MzA5MiAxLjUxNjM3IDYuMzQ2MTMgMS42MDg1IDYuMjg2NjZDMS42NzI1MSA2LjI1NTY0IDEuNzIzOTkgNi4yNDY1MiAxLjc5NTQ1IDYuMjQ3MVpcIiBmaWxsPVwiIzBEQkQ3RFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgU2VsZi1oZWFsZWRcbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMSBjcWEtcm91bmRlZC1bNHB4XSBjcWEtcHktMC41IGNxYS1weC0xIGNxYS1iZy1bIzYzNjZGMTFBXSBjcWEtbWwtMSBjcWEtY3Vyc29yLXBvaW50ZXIgaG92ZXI6Y3FhLW9wYWNpdHktODAgY3FhLXRyYW5zaXRpb24tb3BhY2l0eVwiIFxuICAgICAgICAgICAqbmdJZj1cInN0ZXA/LmV4ZWN1dGVkUmVzdWx0Py52aWRlb19zdGFydF90aW1lXCIgXG4gICAgICAgICAgIFttYXRUb29sdGlwXT1cIidKdW1wIHRvIHZpZGVvIHRpbWUnXCIgXG4gICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICAgKGNsaWNrKT1cIm9uSnVtcFRvVGltZXN0YW1wKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWyM2MzYzNjNdICFjcWEtdGV4dC1bMTBweF0gIWNxYS13LVsxMHB4XSAhY3FhLWgtWzEwcHhdXCI+XG4gICAgICAgICAgcGxheV9hcnJvd1xuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVs4cHhdIGNxYS1sZWFkaW5nLVsxMnB4XSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtWyM2MzYzNjNdXCI+XG4gICAgICAgICAge3sgZm9ybWF0RHVyYXRpb25DbG9jayhzdGVwPy5leGVjdXRlZFJlc3VsdD8udmlkZW9fc3RhcnRfdGltZSB8fCAwKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJpc0RlYnVnXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMC41IGNxYS10ZXh0LVsjOUNBM0FGXVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjcWEtcC0wIGNxYS1ib3JkZXItMCBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLWN1cnNvci1wb2ludGVyIGhvdmVyOmNxYS1vcGFjaXR5LTgwIGNxYS10cmFuc2l0aW9uLW9wYWNpdHkgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZVwiIGFyaWEtbGFiZWw9XCJFZGl0XCIgKGNsaWNrKT1cIm9uRWRpdFN0ZXAoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIiFjcWEtdGV4dC1bMTRweF0gIWNxYS13LVsxNHB4XSAhY3FhLWgtWzE0cHhdXCI+ZWRpdDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjYWRkU3RlcE1lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBjbGFzcz1cImNxYS1wLTAgY3FhLWJvcmRlci0wIGNxYS1iZy10cmFuc3BhcmVudCBjcWEtY3Vyc29yLXBvaW50ZXIgaG92ZXI6Y3FhLW9wYWNpdHktODAgY3FhLXRyYW5zaXRpb24tb3BhY2l0eSBmb2N1czpjcWEtb3V0bGluZS1ub25lXCIgYXJpYS1sYWJlbD1cIkFkZFwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJhZGRTdGVwTWVudVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIiFjcWEtdGV4dC1bMTRweF0gIWNxYS13LVsxNHB4XSAhY3FhLWgtWzE0cHhdXCI+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtbWVudSAjYWRkU3RlcE1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJjcWEtYWRkLXN0ZXAtbWVudVwiIHhQb3NpdGlvbj1cImJlZm9yZVwiIHlQb3NpdGlvbj1cImJlbG93XCI+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBvcHQgb2YgYWRkU3RlcE1lbnVPcHRpb25zXCIgKGNsaWNrKT1cIm9uQWRkU3RlcE9wdGlvblNlbGVjdChvcHQsICRldmVudClcIj5cbiAgICAgICAgICAgIHt7IG9wdC5sYWJlbCB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjc3RlcE1vcmVNZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCIgY2xhc3M9XCJjcWEtcC0wIGNxYS1ib3JkZXItMCBjcWEtYmctdHJhbnNwYXJlbnQgY3FhLWN1cnNvci1wb2ludGVyIGhvdmVyOmNxYS1vcGFjaXR5LTgwIGNxYS10cmFuc2l0aW9uLW9wYWNpdHkgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZVwiIGFyaWEtbGFiZWw9XCJNb3JlIG9wdGlvbnNcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwic3RlcE1vcmVNZW51XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiIWNxYS10ZXh0LVsxNHB4XSAhY3FhLXctWzE0cHhdICFjcWEtaC1bMTRweF1cIj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG1hdC1tZW51ICNzdGVwTW9yZU1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJjcWEtc3RlcC1tb3JlLW1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIiB5UG9zaXRpb249XCJiZWxvd1wiPlxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgb3B0IG9mIHN0ZXBNb3JlTWVudU9wdGlvbnNcIiAoY2xpY2spPVwib25TdGVwTW9yZU9wdGlvblNlbGVjdChvcHQsICRldmVudClcIj57eyBvcHQubGFiZWwgfX08L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzlDQTNBRl1cIj5cbiAgICAgICAge3sgZm9ybWF0RHVyYXRpb24oY29uZmlnLmR1cmF0aW9uKSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHN2ZyBbY2xhc3MuY3FhLXJvdGF0ZS0xODBdPVwiaXNFeHBhbmRlZFwiIGNsYXNzPVwiY3FhLXRyYW5zaXRpb24tdHJhbnNmb3JtXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMy41IDVMNyA4LjVMMTAuNSA1XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS13aWR0aD1cIjAuODMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEV4cGFuZGVkIENvbnRlbnQgLS0+XG4gIDxkaXYgKm5nSWY9XCJpc0V4cGFuZGVkXCI+XG4gICAgPCEtLSBJdGVyYXRpb24gU2VsZWN0b3IgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0zIGNxYS1weC00IGNxYS1weS0yIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNzM3MzczXVwiICpuZ0lmPVwiIWlzTGl2ZSB8fCAoaXNMaXZlICYmIGNvbmZpZz8uaXRlcmF0aW9ucyAhPT0gdW5kZWZpbmVkKVwiPlxuICAgICAgPGxhYmVsPkl0ZXJhdGlvbjwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXJlbGF0aXZlIGNxYS13LWZ1bGwgY3FhLW1heC13LVsxNTZweF1cIj5cbiAgICAgICAgPCEtLSBTdGF0dXMgaW5kaWNhdG9yIGZvciBzZWxlY3RlZCBpdGVyYXRpb24gLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEl0ZXJhdGlvbiAmJiBjb25maWc/Lml0ZXJhdGlvbnMgJiYgY29uZmlnPy5pdGVyYXRpb25zPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLWxlZnQtWzEwcHhdIGNxYS10b3AtMS8yIGNxYS10cmFuc2Zvcm0gY3FhLS10cmFuc2xhdGUteS0xLzIgY3FhLXBvaW50ZXItZXZlbnRzLW5vbmUgY3FhLXotMTBcIj5cbiAgICAgICAgICA8c3ZnICpuZ0lmPVwic2VsZWN0ZWRJdGVyYXRpb24uc3RhdHVzID09PSAnc3VjY2VzcydcIiB3aWR0aD1cIjZcIiBoZWlnaHQ9XCI2XCIgdmlld0JveD1cIjAgMCA2IDZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGN4PVwiM1wiIGN5PVwiM1wiIHI9XCIzXCIgZmlsbD1cIiMwMEE2M0VcIi8+PC9zdmc+XG4gICAgICAgICAgPHN2ZyAqbmdJZj1cInNlbGVjdGVkSXRlcmF0aW9uLnN0YXR1cyA9PT0gJ2ZhaWxlZCdcIiB3aWR0aD1cIjZcIiBoZWlnaHQ9XCI2XCIgdmlld0JveD1cIjAgMCA2IDZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGN4PVwiM1wiIGN5PVwiM1wiIHI9XCIzXCIgZmlsbD1cIiNFRjQ0NDRcIi8+PC9zdmc+XG4gICAgICAgICAgPHN2ZyAqbmdJZj1cInNlbGVjdGVkSXRlcmF0aW9uLnN0YXR1cyA9PT0gJ3BlbmRpbmcnXCIgd2lkdGg9XCI2XCIgaGVpZ2h0PVwiNlwiIHZpZXdCb3g9XCIwIDAgNiA2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBjeD1cIjNcIiBjeT1cIjNcIiByPVwiM1wiIGZpbGw9XCIjOUNBM0FGXCIvPjwvc3ZnPlxuICAgICAgICAgIDxzdmcgKm5nSWY9XCJzZWxlY3RlZEl0ZXJhdGlvbi5zdGF0dXMgPT09ICdydW5uaW5nJ1wiIHdpZHRoPVwiNlwiIGhlaWdodD1cIjZcIiB2aWV3Qm94PVwiMCAwIDYgNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgY3g9XCIzXCIgY3k9XCIzXCIgcj1cIjNcIiBmaWxsPVwiIzNCODJGNlwiLz48L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBjbGFzcz1cImNxYS1wbC1bMjJweF0gY3FhLXByLTYgY3FhLXB5LVs1cHhdIGNxYS13LWZ1bGwgY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRTVFNUU1XSBjcWEtcm91bmRlZC1tZCBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtYmctWyNGQUZBRkFdIGNxYS10ZXh0LWJsYWNrLTEwMCBjcWEtYXBwZWFyYW5jZS1ub25lXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkSXRlcmF0aW9uXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVJdGVyYXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVJdGVyYXRpb25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIoaXNMaXZlICYmIChzdGF0dXMgPT09ICdydW5uaW5nJyB8fCBzdGF0dXMgPT09ICdSVU5OSU5HJykpXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdJZj1cIiFjb25maWc/Lml0ZXJhdGlvbnMgfHwgY29uZmlnPy5pdGVyYXRpb25zPy5sZW5ndGggPT09IDBcIiB2YWx1ZT1cIlwiIGRpc2FibGVkPlxuICAgICAgICAgICAgTm8gaXRlcmF0aW9ucyBhdmFpbGFibGVcbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVyYXRpb24gb2YgY29uZmlnLml0ZXJhdGlvbnNcIiBbbmdWYWx1ZV09XCJpdGVyYXRpb25cIj5cbiAgICAgICAgICAgIHt7IGdldEl0ZXJhdGlvbkxhYmVsKGl0ZXJhdGlvbikgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwhLS0gRHJvcGRvd24gYXJyb3cgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLXJpZ2h0LTIgY3FhLXRvcC0xLzIgY3FhLXRyYW5zZm9ybSBjcWEtLXRyYW5zbGF0ZS15LTEvMiBjcWEtcG9pbnRlci1ldmVudHMtbm9uZVwiPlxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjZcIiB2aWV3Qm94PVwiMCAwIDEwIDZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEgMUw1IDVMOSAxXCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLW1sLWF1dG9cIiAqbmdJZj1cImNvbmZpZz8uaXRlcmF0aW9ucyAmJiBjb25maWc/Lml0ZXJhdGlvbnM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgRGVmYXVsdDoge3sgY29uZmlnLmRlZmF1bHRJdGVyYXRpb24gPT09ICdsYXN0JyA/ICdsYXN0IGl0ZXJhdGlvbicgOiAnZmlyc3QgaXRlcmF0aW9uJyB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWxlY3RlZCBJdGVyYXRpb24gU3ViLXN0ZXBzIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEl0ZXJhdGlvbiAmJiBzZWxlY3RlZEl0ZXJhdGlvbi5zdWJTdGVwc1wiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMSBjcWEtcHktMSBjcWEtbWwtOVwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogJzFweCBzb2xpZCAjRjNGNEY2J1wiPlxuICAgICAgPCEtLSBTaW5nbGUgbG9vcDogcmVuZGVyIGFsbCBlbnRyaWVzIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJTdGVwIG9mIChpc0xpdmUgPyBwcm9jZXNzZWRTdWJTdGVwcyA6IHByb2Nlc3NlZFN1YlN0ZXBzRm9yUnVuUmVzdWx0KVwiPlxuICAgICAgICA8IS0tIEFJX0FVVE9fSEVBTF9TVUNDRVNTL0ZBSUxFRDogcmVuZGVyIHdpdGggYWktYWdlbnQtc3RlcCBzdHlsZSAoYm90aCBsaXZlIGFuZCBydW4gcmVzdWx0IHNjcmVlbnMpIC0tPlxuICAgICAgICA8Y3FhLWFpLWxvZ3Mtd2l0aC1yZWFzb25pbmdcbiAgICAgICAgICAqbmdJZj1cIiRhbnkoc3ViU3RlcCkuaXNBaUF1dG9IZWFsUmVzdWx0XCJcbiAgICAgICAgICBbc3RhdHVzXT1cInN1YlN0ZXAuc3RhdHVzXCJcbiAgICAgICAgICBbdGV4dF09XCIkYW55KHN1YlN0ZXApLnRleHQgfHwgc3ViU3RlcD8udmFsdWVcIlxuICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCIkYW55KHN1YlN0ZXApLmRlc2NyaXB0aW9uIHx8IHN1YlN0ZXA/LnRleHQgfHwgc3ViU3RlcD8udmFsdWVcIlxuICAgICAgICAgIFtyZWFzb25pbmddPVwiJGFueShzdWJTdGVwKS5yZWFzb25pbmcgfHwgc3ViU3RlcD8ucmVhc29uaW5nXCJcbiAgICAgICAgICBbZHVyYXRpb25dPVwic3ViU3RlcC5kdXJhdGlvblwiPlxuICAgICAgICA8L2NxYS1haS1sb2dzLXdpdGgtcmVhc29uaW5nPlxuXG4gICAgICAgIDwhLS0gUmVndWxhciBzdWItc3RlcHMgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIiEkYW55KHN1YlN0ZXApLmlzQWlBdXRvSGVhbFJlc3VsdFwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHktWzUuNXB4XSBjcWEtcHgtM1wiPlxuICAgICAgICAgIFxuICAgICAgICAgIDwhLS0gU3ViLXN0ZXAgU3RhdHVzIEljb24gLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3N1Y2Nlc3MnIHx8IHN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ3Bhc3NlZCdcIiA+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEwLjkwMDUgNC45OTk5OUMxMS4xMjg5IDYuMTIwNjQgMTAuOTY2MiA3LjI4NTcxIDEwLjQzOTUgOC4zMDA4OUM5LjkxMjc5IDkuMzE2MDggOS4wNTQgMTAuMTIgOC4wMDYzMSAxMC41Nzg3QzYuOTU4NjIgMTEuMDM3MyA1Ljc4NTM2IDExLjEyMjkgNC42ODIyIDEwLjgyMTJDMy41NzkwNCAxMC41MTk1IDIuNjEyNjUgOS44NDg2OSAxLjk0NDE5IDguOTIwNzFDMS4yNzU3MyA3Ljk5MjcyIDAuOTQ1NjExIDYuODYzNjEgMS4wMDg4OCA1LjcyMTY5QzEuMDcyMTUgNC41Nzk3NiAxLjUyNDk5IDMuNDk0MDQgMi4yOTE4OCAyLjY0NTU4QzMuMDU4NzYgMS43OTcxMiA0LjA5MzM0IDEuMjM3MjEgNS4yMjMwOCAxLjA1OTIyQzYuMzUyODIgMC44ODEyMzMgNy41MDk0NCAxLjA5NTkyIDguNTAwMDUgMS42Njc0OVwiIHN0cm9rZT1cIiMyMkM1NUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk00LjUgNS41TDYgN0wxMSAyXCIgc3Ryb2tlPVwiIzIyQzU1RVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIEZhaWx1cmUgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWx1cmUnIHx8IHN1YlN0ZXA/LnN0YXR1cz8udG9Mb3dlckNhc2UoKSA9PT0gJ2ZhaWxlZCdcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjREMyNjI2XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNy41IDQuNUw0LjUgNy41XCIgc3Ryb2tlPVwiI0RDMjYyNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cGF0aCBkPVwiTTQuNSA0LjVMNy41IDcuNVwiIHN0cm9rZT1cIiNEQzI2MjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBQZW5kaW5nIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJTdGVwPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09ICdwZW5kaW5nJ1wiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02IDExQzguNzYxNDIgMTEgMTEgOC43NjE0MiAxMSA2QzExIDMuMjM4NTggOC43NjE0MiAxIDYgMUMzLjIzODU4IDEgMSAzLjIzODU4IDEgNkMxIDguNzYxNDIgMy4yMzg1OCAxMSA2IDExWlwiIHN0cm9rZT1cIiM5Q0EzQUZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk02IDNWNkw4IDdcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gUnVubmluZyAtIFNob3cgc3Bpbm5lciAoYWxzbyB1c2VkIGZvciBhY3RpdmUgV0FJVF9GT1JfTE9DQVRPUiBjb3VudGRvd24gaW4gbGl2ZSBtb2RlKSAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAncnVubmluZydcIj5cbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjcWEtYW5pbWF0ZS1zcGluIGNxYS10ZXh0LVsjM0I4MkY2XVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIGZpbGw9XCJub25lXCIgb3BhY2l0eT1cIjAuMjVcIi8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiAxQTUgNSAwIDAgMSAxMSA2XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwic3ViU3RlcD8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSAnc2tpcHBlZCdcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBjcWEtdGV4dC1bIzlDQTNBRl0gY3FhLXRleHQtWzEycHhdXCI+XG4gICAgICAgICAgICAgIHNraXBfbmV4dFxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBTdWItc3RlcCBEZXNjcmlwdGlvbiAtLT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLXRleHQtWzEzcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdGV4dC1bIzM2NDE1M11cIiBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmUtbGluZTsgd29yZC1icmVhazogYnJlYWstd29yZDtcIj5cbiAgICAgICAgICAgIHt7ICRhbnkoc3ViU3RlcCkuZGVzY3JpcHRpb24gfHwgJGFueShzdWJTdGVwKS50ZXh0IH19XG4gICAgICAgICAgICA8IS0tIENvdW50ZG93biBmb3IgYWN0aXZlIFdBSVRfRk9SX0xPQ0FUT1IgaW4gbGl2ZSBtb2RlIC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0xpdmUgJiYgJGFueShzdWJTdGVwKS5yZW1haW5pbmdTZWNvbmRzICE9IG51bGxcIiBjbGFzcz1cImNxYS10ZXh0LVsjRjk3MzE2XSBjcWEtZm9udC1tZWRpdW0gY3FhLW1sLTFcIj4oe3sgJGFueShzdWJTdGVwKS5yZW1haW5pbmdTZWNvbmRzIH19cyByZW1haW5pbmcpPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDwhLS0gU3ViLXN0ZXAgRHVyYXRpb24gLS0+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1tZXRhZGF0YS1rZXlcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdER1cmF0aW9uKHN1YlN0ZXAuZHVyYXRpb24pIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBOZXN0ZWQgU3RlcHMgLS0+XG4gICAgPGRpdiAqbmdJZj1cImhhc0NoaWxkIHx8IChjb25maWcubmVzdGVkU3RlcHMgJiYgY29uZmlnLm5lc3RlZFN0ZXBzLmxlbmd0aCA+IDApXCIgY2xhc3M9XCJjcWEtbWwtOSBjcWEtcGItMSBjcWEtbmVzdGVkLXN0ZXBzLWNvbnRhaW5lclwiIHN0eWxlPVwiYm9yZGVyLWJvdHRvbTogJzFweCBzb2xpZCAjRjNGNEY2J1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNzM3MzczXSBjcWEtcHktWzJweF0gY3FhLXB4LTNcIj5OZXN0ZWQgc3RlcHM8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1wbC1bMThweF1cIiBzdHlsZT1cImJvcmRlci1sZWZ0OiAycHggc29saWQgI0M1QzdGQTtcIj5cbiAgICAgICAgPCEtLSBMb2FkaW5nIGluZGljYXRvciB3aGVuIG5lc3RlZCBzdGVwcyBhcmUgYmVpbmcgbG9hZGVkIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGFzQ2hpbGQgJiYgKCFjb25maWcubmVzdGVkU3RlcHMgfHwgY29uZmlnLm5lc3RlZFN0ZXBzLmxlbmd0aCA9PT0gMCkgJiYgaXNTdGVwTG9hZGluZygpXCIgXG4gICAgICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcHktMiBjcWEtcHgtM1wiPlxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJjcWEtYW5pbWF0ZS1zcGluIGNxYS10ZXh0LVsjM0I4MkY2XVwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI3XCIgY3k9XCI3XCIgcj1cIjZcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIG9wYWNpdHk9XCIwLjI1XCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk03IDFBNiA2IDAgMCAxIDEzIDdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTFweF0gY3FhLWxlYWRpbmctWzEzcHhdIGNxYS10ZXh0LVsjNzM3MzczXVwiPkxvYWRpbmcgbmVzdGVkIHN0ZXBzLi4uPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RlcCBvZiBjb25maWcubmVzdGVkU3RlcHM7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrTmVzdGVkU3RlcFwiPlxuICAgICAgICAgIDwhLS0gV3JhcHBlciB0byBzaG93IHNrZWxldG9uIHdoaWxlIHN0ZXAtcmVuZGVyZXIgaXMgbG9hZGluZyAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNxYS1zdGVwLXJlbmRlcmVyLXdyYXBwZXJcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ2V4Yy0nICsgc3RlcC5pZFwiXG4gICAgICAgICAgICBbY2xhc3MubG9hZGVkXT1cIiFpc05lc3RlZFN0ZXBMb2FkaW5nKHN0ZXApXCI+XG4gICAgICAgICAgICA8IS0tIExvYWRpbmcgc2tlbGV0b24gb3ZlcmxheSAtLT5cbiAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImlzTmVzdGVkU3RlcExvYWRpbmcoc3RlcClcIiBjbGFzcz1cImNxYS1zdGVwLXNrZWxldG9uLW92ZXJsYXlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1zdGVwLXNrZWxldG9uIGNxYS1teC0zIGNxYS1teS0xXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8IS0tIFVzZSBzdGVwLXJlbmRlcmVyIGZvciBhbGwgbmVzdGVkIHN0ZXBzIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyAtLT5cbiAgICAgICAgICAgIDwhLS0gVGhlIHN0ZXAtcmVuZGVyZXIgd2lsbCBkeW5hbWljYWxseSBsb2FkIHRoZSBhcHByb3ByaWF0ZSBjb21wb25lbnQgYW5kIHBhc3MgaGFuZGxlcnMgLS0+XG4gICAgICAgICAgICA8Y3FhLXN0ZXAtcmVuZGVyZXIgXG4gICAgICAgICAgICAgIFtzdGVwXT1cInN0ZXBcIlxuICAgICAgICAgICAgICBbc3RlcE51bWJlcl09XCJzdGVwTnVtYmVyICsgJy4nICsgKGkgKyAxKVwiXG4gICAgICAgICAgICAgIFtvbkV4cGFuZEhhbmRsZXJdPVwib25FeHBhbmRIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2dldENvbmRpdGlvbkJyYW5jaGVzSGFuZGxlcl09XCJnZXRDb25kaXRpb25CcmFuY2hlc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25Db25kaXRpb25CcmFuY2hDbGlja0hhbmRsZXJdPVwib25Db25kaXRpb25CcmFuY2hDbGlja0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbaXNTdGVwTG9hZGluZ0hhbmRsZXJdPVwiaXNTdGVwTG9hZGluZ0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbaXNTdGVwRXhwYW5kZWRIYW5kbGVyXT1cImlzU3RlcEV4cGFuZGVkSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtjb252ZXJ0TXNUb1NlY29uZHNIYW5kbGVyXT1cImNvbnZlcnRNc1RvU2Vjb25kc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbZm9ybWF0RmFpbHVyZURldGFpbHNIYW5kbGVyXT1cImZvcm1hdEZhaWx1cmVEZXRhaWxzSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtnZXRTZWxmSGVhbEFuYWx5c2lzSGFuZGxlcl09XCJnZXRTZWxmSGVhbEFuYWx5c2lzSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtnZXRMb29wSXRlcmF0aW9uc0hhbmRsZXJdPVwiZ2V0TG9vcEl0ZXJhdGlvbnNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2dldEFwaUFzc2VydGlvbnNIYW5kbGVyXT1cImdldEFwaUFzc2VydGlvbnNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2Zvcm1hdEFjdGlvbnNIYW5kbGVyXT1cImZvcm1hdEFjdGlvbnNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uVmlld0FsbEl0ZXJhdGlvbnNIYW5kbGVyXT1cIm9uVmlld0FsbEl0ZXJhdGlvbnNIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uTWFrZUN1cnJlbnRCYXNlbGluZUhhbmRsZXJdPVwib25NYWtlQ3VycmVudEJhc2VsaW5lSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvblVwbG9hZEJhc2VsaW5lSGFuZGxlcl09XCJvblVwbG9hZEJhc2VsaW5lSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtnZXRTZWxmSGVhbExvYWRpbmdTdGF0ZXNIYW5kbGVyXT1cImdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25BbmFseXplSGFuZGxlcl09XCJvbkFuYWx5emVIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW29uVmlld0Z1bGxMb2dzSGFuZGxlcl09XCJvblZpZXdGdWxsTG9nc0hhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25TZWxmSGVhbEFjdGlvbkhhbmRsZXJdPVwib25TZWxmSGVhbEFjdGlvbkhhbmRsZXJcIlxuICAgICAgICAgICAgICBbb25TdGVwQ2xpY2tIYW5kbGVyXT1cIm9uU3RlcENsaWNrSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvbkpzb25QYXRoQ29waWVkSGFuZGxlcl09XCJvbkpzb25QYXRoQ29waWVkSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvbkRvd25sb2FkSGFuZGxlcl09XCJvbkRvd25sb2FkSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvbkZpbGVQYXRoQ29waWVkSGFuZGxlcl09XCJvbkZpbGVQYXRoQ29waWVkSGFuZGxlclwiXG4gICAgICAgICAgICAgIFtvblRleHRDb3BpZWRIYW5kbGVyXT1cIm9uVGV4dENvcGllZEhhbmRsZXJcIlxuICAgICAgICAgICAgICBbanVtcFRvVGltZXN0YW1wSGFuZGxlcl09XCJqdW1wVG9UaW1lc3RhbXBIYW5kbGVyXCJcbiAgICAgICAgICAgICAgW2Rvd25sb2FkaW5nU3RlcElkXT1cImRvd25sb2FkaW5nU3RlcElkXCJcbiAgICAgICAgICAgICAgW2lzVXBsb2FkaW5nQmFzZWxpbmVdPVwiaXNVcGxvYWRpbmdCYXNlbGluZVwiXG4gICAgICAgICAgICAgIFtpc01ha2luZ0N1cnJlbnRCYXNlbGluZV09XCJpc01ha2luZ0N1cnJlbnRCYXNlbGluZVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RlZEl0ZXJhdGlvbklkXT1cInN0ZXA/LnNlbGVjdGVkSXRlcmF0aW9uSWQgfHwgJydcIlxuICAgICAgICAgICAgW2lzTGl2ZV09XCJpc0xpdmVcIlxuICAgICAgICAgICAgW2lzRGVidWddPVwiaXNEZWJ1Z1wiXG4gICAgICAgICAgICBbZGVidWdQb2ludFNldF09XCJnZXREZWJ1Z1BvaW50U2V0SGFuZGxlciA/IGdldERlYnVnUG9pbnRTZXRIYW5kbGVyKHN0ZXApIDogZGVidWdQb2ludFNldFwiXG4gICAgICAgICAgICBbZ2V0RGVidWdQb2ludFNldEhhbmRsZXJdPVwiZ2V0RGVidWdQb2ludFNldEhhbmRsZXJcIlxuICAgICAgICAgICAgW29uRGVidWdQb2ludENoYW5nZUhhbmRsZXJdPVwib25EZWJ1Z1BvaW50Q2hhbmdlSGFuZGxlclwiXG4gICAgICAgICAgICBbb25FZGl0U3RlcEhhbmRsZXJdPVwib25FZGl0U3RlcEhhbmRsZXJcIlxuICAgICAgICAgICAgW2FkZFN0ZXBNZW51T3B0aW9uc109XCJnZXRBZGRTdGVwTWVudU9wdGlvbnNGb3JOZXN0ZWQgPyBnZXRBZGRTdGVwTWVudU9wdGlvbnNGb3JOZXN0ZWQoc3RlcCkgOiBhZGRTdGVwTWVudU9wdGlvbnNcIlxuICAgICAgICAgICAgW29uQWRkU3RlcE9wdGlvblNlbGVjdEhhbmRsZXJdPVwib25BZGRTdGVwT3B0aW9uU2VsZWN0SGFuZGxlclwiXG4gICAgICAgICAgICBbc3RlcE1vcmVNZW51T3B0aW9uc109XCJnZXRTdGVwTW9yZU1lbnVPcHRpb25zRm9yTmVzdGVkID8gZ2V0U3RlcE1vcmVNZW51T3B0aW9uc0Zvck5lc3RlZChzdGVwKSA6IHN0ZXBNb3JlTWVudU9wdGlvbnNcIlxuICAgICAgICAgICAgW29uU3RlcE1vcmVPcHRpb25TZWxlY3RIYW5kbGVyXT1cIm9uU3RlcE1vcmVPcHRpb25TZWxlY3RIYW5kbGVyXCJcbiAgICAgICAgICAgIFtnZXRBZGRTdGVwTWVudU9wdGlvbnNGb3JOZXN0ZWRdPVwiZ2V0QWRkU3RlcE1lbnVPcHRpb25zRm9yTmVzdGVkXCJcbiAgICAgICAgICAgIFtnZXRTdGVwTW9yZU1lbnVPcHRpb25zRm9yTmVzdGVkXT1cImdldFN0ZXBNb3JlTWVudU9wdGlvbnNGb3JOZXN0ZWRcIlxuICAgICAgICAgICAgICAoY29tcG9uZW50UmVhZHkpPVwibWFya1N0ZXBMb2FkZWQoc3RlcClcIj5cbiAgICAgICAgICAgIDwvY3FhLXN0ZXAtcmVuZGVyZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFZpZXcgQWxsIEl0ZXJhdGlvbnMgTGluayAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLnNob3dWaWV3QWxsSXRlcmF0aW9ucyAmJiAhaXNMaXZlXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtanVzdGlmeS1lbmQgY3FhLXB4LTMgY3FhLXB5LVsxMHB4XVwiPlxuICAgICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwib25WaWV3QWxsSXRlcmF0aW9uc0NsaWNrKCRldmVudClcIiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLW5vLXVuZGVybGluZSBjcWEtdGV4dC1wcmltYXJ5IGNxYS1mb250LXNlbWlib2xkIGNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0xXCI+XG4gICAgICAgIFZpZXcgYWxsIGl0ZXJhdGlvbnNcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk03LjYzNjM2IDExLjI2N0w2Ljc1ODUyIDEwLjM5NzdMOS4zODc3OCA3Ljc2ODQ3SDNWNi40OTg1OEg5LjM4Nzc4TDYuNzU4NTIgMy44NzM1OEw3LjYzNjM2IDNMMTEuNzY5OSA3LjEzMzUyTDcuNjM2MzYgMTEuMjY3WlwiIGZpbGw9XCIjM0Y0M0VFXCIvPjwvc3ZnPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFNlbGYgSGVhbCBBbmFseXNpcyAtLT5cbiAgICA8Y3FhLXNlbGYtaGVhbC1hbmFseXNpcyBcbiAgICAgICpuZ0lmPVwic2VsZkhlYWxBbmFseXNpc1wiXG4gICAgICBbaWRdPVwic3RlcD8udGVzdFN0ZXBJZFwiXG4gICAgICBbb3JpZ2luYWxMb2NhdG9yXT1cInNlbGZIZWFsQW5hbHlzaXMub3JpZ2luYWxMb2NhdG9yXCJcbiAgICAgIFtoZWFsZWRMb2NhdG9yXT1cInNlbGZIZWFsQW5hbHlzaXMuaGVhbGVkTG9jYXRvclwiXG4gICAgICBbY29uZmlkZW5jZV09XCJzZWxmSGVhbEFuYWx5c2lzLmNvbmZpZGVuY2VcIlxuICAgICAgW2hlYWxNZXRob2RdPVwic2VsZkhlYWxBbmFseXNpcy5oZWFsTWV0aG9kXCJcbiAgICAgIFtpc0xvYWRpbmdBY2NlcHRdPVwiZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlciA/IGdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIoKS5pc0xvYWRpbmdBY2NlcHQ/LltzdGVwPy50ZXN0U3RlcElkXSA6IGZhbHNlXCJcbiAgICAgIFtpc0xvYWRpbmdNb2RpZnlBY2NlcHRdPVwiZ2V0U2VsZkhlYWxMb2FkaW5nU3RhdGVzSGFuZGxlciA/IGdldFNlbGZIZWFsTG9hZGluZ1N0YXRlc0hhbmRsZXIoKS5pc0xvYWRpbmdNb2RpZnlBY2NlcHQ/LltzdGVwPy50ZXN0U3RlcElkXSA6IGZhbHNlXCJcbiAgICAgIChhY3Rpb24pPVwib25TZWxmSGVhbEFjdGlvbigkZXZlbnQpXCI+XG4gICAgPC9jcWEtc2VsZi1oZWFsLWFuYWx5c2lzPlxuXG4gICAgPCEtLSBUaW1pbmcgQnJlYWtkb3duIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWcudGltaW5nQnJlYWtkb3duXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWVuZCBjcWEtZ2FwLTUgY3FhLXB0LTEuNSBjcWEtcHgtNCBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzlDQTNBRl1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICA8ZGl2Pjxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNiAxMUM4Ljc2MTQyIDExIDExIDguNzYxNDIgMTEgNkMxMSAzLjIzODU4IDguNzYxNDIgMSA2IDFDMy4yMzg1OCAxIDEgMy4yMzg1OCAxIDZDMSA4Ljc2MTQyIDMuMjM4NTggMTEgNiAxMVpcIiBzdHJva2U9XCIjOUNBM0FGXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNNiAzVjZMOCA3XCIgc3Ryb2tlPVwiIzlDQTNBRlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48L3N2Zz48L2Rpdj5cbiAgICAgICAgPHNwYW4+VGltaW5nIGJyZWFrZG93bjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1kaWFsb2ctbXV0ZWQgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBBcHAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1ncmF5LTcwMFwiPnt7IGZvcm1hdER1cmF0aW9uKGNvbmZpZy50aW1pbmdCcmVha2Rvd24uYXBwKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+PHN2ZyB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMSAxMVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNLTMuODE0N2UtMDYgMTAuMzJWLTcuMTUyNTZlLTA3SDAuOTU5OTk2VjEwLjMySC0zLjgxNDdlLTA2WlwiIGZpbGw9XCIjRTVFN0VCXCIvPjwvc3ZnPjwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIFRvb2wgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1ncmF5LTcwMFwiPnt7IGZvcm1hdER1cmF0aW9uKGNvbmZpZy50aW1pbmdCcmVha2Rvd24udG9vbCkgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFZpZXcgTW9yZSBGYWlsZWQgU3RlcCBCdXR0b24gLSBzaG93biB3aGVuIGV4cGFuZGVkIGFuZCBmYWlsdXJlIGRldGFpbHMgZXhpc3QgLS0+XG4gIDxkaXYgKm5nSWY9XCJzaG93Vmlld01vcmVCdXR0b25cIiBjbGFzcz1cImNxYS1tdC0yIGNxYS1weC00XCI+XG4gICAgPGNxYS12aWV3LW1vcmUtZmFpbGVkLXN0ZXAtYnV0dG9uXG4gICAgICBbdGltaW5nQnJlYWtkb3duXT1cInRpbWluZ0JyZWFrZG93blwiXG4gICAgICBbc3ViU3RlcHNdPVwiZ2V0U3ViU3RlcHNGb3JGYWlsZWRTdGVwKClcIlxuICAgICAgW2ZhaWx1cmVEZXRhaWxzXT1cImZhaWx1cmVEZXRhaWxzXCJcbiAgICAgIFtpc0V4cGFuZGVkXT1cInNob3dGYWlsZWRTdGVwRGV0YWlsc1wiXG4gICAgICAodmlld01vcmVDbGljayk9XCJvblZpZXdNb3JlRmFpbGVkU3RlcENsaWNrKCRldmVudClcIj5cbiAgICA8L2NxYS12aWV3LW1vcmUtZmFpbGVkLXN0ZXAtYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIFVwZGF0ZWQgRmFpbGVkIFN0ZXAgQ29tcG9uZW50IC0gc2hvd24gd2hlbiBidXR0b24gaXMgY2xpY2tlZCAtLT5cbiAgPGRpdiAqbmdJZj1cInNob3dWaWV3TW9yZUJ1dHRvbiAmJnNob3dGYWlsZWRTdGVwRGV0YWlscyAmJiBmYWlsdXJlRGV0YWlsc1wiIGNsYXNzPVwiY3FhLW10LTIgY3FhLXB4LTRcIj5cbiAgICA8Y3FhLXVwZGF0ZWQtZmFpbGVkLXN0ZXBcbiAgICAgIFt0ZXN0U3RlcFJlc3VsdElkXT1cInRlc3RTdGVwUmVzdWx0SWRcIlxuICAgICAgW3RpbWluZ0JyZWFrZG93bl09XCJ0aW1pbmdCcmVha2Rvd25cIlxuICAgICAgW2V4cGFuZGVkXT1cInRydWVcIlxuICAgICAgW3N1YlN0ZXBzXT1cImdldFN1YlN0ZXBzRm9yRmFpbGVkU3RlcCgpXCJcbiAgICAgIFtmYWlsdXJlRGV0YWlsc109XCJmYWlsdXJlRGV0YWlsc1wiXG4gICAgICBbcmVhc29uaW5nXT1cInJlYXNvbmluZ1wiXG4gICAgICBbY29uZmlkZW5jZV09XCJjb25maWRlbmNlXCJcbiAgICAgIFtpc1VwbG9hZGluZ0Jhc2VsaW5lXT1cImlzVXBsb2FkaW5nQmFzZWxpbmVcIlxuICAgICAgW2lzTWFraW5nQ3VycmVudEJhc2VsaW5lXT1cImlzTWFraW5nQ3VycmVudEJhc2VsaW5lXCJcbiAgICAgIFtpc0xpdmVdPVwiaXNMaXZlXCJcbiAgICAgIChtYWtlQ3VycmVudEJhc2VsaW5lKT1cIm9uTWFrZUN1cnJlbnRCYXNlbGluZSgkZXZlbnQpXCJcbiAgICAgICh1cGxvYWRCYXNlbGluZSk9XCJvblVwbG9hZEJhc2VsaW5lKCRldmVudClcIlxuICAgICAgKGFuYWx5emUpPVwib25BbmFseXplKClcIlxuICAgICAgKHZpZXdGdWxsTG9ncyk9XCJvblZpZXdGdWxsTG9ncygpXCI+XG4gICAgPC9jcWEtdXBkYXRlZC1mYWlsZWQtc3RlcD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|