@james_jayaraj/test-npm 0.8.8 → 0.9.0
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.
Potentially problematic release.
This version of @james_jayaraj/test-npm might be problematic. Click here for more details.
- package/_hola-rx.styles.scss +35 -5
- package/esm2020/lib/confirm-patient-contact-details/confirm-patient-contact-details.component.mjs +5 -5
- package/esm2020/lib/environments/config.mjs +6 -4
- package/esm2020/lib/hola-rx.component.mjs +7 -1
- package/esm2020/lib/referral-rx/referral-rx.component.mjs +3 -3
- package/esm2020/lib/rx/rx.component.mjs +321 -6
- package/esm2020/lib/services/common.mjs +81 -1
- package/fesm2015/james_jayaraj-test-npm.mjs +421 -14
- package/fesm2015/james_jayaraj-test-npm.mjs.map +1 -1
- package/fesm2020/james_jayaraj-test-npm.mjs +417 -14
- package/fesm2020/james_jayaraj-test-npm.mjs.map +1 -1
- package/lib/environments/config.d.ts +2 -0
- package/lib/rx/rx.component.d.ts +10 -0
- package/lib/services/common.d.ts +6 -0
- package/package.json +1 -1
|
@@ -219,6 +219,8 @@ export class HolaRx {
|
|
|
219
219
|
this.commonservice.visitId = res.visitId;
|
|
220
220
|
this.commonservice.createPatientResponse = res;
|
|
221
221
|
this.commonservice.editPrescription = false;
|
|
222
|
+
this.commonservice.pharmacyEmail = !this.IsNullOrEmpty(res.pharmacyEmail) ? res.pharmacyEmail : "";
|
|
223
|
+
this.commonservice.isScriptToPharmacy = (!this.IsNullOrEmpty(res.isScriptToPharmacy) && res.isScriptToPharmacy) != 0 ? res.isScriptToPharmacy : 0;
|
|
222
224
|
this.commonservice.isMedicineRestrict = !this.commonservice.IsNullOrEmpty(res.isRestrictedMedicine) ? res.isRestrictedMedicine : false;
|
|
223
225
|
if (!this.IsNullOrEmpty(this.commonservice.physicianDetails) && !this.IsNullOrEmpty(this.commonservice.physicianDetails.ePrescriptionAllowed) && this.commonservice.physicianDetails.ePrescriptionAllowed == 0)
|
|
224
226
|
this.HIvalidation(res);
|
|
@@ -307,6 +309,8 @@ export class HolaRx {
|
|
|
307
309
|
this.commonservice.vendorPhysicianId = res.vendorPhysicianId;
|
|
308
310
|
this.commonservice.visitId = res.visitId;
|
|
309
311
|
this.commonservice.isMedicineRestrict = !this.commonservice.IsNullOrEmpty(res.isRestrictedMedicine) ? res.isRestrictedMedicine : false;
|
|
312
|
+
this.commonservice.pharmacyEmail = !this.IsNullOrEmpty(res.pharmacyEmail) ? res.pharmacyEmail : "";
|
|
313
|
+
this.commonservice.isScriptToPharmacy = (!this.IsNullOrEmpty(res.isScriptToPharmacy) && res.isScriptToPharmacy) != 0 ? res.isScriptToPharmacy : 0;
|
|
310
314
|
if (RxDetails.rxid != null && RxDetails.rxid != "" && RxDetails.rxid != undefined) {
|
|
311
315
|
if (res.rxDetails != null && res.rxDetails != "" && res.rxDetails != undefined) {
|
|
312
316
|
this.commonservice.editPrescription = true;
|
|
@@ -407,6 +411,8 @@ export class HolaRx {
|
|
|
407
411
|
this.commonservice.vendorPhysicianId = res.vendorPhysicianId;
|
|
408
412
|
this.commonservice.visitId = res.visitId;
|
|
409
413
|
this.commonservice.isMedicineRestrict = !this.commonservice.IsNullOrEmpty(res.isRestrictedMedicine) ? res.isRestrictedMedicine : false;
|
|
414
|
+
this.commonservice.pharmacyEmail = !this.IsNullOrEmpty(res.pharmacyEmail) ? res.pharmacyEmail : "";
|
|
415
|
+
this.commonservice.isScriptToPharmacy = (!this.IsNullOrEmpty(res.isScriptToPharmacy) && res.isScriptToPharmacy) != 0 ? res.isScriptToPharmacy : 0;
|
|
410
416
|
return this.commonservice.Pathology(this.content);
|
|
411
417
|
}
|
|
412
418
|
else {
|
|
@@ -862,4 +868,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
862
868
|
type: ViewChild,
|
|
863
869
|
args: ["rxwidgets", { static: true }]
|
|
864
870
|
}] } });
|
|
865
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sYS1yeC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU16RCxNQUFNLE9BQU8sTUFBTTtJQVFqQixZQUFvQixhQUE2QixFQUFTLG9CQUEwQyxFQUFVLFVBQXNCLEVBQVUsWUFBK0I7UUFBekosa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQVMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFOckssWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUM1QixRQUFRO0lBRVIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLGFBQWEs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QUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDM0M7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDNUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDOUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs2QkFDdkM7aUNBQ0ksSUFB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Q0FBQyxhQUFhLENBQUMsaUJBQWlCO2dCQUNwRCxjQUFjLEVBQUUsS0FBSztnQkFDckIsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixTQUFTLEVBQUUsT0FBTztnQkFDbEIsR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2FBQzFCLENBQUE7WUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsRSxtQkFBbUI7WUFDckIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3RGLENBQUMsQ0FBQyxDQUFBO1NBQ0g7UUFDRCxPQUFPLEVBQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ25GO0lBQ0gsQ0FBQzs7bUdBanpCVSxNQUFNO3VGQUFOLE1BQU0sbUtDWm5CLGtqQkFZYzsyRkRBRCxNQUFNO2tCQUxsQixTQUFTOytCQUNFLFNBQVM7aU1BV3VCLE9BQU87c0JBQWhELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2VzLCBDb21tb25Mb2FkZXJTZXJ2aWNlcyB9IGZyb20gJy4vc2VydmljZXMvY29tbW9uJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjb25maWcsIGVycm9yY29uZmlnIH0gZnJvbSAnLi9lbnZpcm9ubWVudHMvY29uZmlnJztcclxuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaG9sYS1yeCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hvbGEtcnguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hvbGEtcnguY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb2xhUnggaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgdGVtcFJ4RGV0YWlsczogYW55O1xyXG4gIHByaXZhdGUgbWVzc2FnZSA9IFwiXCI7XHJcbiAgcHJpdmF0ZSB0ZW1wcnhpZCA9IFwiXCI7XHJcbiAgcHJpdmF0ZSB0ZW1wcmVmZXJyYWxpZCA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBzcGlubmVyZmxhZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKFwicnh3aWRnZXRzXCIsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tbW9uc2VydmljZTogQ29tbW9uU2VydmljZXMsIHB1YmxpYyBjb21tb25Mb2FkZXJTZXJ2aWNlczogQ29tbW9uTG9hZGVyU2VydmljZXMsIHByaXZhdGUgYXBpc2VydmljZTogQXBpU2VydmljZSwgcHJpdmF0ZSBDaGFuZ2VkZXRlY3Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7IHRoaXMuc2V0TG9naW50ZXJ2YWwoKTsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TG9naW50ZXJ2YWwoKSB7XHJcbiAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUgIT0gdW5kZWZpbmVkICYmIHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSAhPSBudWxsICYmIHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5hcGlzZXJ2aWNlLlBvc3QodGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlLCBjb25maWcuQ1JFQVRFX0xPR19FWENFUFRJT04pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlID0gbnVsbDtcclxuICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0sIDUwMDAwKTtcclxuICB9XHJcblxyXG5cclxuICBpbml0KGNsaWVudGlkOiBzdHJpbmcsIGNsaWVudHNlY3JldDogc3RyaW5nLCBzYW5kYm94OiBib29sZWFuLCBmbGFnPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiSW5pdCBBdXRoZW50aWNhdGlvblwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gXCJjbGllbnRpZFwiXHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJjbGllbnRpZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgIGNsaWVudElkOiBjbGllbnRpZCxcclxuICAgICAgICBjbGllbnRTZWNyZXQ6IGNsaWVudHNlY3JldFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94ID0gc2FuZGJveDtcclxuICAgICAgaWYgKCFzYW5kYm94KSB7XHJcbiAgICAgICAgZW52aXJvbm1lbnQuYXBpRW5kcG9pbnQgPSBjb25maWcuTElWRV9VUkw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZW52aXJvbm1lbnQuYXBpRW5kcG9pbnQgPSBjb25maWcuU1RBR0lOR19VUkw7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpO1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGlzZXJ2aWNlLlBvc3QoZGF0YSwgXCJhdXRoZW50aWNhdGVcIikucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9rZW5FeHBpcnknLCBKU09OLnN0cmluZ2lmeShyZXMuZXhwaXJlc2luKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4gPSByZXMuYXV0aC5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VGltZXIoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5OZXdSeCh0aGlzLnRlbXBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuRWRpdFJ4KHRoaXMudGVtcFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnID09IDMpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5SZWZlcnJhbCh0aGlzLnRlbXBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFJ4KHRoaXMudGVtcHJ4aWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSA1KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFJlZmVycmFsKHRoaXMudGVtcHJlZmVycmFsaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXMuZmxhZykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzEuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGltZXIoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICB2YXIgZXhwaXJ5ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW5FeHBpcnknKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGV4cGlyeSkgJiYgd2luZG93Lm5hdmlnYXRvci5vbkxpbmUgJiYgIXRoaXMuYXV0aGVudGljYXRlQmxvY2sgJiYgKG5ldyBEYXRlKG5ldyBEYXRlKGV4cGlyeSkuc2V0TWludXRlcyhuZXcgRGF0ZShleHBpcnkpLmdldE1pbnV0ZXMoKSAtIDEpKSA8PSBuZXcgRGF0ZSgpIHx8IHRoaXMuYXBpc2VydmljZS51bkF1dGhvcml6ZWRGbGFnKSkge1xyXG4gICAgICAgICAgdGhpcy5hcGlzZXJ2aWNlLnVuQXV0aG9yaXplZEZsYWcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lcmZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBlcnIubWVzc2FnZSwgZXJyLnN0YWNrLCBcIkhvbGFSeFwiLCBcInNldFRpbWVyXCIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJzZXRUaW1lclwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5OZXdSeChSeERldGFpbHM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiTmV3IFJ4XCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMVwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDEpO1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHRoaXMubWVzc2FnZSwgXCJlcnJvclwiLCBcIlwiLCA3MDAwKTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5Qb3N0KFJ4RGV0YWlscywgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50ZW1wUnhEZXRhaWxzID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jb25zdWx0YXRpb25JZCA9IFJ4RGV0YWlscy5jb25zdWx0YXRpb25pZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzID0gcmVzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGF0aWVudERldGFpbHMgPSByZXMucGF0aWVudERldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZmFjaWxpdHlEZXRhaWxzID0gcmVzLmZhY2lsaXR5RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQYXRpZW50SWQgPSByZXMudmVuZG9yUGF0aWVudElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvckZhY2lsaXR5SWQgPSByZXMudmVuZG9yRmFjaWxpdHlJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQaHlzaWNpYW5JZCA9IHJlcy52ZW5kb3JQaHlzaWNpYW5JZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52aXNpdElkID0gcmVzLnZpc2l0SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY3JlYXRlUGF0aWVudFJlc3BvbnNlID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmVkaXRQcmVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMpICYmICF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQpICYmIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkID09IDApXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuSEl2YWxpZGF0aW9uKHJlcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21tb25zZXJ2aWNlLm9wZW5SeFdpZGdldCh0aGlzLmNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbkVkaXRSeChSeERldGFpbHM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiRWRpdCBSeFwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIgPSAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscykgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpID8gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmVtYWlsKSA/IFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwgOiBcIlwiIDogXCJcIiA6IFwiXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcInByYWN0aXRpb25lciBlbWFpbFwiO1xyXG4gICAgdHJ5IHtcclxuICAgICAgUnhEZXRhaWxzLnR5cGUgPSBcIjFcIjtcclxuICAgICAgUnhEZXRhaWxzLmNsaWVudElkID0gdGhpcy5jb21tb25zZXJ2aWNlLmdldENyZWRldGlhbCgpO1xyXG4gICAgICB0aGlzLnRlbXBSeERldGFpbHMgPSBSeERldGFpbHM7XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bG9nKEpTT04uc3RyaW5naWZ5KFJ4RGV0YWlscyksIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb24oUnhEZXRhaWxzLCAyKTtcclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkocmVzKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKFJ4RGV0YWlscy5yeGlkICE9IG51bGwgJiYgUnhEZXRhaWxzLnJ4aWQgIT0gXCJcIiAmJiBSeERldGFpbHMucnhpZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yeERldGFpbHMgIT0gbnVsbCAmJiByZXMucnhEZXRhaWxzICE9IFwiXCIgJiYgcmVzLnJ4RGV0YWlscyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZWRpdFByZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnJ4RGV0YWlscyA9IHJlcy5yeERldGFpbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnJ4aWQgPSByZXMucnhEZXRhaWxzLnJ4SWQ7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzQ2Lm1lc3NhZ2UsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNyZWF0ZVBhdGllbnRSZXNwb25zZSA9IHJlcztcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzLmVQcmVzY3JpcHRpb25BbGxvd2VkKSAmJiB0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscy5lUHJlc2NyaXB0aW9uQWxsb3dlZCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLkhJdmFsaWRhdGlvbihyZXMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5vcGVuUnhXaWRnZXQodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncnhDcmVkZW50aWFscycpIGFzIGFueSk7XHJcbiAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50SWQpICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRTZWNyZXQpICYmIHRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmluaXQoZGF0YS5jbGllbnRJZCwgZGF0YS5jbGllbnRTZWNyZXQsIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94LCAyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlblJlZmVycmFsKFJ4RGV0YWlsczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJTZW5kIFJlZmVycmFsXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMlwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDMpO1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHRoaXMubWVzc2FnZSwgdGhpcy5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3Blbih0aGlzLm1lc3NhZ2UsIFwiZXJyb3JcIiwgXCJcIiwgNzAwMCk7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmNsb3NlRXJyb3JSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuUG9zdChSeERldGFpbHMsIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlcykpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgJ2Vycm9yJywgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMgPSByZXMucGh5c2ljaWFuRGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5wYXRpZW50RGV0YWlscyA9IHJlcy5wYXRpZW50RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5mYWNpbGl0eURldGFpbHMgPSByZXMuZmFjaWxpdHlEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBhdGllbnRJZCA9IHJlcy52ZW5kb3JQYXRpZW50SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yRmFjaWxpdHlJZCA9IHJlcy52ZW5kb3JGYWNpbGl0eUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvclBoeXNpY2lhbklkID0gcmVzLnZlbmRvclBoeXNpY2lhbklkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZpc2l0SWQgPSByZXMudmlzaXRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5pc01lZGljaW5lUmVzdHJpY3QgPSAhdGhpcy5jb21tb25zZXJ2aWNlLklzTnVsbE9yRW1wdHkocmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lKSA/IHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5QYXRob2xvZ3kodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTsgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHRoaXMubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgMyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFJ4KFJ4SUQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiRG93bmxvYWQgUnhcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gUnhJRDtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicnhpZFwiO1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudGVtcHJ4aWQgPSBSeElEO1xyXG4gICAgICB2YXIgY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHJ4aWQ6IFJ4SUQsXHJcbiAgICAgICAgdHlwZTogXCIwXCIsXHJcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudElkXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksIGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyBSeElEICsgXCImdHlwZT0wJmNsaWVudElkPVwiICsgY2xpZW50SWQpO1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhJRCkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyBSeElEICsgXCImdHlwZT0wJmNsaWVudElkPVwiICsgY2xpZW50SWQpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Eb3dubG9hZChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXNwb25zZS5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzcG9uc2UuZXJyb3JfY29kZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgNCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRSZWZlcnJhbChSZWZlcnJhbElEOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIkRvd25sb2FkIFJlZmVycmFsXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9IFJlZmVycmFsSUQ7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcInJlZmVycmFsIGlkXCI7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy50ZW1wcmVmZXJyYWxpZCA9IFJlZmVycmFsSUQ7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHJlZmVycmFsSWQ6IFJlZmVycmFsSURcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkKSwgY29uZmlnLlBIWVNJQ0lBTi5SRUZFUlJBTF9QUklOVCArIFJlZmVycmFsSUQpO1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUmVmZXJyYWxJRCkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDMubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl80My5jb2RlKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDMuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDMubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUkVGRVJSQUxfUFJJTlQgKyBSZWZlcnJhbElEKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXNwb25zZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uRG93bmxvYWQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCB0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzcG9uc2UuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXNwb25zZS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gsIDUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tbW9uRG93bmxvYWQocmVzcG9uc2U6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6bm9uZTsnKTtcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICAgICAgYS5kb3dubG9hZCA9IHJlc3BvbnNlLmZpbGVOYW1lO1xyXG4gICAgICBhLmhyZWYgPSBcImRhdGE6YXBwbGljYXRpb24vcGRmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiICsgcmVzcG9uc2UuZmlsZTtcclxuICAgICAgYS5jbGljaygpO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ3N1Y2Nlc3MnKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiY29tbW9uRG93bmxvYWRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRpb24oUnhEZXRhaWxzOiBhbnksIGZsYWc6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSkge1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmNvbnN1bHRhdGlvbmlkKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZWlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXJpZCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMy5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudGlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOS5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucnhpZCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5yeGlkKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucnhpZCA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZSkpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmlkKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UubmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzUubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmVtYWlsKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl82LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UucGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl83Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LmFkZHJlc3NsaW5lMSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzcxLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcxLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN1YnVyYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzEwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5ocGlvKSkgeyBSeERldGFpbHMucHJhY3RpY2UuaHBpbyA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmZpcnN0bmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmxhc3RuYW1lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTYuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZG9iKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTgubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTguY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xOS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yMC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yMC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzID0ge307XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNzIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNzIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzLmFkZHJlc3NsaW5lMiA9IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yNC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzPy5zdGF0ZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKGZsYWcgPT0gMykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIucHJvdmlkZXJudW1iZXIpKVxyXG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI3Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI3LmNvZGUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuc2lnbmF0dXJlX2ltYWdlKSlcclxuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOC5jb2RlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5ocGlpKSkgeyBSeERldGFpbHMucHJhY3RpdGlvbmVyLmhwaWkgPSAwOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50KSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzMwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzMwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5maXJzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQubGFzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmRvYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5lbWFpbCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQudGltZXpvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNy5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcykpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LmFkZHJlc3NsaW5lMikpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDAubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDAuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnBvc3Rjb2RlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDEuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZSA9IHt9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ubnVtYmVyKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5udW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ucmVmZXJlbmNlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5yZWZlcmVuY2UgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8uZXhwaXJ5KSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5leHBpcnkgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5paGkpKSB7IFJ4RGV0YWlscy5wYXRpZW50LmloaSA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSEl2YWxpZGF0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciB3YXJuaW5nX21zZyA9ICcnO1xyXG4gICAgICBpZiAoIXZhbHVlLmlzX2hwaW9fdmFsaWQpIHtcclxuICAgICAgICB3YXJuaW5nX21zZyA9IHZhbHVlLmhwaW9fcmVzcG9uc2VfbXNnO1xyXG4gICAgICB9IGlmICghdmFsdWUuaXNfaHBpaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaHBpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaHBpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfSBpZiAoIXZhbHVlLmlzX2loaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaWhpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaWhpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh3YXJuaW5nX21zZykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHdhcm5pbmdfbXNnLCBcIndhcm5pbmdcIik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh2YWx1ZS5paGlfcmVzcG9uc2VfbXNnKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4odmFsdWUuaWhpX3Jlc3BvbnNlX21zZywgXCJzdWNjZXNzXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIkhJdmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSXNOdWxsT3JFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCBTdHJpbmcodmFsdWUpLnRyaW0oKSA9PT0gXCJcIikge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiSXNOdWxsT3JFbXB0eVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9udG9hc3QoZXJyb3JfbWVzc2FnZTogYW55LCBlcnJvcl9jb2RlPzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZXJyb3JSZXNwb25zZShlcnJvcl9jb2RlLCBlcnJvcl9tZXNzYWdlKTtcclxuICAgICAgaWYgKHRoaXMubWVzc2FnZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlICs9IFwiPGJyPlwiICsgZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvbnRvYXN0XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlcnJvclJlc3BvbnNlKGVycm9yX2NvZGU6IGFueSwgZXJyb3JfbWVzc2FnZTogYW55LCBzdWNjZXNzZmxhZzogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciByZXNwb25zZTogYW55ID0ge1xyXG4gICAgICAgIHN0YXR1czogc3VjY2Vzc2ZsYWcgPT0gdHJ1ZSA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIHJlc3BvbnNlOiB7XHJcbiAgICAgICAgICByZXNwb25zZV9jb2RlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfY29kZSA6IFwiXCIsXHJcbiAgICAgICAgICByZXNwb25zZV9tZXNzYWdlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfbWVzc2FnZSA6IFwiXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICBlcnJvcl9jb2RlOiBzdWNjZXNzZmxhZyA9PSBmYWxzZSA/IGVycm9yX2NvZGUgOiBcIlwiLFxyXG4gICAgICAgICAgZXJyb3JfbWVzc2FnZTogc3VjY2Vzc2ZsYWcgPT0gZmFsc2UgPyBlcnJvcl9tZXNzYWdlIDogXCJcIlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcbiAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImVycm9yUmVzcG9uc2VcIik7XHJcbiAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXVkaXRsb2codmFsdWU6IGFueSwgYXBpOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgIGlkZW50aWZpZXJWYWx1ZTogdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIsXHJcbiAgICAgICAgaWRlbnRpZmllclR5cGU6IHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSxcclxuICAgICAgICByZXF1ZXN0UGF5bG9hZDogdmFsdWUsXHJcbiAgICAgICAgcmVzcG9uc2VDb2RlOiBcIlwiLFxyXG4gICAgICAgIHJlc3BvbnNlUGF5bG9hZDogXCJcIixcclxuICAgICAgICBjcmVhdGVkQnk6IFwiVUktUnhcIixcclxuICAgICAgICBhcGk6IGFwaSxcclxuICAgICAgICByZXF1ZXN0VXJsOiB3aW5kb3cub3JpZ2luXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlzZXJ2aWNlLlBvc3QoZGF0YSwgY29uZmlnLkFVRElUX0xPRykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVyci5tZXNzYWdlLCBlcnIuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiYXVkaXRsb2dcIik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImF1ZGl0bG9nXCIpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8IS0tIDx1bCBjbGFzcz1cIm5vdGlmaWNhdGlvbnNcIiA+PC91bD5cclxuPGRpdiBbY2xhc3NdPVwieydsb2FkZXJfdmlzaWJsZSc6Y29tbW9uTG9hZGVyU2VydmljZXMuZnVsbFNjcmVlbkxvYWRlciwnbG9hZGVyX2hpZGRlbic6IWNvbW1vbkxvYWRlclNlcnZpY2VzLmZ1bGxTY3JlZW5Mb2FkZXJ9XCJcclxuICAgIGNsYXNzPVwic3BsYXNoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGF1c2VcIj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPiA8aW1nIGNsYXNzPVwic3Bpbm5lci1pbWdcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaG9sYS1oZWFsdGgtc3Bpbm5lci5wbmdcIiBhbHQ9XCJob2xhX2hlYWx0aFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+TG9hZGluZy4uLjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcnh3aWRnZXRzPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
871
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9sYS1yeC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ob2xhLXJ4L3NyYy9saWIvaG9sYS1yeC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBdUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU16RCxNQUFNLE9BQU8sTUFBTTtJQVFqQixZQUFvQixhQUE2QixFQUFTLG9CQUEwQyxFQUFVLFVBQXNCLEVBQVUsWUFBK0I7UUFBekosa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQVMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFOckssWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUM1QixRQUFRO0lBRVIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLGFBQWEs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QUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDM0M7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDNUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDOUM7aUNBQ0ksSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO2dDQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUI7b0NBQy9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQ0FDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs2QkFDdkM7aUNBQ0ksSUFB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QUc7Z0JBQ1QsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYTtnQkFDakQsY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCO2dCQUNwRCxjQUFjLEVBQUUsS0FBSztnQkFDckIsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixTQUFTLEVBQUUsT0FBTztnQkFDbEIsR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2FBQzFCLENBQUE7WUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsRSxtQkFBbUI7WUFDckIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3RGLENBQUMsQ0FBQyxDQUFBO1NBQ0g7UUFDRCxPQUFPLEVBQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ25GO0lBQ0gsQ0FBQzs7bUdBdnpCVSxNQUFNO3VGQUFOLE1BQU0sbUtDWm5CLGtqQkFZYzsyRkRBRCxNQUFNO2tCQUxsQixTQUFTOytCQUNFLFNBQVM7aU1BV3VCLE9BQU87c0JBQWhELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2VzLCBDb21tb25Mb2FkZXJTZXJ2aWNlcyB9IGZyb20gJy4vc2VydmljZXMvY29tbW9uJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjb25maWcsIGVycm9yY29uZmlnIH0gZnJvbSAnLi9lbnZpcm9ubWVudHMvY29uZmlnJztcclxuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaG9sYS1yeCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hvbGEtcnguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hvbGEtcnguY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb2xhUnggaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgdGVtcFJ4RGV0YWlsczogYW55O1xyXG4gIHByaXZhdGUgbWVzc2FnZSA9IFwiXCI7XHJcbiAgcHJpdmF0ZSB0ZW1wcnhpZCA9IFwiXCI7XHJcbiAgcHJpdmF0ZSB0ZW1wcmVmZXJyYWxpZCA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBzcGlubmVyZmxhZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKFwicnh3aWRnZXRzXCIsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tbW9uc2VydmljZTogQ29tbW9uU2VydmljZXMsIHB1YmxpYyBjb21tb25Mb2FkZXJTZXJ2aWNlczogQ29tbW9uTG9hZGVyU2VydmljZXMsIHByaXZhdGUgYXBpc2VydmljZTogQXBpU2VydmljZSwgcHJpdmF0ZSBDaGFuZ2VkZXRlY3Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7IHRoaXMuc2V0TG9naW50ZXJ2YWwoKTsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TG9naW50ZXJ2YWwoKSB7XHJcbiAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNvbW1vbnNlcnZpY2UubG9ndmFsdWUgIT0gdW5kZWZpbmVkICYmIHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSAhPSBudWxsICYmIHRoaXMuY29tbW9uc2VydmljZS5sb2d2YWx1ZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5hcGlzZXJ2aWNlLlBvc3QodGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlLCBjb25maWcuQ1JFQVRFX0xPR19FWENFUFRJT04pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3ZhbHVlID0gbnVsbDtcclxuICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0sIDUwMDAwKTtcclxuICB9XHJcblxyXG5cclxuICBpbml0KGNsaWVudGlkOiBzdHJpbmcsIGNsaWVudHNlY3JldDogc3RyaW5nLCBzYW5kYm94OiBib29sZWFuLCBmbGFnPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICghdGhpcy5zcGlubmVyZmxhZykge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiSW5pdCBBdXRoZW50aWNhdGlvblwiO1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gXCJjbGllbnRpZFwiXHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXJUeXBlID0gXCJjbGllbnRpZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgIGNsaWVudElkOiBjbGllbnRpZCxcclxuICAgICAgICBjbGllbnRTZWNyZXQ6IGNsaWVudHNlY3JldFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zYW5kYm94ID0gc2FuZGJveDtcclxuICAgICAgaWYgKCFzYW5kYm94KSB7XHJcbiAgICAgICAgZW52aXJvbm1lbnQuYXBpRW5kcG9pbnQgPSBjb25maWcuTElWRV9VUkw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZW52aXJvbm1lbnQuYXBpRW5kcG9pbnQgPSBjb25maWcuU1RBR0lOR19VUkw7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpO1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGlzZXJ2aWNlLlBvc3QoZGF0YSwgXCJhdXRoZW50aWNhdGVcIikucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9rZW5FeHBpcnknLCBKU09OLnN0cmluZ2lmeShyZXMuZXhwaXJlc2luKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4gPSByZXMuYXV0aC5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VGltZXIoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5OZXdSeCh0aGlzLnRlbXBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuRWRpdFJ4KHRoaXMudGVtcFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnID09IDMpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5SZWZlcnJhbCh0aGlzLnRlbXBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFJ4KHRoaXMudGVtcHJ4aWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSA1KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZFJlZmVycmFsKHRoaXMudGVtcHJlZmVycmFsaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXMuZmxhZykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoXCJcIiwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3Bpbm5lcmZsYWcgJiYgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuKVxyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IpO1xyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0ZUJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgICB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwaW5uZXJmbGFnICYmIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbilcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzEuY29kZSk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKHRydWUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImluaXRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuYXV0aGVudGljYXRlQmxvY2sgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTtcclxuICAgICAgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUodHJ1ZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiaW5pdFwiKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGltZXIoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICB2YXIgZXhwaXJ5ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW5FeHBpcnknKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGV4cGlyeSkgJiYgd2luZG93Lm5hdmlnYXRvci5vbkxpbmUgJiYgIXRoaXMuYXV0aGVudGljYXRlQmxvY2sgJiYgKG5ldyBEYXRlKG5ldyBEYXRlKGV4cGlyeSkuc2V0TWludXRlcyhuZXcgRGF0ZShleHBpcnkpLmdldE1pbnV0ZXMoKSAtIDEpKSA8PSBuZXcgRGF0ZSgpIHx8IHRoaXMuYXBpc2VydmljZS51bkF1dGhvcml6ZWRGbGFnKSkge1xyXG4gICAgICAgICAgdGhpcy5hcGlzZXJ2aWNlLnVuQXV0aG9yaXplZEZsYWcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lcmZsYWcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBlcnIubWVzc2FnZSwgZXJyLnN0YWNrLCBcIkhvbGFSeFwiLCBcInNldFRpbWVyXCIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZSh0cnVlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJzZXRUaW1lclwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5OZXdSeChSeERldGFpbHM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiTmV3IFJ4XCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMVwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDEpO1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHRoaXMubWVzc2FnZSwgXCJlcnJvclwiLCBcIlwiLCA3MDAwKTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5Qb3N0KFJ4RGV0YWlscywgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50ZW1wUnhEZXRhaWxzID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jb25zdWx0YXRpb25JZCA9IFJ4RGV0YWlscy5jb25zdWx0YXRpb25pZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzID0gcmVzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGF0aWVudERldGFpbHMgPSByZXMucGF0aWVudERldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZmFjaWxpdHlEZXRhaWxzID0gcmVzLmZhY2lsaXR5RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQYXRpZW50SWQgPSByZXMudmVuZG9yUGF0aWVudElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvckZhY2lsaXR5SWQgPSByZXMudmVuZG9yRmFjaWxpdHlJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQaHlzaWNpYW5JZCA9IHJlcy52ZW5kb3JQaHlzaWNpYW5JZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52aXNpdElkID0gcmVzLnZpc2l0SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY3JlYXRlUGF0aWVudFJlc3BvbnNlID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmVkaXRQcmVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5waGFybWFjeUVtYWlsID0gIXRoaXMuSXNOdWxsT3JFbXB0eShyZXMucGhhcm1hY3lFbWFpbCkgPyByZXMucGhhcm1hY3lFbWFpbCA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuaXNTY3JpcHRUb1BoYXJtYWN5ID0gKCF0aGlzLklzTnVsbE9yRW1wdHkocmVzLmlzU2NyaXB0VG9QaGFybWFjeSkgJiYgcmVzLmlzU2NyaXB0VG9QaGFybWFjeSkgIT0gMCA/IHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kgOiAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmlzTWVkaWNpbmVSZXN0cmljdCA9ICF0aGlzLmNvbW1vbnNlcnZpY2UuSXNOdWxsT3JFbXB0eShyZXMuaXNSZXN0cmljdGVkTWVkaWNpbmUpID8gcmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscykgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscy5lUHJlc2NyaXB0aW9uQWxsb3dlZCkgJiYgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQgPT0gMClcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ISXZhbGlkYXRpb24ocmVzKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbW1vbnNlcnZpY2Uub3BlblJ4V2lkZ2V0KHRoaXMuY29udGVudCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHJlcy5yZXNwb25zZV9tZXNzYWdlLCBcImVycm9yXCIsIHJlcy5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuTmV3UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLCBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NS5tZXNzYWdlICsgZXJyb3IsIFwiZXJyb3JcIiwgZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3IubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5OZXdSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3Blbk5ld1J4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuRWRpdFJ4KFJ4RGV0YWlsczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMucnhJbml0TG9hZGVySGlkZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ3RyYW5zYWN0aW9uID0gXCJFZGl0IFJ4XCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSA/ICF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpID8gUnhEZXRhaWxzLnByYWN0aXRpb25lci5lbWFpbCA6IFwiXCIgOiBcIlwiIDogXCJcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicHJhY3RpdGlvbmVyIGVtYWlsXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICBSeERldGFpbHMudHlwZSA9IFwiMVwiO1xyXG4gICAgICBSeERldGFpbHMuY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHRoaXMudGVtcFJ4RGV0YWlscyA9IFJ4RGV0YWlscztcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkoUnhEZXRhaWxzKSwgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbihSeERldGFpbHMsIDIpO1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHRoaXMubWVzc2FnZSwgXCJlcnJvclwiLCBcIlwiLCA3MDAwKTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc2VydmljZS5Qb3N0KFJ4RGV0YWlscywgY29uZmlnLkNSRUFURV9DT05TVUxUQVRJT04pLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50ZW1wUnhEZXRhaWxzID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2VfY29kZSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscyA9IHJlcy5waHlzaWNpYW5EZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnBhdGllbnREZXRhaWxzID0gcmVzLnBhdGllbnREZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmZhY2lsaXR5RGV0YWlscyA9IHJlcy5mYWNpbGl0eURldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yUGF0aWVudElkID0gcmVzLnZlbmRvclBhdGllbnRJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JGYWNpbGl0eUlkID0gcmVzLnZlbmRvckZhY2lsaXR5SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmVuZG9yUGh5c2ljaWFuSWQgPSByZXMudmVuZG9yUGh5c2ljaWFuSWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudmlzaXRJZCA9IHJlcy52aXNpdElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmlzTWVkaWNpbmVSZXN0cmljdCA9ICF0aGlzLmNvbW1vbnNlcnZpY2UuSXNOdWxsT3JFbXB0eShyZXMuaXNSZXN0cmljdGVkTWVkaWNpbmUpID8gcmVzLmlzUmVzdHJpY3RlZE1lZGljaW5lIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGhhcm1hY3lFbWFpbCA9ICF0aGlzLklzTnVsbE9yRW1wdHkocmVzLnBoYXJtYWN5RW1haWwpID8gcmVzLnBoYXJtYWN5RW1haWwgOiBcIlwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmlzU2NyaXB0VG9QaGFybWFjeSA9ICghdGhpcy5Jc051bGxPckVtcHR5KHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kpICYmIHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kpICE9IDAgPyByZXMuaXNTY3JpcHRUb1BoYXJtYWN5IDogMDtcclxuICAgICAgICAgICAgICAgIGlmIChSeERldGFpbHMucnhpZCAhPSBudWxsICYmIFJ4RGV0YWlscy5yeGlkICE9IFwiXCIgJiYgUnhEZXRhaWxzLnJ4aWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChyZXMucnhEZXRhaWxzICE9IG51bGwgJiYgcmVzLnJ4RGV0YWlscyAhPSBcIlwiICYmIHJlcy5yeERldGFpbHMgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLmVkaXRQcmVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5yeERldGFpbHMgPSByZXMucnhEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5yeGlkID0gcmVzLnJ4RGV0YWlscy5yeElkO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl80Ni5tZXNzYWdlLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzQ2LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jcmVhdGVQYXRpZW50UmVzcG9uc2UgPSByZXM7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscykgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UucGh5c2ljaWFuRGV0YWlscy5lUHJlc2NyaXB0aW9uQWxsb3dlZCkgJiYgdGhpcy5jb21tb25zZXJ2aWNlLnBoeXNpY2lhbkRldGFpbHMuZVByZXNjcmlwdGlvbkFsbG93ZWQgPT0gMClcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ISXZhbGlkYXRpb24ocmVzKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbW1vbnNlcnZpY2Uub3BlblJ4V2lkZ2V0KHRoaXMuY29udGVudCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlbkVkaXRSeFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzLmVycm9yX2NvZGUsIHJlcy5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJvcGVuRWRpdFJ4XCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzEuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4OiBhbnkpIHtcclxuICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIm9wZW5FZGl0UnhcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5SZWZlcnJhbChSeERldGFpbHM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiU2VuZCBSZWZlcnJhbFwiO1xyXG4gICAgdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIgPSAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscykgPyAhdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpID8gIXRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmVtYWlsKSA/IFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwgOiBcIlwiIDogXCJcIiA6IFwiXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcInByYWN0aXRpb25lciBlbWFpbFwiO1xyXG4gICAgdHJ5IHtcclxuICAgICAgUnhEZXRhaWxzLnR5cGUgPSBcIjJcIjtcclxuICAgICAgUnhEZXRhaWxzLmNsaWVudElkID0gdGhpcy5jb21tb25zZXJ2aWNlLmdldENyZWRldGlhbCgpO1xyXG4gICAgICB0aGlzLnRlbXBSeERldGFpbHMgPSBSeERldGFpbHM7XHJcbiAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bG9nKEpTT04uc3RyaW5naWZ5KFJ4RGV0YWlscyksIGNvbmZpZy5DUkVBVEVfQ09OU1VMVEFUSU9OKTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb24oUnhEZXRhaWxzLCAzKTtcclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNvbW1vbnNlcnZpY2UuY2xvc2VFcnJvclJlc3BvbnNlO1xyXG4gICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCB0aGlzLm1lc3NhZ2UsIHRoaXMubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4odGhpcy5tZXNzYWdlLCBcImVycm9yXCIsIFwiXCIsIDcwMDApO1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5jbG9zZUVycm9yUmVzcG9uc2UgPSBudWxsO1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIHJldHVybiBvZihyZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQodHJ1ZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGlzZXJ2aWNlLlBvc3QoUnhEZXRhaWxzLCBjb25maWcuQ1JFQVRFX0NPTlNVTFRBVElPTikucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIFwiXCIsIFwiXCIsIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5waHlzaWNpYW5EZXRhaWxzID0gcmVzLnBoeXNpY2lhbkRldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UucGF0aWVudERldGFpbHMgPSByZXMucGF0aWVudERldGFpbHM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZmFjaWxpdHlEZXRhaWxzID0gcmVzLmZhY2lsaXR5RGV0YWlscztcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQYXRpZW50SWQgPSByZXMudmVuZG9yUGF0aWVudElkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnZlbmRvckZhY2lsaXR5SWQgPSByZXMudmVuZG9yRmFjaWxpdHlJZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52ZW5kb3JQaHlzaWNpYW5JZCA9IHJlcy52ZW5kb3JQaHlzaWNpYW5JZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS52aXNpdElkID0gcmVzLnZpc2l0SWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuaXNNZWRpY2luZVJlc3RyaWN0ID0gIXRoaXMuY29tbW9uc2VydmljZS5Jc051bGxPckVtcHR5KHJlcy5pc1Jlc3RyaWN0ZWRNZWRpY2luZSkgPyByZXMuaXNSZXN0cmljdGVkTWVkaWNpbmUgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5waGFybWFjeUVtYWlsID0gIXRoaXMuSXNOdWxsT3JFbXB0eShyZXMucGhhcm1hY3lFbWFpbCkgPyByZXMucGhhcm1hY3lFbWFpbCA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuaXNTY3JpcHRUb1BoYXJtYWN5ID0gKCF0aGlzLklzTnVsbE9yRW1wdHkocmVzLmlzU2NyaXB0VG9QaGFybWFjeSkgJiYgcmVzLmlzU2NyaXB0VG9QaGFybWFjeSkgIT0gMCA/IHJlcy5pc1NjcmlwdFRvUGhhcm1hY3kgOiAwO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9uc2VydmljZS5QYXRob2xvZ3kodGhpcy5jb250ZW50KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlcy5yZXNwb25zZV9tZXNzYWdlLCByZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJvcGVuUmVmZXJyYWxcIiwgUnhEZXRhaWxzKTsgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXMucmVzcG9uc2VfbWVzc2FnZSwgXCJlcnJvclwiLCByZXMuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlcy5lcnJvcl9jb2RlLCByZXMucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXMuZXJyb3JfY29kZSwgcmVzLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHRoaXMubWVzc2FnZSwgZXJyb3Iuc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgMyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcIm9wZW5SZWZlcnJhbFwiLCBSeERldGFpbHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwib3BlblJlZmVycmFsXCIsIFJ4RGV0YWlscyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFJ4KFJ4SUQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLnJ4SW5pdExvYWRlckhpZGRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2d0cmFuc2FjdGlvbiA9IFwiRG93bmxvYWQgUnhcIjtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyID0gUnhJRDtcclxuICAgIHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSA9IFwicnhpZFwiO1xyXG4gICAgdmFyIHBheWxvYWQgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudGVtcHJ4aWQgPSBSeElEO1xyXG4gICAgICB2YXIgY2xpZW50SWQgPSB0aGlzLmNvbW1vbnNlcnZpY2UuZ2V0Q3JlZGV0aWFsKCk7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHJ4aWQ6IFJ4SUQsXHJcbiAgICAgICAgdHlwZTogXCIwXCIsXHJcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudElkXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRsb2coSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksIGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyBSeElEICsgXCImdHlwZT0wJmNsaWVudElkPVwiICsgY2xpZW50SWQpO1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhJRCkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl80Ni5jb2RlKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUlhfUFJJTlQgKyBSeElEICsgXCImdHlwZT0wJmNsaWVudElkPVwiICsgY2xpZW50SWQpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBcIlwiLCBcIlwiLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UsICdlcnJvcicsIGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlX2NvZGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25Eb3dubG9hZChyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKFwiXCIsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihyZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCAnZXJyb3InLCByZXNwb25zZS5lcnJvcl9jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UocmVzcG9uc2UuZXJyb3JfY29kZSwgcmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSeFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSwgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yLCBcImVycm9yXCIsIGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjUuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjUubWVzc2FnZSArIGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3J4Q3JlZGVudGlhbHMnKSBhcyBhbnkpO1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudElkKSAmJiAhdGhpcy5Jc051bGxPckVtcHR5KGRhdGEuY2xpZW50U2VjcmV0KSAmJiB0aGlzLklzTnVsbE9yRW1wdHkodGhpcy5jb21tb25zZXJ2aWNlLkhvbGFSeFRva2VuKSkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KHRydWUpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0KGRhdGEuY2xpZW50SWQsIGRhdGEuY2xpZW50U2VjcmV0LCB0aGlzLmNvbW1vbnNlcnZpY2Uuc2FuZGJveCwgNCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMS5tZXNzYWdlLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUnhcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl8xLmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBleC5tZXNzYWdlLCBleC5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJ4XCIsIHBheWxvYWQpO1xyXG4gICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY0LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY0Lm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRSZWZlcnJhbChSZWZlcnJhbElEOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5yeEluaXRMb2FkZXJIaWRkZGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9ndHJhbnNhY3Rpb24gPSBcIkRvd25sb2FkIFJlZmVycmFsXCI7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllciA9IFJlZmVycmFsSUQ7XHJcbiAgICB0aGlzLmNvbW1vbnNlcnZpY2UubG9naWRlbnRpZmllclR5cGUgPSBcInJlZmVycmFsIGlkXCI7XHJcbiAgICB2YXIgcGF5bG9hZCA9IHt9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy50ZW1wcmVmZXJyYWxpZCA9IFJlZmVycmFsSUQ7XHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcmVxdWVzdF90eXBlOiBcInBhcmFtZXRlclwiLFxyXG4gICAgICAgIHJlZmVycmFsSWQ6IFJlZmVycmFsSURcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh0aGlzLmNvbW1vbnNlcnZpY2UuSG9sYVJ4VG9rZW4pKSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdGxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkKSwgY29uZmlnLlBIWVNJQ0lBTi5SRUZFUlJBTF9QUklOVCArIFJlZmVycmFsSUQpO1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUmVmZXJyYWxJRCkpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4oZXJyb3Jjb25maWcuZXJyb3JfNDMubWVzc2FnZSwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl80My5jb2RlKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNDMuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNDMubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNlcnZpY2UuR2V0KGNvbmZpZy5QSFlTSUNJQU4uUkVGRVJSQUxfUFJJTlQgKyBSZWZlcnJhbElEKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShyZXNwb25zZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgXCJcIiwgXCJcIiwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnRvYXN0b3BlbihlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlLCAnZXJyb3InLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXNwb25zZV9jb2RlID09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uRG93bmxvYWQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShcIlwiLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlLCB0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UsIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ2Vycm9yJywgcmVzcG9uc2UuZXJyb3JfY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKHJlc3BvbnNlLmVycm9yX2NvZGUsIHJlc3BvbnNlLnJlc3BvbnNlX21lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudChmYWxzZSk7IHRoaXMuQ2hhbmdlZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImRvd25sb2FkUmVmZXJyYWxcIiwgcGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShyZXNwb25zZS5lcnJvcl9jb2RlLCByZXNwb25zZS5yZXNwb25zZV9tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSksIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25Mb2FkZXJTZXJ2aWNlcy5hZGRMb2FkZXJFbGVtZW50KGZhbHNlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvciwgXCJlcnJvclwiLCBlcnJvcmNvbmZpZy5lcnJvcl82NS5jb2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvci5tZXNzYWdlLCBlcnJvci5zdGFjaywgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlKGVycm9yY29uZmlnLmVycm9yXzY1LmNvZGUsIGVycm9yY29uZmlnLmVycm9yXzY1Lm1lc3NhZ2UgKyBlcnJvcik7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyeENyZWRlbnRpYWxzJykgYXMgYW55KTtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmICF0aGlzLklzTnVsbE9yRW1wdHkoZGF0YS5jbGllbnRJZCkgJiYgIXRoaXMuSXNOdWxsT3JFbXB0eShkYXRhLmNsaWVudFNlY3JldCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KHRoaXMuY29tbW9uc2VydmljZS5Ib2xhUnhUb2tlbikpIHtcclxuICAgICAgICAgIHRoaXMuY29tbW9uTG9hZGVyU2VydmljZXMuYWRkTG9hZGVyRWxlbWVudCh0cnVlKTsgdGhpcy5DaGFuZ2VkZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdChkYXRhLmNsaWVudElkLCBkYXRhLmNsaWVudFNlY3JldCwgdGhpcy5jb21tb25zZXJ2aWNlLnNhbmRib3gsIDUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25zZXJ2aWNlLnNldGxvZ3ZhbHVlKGZhbHNlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEubWVzc2FnZSwgXCJIb2xhUnhcIiwgXCJkb3dubG9hZFJlZmVycmFsXCIsIHBheWxvYWQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2UoZXJyb3Jjb25maWcuZXJyb3JfMS5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl8xLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiZG93bmxvYWRSZWZlcnJhbFwiLCBwYXlsb2FkKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZShlcnJvcmNvbmZpZy5lcnJvcl82NC5jb2RlLCBlcnJvcmNvbmZpZy5lcnJvcl82NC5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tbW9uRG93bmxvYWQocmVzcG9uc2U6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6bm9uZTsnKTtcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICAgICAgYS5kb3dubG9hZCA9IHJlc3BvbnNlLmZpbGVOYW1lO1xyXG4gICAgICBhLmhyZWYgPSBcImRhdGE6YXBwbGljYXRpb24vcGRmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiICsgcmVzcG9uc2UuZmlsZTtcclxuICAgICAgYS5jbGljaygpO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgICB0aGlzLmNvbW1vbkxvYWRlclNlcnZpY2VzLmFkZExvYWRlckVsZW1lbnQoZmFsc2UpOyB0aGlzLkNoYW5nZWRldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4ocmVzcG9uc2UucmVzcG9uc2VfbWVzc2FnZSwgJ3N1Y2Nlc3MnKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiY29tbW9uRG93bmxvYWRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRpb24oUnhEZXRhaWxzOiBhbnksIGZsYWc6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzKSkge1xyXG4gICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLmNvbnN1bHRhdGlvbmlkKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZWlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlKSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zLmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXJpZCkgJiYgdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMy5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudGlkKSAmJiB0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQpKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOS5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZsYWcgPT0gMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucnhpZCkpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDYuY29kZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmbGFnID09IDEpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5yeGlkKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucnhpZCA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZSkpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmlkKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl80LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UubmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzUubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmVtYWlsKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl82LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UucGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl83Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LmFkZHJlc3NsaW5lMSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzcxLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzcxLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN1YnVyYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzEwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzEwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpY2UuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aWNlLmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGljZS5ocGlvKSkgeyBSeERldGFpbHMucHJhY3RpY2UuaHBpbyA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lcikpIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmZpcnN0bmFtZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzE1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzE1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucHJhY3RpdGlvbmVyLmxhc3RuYW1lKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTYubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTYuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZG9iKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMTgubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMTguY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuZW1haWwpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8xOS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8xOS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yMC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yMC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzID0ge307XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNzIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNzIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uYWRkcmVzc2xpbmUyKSlcclxuICAgICAgICAgICAgUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzLmFkZHJlc3NsaW5lMiA9IFwiXCI7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMjMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMjMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuYWRkcmVzcz8ucG9zdGNvZGUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yNC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yNC5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5hZGRyZXNzPy5zdGF0ZSkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKGZsYWcgPT0gMykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIucHJvdmlkZXJudW1iZXIpKVxyXG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzI3Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzI3LmNvZGUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wcmFjdGl0aW9uZXIuc2lnbmF0dXJlX2ltYWdlKSlcclxuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8yOC5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8yOC5jb2RlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnByYWN0aXRpb25lci5ocGlpKSkgeyBSeERldGFpbHMucHJhY3RpdGlvbmVyLmhwaWkgPSAwOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50KSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5pZCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzMwLm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzMwLmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5maXJzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMS5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMS5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQubGFzdG5hbWUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zMi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zMi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuZ2VuZGVyKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfMzMubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfMzMuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmRvYikpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM0Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM0LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5lbWFpbCkpXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbnRvYXN0KGVycm9yY29uZmlnLmVycm9yXzM1Lm1lc3NhZ2UsIGVycm9yY29uZmlnLmVycm9yXzM1LmNvZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tb2JpbGVfcGhvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNi5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNi5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQudGltZXpvbmUpKVxyXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb250b2FzdChlcnJvcmNvbmZpZy5lcnJvcl8zNy5tZXNzYWdlLCBlcnJvcmNvbmZpZy5lcnJvcl8zNy5jb2RlKTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcykpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MgPSB7fTtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uYWRkcmVzc2xpbmUxKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjcubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjcuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LmFkZHJlc3NsaW5lMikpXHJcbiAgICAgICAgICAgIFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3MuYWRkcmVzc2xpbmUyID0gXCJcIjtcclxuICAgICAgICAgIGlmICh0aGlzLklzTnVsbE9yRW1wdHkoUnhEZXRhaWxzLnBhdGllbnQuYWRkcmVzcz8uc3VidXJiKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDAubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDAuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnBvc3Rjb2RlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDEubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDEuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50LmFkZHJlc3M/LnN0YXRlKSlcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNDIubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNDIuY29kZSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5Jc051bGxPckVtcHR5KFJ4RGV0YWlscy5wYXRpZW50Lm1lZGljYXJlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZSA9IHt9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ubnVtYmVyKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5udW1iZXIgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8ucmVmZXJlbmNlKSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5yZWZlcmVuY2UgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZT8uZXhwaXJ5KSkge1xyXG4gICAgICAgICAgICBSeERldGFpbHMucGF0aWVudC5tZWRpY2FyZS5leHBpcnkgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuSXNOdWxsT3JFbXB0eShSeERldGFpbHMucGF0aWVudC5paGkpKSB7IFJ4RGV0YWlscy5wYXRpZW50LmloaSA9IDA7IH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9udG9hc3QoZXJyb3Jjb25maWcuZXJyb3JfNjQubWVzc2FnZSwgZXJyb3Jjb25maWcuZXJyb3JfNjQuY29kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSEl2YWxpZGF0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciB3YXJuaW5nX21zZyA9ICcnO1xyXG4gICAgICBpZiAoIXZhbHVlLmlzX2hwaW9fdmFsaWQpIHtcclxuICAgICAgICB3YXJuaW5nX21zZyA9IHZhbHVlLmhwaW9fcmVzcG9uc2VfbXNnO1xyXG4gICAgICB9IGlmICghdmFsdWUuaXNfaHBpaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaHBpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaHBpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfSBpZiAoIXZhbHVlLmlzX2loaV92YWxpZCkge1xyXG4gICAgICAgIHdhcm5pbmdfbXNnICs9IHdhcm5pbmdfbXNnID09ICcnID8gdmFsdWUuaWhpX3Jlc3BvbnNlX21zZyA6IFwiPGJyPlwiICsgdmFsdWUuaWhpX3Jlc3BvbnNlX21zZztcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh3YXJuaW5nX21zZykpIHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2UudG9hc3RvcGVuKHdhcm5pbmdfbXNnLCBcIndhcm5pbmdcIik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIXRoaXMuSXNOdWxsT3JFbXB0eSh2YWx1ZS5paGlfcmVzcG9uc2VfbXNnKSkge1xyXG4gICAgICAgIHRoaXMuY29tbW9uc2VydmljZS50b2FzdG9wZW4odmFsdWUuaWhpX3Jlc3BvbnNlX21zZywgXCJzdWNjZXNzXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcIkhJdmFsaWRhdGlvblwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSXNOdWxsT3JFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCBTdHJpbmcodmFsdWUpLnRyaW0oKSA9PT0gXCJcIikge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwiSXNOdWxsT3JFbXB0eVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0aW9udG9hc3QoZXJyb3JfbWVzc2FnZTogYW55LCBlcnJvcl9jb2RlPzogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2UuZXJyb3JSZXNwb25zZShlcnJvcl9jb2RlLCBlcnJvcl9tZXNzYWdlKTtcclxuICAgICAgaWYgKHRoaXMubWVzc2FnZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlICs9IFwiPGJyPlwiICsgZXJyb3JfY29kZSArIFwiOiBcIiArIGVycm9yX21lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleDogYW55KSB7XHJcbiAgICAgIHRoaXMuY29tbW9uc2VydmljZS5zZXRsb2d2YWx1ZShmYWxzZSwgZXgubWVzc2FnZSwgZXguc3RhY2ssIFwiSG9sYVJ4XCIsIFwidmFsaWRhdGlvbnRvYXN0XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlcnJvclJlc3BvbnNlKGVycm9yX2NvZGU6IGFueSwgZXJyb3JfbWVzc2FnZTogYW55LCBzdWNjZXNzZmxhZzogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciByZXNwb25zZTogYW55ID0ge1xyXG4gICAgICAgIHN0YXR1czogc3VjY2Vzc2ZsYWcgPT0gdHJ1ZSA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIHJlc3BvbnNlOiB7XHJcbiAgICAgICAgICByZXNwb25zZV9jb2RlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfY29kZSA6IFwiXCIsXHJcbiAgICAgICAgICByZXNwb25zZV9tZXNzYWdlOiBzdWNjZXNzZmxhZyA9PSB0cnVlID8gZXJyb3JfbWVzc2FnZSA6IFwiXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICBlcnJvcl9jb2RlOiBzdWNjZXNzZmxhZyA9PSBmYWxzZSA/IGVycm9yX2NvZGUgOiBcIlwiLFxyXG4gICAgICAgICAgZXJyb3JfbWVzc2FnZTogc3VjY2Vzc2ZsYWcgPT0gZmFsc2UgPyBlcnJvcl9tZXNzYWdlIDogXCJcIlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XHJcbiAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImVycm9yUmVzcG9uc2VcIik7XHJcbiAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXVkaXRsb2codmFsdWU6IGFueSwgYXBpOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0ge1xyXG4gICAgICAgIGlkZW50aWZpZXJWYWx1ZTogdGhpcy5jb21tb25zZXJ2aWNlLmxvZ2lkZW50aWZpZXIsXHJcbiAgICAgICAgaWRlbnRpZmllclR5cGU6IHRoaXMuY29tbW9uc2VydmljZS5sb2dpZGVudGlmaWVyVHlwZSxcclxuICAgICAgICByZXF1ZXN0UGF5bG9hZDogdmFsdWUsXHJcbiAgICAgICAgcmVzcG9uc2VDb2RlOiBcIlwiLFxyXG4gICAgICAgIHJlc3BvbnNlUGF5bG9hZDogXCJcIixcclxuICAgICAgICBjcmVhdGVkQnk6IFwiVUktUnhcIixcclxuICAgICAgICBhcGk6IGFwaSxcclxuICAgICAgICByZXF1ZXN0VXJsOiB3aW5kb3cub3JpZ2luXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcGlzZXJ2aWNlLlBvc3QoZGF0YSwgY29uZmlnLkFVRElUX0xPRykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGVyci5tZXNzYWdlLCBlcnIuc3RhY2ssIFwiSG9sYVJ4XCIsIFwiYXVkaXRsb2dcIik7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXg6IGFueSkge1xyXG4gICAgICB0aGlzLmNvbW1vbnNlcnZpY2Uuc2V0bG9ndmFsdWUoZmFsc2UsIGV4Lm1lc3NhZ2UsIGV4LnN0YWNrLCBcIkhvbGFSeFwiLCBcImF1ZGl0bG9nXCIpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8IS0tIDx1bCBjbGFzcz1cIm5vdGlmaWNhdGlvbnNcIiA+PC91bD5cclxuPGRpdiBbY2xhc3NdPVwieydsb2FkZXJfdmlzaWJsZSc6Y29tbW9uTG9hZGVyU2VydmljZXMuZnVsbFNjcmVlbkxvYWRlciwnbG9hZGVyX2hpZGRlbic6IWNvbW1vbkxvYWRlclNlcnZpY2VzLmZ1bGxTY3JlZW5Mb2FkZXJ9XCJcclxuICAgIGNsYXNzPVwic3BsYXNoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGF1c2VcIj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPiA8aW1nIGNsYXNzPVwic3Bpbm5lci1pbWdcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9wYXNzZXRzLmhvbGEuaGVhbHRoL3J4LXdpZGdldHMvcngtaG9sYS1oZWFsdGgtc3Bpbm5lci5wbmdcIiBhbHQ9XCJob2xhX2hlYWx0aFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+TG9hZGluZy4uLjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcnh3aWRnZXRzPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|