vcomply-workflow-engine 2.6.42 → 2.6.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/vcomply-workflow-engine.umd.js +55 -48
- package/bundles/vcomply-workflow-engine.umd.js.map +1 -1
- package/esm2015/lib/add-multiple-responsibility/add-multiple-responsibility.component.js +3 -3
- package/esm2015/lib/add-multiple-risk/add-multiple-risk.component.js +2 -2
- package/esm2015/lib/create-documents/create-documents.component.js +5 -5
- package/esm2015/lib/log-an-issue/log-an-issue.component.js +3 -3
- package/esm2015/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.js +3 -3
- package/esm2015/lib/sharedComponents/assessment-editor/components/move/move.component.js +3 -3
- package/esm2015/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.js +2 -2
- package/esm2015/lib/sharedComponents/document-section/document-section.component.js +5 -5
- package/esm2015/lib/sharedComponents/frequency/frequency-container/frequency-container.component.js +5 -5
- package/esm2015/lib/sharedComponents/group-users-list/group-users-list.component.js +2 -2
- package/esm2015/lib/sharedComponents/review-frequency/review-frequency.component.js +2 -2
- package/esm2015/lib/ui-kit/snack-bar/snack-bar.component.js +14 -8
- package/esm2015/lib/ui-kit/snack-bar/snack-bar.component.ngfactory.js +3 -3
- package/esm2015/lib/ui-kit/snack-bar/snack-bar.service.js +3 -3
- package/esm2015/lib/workflow-assessment/workflow-assessment.component.js +4 -4
- package/esm2015/lib/workflow-compliance/workflow-compliance.component.js +3 -3
- package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.js +3 -3
- package/esm2015/lib/workflow-policy/workflow-policy.component.js +6 -6
- package/esm2015/lib/workflow-risk/workflow-risk.component.js +5 -4
- package/esm2015/lib/workflow-risk/workflow-risk.component.ngfactory.js +2 -2
- package/fesm2015/vcomply-workflow-engine.js +55 -48
- package/fesm2015/vcomply-workflow-engine.js.map +1 -1
- package/lib/ui-kit/snack-bar/snack-bar.component.d.ts +2 -0
- package/lib/ui-kit/snack-bar/snack-bar.service.d.ts +1 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -0
- package/package.json +1 -1
- package/vcomply-workflow-engine.metadata.json +1 -1
|
@@ -662,7 +662,7 @@ export class LogAnIssueComponent {
|
|
|
662
662
|
}, error => {
|
|
663
663
|
this.loader = false;
|
|
664
664
|
this.uiKitService.isLoader = false;
|
|
665
|
-
this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?');
|
|
665
|
+
this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?', 'alert');
|
|
666
666
|
});
|
|
667
667
|
}
|
|
668
668
|
else if (this.mode === 'CREATE' || this.mode === '' || !this.mode) {
|
|
@@ -675,7 +675,7 @@ export class LogAnIssueComponent {
|
|
|
675
675
|
}, error => {
|
|
676
676
|
this.loader = false;
|
|
677
677
|
this.uiKitService.isLoader = false;
|
|
678
|
-
this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?');
|
|
678
|
+
this.snackBar.show('OOPS! Something went wrong and the page could not be loaded. Could you please try one more time?', 'alert');
|
|
679
679
|
});
|
|
680
680
|
}
|
|
681
681
|
}
|
|
@@ -907,4 +907,4 @@ LogAnIssueComponent.propDecorators = {
|
|
|
907
907
|
disconnectRefresh: [{ type: Output }],
|
|
908
908
|
datePicker: [{ type: ViewChild, args: ['datePicker',] }]
|
|
909
909
|
};
|
|
910
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWFuLWlzc3VlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2xvZy1hbi1pc3N1ZS9sb2ctYW4taXNzdWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUE0QixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2SSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFTakMsTUFBTSxPQUFPLG1CQUFtQjtJQWlMOUIsWUFBb0IsVUFBMkIsRUFBVSxXQUF3QixFQUFVLFlBQTBCLEVBQVUsUUFBeUIsRUFBVSxrQkFBcUM7UUFBbkwsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBOUs5TCxzQkFBaUIsR0FBRztZQUMzQixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsSUFBSSxFQUFDLElBQUk7WUFDVCxzQkFBc0IsRUFBRSxFQUFFO1NBQzNCLENBQUM7UUFDTyxpQkFBWSxHQUFFO1lBQ3JCLFdB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LEVBQUUsQ0FBQztTQUN6QztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7U0FDNUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLElBQUksTUFBTSxFQUFFO1lBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1NBQzVDO0lBQ0gsQ0FBQzs7O1lBajRCQSxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIseTg1Q0FBNEM7O2FBRTdDOzs7WUFmUSxlQUFlO1lBRGYsV0FBVztZQU1YLFlBQVk7WUFDWixlQUFlO1lBTHNFLGlCQUFpQjs7O3lCQWdCNUcsS0FBSztzQkFDTCxLQUFLO2dDQUNMLEtBQUs7MkJBTUwsS0FBSzttQkFNTCxLQUFLO3FCQUNMLEtBQUs7bUNBQ0wsS0FBSzs0QkFDTCxNQUFNOzZCQUNOLE1BQU07NEJBQ04sTUFBTTt5QkFDTixNQUFNO2dDQUNOLE1BQU07eUJBRU4sU0FBUyxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dJc3N1ZVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9sb2ctaXNzdWUuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICd2Y29tcGx5LWVkaXRvcic7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgSXNzdWVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pc3N1ZS1kYXRhJztcclxuaW1wb3J0IHsgVEhJU19FWFBSIH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXIvc3JjL291dHB1dC9vdXRwdXRfYXN0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWxvZy1hbi1pc3N1ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZy1hbi1pc3N1ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9nLWFuLWlzc3VlLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9nQW5Jc3N1ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBvcGVuZWRGcm9tICE6IGFueTtcclxuICBASW5wdXQoKSBpc3N1ZUlkICE6IGFueTtcclxuICBASW5wdXQoKSByZXBvbnNpYmlsaXR5RGF0YSA9IHsgLy8gb25seSB1c2VkIGJ5IGxvZyBhbiBpc3N1ZVxyXG4gICAgcmVzcG9uc2liaWxpdHlJZDogbnVsbCxcclxuICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogJycsXHJcbiAgICByY0lkOm51bGwsXHJcbiAgICByZXNwb25zaWJpbGl0eU9iamVjdElkOiAnJ1xyXG4gIH07XHJcbiAgQElucHV0KCkgaXNzdWVEZXRhaWxzID17XHJcbiAgICBhdWRpdFBsYW5JZCA6IG51bGwsXHJcbiAgICAgIGF1ZGl0UGxhbk5hbWUgIDonJyxcclxuICAgICAgcmNJZDogbnVsbCxcclxuICAgICAgYXVkaXRPYmpJZDpudWxsXHJcbiAgfVxyXG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcclxuICBASW5wdXQoKSBjb25maWcgITogSXNzdWVDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNpYmlsaXRpZXNEYXRhOiBhbnk7XHJcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBtb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBjdXJyZW50VXNlciAhOiBhbnk7XHJcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xyXG4gIHNjcm9sbFRvQm90dG9tID0gZmFsc2U7XHJcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICBzaG93RGF0ZUVycm9yID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWREYXRlOiBhbnk7XHJcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gIGxvYWRlciA9IGZhbHNlO1xyXG4gIHNtaWxleU1lc3NhZ2UgPSBgVGhlIGlzc3VlIGhhcyBiZWVuIHJlcG9ydGVkLmA7XHJcbiAgaXNzdWVEYXRhICE6IGFueTtcclxuICBpc1Jpc2tDb250cm9sTG9hZGluZyA9IGZhbHNlO1xyXG4gIGFjdGlvbkJ1dHRvbnMgPSBbXHJcbiAgICB7IGJ1dHRvblRleHQ6ICdSZXBvcnQgTW9yZSBJc3N1ZXMnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcclxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgSXNzdWUnLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3SXNzdWUnIH0sXHJcbiAgXTtcclxuICBjcmVhdGVkRGF0YSAhOiBhbnk7XHJcbiAgZGVzY3JpcHRpb246IEVkaXRvckNvbmZpZyA9IHtcclxuICAgIC8vIG1vZGU6ICdwcmltZScsXHJcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXHJcbiAgICBsaW5rOiB0cnVlLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdEZXNjcmlwdGlvbicsXHJcbiAgfTtcclxuXHJcbiAgZGF0ZUNvbmZpZyA9IHtcclxuICAgIGRpc2FibGVLZXlwcmVzczogdHJ1ZSxcclxuICAgIGZvcm1hdDogJ0REIE1NTSBZWVlZJyxcclxuICAgIHVuU2VsZWN0T25DbGljazogdHJ1ZSxcclxuICAgIG9wZW5PbkNsaWNrOmZhbHNlLFxyXG4gICAgb3Blbk9uRm9jdXM6ZmFsc2UsXHJcbiAgICBtaW46IG5ldyBEYXRlKCkuZ2V0RGF0ZSgpLnRvU3RyaW5nKCksXHJcbiAgfTtcclxuICBsaXN0RGF0YTphbnkgPSB7XHJcbiAgICBpc3N1ZVR5cGVMaXN0OiBbXSxcclxuICAgIHVzZXJMaXN0OiBbXSxcclxuICAgIGNhdGVnb3J5TGlzdDogW10sXHJcbiAgICByY0xpc3Q6IFtdLFxyXG4gICAgbGlua2FnZUxpc3Q6W11cclxuICB9O1xyXG5cclxuICBnZXQgbWVzc2FnZSgpIHtcclxuICAgIHJldHVybiAodGhpcy5tb2RlID09PSAnRURJVCcgPyAnIFRoZSBJc3N1ZSBoYXMgYmVlbiB1cGRhdGVkLic6IHRoaXMuc21pbGV5TWVzc2FnZSlcclxuICB9XHJcblxyXG4gIGxvZ0lzc3VlRm9ybTogYW55ID0ge1xyXG4gICAgaXNzdWVOYW1lOiAnJyxcclxuICAgIGV2aWRlbmNlUmVxdWlyZWQ6IDAsXHJcbiAgICBpc3N1ZURlc2NyaXB0aW9uOiAnJyxcclxuICAgIGlzc3VlRGVzY3JpcHRpb25BdHRhY2hlbWVudHM6IFtdLFxyXG4gICAgaXNzdWVDYXRlZ29yeTogW10sXHJcbiAgICBpc3N1ZUN1c3RvbVRhZzogW10sXHJcbiAgICBpc3N1ZVJDOiBbXSxcclxuICAgIGlzc3VlVHlwZTogJ2lzc3VlJyxcclxuICAgIGlzQXNzaWduVG9NeXNlbGY6IGZhbHNlLFxyXG4gICAgZW50cnVzdFRvOiBbXSxcclxuICAgIGlzc3VlRHVlRGF0ZTogJycsXHJcbiAgICBpc3N1ZUR1ZVRpbWU6ICcxMTo1OSBwbScsXHJcbiAgICBleGNlcHRpb25UeXBlOiAxLFxyXG4gICAgaXNzdWVSaXNrUmF0aW5nOiAxLFxyXG4gICAgaXNzdWVQcmlvcml0eTogMSxcclxuICAgIGlzc3VlUmVjb21tZW5kYXRpb246ICcnLFxyXG4gICAgcmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM6W10sXHJcbiAgICBpc3N1ZUFzc29jaWF0ZWRSaXNrOiAnJyxcclxuICAgIGFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzOltdLFxyXG4gICAgaXNzdWVDQ1VzZXJzOiBbXSxcclxuICAgIGZhaWx1cmVDQ1VzZXJzOiBbXSxcclxuICAgIGxpbmtlZENvbnRyb2xSaXNrOltdLFxyXG4gICAgbGlua2FnZVR5cGUgOiAnUklTSycsXHJcblxyXG4gIH07XHJcbiAgQXR0YWNobWVudFRyYWNrOiBhbnkgPSBbW10sW10sW11dO1xyXG4gIGFkZGl0aW9uYWxPcHRpb25TdGF0dXM6IGFueSA9IHtcclxuICAgIEVYQ0VQVElPTl9UWVBFOiBmYWxzZSxcclxuICAgIEVWSURFTkNFOiBmYWxzZSxcclxuICAgIFBSSU9SSVRZOiBmYWxzZSxcclxuICAgIElTU1VFX1RZUEU6IGZhbHNlLFxyXG4gICAgQVNTT0NJQVRFRF9SSVNLUzogZmFsc2UsXHJcbiAgICBPVkVSU0lHSFQ6IGZhbHNlXHJcbiAgfTtcclxuICByaXNrQ2xhc3NpZmljYXRpb24gPSBbXHJcbiAgICB7IG5hbWU6ICdMT1cnLCB2YWx1ZTogMSwgY2xhc3M6ICdsb3cnIH0sXHJcbiAgICB7IG5hbWU6ICdMT1ctTWVkaXVtJywgdmFsdWU6IDIsIGNsYXNzOiAnbG93LW1lZCcgfSxcclxuICAgIHsgbmFtZTogJ01lZGl1bS1IaWdoJywgdmFsdWU6IDMsIGNsYXNzOiAnbWVkLWhpZ2gnIH0sXHJcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6IDQsIGNsYXNzOiAnaGlnaCcgfVxyXG4gIF07XHJcbiAgcmlza1Byb3JpdHkgPSBbXHJcbiAgICB7IG5hbWU6ICdMT1cnLCB2YWx1ZTogMSwgY2xhc3M6ICdsb3cnIH0sXHJcbiAgICB7IG5hbWU6ICdNRURJVU0nLCB2YWx1ZTogMiwgY2xhc3M6ICdsb3ctbWVkJyB9LFxyXG4gICAgeyBuYW1lOiAnSElHSCcsIHZhbHVlOiAzLCBjbGFzczogJ2hpZ2gnIH0sXHJcblxyXG4gIF07XHJcblxyXG4gIHNpZGVTZWxlY3RvckVsZW1lbnRzOiBhbnkgPSBbJ0lTU1VFX0NBVEVHT1JZJywgJ0lTU1VFX1JDJywgJ0lTU1VFX1dITycsICdJU1NVRV9UWVBFJywgJ0lTU1VFX0NDJywgJ0lTU1VFX0ZDQycsJ0lTU1VFX0NPTlRST0xfUklTSyddO1xyXG4gIHNlbGVjdG9yQ29uZmlnID0ge1xyXG4gICAgSVNTVUVfQ0FUR09SWToge1xyXG4gICAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IElzc3VlIENhdGVnb3J5JyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdDYXRlZ29yeSBzZWxlY3RlZCcsXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIElzc3VlIENhdGVnb3J5JyxcclxuICAgICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgbm9EYXRhVGV4dDogJ05vIENhdGVnb3JpZXMgRm91bmQnXHJcbiAgICB9LFxyXG4gICAgSVNTVUVfUkM6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCBSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxyXG4gICAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ1Jlc3BvbnNpYmlsdHkgY2VudGVyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggUmVzcG9uc2liaWxpdHkgQ2VudGVyJyxcclxuICAgICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgbm9EYXRhVGV4dDogJ05vIFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgRm91bmQnXHJcbiAgICB9LFxyXG4gICAgSVNTVUVfV0hPOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgVXNlcicsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnVXNlciBzZWxlY3RlZCcsXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIFVzZXInLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gVXNlcnMgRm91bmQnXHJcbiAgICB9LFxyXG4gICAgSVNTVUVfVFlQRToge1xyXG4gICAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IElzc3VlIFR5cGUnLFxyXG4gICAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ0lzc3VlIFR5cGUgc2VsZWN0ZWQnLFxyXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBJc3N1ZSBUeXBlJyxcclxuICAgICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgbm9EYXRhVGV4dDogJ05vIElzc3VlIFR5cGVzIEZvdW5kJ1xyXG4gICAgfSxcclxuICAgIElTU1VFX0NDOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgdXNlcihzKScsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnVXNlciBzZWxlY3RlZCcsXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIFVzZXInLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gVXNlcnMgRm91bmQnXHJcbiAgICB9LFxyXG4gICAgSVNTVUVfRkNDOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgdXNlcihzKScsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnVXNlciBzZWxlY3RlZCcsXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIFVzZXInLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gVXNlcnMgRm91bmQnXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmllbGRzV2l0aEVycm9yOiBhbnkgPSBbXTtcclxuICAvLyBoaWRkZW5MaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICBhY3RpdmVGaWVsZCA9ICcnO1xyXG4gIGFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgbGlzdExvYWRpbmdTdGF0dXM6IGFueSA9IFtdO1xyXG4gIGN1cnJlbnRUaW1lID0gJyc7XHJcbiAgICAvKipcclxuICAgKiBpc1JDUHJlU2VsZWN0ZWQsaXNSQ1Zpc2libGUgYXJlIHZhcmlhYmxlIHVzZWQgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IG9mIHJjIGZpZWxkIGFuZCBlZGl0IGJ1dHRvbiBpbiBjZXJ0YWluIGNvbmRpdGlvbnNcclxuICAgKi9cclxuICBpc1JDUHJlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICBpc1JDVmlzaWJsZSA9IHRydWVcclxuICBpc1JDTWFuZGF0b3J5ID0gZmFsc2U7XHJcbiAgZGF0YUZvckVkaXQgITphbnk7XHJcbiAgaXNSaXNrQ29udHJvbFZpc2libGUgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ1NlcnZpY2U6IExvZ0lzc3VlU2VydmljZSwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlcmN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFRpbWUgPSB0aGlzLmdldEN1cnJlbnRUaW1lKCk7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgICB0aGlzLnNldFVzZXJEZXRhaWxzKCk7XHJcbiAgICB0aGlzLmZldGNoSXNzdWVUeXBlcygpO1xyXG4gICAgdGhpcy5mZXRjaFVzZXJMaXN0KCk7XHJcbiAgICB0aGlzLmZldGNoQ2F0ZWdvcnlMaXN0KCk7XHJcbiAgICB0aGlzLmZldGNoUkNMaXN0KCk7XHJcbiAgICAvLyB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAvLyAgIGlmICghcmVzLmVuYWJsZV9yaXNrY2xhc3MpIHtcclxuICAgIC8vICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KTtcclxuICAgIC8vIGNvbW1lbnRlZCB0aGUgYWJvdmUgQVBJIHNpbmNlIFJpc2sgQ2xhc3NpZmljYXRpb24gc2hvdWxkIGJlIGRpc3BsYXllZCBieSBkZWZhdWx0IGluIGxvZyBhbiBpc3N1ZSBmb3JtXHJcblxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNoYW5nZURldGVyY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgdGhpcy5mZXRjaENvbnRyb2xSaXNrcygpO1xyXG4gICAgIHRoaXMuZGVjaWRlUkNtYW5kYXRvcnkoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5jdXJyZW50VGltZSA9IHRoaXMuZ2V0Q3VycmVudFRpbWUoKTtcclxuICB9XHJcblxyXG4gIGRlY2lkZVJDbWFuZGF0b3J5KCl7XHJcbiAgICB0aGlzLmlzUkNNYW5kYXRvcnkgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBzZXRDdXJyZW50VGltZSgpIHtcclxuICAgIHRoaXMuY3VycmVudFRpbWUgPSB0aGlzLmdldEN1cnJlbnRUaW1lKCk7XHJcbiAgfVxyXG4gIGdldEN1cnJlbnRUaW1lKCkge1xyXG4gICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgIGlmICh0b2RheS5nZXREYXRlKCkgPT09IG5ldyBEYXRlKHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRHVlRGF0ZSkuZ2V0RGF0ZSgpKSB7XHJcbiAgICAgIGlmICh0b2RheS5nZXRIb3VycygpIDwgMTIgJiYgdG9kYXkuZ2V0TWludXRlcygpIDwgNTkgJiYgdG9kYXkuZ2V0U2Vjb25kcygpIDwgNTkpIHtcclxuICAgICAgICByZXR1cm4gYCR7KHRvZGF5LmdldEhvdXJzKCkgPCAxMCkgPyAnMCcgKyB0b2RheS5nZXRIb3VycygpIDogdG9kYXkuZ2V0SG91cnMoKX06JHsodG9kYXkuZ2V0TWludXRlcygpIDwgMTApID8gJzAnICsgdG9kYXkuZ2V0TWludXRlcygpIDogdG9kYXkuZ2V0TWludXRlcygpfSBhbWA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGAkeygodG9kYXkuZ2V0SG91cnMoKSAtIDEyKSA8IDEwKSA/ICcwJyArICh0b2RheS5nZXRIb3VycygpIC0gMTIpIDogKHRvZGF5LmdldEhvdXJzKCkgLSAxMil9OiR7KHRvZGF5LmdldE1pbnV0ZXMoKSA8IDEwKSA/ICcwJyArIHRvZGF5LmdldE1pbnV0ZXMoKSA6IHRvZGF5LmdldE1pbnV0ZXMoKX0gcG1gO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJzAwOjAwIGFtJztcclxuICAgIH1cclxuICB9XHJcbiAgc2V0VXNlckRldGFpbHMoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXI7XHJcbiAgfVxyXG4gIGZldGNoSXNzdWVUeXBlcygpIHtcclxuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMF0gPSBmYWxzZTtcclxuICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuZ2V0SXNzdWVUeXBlcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1swXSA9IHRydWU7XHJcbiAgICAgIHRoaXMubGlzdERhdGEuaXNzdWVUeXBlTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMF0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGZldGNoVXNlckxpc3QoKSB7XHJcbiAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzFdID0gZmFsc2U7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuZ2V0T3JnUGVvcGxlKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzFdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5saXN0RGF0YS51c2VyTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMV0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmZXRjaENhdGVnb3J5TGlzdCgpIHtcclxuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMl0gPSBmYWxzZTtcclxuICAgIHRoaXMubG9nU2VydmljZS5nZXRJc3N1ZUNhdGVnb3JpZXMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMl0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxpc3REYXRhLmNhdGVnb3J5TGlzdCA9IHJlcz8uZGF0YTtcclxuICAgICAgdGhpcy5saXN0RGF0YS5jYXRlZ29yeUxpc3QgPSB0aGlzLmxpc3REYXRhLmNhdGVnb3J5TGlzdC5maWx0ZXIoKGU6YW55KT0+IGU/LmNhdGVnb3J5X25hbWUgIT09ICdVbmNhdGVnb3JpemVkJylcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMl0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmZXRjaFJDTGlzdCgpIHtcclxuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbM10gPSBmYWxzZTtcclxuICAgIHRoaXMubG9nU2VydmljZS5nZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbM10gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxpc3REYXRhLnJjTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgICAgdGhpcy5zZXRTZWxlY3RlZFJDKCk7XHJcbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzNdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRSQygpe1xyXG4gICAgaWYodGhpcy5yZXBvbnNpYmlsaXR5RGF0YT8ucmNJZCAmJiB0aGlzLm9wZW5lZEZyb20gPT09ICdDT01QTElBTkNFX1dPUktST09NJyl7XHJcbiAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUkMgPSAgdGhpcy5yZXBvbnNpYmlsaXR5RGF0YS5yY0lkID8gdGhpcy5saXN0RGF0YS5yY0xpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5yY19pZCA9PT0gdGhpcy5yZXBvbnNpYmlsaXR5RGF0YS5yY0lkKTpbXTtcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDICA9PT5cIix0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDLCB0aGlzLmxpc3REYXRhLnJjTGlzdCAsICB0aGlzLnJlcG9uc2liaWxpdHlEYXRhLnJjSWQsIHRoaXMubGlzdERhdGEucmNMaXN0LmZpbHRlcigoZTphbnkpID0+IGUucmNfaWQgPT09IHRoaXMucmVwb25zaWJpbGl0eURhdGEucmNJZCkpXHJcbiAgICB9ZWxzZSBpZih0aGlzLmlzc3VlRGV0YWlscz8ucmNJZCAmJiBbJ0FVRElUX1dPUktST09NJywnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkpe1xyXG4gICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDID0gdGhpcy5pc3N1ZURldGFpbHM/LnJjSWQgPyB0aGlzLmxpc3REYXRhLnJjTGlzdC5maWx0ZXIoKGU6YW55KSA9PiBlLnJjX2lkID09PSB0aGlzLmlzc3VlRGV0YWlscz8ucmNJZCk6W107XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5sb2dJc3N1ZUZvcm0/Lmlzc3VlUkM/Lmxlbmd0aCl7XHJcbiAgICAgIHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLnJlcG9uc2liaWxpdHlEYXRhdGhpcy5yZXBvbnNpYmlsaXR5RGF0YXRoaXMucmVwb25zaWJpbGl0eURhdGEgPT09PlwiLCB0aGlzLnJlcG9uc2liaWxpdHlEYXRhKVxyXG4gICAgaWYoISh0aGlzLnJlcG9uc2liaWxpdHlEYXRhPy5yY0lkIHx8IHRoaXMuaXNzdWVEZXRhaWxzPy5yY0lkKSAmJiBbJ0NPTVBMSUFOQ0VfV09SS1JPT00nLCdBVURJVF9XT1JLUk9PTScsJ1ZJRVdfQVVESVRfRVhFQ1VUSU9OX1NVTU1BUlknLCdFWEVDVVRFX0FVRElUX1BMQU4nXS5pbmNsdWRlcyh0aGlzLm9wZW5lZEZyb20pKXtcclxuICAgIHRoaXMuaXNSQ1Zpc2libGUgPSBmYWxzZTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmlzUkNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBmZXRjaENvbnRyb2xSaXNrcygpe1xyXG5cclxuICAgICAgaWYoWydWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSl7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0TGlua2FnZSh0aGlzLmlzc3VlRGV0YWlscz8uYXVkaXRPYmpJZCx0aGlzLmxvZ0lzc3VlRm9ybS5saW5rYWdlVHlwZSlcclxuICAgICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldExpbmthZ2UoYXVkaXRJZDphbnksIHR5cGU6c3RyaW5nKXtcclxuICAgIHRoaXMuaXNSaXNrQ29udHJvbExvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmdldENvbnRyb2xSaXNrKGF1ZGl0SWQsdHlwZSk/LnN1YnNjcmliZSgoZGF0YTphbnkpPT57XHJcbiAgICAgIHRoaXMubGlzdERhdGEubGlua2FnZUxpc3QgPSBbLi4udGhpcy5saXN0RGF0YS5saW5rYWdlTGlzdCwuLi5kYXRhXTtcclxuICAgICAgdGhpcy5saXN0RGF0YS5saW5rYWdlTGlzdCA9ICB0aGlzLmxpc3REYXRhLmxpbmthZ2VMaXN0LmZpbHRlcigodGhpbmc6YW55LCBpbmRleDphbnksIHNlbGY6YW55KSA9PlxyXG4gIGluZGV4ID09PSBzZWxmLmZpbmRJbmRleCgodDphbnkpID0+IChcclxuICAgIHQuaXRlbUlkID09PSB0aGluZy5pdGVtSWQgJiYgdC5pdGVtVHlwZSA9PT0gdGhpbmcuaXRlbVR5cGVcclxuICApKVxyXG4pXHJcbiAgICAgIHRoaXMuaXNSaXNrQ29udHJvbExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgY29uc29sZS5sb2coXCJsaW5rYWdlXCIsdGhpcy5saXN0RGF0YSlcclxuICAgICB9LChlcnJvcjphbnkpPT57XHJcbiAgICAgIHRoaXMuaXNSaXNrQ29udHJvbExvYWRpbmcgPSBmYWxzZTtcclxuICAgICB9KVxyXG4gIH1cclxuICAvKipcclxuICAgKiBUaGlzIGZ1bmN0aW9qIGNoZWNrIHdlYXRoZXIgYWxsIHRoZSByZXF1aXJlZCBsaXN0cyBhcmUgbG9hZGVkXHJcbiAgICogSWYgbG9hZGVkIGhpZGVzIHRoZSBsb2FkZXIgb3RoZXJ3aXNlIHNob3dzIHRoZSBsb2FkZXIuXHJcbiAgICovXHJcbiAgY2hlY2tBbGxMaXN0TG9hZGVkKCkge1xyXG4gICAgaWYgKHRoaXMubGlzdExvYWRpbmdTdGF0dXMuaW5jbHVkZXMoZmFsc2UpKSB7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgaWYodGhpcy5tb2RlPT09J0VESVQnKXtcclxuICAgICAgICB0aGlzLmZldGNoSXNzdWVEZXRhaWxzKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgZXJyb3IgZnJvbSB0aGUgZmllbHMgd2l0aCBlcnJvciB0byByZW1vdmUgdGhlIGVycm9yIG1lc3NhZyBmcm9tIHRoZSBVSVxyXG4gICAqIEBwYXJhbSBlcnJvcktleSBlcnJvciBJZGVudGlmaWVyIHVzZWQgdG8gc2hvdyBlcnJvciBpbiBzcGVjaWZpYyBmaWVsZHMuXHJcbiAgICovXHJcbiAgcmVtb3ZlRXJyb3IoZXJyb3JLZXk6IHN0cmluZykge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpZWxkc1dpdGhFcnJvci5pbmRleE9mKGVycm9yS2V5KTtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHRoaXMuZmllbGRzV2l0aEVycm9yLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9wZW5EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy5kYXRlUGlja2VyLmFwaS5vcGVuKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuc2V0QWN0aXZlRmllbGRTZWxlY3RvcignSVNTVUVfREFURV9USU1FJywgJ0lTU1VFX0RBVEVfVElNRScpO1xyXG4gIH1cclxuICBjbG9zZURhdGVQaWNrZXIoZXZ0OiBhbnkpIHtcclxuICAgIGlmICghZXZ0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChldnQ/LmRhdGU/Ll9kKSB7XHJcbiAgICAgIGxldCBtb250aEFycmF5ID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ11cclxuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy5fZCkuZ2V0RGF0ZSgpO1xyXG4gICAgICBjb25zdCBtb250aFZhbHVlID0gbW9udGhBcnJheVtuZXcgRGF0ZShldnQ/LmRhdGU/Ll9kKS5nZXRNb250aCgpXTtcclxuICAgICAgY29uc3QgeWVhclZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy5fZCkuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgY29uc3QgZGF0ZVN0ciA9IGAke2RhdGVWYWx1ZX0gJHttb250aFZhbHVlfSAke3llYXJWYWx1ZX1gO1xyXG4gICAgICBpZiAoZXZ0Py5kYXRlPy5fZCAhPT0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEdWVEYXRlPy5fZCkge1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRHVlVGltZSA9IFwiMTE6NTkgUE1cIjtcclxuICAgICAgICB0aGlzLnNldEN1cnJlbnRUaW1lKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChldnQ/LmRhdGU/Ll9kKSB7XHJcbiAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRHVlRGF0ZSA9IGV2dD8uZGF0ZT8uX2Q7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVQaWNrZXIuYXBpLmNsb3NlKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoJycsICcnKTtcclxuICB9XHJcblxyXG4gIHNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoYWN0aXZlRmllbGQ6IHN0cmluZywgYWN0aXZlU2VsZWN0b3I/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYWN0aXZlRmllbGQgPSBhY3RpdmVGaWVsZDtcclxuICAgIChhY3RpdmVTZWxlY3RvciA/IHRoaXMuYWN0aXZlU2VsZWN0b3IgPSBhY3RpdmVTZWxlY3RvciA6IHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJyk7XHJcbiAgICBjb25zdCBzbGlkZXJUeXBlID0gWydJU1NVRV9SQycsICdJU1NVRV9DQVRFR09SWScsICdJU1NVRV9UWVBFJywgJ0lTU1VFX0NDJywgJ0lTU1VFX0ZDQycsICdJU1NVRV9XSE8nLCdJU1NVRV9DT05UUk9MX1JJU0snXTtcclxuICAgIGlmIChzbGlkZXJUeXBlLmluY2x1ZGVzKGFjdGl2ZUZpZWxkKSkge1xyXG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBmaWVsZERlc2VsZWN0b3IodHlwZTogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgICB0aGlzLmFjdGl2ZUZpZWxkID0gJyc7XHJcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RvckFjdGlvbihldnQ6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhldnQsIHR5cGUpXHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnSVNTVUVfQ0FURUdPUlknOiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXZ0KTtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNhdGVnb3J5ID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLmNhdGVnb3J5TGlzdCwgJ2NhdGVnb3J5X2lkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ2F0ZWdvcnkpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGlmIChldnQ/Lmxlbmd0aCA+IDApIHsgdGhpcy5yZW1vdmVFcnJvcignaXNzdWVDYXRlZ29yeScpIH1cclxuICAgICAgICBpZih0aGlzLmxvZ0lzc3VlRm9ybT8uaXNzdWVDYXRlZ29yeVswXT8uY3VzdG9tX3RhZ3M/Lmxlbmd0aCl7XHJcbiAgICAgICAgICBjb25zdCB0YWc6YW55ID0gW11cclxuICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtPy5pc3N1ZUNhdGVnb3J5WzBdPy5jdXN0b21fdGFncy5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgIHRhZy5wdXNoKHtuYW1lOmVsZW1lbnQsIHZhbHVlOicnfSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDdXN0b21UYWcgPSB0YWc7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUN1c3RvbVRhZyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICAvL1tcImlzc3VlTmFtZVwiLCBcImlzc3VlQ2F0ZWdvcnlcIiwgXCJpc3N1ZVJDXCIsIFwiZW50cnVzdFRvXCIsIFwiaXNzdWVEdWVEYXRlXCIsIFwiaXNzdWVSZWNvbW1lbmRhdGlvblwiXVxyXG4gICAgICBjYXNlICdJU1NVRV9SQyc6IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhldnQsIHR5cGUpXHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQyA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS5yY0xpc3QsICdyY19pZCcpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGlmIChldnQ/Lmxlbmd0aCA+IDApIHsgdGhpcy5yZW1vdmVFcnJvcignaXNzdWVSQycpIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9XSE8nOiB7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uZW50cnVzdFRvID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLnVzZXJMaXN0LCAnZW1wbG95ZWVfaWQnKTtcclxuICAgICAgICBpZih0aGlzLmxvZ0lzc3VlRm9ybS5lbnRydXN0VG9bMF0/Lm15X21lbWJlcl9pZCA9PT0gdGhpcy5jdXJyZW50VXNlci5pZCl7XHJcbiAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc0Fzc2lnblRvTXlzZWxmID0gdHJ1ZTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzQXNzaWduVG9NeXNlbGYgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgaWYgKGV2dD8ubGVuZ3RoID4gMCkgeyB0aGlzLnJlbW92ZUVycm9yKCdlbnRydXN0VG8nKSB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfVFlQRSc6IHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVR5cGUgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEuaXNzdWVUeXBlTGlzdCwgJ2lzc3VlX2lkJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfQ0MnOiB7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDQ1VzZXJzID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLnVzZXJMaXN0LCAnZW1wbG95ZWVfZW1haWwnKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9GQ0MnOiB7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uZmFpbHVyZUNDVXNlcnMgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEudXNlckxpc3QsICdlbXBsb3llZV9lbWFpbCcpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjYXNlICdJU1NVRV9DT05UUk9MX1JJU0snOlxyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLmxpbmthZ2VMaXN0LCAnaXRlbUlkJyk7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2FnZVR5cGUgPSAgdGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmtlZENvbnRyb2xSaXNrWzBdPy5pdGVtVHlwZTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUl0ZW0odHlwZTogYW55LCBlbGVtZW50OiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdJU1NVRV9DQVRFR09SWSc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNhdGVnb3J5LmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLmNhdGVnb3J5X2lkID09PSBlbGVtZW50LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNhdGVnb3J5LnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfUkMnOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQy5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5yY19pZCA9PT0gZWxlbWVudC5yY19pZCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQy5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX1dITyc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5lbnRydXN0VG8uZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uZW1wbG95ZWVfaWQgPT09IGVsZW1lbnQuZW1wbG95ZWVfaWQpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmVudHJ1c3RUby5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzQXNzaWduVG9NeXNlbGYgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9UWVBFJzoge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlVHlwZS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5pc3N1ZV9pZCA9PT0gZWxlbWVudC5pc3N1ZV9pZCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVUeXBlLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfQ0MnOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDQ1VzZXJzLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLmVtcGxveWVlX2VtYWlsID09PSBlbGVtZW50LmVtcGxveWVlX2VtYWlsKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNDVXNlcnMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9GQ0MnOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uZmFpbHVyZUNDVXNlcnMuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uZW1wbG95ZWVfZW1haWwgPT09IGVsZW1lbnQuZW1wbG95ZWVfZW1haWwpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmZhaWx1cmVDQ1VzZXJzLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfQ09OVFJPTF9SSVNLJzpcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rZWRDb250cm9sUmlzay5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5pdGVtSWQgPT09IGVsZW1lbnQuaXRlbUlkKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rZWRDb250cm9sUmlzay5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICBhc3NpZ25NeXNlbGYoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5yZW1vdmVFcnJvcignZW50cnVzdFRvJylcclxuICAgIHRoaXMubG9nSXNzdWVGb3JtLmVudHJ1c3RUbyA9IFtdO1xyXG4gICAgaWYoZXZlbnQpe1xyXG4gICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5lbnRydXN0VG8gPSB0aGlzLmxpc3REYXRhLnVzZXJMaXN0LmZpbHRlcigoZW1wbGlzdDogYW55KSA9PiBlbXBsaXN0Lm15X21lbWJlcl9pZCA9PT0gdGhpcy5jdXJyZW50VXNlci5pZCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldEV4Y2VwdGlvbih0eXBlOiBhbnkpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uZXhjZXB0aW9uVHlwZSA9IHR5cGU7IH1cclxuICBzZXRFdmlkZW5jZSh0eXBlOiBhbnkpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uZXZpZGVuY2VSZXF1aXJlZCA9IHR5cGU7IH1cclxuICBzZXRJc3N1ZVR5cGUodHlwZTogYW55KSB7IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlVHlwZSA9IHR5cGU7IH1cclxuXHJcbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzW2V2ZW50LmNvZGVdID0gZXZlbnQuY2hlY2tlZDtcclxuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xyXG4gIH1cclxuICBpZFRvQXJyYXkoc2VsZWN0ZWRJdGVtczogYW55LCBsaXN0SXRlbXM6IGFueSwgZmlsdGVya2V5OiBhbnkpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRJdGVtcztcclxuICAgIGNvbnN0IGxpc3QgPSBsaXN0SXRlbXM7XHJcbiAgICBjb25zdCBrZXkgPSBmaWx0ZXJrZXk7XHJcbiAgICBjb25zdCB4ID0gbGlzdC5maWx0ZXIoKGVsOiBhbnkpID0+IHNlbGVjdGVkLmluY2x1ZGVzKGVsW2tleV0pKTtcclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuLy8vQ29kZSBiZXR3ZWVuIDUwMyB0byA2MDggY2FuIGJlIG9wdGltaXplZCB0byByZW1vdmUgZHVwbGljYXRpb25cclxuIHNlbGVjdEZpbGUodHlwZTpzdHJpbmcsZmlsZXM6YW55KXtcclxuICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgIGNhc2UgJ0lTU1VFX0RFU0NSSVBUSU9OJzoge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBmaWxlcy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gZmlsZXNbaV0uZmlsZS5uYW1lID8/ICcnO1xyXG4gICAgICAgIHRoaXMuQXR0YWNobWVudFRyYWNrWzBdLnB1c2gobmFtZSk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGVzW2ldLmZpbGUsdHlwZSk7XHJcbiAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgICAgfVxyXG4gICAgY2FzZSAnUkVDT01NRU5ERURfQUNUSU9OUyc6e1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBmaWxlcy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gZmlsZXNbaV0uZmlsZS5uYW1lID8/ICcnO1xyXG4gICAgICAgIHRoaXMuQXR0YWNobWVudFRyYWNrWzFdLnB1c2gobmFtZSk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGVzW2ldLmZpbGUsdHlwZSk7XHJcbiAgICAgIH1cclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBjYXNlICdBU1NPQ0lBVEVEX1JJU0tTJzp7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGZpbGVzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlc1tpXS5maWxlLm5hbWUgPz8gJyc7XHJcbiAgICAgICAgdGhpcy5BdHRhY2htZW50VHJhY2tbMl0ucHVzaChuYW1lKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZXNbaV0uZmlsZSx0eXBlKTtcclxuICAgICAgfVxyXG4gICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gfVxyXG59XHJcblxyXG5cclxuICB1cGxvYWRGaWxlKGZpbGU6IGFueSx0eXBlOnN0cmluZykge1xyXG4gICAgbGV0IHRyYWNrSW5kZXggPSAwIDtcclxuICAgIHN3aXRjaCh0eXBlKXtcclxuICAgICAgY2FzZSAnSVNTVUVfREVTQ1JJUFRJT04nOntcclxuICAgICAgICB0cmFja0luZGV4ID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSRUNPTU1FTkRFRF9BQ1RJT05TJzp7XHJcbiAgICAgICAgdHJhY2tJbmRleCA9IDE7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQVNTT0NJQVRFRF9SSVNLUyc6e1xyXG4gICAgICAgIHRyYWNrSW5kZXggPSAyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG4gICAgY29uc3QgZGVzdGluYXRpb25TdHJpbmcgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCkudG9TdHJpbmcoKTtcclxuICAgIHRoaXMubG9nU2VydmljZS51cGxvYWRGaWxlcyhmb3JtRGF0YSwgZGVzdGluYXRpb25TdHJpbmcrJy8nKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuQXR0YWNobWVudFRyYWNrW3RyYWNrSW5kZXhdLmluZGV4T2YoZmlsZT8ubmFtZSk7XHJcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgdGhpcy5BdHRhY2htZW50VHJhY2tbdHJhY2tJbmRleF0uc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN3aXRjaCh0eXBlKXtcclxuICAgICAgICAgIGNhc2UgJ0lTU1VFX0RFU0NSSVBUSU9OJzp7XHJcbiAgICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRGVzY3JpcHRpb25BdHRhY2hlbWVudHMucHVzaChyZXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ1JFQ09NTUVOREVEX0FDVElPTlMnOntcclxuICAgICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0ucmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHMucHVzaChyZXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgJ0FTU09DSUFURURfUklTS1MnOntcclxuICAgICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHMucHVzaChyZXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gIHRoaXMuQXR0YWNobWVudFRyYWNrW3RyYWNrSW5kZXhdLmluZGV4T2YoZmlsZS5uYW1lKTtcclxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLkF0dGFjaG1lbnRUcmFja1t0cmFja0luZGV4XS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaWxlKGZpbGU6IGFueSx0eXBlOnN0cmluZykge1xyXG4gICAgbGV0IGZpbGVJbmRleCA9IC0xO1xyXG4gICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgICBjYXNlICdJU1NVRV9ERVNDUklQVElPTic6e1xyXG4gICAgICAgIGZpbGVJbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRGVzY3JpcHRpb25BdHRhY2hlbWVudHM/LmZpbmRJbmRleCgoY3VycmVudEZpbGVzOiBhbnkpID0+IGN1cnJlbnRGaWxlcy5vcmdfZmlsZSA9PT0gZmlsZS5vcmdfZmlsZSkgPz8gLTE7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50cz8uc3BsaWNlKGZpbGVJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnUkVDT01NRU5ERURfQUNUSU9OUyc6e1xyXG4gICAgICAgIGZpbGVJbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLnJlY29tbWVuZGVkQWN0aW9uc0F0dGFjaG1lbnRzPy5maW5kSW5kZXgoKGN1cnJlbnRGaWxlczogYW55KSA9PiBjdXJyZW50RmlsZXMub3JnX2ZpbGUgPT09IGZpbGUub3JnX2ZpbGUpID8/IC0xO1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLnJlY29tbWVuZGVkQWN0aW9uc0F0dGFjaG1lbnRzPy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NPQ0lBVEVEX1JJU0tTJzp7XHJcbiAgICAgICAgZmlsZUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHM/LmZpbmRJbmRleCgoY3VycmVudEZpbGVzOiBhbnkpID0+IGN1cnJlbnRGaWxlcy5vcmdfZmlsZSA9PT0gZmlsZS5vcmdfZmlsZSkgPz8gLTE7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHM/LnNwbGljZShmaWxlSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gYWRkSXNzdWUoKXtcclxuICAgY29uc3QgZm9ybSA9IGNsb25lRGVlcCh0aGlzLmxvZ0lzc3VlRm9ybSk7XHJcbiAgIGlmIChmb3JtLmlzQXNzaWduVG9NeXNlbGYpe1xyXG4gICAgIGZvcm0uZW50cnVzdFRvID0gdGhpcy5saXN0RGF0YS51c2VyTGlzdC5maWx0ZXIoKGVtcGxpc3Q6IGFueSkgPT4gZW1wbGlzdC5teV9tZW1iZXJfaWQgPT09IHRoaXMuY3VycmVudFVzZXIuaWQpO1xyXG4gICB9XHJcblxyXG4gICB0aGlzLmZpZWxkc1dpdGhFcnJvciA9IFtdO1xyXG4gICB0aGlzLmZpZWxkc1dpdGhFcnJvciA9IHRoaXMubG9nU2VydmljZS52YWxpZGF0ZShmb3JtLCB0aGlzLm9wZW5lZEZyb20sdGhpcy5pc1JDTWFuZGF0b3J5KTtcclxuICAgaWYgKHRoaXMuZmllbGRzV2l0aEVycm9yLmxlbmd0aCA+IDAgKXtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgIGNvbnN0IFBBWUxPQUQgPSB0aGlzLmxvZ1NlcnZpY2UucGF5bG9hZEJ1aWxkZXIoZm9ybSwgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzKTtcclxuXHJcbiAgIGlmKHRoaXMubW9kZSA9PT0gJ0NSRUFURScpe1xyXG4gICBQQVlMT0FELmxpbmthZ2Vfb2JqZWN0ID0geyBzb3VyY2UgOiB0aGlzLm9wZW5lZEZyb20sIHR5cGU6JycsIHR5cGVfaWQ6IDAsIHNvdXJjZV9pZDogMCwgc291cmNlX29iamVjdF9pZDogJyd9O1xyXG4gICAgaWYgKHRoaXMuIG9wZW5lZEZyb20gPT09ICdDT01QTElBTkNFX1dPUktST09NJyAmJiB0aGlzLnJlcG9uc2liaWxpdHlEYXRhPy5yZXNwb25zaWJpbGl0eUlkKXtcclxuICAgICAgUEFZTE9BRC5saW5rYWdlX29iamVjdCA9IHsgc291cmNlX2lkOiAgdGhpcy5yZXBvbnNpYmlsaXR5RGF0YT8ucmVzcG9uc2liaWxpdHlJZCwgdHlwZTogJycsIHR5cGVfaWQ6IDAsICBzb3VyY2UgOiB0aGlzLm9wZW5lZEZyb20sIHNvdXJjZV9vYmplY3RfaWQ6IHRoaXMucmVwb25zaWJpbGl0eURhdGE/LnJlc3BvbnNpYmlsaXR5T2JqZWN0SWQgfSA7XHJcbiAgIH1cclxuICAgaWYoWydWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSl7XHJcbiAgICAgICAgICBpZih0aGlzLmxvZ0lzc3VlRm9ybT8ubGlua2FnZVR5cGUgJiYgdGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmtlZENvbnRyb2xSaXNrLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBpZihbJ1JJU0snLCAnUkVTUE9OU0lCSUxJVFknXS5pbmNsdWRlcyh0aGlzLmxvZ0lzc3VlRm9ybT8ubGlua2FnZVR5cGUpKXtcclxuICAgICAgICAgICAgICBQQVlMT0FELmxpbmthZ2Vfb2JqZWN0LnNvdXJjZV9pZCA9IHRoaXMubG9nSXNzdWVGb3JtPy5saW5rZWRDb250cm9sUmlza1swXT8uaXRlbUlkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgIH1cclxuICAgaWYoWydBVURJVF9XT1JLUk9PTScsJ1ZJRVdfQVVESVRfRVhFQ1VUSU9OX1NVTU1BUlknLCdFWEVDVVRFX0FVRElUX1BMQU4nXS5pbmNsdWRlcyh0aGlzLm9wZW5lZEZyb20pKXtcclxuICAgICAgaWYodGhpcy5pc3N1ZURldGFpbHMuYXVkaXRQbGFuSWQpe1xyXG4gICAgICAgIFBBWUxPQUQubGlua2FnZV9vYmplY3Quc291cmNlX2lkID0gIHRoaXMuaXNzdWVEZXRhaWxzLmF1ZGl0UGxhbklkO1xyXG4gICAgICB9XHJcbiAgIH1cclxuICB9XHJcblxyXG4gIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKXtcclxuICAgIFBBWUxPQUQuSXNzdWVMaW5rYWdlID0gdGhpcy5kYXRhRm9yRWRpdD8ubGlua2FnZV9vYmplY3Q7XHJcbiAgfVxyXG4gICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZVxyXG4gIGNvbnNvbGUubG9nKCdQQVlMT0FEID09PT4nLCBQQVlMT0FEKVxyXG4gICBpZih0aGlzLm1vZGUgPT09ICdFRElUJyl7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UudXBkYXRlSXNzdWUoUEFZTE9BRCx0aGlzLmlzc3VlSWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAvLyB0aGlzLnNtaWxleU1lc3NhZ2UgPSBgVGhlIGlzc3VlIGhhcyBiZWVuIHVwZGF0ZWQuYDtcclxuICAgICAgdGhpcy5pc3N1ZURhdGEgPSByZXM7XHJcbiAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlXHJcbiAgICAgXHJcbiAgIH0sIGVycm9yID0+IHtcclxuICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nKTtcclxuICAgfSk7XHJcbiAgIH1lbHNlIGlmKHRoaXMubW9kZSA9PT0gJ0NSRUFURScgfHwgdGhpcy5tb2RlID09PSAnJyB8fCAhdGhpcy5tb2RlKXtcclxuICAgIHRoaXMubG9nU2VydmljZS5jcmVhdGVJc3N1ZShQQVlMT0FEKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuaXNzdWVEYXRhID0gcmVzO1xyXG4gICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xyXG4gICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICBcclxuICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycpO1xyXG4gICB9KTtcclxuICAgfVxyXG5cclxuIH1cclxuIGNsb3NlU21pbGV5KGV2dD86IGFueSl7XHJcbiAgdGhpcy5yZXNldElzc3VlRm9ybSgpO1xyXG4gIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICB0aGlzLmNsb3NlV29ya0Zsb3codGhpcy5pc3N1ZURhdGEsZmFsc2UpO1xyXG4gfVxyXG4vKipcclxuICogQ2xvc2VzIHdvcmtmbG93IGVuZ2luZVxyXG4gKiBAcGFyYW0gZXZ0XHJcbiAqIEBwYXJhbSBjb25maXJtXHJcbiAqL1xyXG5jbG9zZVdvcmtGbG93KGV2dDogYW55LCBjb25maXJtOmFueSl7XHJcbiAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHtldnQsIGNvbmZpcm19KTtcclxuIH1cclxuIGFjdGlvbihldnQ6IGFueSl7XHJcbiAgIGlmIChldnQgPT09ICdhZGRNb3JlJyl7XHJcbiAgICB0aGlzLnJlc2V0SXNzdWVGb3JtKCk7XHJcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcclxuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcclxuICAgIC8vIHRoaXMuY2xvc2VXb3JrRmxvdyh0aGlzLmlzc3VlRGF0YSwgZmFsc2UpO1xyXG4gIH1cclxuICBlbHNlIGlmKGV2dCA9PT0gJ3ZpZXdJc3N1ZScpe1xyXG4gICAgdGhpcy52aWV3SXNzdWUoKTtcclxuICB9XHJcblxyXG4gICB9XHJcblxyXG4gICB2aWV3SXNzdWUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xyXG4gICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xyXG4gICAgICAgfVxyXG5cclxuICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xyXG4gICAgICAgICB1cmwgKz0gJy9pc3N1ZS9pc3N1ZS13b3Jrcm9vbS8nICsgdGhpcy5pc3N1ZURhdGE/Ll9pZDtcclxuICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHVybCArPSAnL2F1ZGl0L2lzc3VlL2lzc3VlLXdvcmtyb29tLycgKyB0aGlzLmlzc3VlRGF0YT8uX2lkO1xyXG4gICAgICAgfVxyXG4gICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgfVxyXG5cclxuLyoqXHJcbiAqIFBvcHVsYXRlIHRoZSB0aWNrbWFyayBvZiBvcHRpb25hbCBmaWVsZHNcclxuICovXHJcbnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKXtcclxuICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XHJcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzKSl7XHJcbiAgICBpZiAodGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzW2tleV0gPT09IHRydWUpe1xyXG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goa2V5KTtcclxuICAgIH1cclxuICB9XHJcbiAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xyXG59XHJcbi8qKlxyXG4gKiBGZXRjaHMgaXNzdWUgZGV0YWlscyB3aGVuIGluIGVkaXQgbW9kZSBiYXNlZCBvbiB0aGUgaW5wdXQgaWQgcGFzc2VkXHJcbiAqL1xyXG5mZXRjaElzc3VlRGV0YWlscygpe1xyXG4gIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWU7XHJcbiAgdGhpcy5sb2dTZXJ2aWNlLmdldElzc3VlRGV0YWlscyh0aGlzLmlzc3VlSWQpLnN1YnNjcmliZSgoZGF0YTphbnkpPT57XHJcbiAgICBjb25zb2xlLmxvZyhcImlzc3VlIERhdGFcIixkYXRhKVxyXG4gICAgdGhpcy5wb3B1bGF0ZUZvcm0oZGF0YSlcclxuICB9KVxyXG59XHJcbi8qKlxyXG4gKiBQb3B1bGF0ZXMgdGhlIGlzc3VlIGZvcm0gd2hlbiBpbiBlZGl0IG1vZGVcclxuICogQHBhcmFtIGlzc3VlRGF0YSBpc3N1ZSBkYXRhIGZldGNoZWQgZnJvbSBBUElcclxuICovXHJcbmFzeW5jIHBvcHVsYXRlRm9ybShpc3N1ZURhdGEgOiBhbnkpe1xyXG4gIHRoaXMuZGF0YUZvckVkaXQgPSBpc3N1ZURhdGE7XHJcbiAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gIGNvbnN0IGlzc3VlRHVlRGF0ZSA9IGlzc3VlRGF0YS5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5X2RhdGUuc3BsaXQoJy0nKTtcclxuICB0aGlzLmxvZ0lzc3VlRm9ybSA9IHtcclxuICAgIGlzc3VlTmFtZSA6IGlzc3VlRGF0YS50aXRsZSA/PyAnJyxcclxuICAgIGV2aWRlbmNlUmVxdWlyZWQ6IGlzc3VlRGF0YT8uZXZpZGVuY2U/LmV2aWRlbmNlX2ZsYWc/PzAsXHJcbiAgICBpc3N1ZURlc2NyaXB0aW9uOiBpc3N1ZURhdGE/LmRlc2NyaXB0aW9uPy5sZW5ndGggPyBpc3N1ZURhdGE/LmRlc2NyaXB0aW9uWzBdPy50ZXh0IDonJyxcclxuICAgIGlzc3VlRGVzY3JpcHRpb25BdHRhY2hlbWVudHM6IGlzc3VlRGF0YT8uZGVzY3JpcHRpb24/Lmxlbmd0aCA/IGlzc3VlRGF0YT8uZGVzY3JpcHRpb25bMF0/LmF0dGFjaG1lbnRzIDpbXSxcclxuICAgIGlzc3VlQ2F0ZWdvcnk6IGlzc3VlRGF0YT8uY2F0ZWdvcnlfaWQgPyB0aGlzLmxpc3REYXRhLmNhdGVnb3J5TGlzdC5maWx0ZXIoKGU6YW55KSA9PiBlLmNhdGVnb3J5X2lkID09PSBpc3N1ZURhdGE/LmNhdGVnb3J5X2lkKTpbXSxcclxuICAgIGlzc3VlQ3VzdG9tVGFnIDogaXNzdWVEYXRhPy5jdXN0b21fdGFncyA/PyBbXSxcclxuICAgIGlzc3VlUkM6IGlzc3VlRGF0YT8ucmNfaWQgPyB0aGlzLmxpc3REYXRhLnJjTGlzdC5maWx0ZXIoKGU6YW55KSA9PiBlLnJjX2lkID09PSBpc3N1ZURhdGE/LnJjX2lkKTpbXSxcclxuICAgIHJlY29tbWVuZGVkQWN0aW9uc0F0dGFjaG1lbnRzOmlzc3VlRGF0YT8ucmVjb21tZW5kYXRpb24/Lmxlbmd0aCA/IGlzc3VlRGF0YT8ucmVjb21tZW5kYXRpb25bMF0/LmF0dGFjaG1lbnRzIDpbXSxcclxuICAgIGFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzOltdLFxyXG4gICAgaXNBc3NpZ25Ub015c2VsZiA6ICBpc3N1ZURhdGE/LmFzc2lnbmVlX2lkID09PSB0aGlzLmN1cnJlbnRVc2VyLmlkICA/IHRydWUgOiBmYWxzZSxcclxuICAgIGVudHJ1c3RUbzogaXNzdWVEYXRhPy5hc3NpZ25lZV9pZCA9PT0gdGhpcy5jdXJyZW50VXNlci5pZCA/IFtdOiB0aGlzLmxpc3REYXRhLnVzZXJMaXN0LmZpbHRlcigoZTphbnkpID0+IGUubXlfbWVtYmVyX2lkID09PSBpc3N1ZURhdGE/LmFzc2lnbmVlX2lkICksXHJcbiAgICBpc3N1ZUR1ZURhdGU6IGlzc3VlRGF0YT8uZnJlcXVlbmN5X2RldGFpbHM/LmZyZXF1ZW5jeV9kYXRlPyAgbW9tZW50KGAke2lzc3VlRHVlRGF0ZVswXX0tJHtpc3N1ZUR1ZURhdGVbMV19LSR7aXNzdWVEdWVEYXRlWzJdfWApOicnLFxyXG4gICAgaXNzdWVEdWVUaW1lOiB0aGlzLmxvZ1NlcnZpY2UuY29udmVydEZyb20yNFRvMTJGb3JtYXQoaXNzdWVEYXRhLmZyZXF1ZW5jeV9kZXRhaWxzLmZyZXF1ZW5jeV90aW1lKSxcclxuICAgIGV4Y2VwdGlvblR5cGU6IGlzc3VlRGF0YS5leGNlcHRpb25fdHlwZSA/PyAxLFxyXG4gICAgaXNzdWVSaXNrUmF0aW5nOiBpc3N1ZURhdGEucmlza19jbGFzcyA/PyAxLFxyXG4gICAgaXNzdWVQcmlvcml0eTogaXNzdWVEYXRhLnByaW9yaXR5ID8/IDEsXHJcbiAgICBpc3N1ZVJlY29tbWVuZGF0aW9uOiBpc3N1ZURhdGE/LnJlY29tbWVuZGF0aW9uPy5sZW5ndGggPyBpc3N1ZURhdGE/LnJlY29tbWVuZGF0aW9uWzBdPy50ZXh0IDonJyxcclxuICAgIGlzc3VlQXNzb2NpYXRlZFJpc2s6IGlzc3VlRGF0YT8uYXNzb2NpYXRlZF9yaXNrPy5sZW5ndGggPyBpc3N1ZURhdGE/LmFzc29jaWF0ZWRfcmlza1swXT8udGV4dCA6JycsXHJcbiAgICBpc3N1ZUNDVXNlcnM6IGlzc3VlRGF0YS5vdmVyc2Vlcj8uY2NfZW1haWwubGVuZ3RoID8gYXdhaXQgdGhpcy5nZW5lcmF0ZU92ZXJzZWVyTGlzdCh0aGlzLmxpc3REYXRhLnVzZXJMaXN0LGlzc3VlRGF0YS5vdmVyc2Vlcj8uY2NfZW1haWwpIDpbXSxcclxuICAgIGZhaWx1cmVDQ1VzZXJzOiBpc3N1ZURhdGEub3ZlcnNlZXI/LmZhaWx1cmVfY2NfZW1haWwubGVuZ3RoID8gYXdhaXQgdGhpcy5nZW5lcmF0ZU92ZXJzZWVyTGlzdCh0aGlzLmxpc3REYXRhLnVzZXJMaXN0LGlzc3VlRGF0YS5vdmVyc2Vlcj8uZmFpbHVyZV9jY19lbWFpbCkgOltdLFxyXG4gICAgbGlua2VkQ29udHJvbFJpc2s6W10sXHJcbiAgICBsaW5rYWdlVHlwZSA6ICdSRVNQT05TSUJJTElUWScsXHJcbiAgICBpc3N1ZVR5cGU6IGlzc3VlRGF0YS5pc3N1ZVR5cGUgPyBpc3N1ZURhdGEuaXNzdWVUeXBlIDogJ2lzc3VlJ1xyXG4gIH07XHJcbiAgY29uc29sZS5sb2coXCJBZnRlciBJbml0XCIsdGhpcy5sb2dJc3N1ZUZvcm0pXHJcbiAgaWYodGhpcy5tb2RlID09PSAnRURJVCcpe1xyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQz8ubGVuZ3RoID4gMCA/IHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gdHJ1ZSA6IHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAvLyBpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnNvdXJjZSA9PT0gJ0dMT0JBTCc/IHRoaXMuaXNSQ01hbmRhdG9yeSA9IHRydWUgOiB0aGlzLmlzUkNNYW5kYXRvcnkgPSBmYWxzZTtcclxuICAgIChpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnNvdXJjZSA9PT0gJ0dMT0JBTCcgJiYgaXNzdWVEYXRhPy5yY19pZCkgPyB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IGZhbHNlIDogdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgLy8gaWYoaXNzdWVEYXRhLmxpbmthZ2Vfb2JqZWN0Py5jb21wbGlhbmNlPy5pZHM/Lmxlbmd0aCl7XHJcbiAgICAvLyAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrID0gaXNzdWVEYXRhLmxpbmthZ2Vfb2JqZWN0Py5jb21wbGlhbmNlPy5pZHM/P1tdLFxyXG4gICAgLy8gICB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rYWdlVHlwZSA9ICdSRVNQT05TSUJJTElUWSdcclxuICAgIC8vICAgdGhpcy5pc1Jpc2tDb250cm9sVmlzaWJsZSA9IHRydWU7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZihpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnJpc2s/Lmlkcz8ubGVuZ3RoKXtcclxuICAgIC8vICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2VkQ29udHJvbFJpc2sgPSBpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LnJpc2s/Lmlkcz8/W10sXHJcbiAgICAvLyAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmthZ2VUeXBlID0gJ1JJU0snO1xyXG4gICAgLy8gICB0aGlzLmlzUmlza0NvbnRyb2xWaXNpYmxlID0gdHJ1ZTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgdGhpcy5zZXRPcHRpb25hbEZpZWxkKGlzc3VlRGF0YSk7XHJcbn1cclxuLyoqXHJcbiAqIFNldHMgdGhlIHZpc2liaWxpdHkgb2Ygb3B0aW9uYWwgZmllbGRzXHJcbiAqIEBwYXJhbSBpc3N1ZURhdGEgIGlzc3VlIGRhdGEgZmV0Y2hlZCBmcm9tIEFQSVxyXG4gKi9cclxuc2V0T3B0aW9uYWxGaWVsZChpc3N1ZURhdGE6YW55KXtcclxuICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMgPSB7XHJcbiAgICBFWENFUFRJT05fVFlQRTogaXNzdWVEYXRhLmV4Y2VwdGlvbl90eXBlID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgRVZJREVOQ0U6IGlzc3VlRGF0YS5ldmlkZW5jZS5ldmlkZW5jZV9mbGFnID8gdHJ1ZSA6ZmFsc2UsXHJcbiAgICBQUklPUklUWTogIGlzc3VlRGF0YS5wcmlvcml0eSA/IHRydWUgOiBmYWxzZSxcclxuICAgIElTU1VFX1RZUEU6IGZhbHNlLFxyXG4gICAgQVNTT0NJQVRFRF9SSVNLUyA6IGlzc3VlRGF0YS5hc3NvY2lhdGVkX3Jpc2subGVuZ3RoID8gKGlzc3VlRGF0YS5hc3NvY2lhdGVkX3Jpc2tbMF0udGV4dC5sZW5ndGggPyB0cnVlIDogZmFsc2UpOmZhbHNlLFxyXG4gICAgT1ZFUlNJR0hUIDogKGlzc3VlRGF0YS5vdmVyc2Vlci5jY19lbWFpbC5sZW5ndGggPiAwIHx8IGlzc3VlRGF0YS5vdmVyc2Vlci5mYWlsdXJlX2NjX2VtYWlsLmxlbmd0aCA+IDApID8gdHJ1ZSA6IGZhbHNlXHJcbiAgfTtcclxuICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxufVxyXG4vKipcclxuICogR2VuZXJhdGVzIGxpc3Qgb2Ygc2VsZWN0ZWQgb3ZlcnNlZXJcclxuICogQHBhcmFtIGFsbFVzZXJMaXN0IGxpc3Qgb2YgYWxsIHVzZXJzIGluIHRoZSBvcmdhbnphdGlvblxyXG4gKiBAcGFyYW0gb3ZlcnNlZXJMaXN0ICBsaXQgb2YgdGhlIG92ZXJzZWVyIHRoYXQgbmVlZHMgdG8gYmUgZmlsdGVyZWRcclxuICogQHJldHVybnMgIGxpc3Qgb2YgYXJyYXkgY29udGFpbmluZyB0aGUgdXNlcnMgb2JqZWN0c1xyXG4gKi9cclxuZ2VuZXJhdGVPdmVyc2Vlckxpc3QoYWxsVXNlckxpc3Q6YW55LCBvdmVyc2Vlckxpc3Q6YW55ICl7XHJcbiByZXR1cm4gb3ZlcnNlZXJMaXN0Lm1hcCgodXNlcjphbnkpPT57XHJcbiAgICBjb25zdCBmb3VuZFVzZXIgPSBhbGxVc2VyTGlzdC5maW5kKChlbGVtZW50OmFueSkgPT4gZWxlbWVudC5teV9tZW1iZXJfaWQgPT09IHVzZXIubWVtYmVyX2lkKTtcclxuICAgIGlmKGZvdW5kVXNlcil7XHJcbiAgICAgIHJldHVybiBmb3VuZFVzZXI7XHJcbiAgICB9XHJcbiAgfSlcclxufVxyXG4vKipcclxuICogUmVzZXRzIGlzc3VlIGZvcm1cclxuICovXHJcbnJlc2V0SXNzdWVGb3JtKCl7XHJcbiAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICB0aGlzLmxvZ0lzc3VlRm9ybSA9IHtcclxuICAgIGlzc3VlTmFtZSA6ICcnLFxyXG4gICAgZXZpZGVuY2VSZXF1aXJlZDogMCxcclxuICAgIGlzc3VlRGVzY3JpcHRpb246ICcnLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50czogW10sXHJcbiAgICByZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50czpbXSxcclxuICAgIGFzc29jaWF0ZWRSaXNrc0F0dGFjaG1lbnRzOltdLFxyXG4gICAgaXNzdWVDYXRlZ29yeTogW10sXHJcbiAgICBpc3N1ZUN1c3RvbVRhZyA6IFtdLFxyXG4gICAgaXNzdWVSQzogW10sXHJcbiAgICBpc3N1ZVR5cGU6ICdpc3N1ZScsXHJcbiAgICBpc0Fzc2lnblRvTXlzZWxmIDogZmFsc2UsXHJcbiAgICBlbnRydXN0VG86IFtdLFxyXG4gICAgaXNzdWVEdWVEYXRlOiAnJyxcclxuICAgIGlzc3VlRHVlVGltZTogJzExOjU5IFBNJyxcclxuICAgIGV4Y2VwdGlvblR5cGU6IDEsXHJcbiAgICBpc3N1ZVJpc2tSYXRpbmc6IDEsXHJcbiAgICBpc3N1ZVByaW9yaXR5OiAxLFxyXG4gICAgaXNzdWVSZWNvbW1lbmRhdGlvbjogJycsXHJcbiAgICBpc3N1ZUFzc29jaWF0ZWRSaXNrOiAnJyxcclxuICAgIGlzc3VlQ0NVc2VyczogW10sXHJcbiAgICBmYWlsdXJlQ0NVc2VyczogW11cclxuICB9O1xyXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cykpe1xyXG4gICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1c1trZXldID0gZmFsc2U7XHJcbiAgfVxyXG4gLy8gdGhpcy5zbWlsZXlNZXNzYWdlID0gYFRoZSBpc3N1ZSBoYXMgYmVlbiByZXBvcnRlZC5gO1xyXG4gIHRoaXMubW9kZSA9ICdDUkVBVEUnO1xyXG4gIHRoaXMubW9kZUNoYW5nZS5lbWl0KHRoaXMubW9kZSk7XHJcbiAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XHJcbiAgdGhpcy5zZXRTZWxlY3RlZFJDKCk7XHJcbiB9XHJcbiBjaGVja0Rlc2NyaXB0aW9uKCkge1xyXG4gIGlmICh0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZURlc2NyaXB0aW9uID09ICc8YnI+Jykge1xyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEZXNjcmlwdGlvbiA9ICcnO1xyXG4gIH1cclxuICBpZiAodGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSZWNvbW1lbmRhdGlvbiA9PSAnPGJyPicpIHtcclxuICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUmVjb21tZW5kYXRpb24gPSAnJztcclxuICB9XHJcbiAgaWYgKHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQXNzb2NpYXRlZFJpc2sgPT0gJzxicj4nKSB7XHJcbiAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUFzc29jaWF0ZWRSaXNrID0gJyc7XHJcbiAgfVxyXG59XHJcbn1cclxuIl19
|
|
910
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWFuLWlzc3VlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL2xvZy1hbi1pc3N1ZS9sb2ctYW4taXNzdWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUE0QixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2SSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFTakMsTUFBTSxPQUFPLG1CQUFtQjtJQWlMOUIsWUFBb0IsVUFBMkIsRUFBVSxXQUF3QixFQUFVLFlBQTBCLEVBQVUsUUFBeUIsRUFBVSxrQkFBcUM7UUFBbkwsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBOUs5TCxzQkFBaUIsR0FBRztZQUMzQixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsSUFBSSxFQUFDLElBQUk7WUFDVCxzQkFBc0IsRUFBRSxFQUFFO1NBQzNCLENBQUM7UUFDTyxpQkFBWSxHQUFFO1lBQ3JCLFdB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QUFZLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixJQUFJLE1BQU0sRUFBRTtZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztTQUM1QztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7U0FDNUM7SUFDSCxDQUFDOzs7WUFqNEJBLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1Qix5ODVDQUE0Qzs7YUFFN0M7OztZQWZRLGVBQWU7WUFEZixXQUFXO1lBTVgsWUFBWTtZQUNaLGVBQWU7WUFMc0UsaUJBQWlCOzs7eUJBZ0I1RyxLQUFLO3NCQUNMLEtBQUs7Z0NBQ0wsS0FBSzsyQkFNTCxLQUFLO21CQU1MLEtBQUs7cUJBQ0wsS0FBSzttQ0FDTCxLQUFLOzRCQUNMLE1BQU07NkJBQ04sTUFBTTs0QkFDTixNQUFNO3lCQUNOLE1BQU07Z0NBQ04sTUFBTTt5QkFFTixTQUFTLFNBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ0lzc3VlU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2xvZy1pc3N1ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBJc3N1ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lzc3VlLWRhdGEnO1xyXG5pbXBvcnQgeyBUSElTX0VYUFIgfSBmcm9tICdAYW5ndWxhci9jb21waWxlci9zcmMvb3V0cHV0L291dHB1dF9hc3QnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbG9nLWFuLWlzc3VlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbG9nLWFuLWlzc3VlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sb2ctYW4taXNzdWUuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dBbklzc3VlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIG9wZW5lZEZyb20gITogYW55O1xyXG4gIEBJbnB1dCgpIGlzc3VlSWQgITogYW55O1xyXG4gIEBJbnB1dCgpIHJlcG9uc2liaWxpdHlEYXRhID0geyAvLyBvbmx5IHVzZWQgYnkgbG9nIGFuIGlzc3VlXHJcbiAgICByZXNwb25zaWJpbGl0eUlkOiBudWxsLFxyXG4gICAgcmVzcG9uc2liaWxpdHlOYW1lOiAnJyxcclxuICAgIHJjSWQ6bnVsbCxcclxuICAgIHJlc3BvbnNpYmlsaXR5T2JqZWN0SWQ6ICcnXHJcbiAgfTtcclxuICBASW5wdXQoKSBpc3N1ZURldGFpbHMgPXtcclxuICAgIGF1ZGl0UGxhbklkIDogbnVsbCxcclxuICAgICAgYXVkaXRQbGFuTmFtZSAgOicnLFxyXG4gICAgICByY0lkOiBudWxsLFxyXG4gICAgICBhdWRpdE9iaklkOm51bGxcclxuICB9XHJcbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xyXG4gIEBJbnB1dCgpIGNvbmZpZyAhOiBJc3N1ZUNvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgcmVzcG9uc2liaWxpdGllc0RhdGE6IGFueTtcclxuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGN1cnJlbnRVc2VyICE6IGFueTtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIHNob3dEYXRlRXJyb3IgPSBmYWxzZTtcclxuICBzZWxlY3RlZERhdGU6IGFueTtcclxuICBzaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgbG9hZGVyID0gZmFsc2U7XHJcbiAgc21pbGV5TWVzc2FnZSA9IGBUaGUgaXNzdWUgaGFzIGJlZW4gcmVwb3J0ZWQuYDtcclxuICBpc3N1ZURhdGEgITogYW55O1xyXG4gIGlzUmlza0NvbnRyb2xMb2FkaW5nID0gZmFsc2U7XHJcbiAgYWN0aW9uQnV0dG9ucyA9IFtcclxuICAgIHsgYnV0dG9uVGV4dDogJ1JlcG9ydCBNb3JlIElzc3VlcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxyXG4gICAgeyBidXR0b25UZXh0OiAnVmlldyBJc3N1ZScsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdJc3N1ZScgfSxcclxuICBdO1xyXG4gIGNyZWF0ZWREYXRhICE6IGFueTtcclxuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgLy8gbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0Rlc2NyaXB0aW9uJyxcclxuICB9O1xyXG5cclxuICBkYXRlQ29uZmlnID0ge1xyXG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxyXG4gICAgZm9ybWF0OiAnREQgTU1NIFlZWVknLFxyXG4gICAgdW5TZWxlY3RPbkNsaWNrOiB0cnVlLFxyXG4gICAgb3Blbk9uQ2xpY2s6ZmFsc2UsXHJcbiAgICBvcGVuT25Gb2N1czpmYWxzZSxcclxuICAgIG1pbjogbmV3IERhdGUoKS5nZXREYXRlKCkudG9TdHJpbmcoKSxcclxuICB9O1xyXG4gIGxpc3REYXRhOmFueSA9IHtcclxuICAgIGlzc3VlVHlwZUxpc3Q6IFtdLFxyXG4gICAgdXNlckxpc3Q6IFtdLFxyXG4gICAgY2F0ZWdvcnlMaXN0OiBbXSxcclxuICAgIHJjTGlzdDogW10sXHJcbiAgICBsaW5rYWdlTGlzdDpbXVxyXG4gIH07XHJcblxyXG4gIGdldCBtZXNzYWdlKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLm1vZGUgPT09ICdFRElUJyA/ICcgVGhlIElzc3VlIGhhcyBiZWVuIHVwZGF0ZWQuJzogdGhpcy5zbWlsZXlNZXNzYWdlKVxyXG4gIH1cclxuXHJcbiAgbG9nSXNzdWVGb3JtOiBhbnkgPSB7XHJcbiAgICBpc3N1ZU5hbWU6ICcnLFxyXG4gICAgZXZpZGVuY2VSZXF1aXJlZDogMCxcclxuICAgIGlzc3VlRGVzY3JpcHRpb246ICcnLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50czogW10sXHJcbiAgICBpc3N1ZUNhdGVnb3J5OiBbXSxcclxuICAgIGlzc3VlQ3VzdG9tVGFnOiBbXSxcclxuICAgIGlzc3VlUkM6IFtdLFxyXG4gICAgaXNzdWVUeXBlOiAnaXNzdWUnLFxyXG4gICAgaXNBc3NpZ25Ub015c2VsZjogZmFsc2UsXHJcbiAgICBlbnRydXN0VG86IFtdLFxyXG4gICAgaXNzdWVEdWVEYXRlOiAnJyxcclxuICAgIGlzc3VlRHVlVGltZTogJzExOjU5IHBtJyxcclxuICAgIGV4Y2VwdGlvblR5cGU6IDEsXHJcbiAgICBpc3N1ZVJpc2tSYXRpbmc6IDEsXHJcbiAgICBpc3N1ZVByaW9yaXR5OiAxLFxyXG4gICAgaXNzdWVSZWNvbW1lbmRhdGlvbjogJycsXHJcbiAgICByZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50czpbXSxcclxuICAgIGlzc3VlQXNzb2NpYXRlZFJpc2s6ICcnLFxyXG4gICAgYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHM6W10sXHJcbiAgICBpc3N1ZUNDVXNlcnM6IFtdLFxyXG4gICAgZmFpbHVyZUNDVXNlcnM6IFtdLFxyXG4gICAgbGlua2VkQ29udHJvbFJpc2s6W10sXHJcbiAgICBsaW5rYWdlVHlwZSA6ICdSSVNLJyxcclxuXHJcbiAgfTtcclxuICBBdHRhY2htZW50VHJhY2s6IGFueSA9IFtbXSxbXSxbXV07XHJcbiAgYWRkaXRpb25hbE9wdGlvblN0YXR1czogYW55ID0ge1xyXG4gICAgRVhDRVBUSU9OX1RZUEU6IGZhbHNlLFxyXG4gICAgRVZJREVOQ0U6IGZhbHNlLFxyXG4gICAgUFJJT1JJVFk6IGZhbHNlLFxyXG4gICAgSVNTVUVfVFlQRTogZmFsc2UsXHJcbiAgICBBU1NPQ0lBVEVEX1JJU0tTOiBmYWxzZSxcclxuICAgIE9WRVJTSUdIVDogZmFsc2VcclxuICB9O1xyXG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcclxuICAgIHsgbmFtZTogJ0xPVycsIHZhbHVlOiAxLCBjbGFzczogJ2xvdycgfSxcclxuICAgIHsgbmFtZTogJ0xPVy1NZWRpdW0nLCB2YWx1ZTogMiwgY2xhc3M6ICdsb3ctbWVkJyB9LFxyXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogMywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcclxuICAgIHsgbmFtZTogJ0hpZ2gnLCB2YWx1ZTogNCwgY2xhc3M6ICdoaWdoJyB9XHJcbiAgXTtcclxuICByaXNrUHJvcml0eSA9IFtcclxuICAgIHsgbmFtZTogJ0xPVycsIHZhbHVlOiAxLCBjbGFzczogJ2xvdycgfSxcclxuICAgIHsgbmFtZTogJ01FRElVTScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXHJcbiAgICB7IG5hbWU6ICdISUdIJywgdmFsdWU6IDMsIGNsYXNzOiAnaGlnaCcgfSxcclxuXHJcbiAgXTtcclxuXHJcbiAgc2lkZVNlbGVjdG9yRWxlbWVudHM6IGFueSA9IFsnSVNTVUVfQ0FURUdPUlknLCAnSVNTVUVfUkMnLCAnSVNTVUVfV0hPJywgJ0lTU1VFX1RZUEUnLCAnSVNTVUVfQ0MnLCAnSVNTVUVfRkNDJywnSVNTVUVfQ09OVFJPTF9SSVNLJ107XHJcbiAgc2VsZWN0b3JDb25maWcgPSB7XHJcbiAgICBJU1NVRV9DQVRHT1JZOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgSXNzdWUgQ2F0ZWdvcnknLFxyXG4gICAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ0NhdGVnb3J5IHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggSXNzdWUgQ2F0ZWdvcnknLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gQ2F0ZWdvcmllcyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9SQzoge1xyXG4gICAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IFJlc3BvbnNpYmlsaXR5IENlbnRlcicsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnUmVzcG9uc2liaWx0eSBjZW50ZXIgc2VsZWN0ZWQnLFxyXG4gICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gUmVzcG9uc2liaWxpdHkgQ2VudGVycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9XSE86IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCBVc2VyJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9UWVBFOiB7XHJcbiAgICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgSXNzdWUgVHlwZScsXHJcbiAgICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnSXNzdWUgVHlwZSBzZWxlY3RlZCcsXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIElzc3VlIFR5cGUnLFxyXG4gICAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICBub0RhdGFUZXh0OiAnTm8gSXNzdWUgVHlwZXMgRm91bmQnXHJcbiAgICB9LFxyXG4gICAgSVNTVUVfQ0M6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCB1c2VyKHMpJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH0sXHJcbiAgICBJU1NVRV9GQ0M6IHtcclxuICAgICAgcGFuZWxUaXRsZTogJ1NlbGVjdCB1c2VyKHMpJyxcclxuICAgICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdVc2VyIHNlbGVjdGVkJyxcclxuICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2ggVXNlcicsXHJcbiAgICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIG5vRGF0YVRleHQ6ICdObyBVc2VycyBGb3VuZCdcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBmaWVsZHNXaXRoRXJyb3I6IGFueSA9IFtdO1xyXG4gIC8vIGhpZGRlbkxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGFjdGl2ZUZpZWxkID0gJyc7XHJcbiAgYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICBsaXN0TG9hZGluZ1N0YXR1czogYW55ID0gW107XHJcbiAgY3VycmVudFRpbWUgPSAnJztcclxuICAgIC8qKlxyXG4gICAqIGlzUkNQcmVTZWxlY3RlZCxpc1JDVmlzaWJsZSBhcmUgdmFyaWFibGUgdXNlZCB0byBzZXQgdGhlIHZpc2liaWxpdHkgb2YgcmMgZmllbGQgYW5kIGVkaXQgYnV0dG9uIGluIGNlcnRhaW4gY29uZGl0aW9uc1xyXG4gICAqL1xyXG4gIGlzUkNQcmVTZWxlY3RlZCA9IGZhbHNlO1xyXG4gIGlzUkNWaXNpYmxlID0gdHJ1ZVxyXG4gIGlzUkNNYW5kYXRvcnkgPSBmYWxzZTtcclxuICBkYXRhRm9yRWRpdCAhOmFueTtcclxuICBpc1Jpc2tDb250cm9sVmlzaWJsZSA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nU2VydmljZTogTG9nSXNzdWVTZXJ2aWNlLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSwgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVyY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50VGltZSA9IHRoaXMuZ2V0Q3VycmVudFRpbWUoKTtcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMuc2V0VXNlckRldGFpbHMoKTtcclxuICAgIHRoaXMuZmV0Y2hJc3N1ZVR5cGVzKCk7XHJcbiAgICB0aGlzLmZldGNoVXNlckxpc3QoKTtcclxuICAgIHRoaXMuZmV0Y2hDYXRlZ29yeUxpc3QoKTtcclxuICAgIHRoaXMuZmV0Y2hSQ0xpc3QoKTtcclxuICAgIC8vIHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgIC8vICAgaWYgKCFyZXMuZW5hYmxlX3Jpc2tjbGFzcykge1xyXG4gICAgLy8gICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdSSVNLX0NMQVNTSUZJQ0FUSU9OJyk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pO1xyXG4gICAgLy8gY29tbWVudGVkIHRoZSBhYm92ZSBBUEkgc2luY2UgUmlzayBDbGFzc2lmaWNhdGlvbiBzaG91bGQgYmUgZGlzcGxheWVkIGJ5IGRlZmF1bHQgaW4gbG9nIGFuIGlzc3VlIGZvcm1cclxuXHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZXJjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICB0aGlzLmZldGNoQ29udHJvbFJpc2tzKCk7XHJcbiAgICAgdGhpcy5kZWNpZGVSQ21hbmRhdG9yeSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRUaW1lID0gdGhpcy5nZXRDdXJyZW50VGltZSgpO1xyXG4gIH1cclxuXHJcbiAgZGVjaWRlUkNtYW5kYXRvcnkoKXtcclxuICAgIHRoaXMuaXNSQ01hbmRhdG9yeSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldEN1cnJlbnRUaW1lKCkge1xyXG4gICAgdGhpcy5jdXJyZW50VGltZSA9IHRoaXMuZ2V0Q3VycmVudFRpbWUoKTtcclxuICB9XHJcbiAgZ2V0Q3VycmVudFRpbWUoKSB7XHJcbiAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgaWYgKHRvZGF5LmdldERhdGUoKSA9PT0gbmV3IERhdGUodGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEdWVEYXRlKS5nZXREYXRlKCkpIHtcclxuICAgICAgaWYgKHRvZGF5LmdldEhvdXJzKCkgPCAxMiAmJiB0b2RheS5nZXRNaW51dGVzKCkgPCA1OSAmJiB0b2RheS5nZXRTZWNvbmRzKCkgPCA1OSkge1xyXG4gICAgICAgIHJldHVybiBgJHsodG9kYXkuZ2V0SG91cnMoKSA8IDEwKSA/ICcwJyArIHRvZGF5LmdldEhvdXJzKCkgOiB0b2RheS5nZXRIb3VycygpfTokeyh0b2RheS5nZXRNaW51dGVzKCkgPCAxMCkgPyAnMCcgKyB0b2RheS5nZXRNaW51dGVzKCkgOiB0b2RheS5nZXRNaW51dGVzKCl9IGFtYDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYCR7KCh0b2RheS5nZXRIb3VycygpIC0gMTIpIDwgMTApID8gJzAnICsgKHRvZGF5LmdldEhvdXJzKCkgLSAxMikgOiAodG9kYXkuZ2V0SG91cnMoKSAtIDEyKX06JHsodG9kYXkuZ2V0TWludXRlcygpIDwgMTApID8gJzAnICsgdG9kYXkuZ2V0TWludXRlcygpIDogdG9kYXkuZ2V0TWludXRlcygpfSBwbWA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnMDA6MDAgYW0nO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRVc2VyRGV0YWlscygpIHtcclxuICAgIHRoaXMuY3VycmVudFVzZXIgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkudXNlcjtcclxuICB9XHJcbiAgZmV0Y2hJc3N1ZVR5cGVzKCkge1xyXG4gICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1swXSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jaGVja0FsbExpc3RMb2FkZWQoKTtcclxuICAgIHRoaXMubG9nU2VydmljZS5nZXRJc3N1ZVR5cGVzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdHVzWzBdID0gdHJ1ZTtcclxuICAgICAgdGhpcy5saXN0RGF0YS5pc3N1ZVR5cGVMaXN0ID0gcmVzO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1swXSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZmV0Y2hVc2VyTGlzdCgpIHtcclxuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMV0gPSBmYWxzZTtcclxuICAgIHRoaXMubG9nU2VydmljZS5nZXRPcmdQZW9wbGUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbMV0gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxpc3REYXRhLnVzZXJMaXN0ID0gcmVzO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1sxXSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZldGNoQ2F0ZWdvcnlMaXN0KCkge1xyXG4gICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1syXSA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmdldElzc3VlQ2F0ZWdvcmllcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1syXSA9IHRydWU7XHJcbiAgICAgIHRoaXMubGlzdERhdGEuY2F0ZWdvcnlMaXN0ID0gcmVzPy5kYXRhO1xyXG4gICAgICB0aGlzLmxpc3REYXRhLmNhdGVnb3J5TGlzdCA9IHRoaXMubGlzdERhdGEuY2F0ZWdvcnlMaXN0LmZpbHRlcigoZTphbnkpPT4gZT8uY2F0ZWdvcnlfbmFtZSAhPT0gJ1VuY2F0ZWdvcml6ZWQnKVxyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1syXSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hlY2tBbGxMaXN0TG9hZGVkKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZldGNoUkNMaXN0KCkge1xyXG4gICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1szXSA9IGZhbHNlO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXR1c1szXSA9IHRydWU7XHJcbiAgICAgIHRoaXMubGlzdERhdGEucmNMaXN0ID0gcmVzO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgICB0aGlzLnNldFNlbGVjdGVkUkMoKTtcclxuICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0dXNbM10gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoZWNrQWxsTGlzdExvYWRlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZFJDKCl7XHJcbiAgICBpZih0aGlzLnJlcG9uc2liaWxpdHlEYXRhPy5yY0lkICYmIHRoaXMub3BlbmVkRnJvbSA9PT0gJ0NPTVBMSUFOQ0VfV09SS1JPT00nKXtcclxuICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSQyA9ICB0aGlzLnJlcG9uc2liaWxpdHlEYXRhLnJjSWQgPyB0aGlzLmxpc3REYXRhLnJjTGlzdC5maWx0ZXIoKGU6YW55KSA9PiBlLnJjX2lkID09PSB0aGlzLnJlcG9uc2liaWxpdHlEYXRhLnJjSWQpOltdO1xyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUkMgID09PlwiLHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUkMsIHRoaXMubGlzdERhdGEucmNMaXN0ICwgIHRoaXMucmVwb25zaWJpbGl0eURhdGEucmNJZCwgdGhpcy5saXN0RGF0YS5yY0xpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5yY19pZCA9PT0gdGhpcy5yZXBvbnNpYmlsaXR5RGF0YS5yY0lkKSlcclxuICAgIH1lbHNlIGlmKHRoaXMuaXNzdWVEZXRhaWxzPy5yY0lkICYmIFsnQVVESVRfV09SS1JPT00nLCdWSUVXX0FVRElUX0VYRUNVVElPTl9TVU1NQVJZJywnRVhFQ1VURV9BVURJVF9QTEFOJ10uaW5jbHVkZXModGhpcy5vcGVuZWRGcm9tKSl7XHJcbiAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlUkMgPSB0aGlzLmlzc3VlRGV0YWlscz8ucmNJZCA/IHRoaXMubGlzdERhdGEucmNMaXN0LmZpbHRlcigoZTphbnkpID0+IGUucmNfaWQgPT09IHRoaXMuaXNzdWVEZXRhaWxzPy5yY0lkKTpbXTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmxvZ0lzc3VlRm9ybT8uaXNzdWVSQz8ubGVuZ3RoKXtcclxuICAgICAgdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMucmVwb25zaWJpbGl0eURhdGF0aGlzLnJlcG9uc2liaWxpdHlEYXRhdGhpcy5yZXBvbnNpYmlsaXR5RGF0YSA9PT0+XCIsIHRoaXMucmVwb25zaWJpbGl0eURhdGEpXHJcbiAgICBpZighKHRoaXMucmVwb25zaWJpbGl0eURhdGE/LnJjSWQgfHwgdGhpcy5pc3N1ZURldGFpbHM/LnJjSWQpICYmIFsnQ09NUExJQU5DRV9XT1JLUk9PTScsJ0FVRElUX1dPUktST09NJywnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkpe1xyXG4gICAgdGhpcy5pc1JDVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuaXNSQ1Zpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGZldGNoQ29udHJvbFJpc2tzKCl7XHJcblxyXG4gICAgICBpZihbJ1ZJRVdfQVVESVRfRVhFQ1VUSU9OX1NVTU1BUlknLCdFWEVDVVRFX0FVRElUX1BMQU4nXS5pbmNsdWRlcyh0aGlzLm9wZW5lZEZyb20pKXtcclxuXHJcbiAgICAgICAgdGhpcy5nZXRMaW5rYWdlKHRoaXMuaXNzdWVEZXRhaWxzPy5hdWRpdE9iaklkLHRoaXMubG9nSXNzdWVGb3JtLmxpbmthZ2VUeXBlKVxyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0TGlua2FnZShhdWRpdElkOmFueSwgdHlwZTpzdHJpbmcpe1xyXG4gICAgdGhpcy5pc1Jpc2tDb250cm9sTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuZ2V0Q29udHJvbFJpc2soYXVkaXRJZCx0eXBlKT8uc3Vic2NyaWJlKChkYXRhOmFueSk9PntcclxuICAgICAgdGhpcy5saXN0RGF0YS5saW5rYWdlTGlzdCA9IFsuLi50aGlzLmxpc3REYXRhLmxpbmthZ2VMaXN0LC4uLmRhdGFdO1xyXG4gICAgICB0aGlzLmxpc3REYXRhLmxpbmthZ2VMaXN0ID0gIHRoaXMubGlzdERhdGEubGlua2FnZUxpc3QuZmlsdGVyKCh0aGluZzphbnksIGluZGV4OmFueSwgc2VsZjphbnkpID0+XHJcbiAgaW5kZXggPT09IHNlbGYuZmluZEluZGV4KCh0OmFueSkgPT4gKFxyXG4gICAgdC5pdGVtSWQgPT09IHRoaW5nLml0ZW1JZCAmJiB0Lml0ZW1UeXBlID09PSB0aGluZy5pdGVtVHlwZVxyXG4gICkpXHJcbilcclxuICAgICAgdGhpcy5pc1Jpc2tDb250cm9sTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBjb25zb2xlLmxvZyhcImxpbmthZ2VcIix0aGlzLmxpc3REYXRhKVxyXG4gICAgIH0sKGVycm9yOmFueSk9PntcclxuICAgICAgdGhpcy5pc1Jpc2tDb250cm9sTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgIH0pXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRoaXMgZnVuY3Rpb2ogY2hlY2sgd2VhdGhlciBhbGwgdGhlIHJlcXVpcmVkIGxpc3RzIGFyZSBsb2FkZWRcclxuICAgKiBJZiBsb2FkZWQgaGlkZXMgdGhlIGxvYWRlciBvdGhlcndpc2Ugc2hvd3MgdGhlIGxvYWRlci5cclxuICAgKi9cclxuICBjaGVja0FsbExpc3RMb2FkZWQoKSB7XHJcbiAgICBpZiAodGhpcy5saXN0TG9hZGluZ1N0YXR1cy5pbmNsdWRlcyhmYWxzZSkpIHtcclxuICAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgICBpZih0aGlzLm1vZGU9PT0nRURJVCcpe1xyXG4gICAgICAgIHRoaXMuZmV0Y2hJc3N1ZURldGFpbHMoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBlcnJvciBmcm9tIHRoZSBmaWVscyB3aXRoIGVycm9yIHRvIHJlbW92ZSB0aGUgZXJyb3IgbWVzc2FnIGZyb20gdGhlIFVJXHJcbiAgICogQHBhcmFtIGVycm9yS2V5IGVycm9yIElkZW50aWZpZXIgdXNlZCB0byBzaG93IGVycm9yIGluIHNwZWNpZmljIGZpZWxkcy5cclxuICAgKi9cclxuICByZW1vdmVFcnJvcihlcnJvcktleTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmllbGRzV2l0aEVycm9yLmluZGV4T2YoZXJyb3JLZXkpO1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy5maWVsZHNXaXRoRXJyb3Iuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICB9XHJcbiAgb3BlbkRhdGVQaWNrZXIoKSB7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXIuYXBpLm9wZW4oKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXRBY3RpdmVGaWVsZFNlbGVjdG9yKCdJU1NVRV9EQVRFX1RJTUUnLCAnSVNTVUVfREFURV9USU1FJyk7XHJcbiAgfVxyXG4gIGNsb3NlRGF0ZVBpY2tlcihldnQ6IGFueSkge1xyXG4gICAgaWYgKCFldnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2dD8uZGF0ZT8uX2QpIHtcclxuICAgICAgbGV0IG1vbnRoQXJyYXkgPSBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXVxyXG4gICAgICBjb25zdCBkYXRlVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/Ll9kKS5nZXREYXRlKCk7XHJcbiAgICAgIGNvbnN0IG1vbnRoVmFsdWUgPSBtb250aEFycmF5W25ldyBEYXRlKGV2dD8uZGF0ZT8uX2QpLmdldE1vbnRoKCldO1xyXG4gICAgICBjb25zdCB5ZWFyVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/Ll9kKS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBjb25zdCBkYXRlU3RyID0gYCR7ZGF0ZVZhbHVlfSAke21vbnRoVmFsdWV9ICR7eWVhclZhbHVlfWA7XHJcbiAgICAgIGlmIChldnQ/LmRhdGU/Ll9kICE9PSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUR1ZURhdGU/Ll9kKSB7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEdWVUaW1lID0gXCIxMTo1OSBQTVwiO1xyXG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFRpbWUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGV2dD8uZGF0ZT8uX2QpIHtcclxuICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEdWVEYXRlID0gZXZ0Py5kYXRlPy5fZDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVBpY2tlci5hcGkuY2xvc2UoKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICAgIHRoaXMuc2V0QWN0aXZlRmllbGRTZWxlY3RvcignJywgJycpO1xyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZlRmllbGRTZWxlY3RvcihhY3RpdmVGaWVsZDogc3RyaW5nLCBhY3RpdmVTZWxlY3Rvcj86IHN0cmluZykge1xyXG4gICAgdGhpcy5hY3RpdmVGaWVsZCA9IGFjdGl2ZUZpZWxkO1xyXG4gICAgKGFjdGl2ZVNlbGVjdG9yID8gdGhpcy5hY3RpdmVTZWxlY3RvciA9IGFjdGl2ZVNlbGVjdG9yIDogdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnKTtcclxuICAgIGNvbnN0IHNsaWRlclR5cGUgPSBbJ0lTU1VFX1JDJywgJ0lTU1VFX0NBVEVHT1JZJywgJ0lTU1VFX1RZUEUnLCAnSVNTVUVfQ0MnLCAnSVNTVUVfRkNDJywgJ0lTU1VFX1dITycsJ0lTU1VFX0NPTlRST0xfUklTSyddO1xyXG4gICAgaWYgKHNsaWRlclR5cGUuaW5jbHVkZXMoYWN0aXZlRmllbGQpKSB7XHJcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGZpZWxkRGVzZWxlY3Rvcih0eXBlOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICAgIHRoaXMuYWN0aXZlRmllbGQgPSAnJztcclxuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdG9yQWN0aW9uKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKGV2dCwgdHlwZSlcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdJU1NVRV9DQVRFR09SWSc6IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhldnQpO1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ2F0ZWdvcnkgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEuY2F0ZWdvcnlMaXN0LCAnY2F0ZWdvcnlfaWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyggdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVDYXRlZ29yeSk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgaWYgKGV2dD8ubGVuZ3RoID4gMCkgeyB0aGlzLnJlbW92ZUVycm9yKCdpc3N1ZUNhdGVnb3J5JykgfVxyXG4gICAgICAgIGlmKHRoaXMubG9nSXNzdWVGb3JtPy5pc3N1ZUNhdGVnb3J5WzBdPy5jdXN0b21fdGFncz8ubGVuZ3RoKXtcclxuICAgICAgICAgIGNvbnN0IHRhZzphbnkgPSBbXVxyXG4gICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0/Lmlzc3VlQ2F0ZWdvcnlbMF0/LmN1c3RvbV90YWdzLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgdGFnLnB1c2goe25hbWU6ZWxlbWVudCwgdmFsdWU6Jyd9KVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUN1c3RvbVRhZyA9IHRhZztcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ3VzdG9tVGFnID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIC8vW1wiaXNzdWVOYW1lXCIsIFwiaXNzdWVDYXRlZ29yeVwiLCBcImlzc3VlUkNcIiwgXCJlbnRydXN0VG9cIiwgXCJpc3N1ZUR1ZURhdGVcIiwgXCJpc3N1ZVJlY29tbWVuZGF0aW9uXCJdXHJcbiAgICAgIGNhc2UgJ0lTU1VFX1JDJzoge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGV2dCwgdHlwZSlcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDID0gdGhpcy5pZFRvQXJyYXkoZXZ0LCB0aGlzLmxpc3REYXRhLnJjTGlzdCwgJ3JjX2lkJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgaWYgKGV2dD8ubGVuZ3RoID4gMCkgeyB0aGlzLnJlbW92ZUVycm9yKCdpc3N1ZVJDJykgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX1dITyc6IHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5lbnRydXN0VG8gPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEudXNlckxpc3QsICdlbXBsb3llZV9pZCcpO1xyXG4gICAgICAgIGlmKHRoaXMubG9nSXNzdWVGb3JtLmVudHJ1c3RUb1swXT8ubXlfbWVtYmVyX2lkID09PSB0aGlzLmN1cnJlbnRVc2VyLmlkKXtcclxuICAgICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzQXNzaWduVG9NeXNlbGYgPSB0cnVlO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNBc3NpZ25Ub015c2VsZiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBpZiAoZXZ0Py5sZW5ndGggPiAwKSB7IHRoaXMucmVtb3ZlRXJyb3IoJ2VudHJ1c3RUbycpIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9UWVBFJzoge1xyXG4gICAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlVHlwZSA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS5pc3N1ZVR5cGVMaXN0LCAnaXNzdWVfaWQnKTtcclxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9DQyc6IHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNDVXNlcnMgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEudXNlckxpc3QsICdlbXBsb3llZV9lbWFpbCcpO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0ZDQyc6IHtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5mYWlsdXJlQ0NVc2VycyA9IHRoaXMuaWRUb0FycmF5KGV2dCwgdGhpcy5saXN0RGF0YS51c2VyTGlzdCwgJ2VtcGxveWVlX2VtYWlsJyk7XHJcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNhc2UgJ0lTU1VFX0NPTlRST0xfUklTSyc6XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2VkQ29udHJvbFJpc2sgPSB0aGlzLmlkVG9BcnJheShldnQsIHRoaXMubGlzdERhdGEubGlua2FnZUxpc3QsICdpdGVtSWQnKTtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rYWdlVHlwZSA9ICB0aGlzLmxvZ0lzc3VlRm9ybT8ubGlua2VkQ29udHJvbFJpc2tbMF0/Lml0ZW1UeXBlO1xyXG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSXRlbSh0eXBlOiBhbnksIGVsZW1lbnQ6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0NBVEVHT1JZJzoge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ2F0ZWdvcnkuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uY2F0ZWdvcnlfaWQgPT09IGVsZW1lbnQuY2F0ZWdvcnlfaWQpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ2F0ZWdvcnkuc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9SQyc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLnJjX2lkID09PSBlbGVtZW50LnJjX2lkKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnSVNTVUVfV0hPJzoge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmVudHJ1c3RUby5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5lbXBsb3llZV9pZCA9PT0gZWxlbWVudC5lbXBsb3llZV9pZCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uZW50cnVzdFRvLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNBc3NpZ25Ub015c2VsZiA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX1RZUEUnOiB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVUeXBlLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLmlzc3VlX2lkID09PSBlbGVtZW50Lmlzc3VlX2lkKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVR5cGUuc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9DQyc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZUNDVXNlcnMuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uZW1wbG95ZWVfZW1haWwgPT09IGVsZW1lbnQuZW1wbG95ZWVfZW1haWwpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQ0NVc2Vycy5zcGxpY2UoaXRlbUluZGV4LCAxKTsgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0ZDQyc6IHtcclxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5mYWlsdXJlQ0NVc2Vycy5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5lbXBsb3llZV9lbWFpbCA9PT0gZWxlbWVudC5lbXBsb3llZV9lbWFpbCk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uZmFpbHVyZUNDVXNlcnMuc3BsaWNlKGl0ZW1JbmRleCwgMSk7IH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdJU1NVRV9DT05UUk9MX1JJU0snOlxyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLml0ZW1JZCA9PT0gZWxlbWVudC5pdGVtSWQpO1xyXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7IHRoaXMubG9nSXNzdWVGb3JtLmxpbmtlZENvbnRyb2xSaXNrLnNwbGljZShpdGVtSW5kZXgsIDEpOyB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzc2lnbk15c2VsZihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnJlbW92ZUVycm9yKCdlbnRydXN0VG8nKVxyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uZW50cnVzdFRvID0gW107XHJcbiAgICBpZihldmVudCl7XHJcbiAgICAgIHRoaXMubG9nSXNzdWVGb3JtLmVudHJ1c3RUbyA9IHRoaXMubGlzdERhdGEudXNlckxpc3QuZmlsdGVyKChlbXBsaXN0OiBhbnkpID0+IGVtcGxpc3QubXlfbWVtYmVyX2lkID09PSB0aGlzLmN1cnJlbnRVc2VyLmlkKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0RXhjZXB0aW9uKHR5cGU6IGFueSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5leGNlcHRpb25UeXBlID0gdHlwZTsgfVxyXG4gIHNldEV2aWRlbmNlKHR5cGU6IGFueSkgeyB0aGlzLmxvZ0lzc3VlRm9ybS5ldmlkZW5jZVJlcXVpcmVkID0gdHlwZTsgfVxyXG4gIHNldElzc3VlVHlwZSh0eXBlOiBhbnkpIHsgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVUeXBlID0gdHlwZTsgfVxyXG5cclxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXNbZXZlbnQuY29kZV0gPSBldmVudC5jaGVja2VkO1xyXG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XHJcbiAgfVxyXG4gIGlkVG9BcnJheShzZWxlY3RlZEl0ZW1zOiBhbnksIGxpc3RJdGVtczogYW55LCBmaWx0ZXJrZXk6IGFueSkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBzZWxlY3RlZEl0ZW1zO1xyXG4gICAgY29uc3QgbGlzdCA9IGxpc3RJdGVtcztcclxuICAgIGNvbnN0IGtleSA9IGZpbHRlcmtleTtcclxuICAgIGNvbnN0IHggPSBsaXN0LmZpbHRlcigoZWw6IGFueSkgPT4gc2VsZWN0ZWQuaW5jbHVkZXMoZWxba2V5XSkpO1xyXG4gICAgcmV0dXJuIHg7XHJcbiAgfVxyXG4vLy9Db2RlIGJldHdlZW4gNTAzIHRvIDYwOCBjYW4gYmUgb3B0aW1pemVkIHRvIHJlbW92ZSBkdXBsaWNhdGlvblxyXG4gc2VsZWN0RmlsZSh0eXBlOnN0cmluZyxmaWxlczphbnkpe1xyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSAnSVNTVUVfREVTQ1JJUFRJT04nOiB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGZpbGVzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlc1tpXS5maWxlLm5hbWUgPz8gJyc7XHJcbiAgICAgICAgdGhpcy5BdHRhY2htZW50VHJhY2tbMF0ucHVzaChuYW1lKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZXNbaV0uZmlsZSx0eXBlKTtcclxuICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgICB9XHJcbiAgICBjYXNlICdSRUNPTU1FTkRFRF9BQ1RJT05TJzp7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGZpbGVzLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlc1tpXS5maWxlLm5hbWUgPz8gJyc7XHJcbiAgICAgICAgdGhpcy5BdHRhY2htZW50VHJhY2tbMV0ucHVzaChuYW1lKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZXNbaV0uZmlsZSx0eXBlKTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGNhc2UgJ0FTU09DSUFURURfUklTS1MnOntcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gZmlsZXMubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcclxuICAgICAgICB0aGlzLkF0dGFjaG1lbnRUcmFja1syXS5wdXNoKG5hbWUpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlc1tpXS5maWxlLHR5cGUpO1xyXG4gICAgICB9XHJcbiAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiB9XHJcbn1cclxuXHJcblxyXG4gIHVwbG9hZEZpbGUoZmlsZTogYW55LHR5cGU6c3RyaW5nKSB7XHJcbiAgICBsZXQgdHJhY2tJbmRleCA9IDAgO1xyXG4gICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgICBjYXNlICdJU1NVRV9ERVNDUklQVElPTic6e1xyXG4gICAgICAgIHRyYWNrSW5kZXggPSAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ1JFQ09NTUVOREVEX0FDVElPTlMnOntcclxuICAgICAgICB0cmFja0luZGV4ID0gMTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBU1NPQ0lBVEVEX1JJU0tTJzp7XHJcbiAgICAgICAgdHJhY2tJbmRleCA9IDI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XHJcbiAgICBjb25zdCBkZXN0aW5hdGlvblN0cmluZyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKS50b1N0cmluZygpO1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLnVwbG9hZEZpbGVzKGZvcm1EYXRhLCBkZXN0aW5hdGlvblN0cmluZysnLycpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcblxyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5BdHRhY2htZW50VHJhY2tbdHJhY2tJbmRleF0uaW5kZXhPZihmaWxlPy5uYW1lKTtcclxuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLkF0dGFjaG1lbnRUcmFja1t0cmFja0luZGV4XS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoKHR5cGUpe1xyXG4gICAgICAgICAgY2FzZSAnSVNTVUVfREVTQ1JJUFRJT04nOntcclxuICAgICAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50cy5wdXNoKHJlcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnUkVDT01NRU5ERURfQUNUSU9OUyc6e1xyXG4gICAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5yZWNvbW1lbmRlZEFjdGlvbnNBdHRhY2htZW50cy5wdXNoKHJlcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSAnQVNTT0NJQVRFRF9SSVNLUyc6e1xyXG4gICAgICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5hc3NvY2lhdGVkUmlza3NBdHRhY2htZW50cy5wdXNoKHJlcyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSAgdGhpcy5BdHRhY2htZW50VHJhY2tbdHJhY2tJbmRleF0uaW5kZXhPZihmaWxlLm5hbWUpO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIHRoaXMuQXR0YWNobWVudFRyYWNrW3RyYWNrSW5kZXhdLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoZmlsZTogYW55LHR5cGU6c3RyaW5nKSB7XHJcbiAgICBsZXQgZmlsZUluZGV4ID0gLTE7XHJcbiAgICBzd2l0Y2godHlwZSl7XHJcbiAgICAgIGNhc2UgJ0lTU1VFX0RFU0NSSVBUSU9OJzp7XHJcbiAgICAgICAgZmlsZUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50cz8uZmluZEluZGV4KChjdXJyZW50RmlsZXM6IGFueSkgPT4gY3VycmVudEZpbGVzLm9yZ19maWxlID09PSBmaWxlLm9yZ19maWxlKSA/PyAtMTtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzPy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdSRUNPTU1FTkRFRF9BQ1RJT05TJzp7XHJcbiAgICAgICAgZmlsZUluZGV4ID0gdGhpcy5sb2dJc3N1ZUZvcm0ucmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM/LmZpbmRJbmRleCgoY3VycmVudEZpbGVzOiBhbnkpID0+IGN1cnJlbnRGaWxlcy5vcmdfZmlsZSA9PT0gZmlsZS5vcmdfZmlsZSkgPz8gLTE7XHJcbiAgICAgICAgdGhpcy5sb2dJc3N1ZUZvcm0ucmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM/LnNwbGljZShmaWxlSW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ0FTU09DSUFURURfUklTS1MnOntcclxuICAgICAgICBmaWxlSW5kZXggPSB0aGlzLmxvZ0lzc3VlRm9ybS5hc3NvY2lhdGVkUmlza3NBdHRhY2htZW50cz8uZmluZEluZGV4KChjdXJyZW50RmlsZXM6IGFueSkgPT4gY3VycmVudEZpbGVzLm9yZ19maWxlID09PSBmaWxlLm9yZ19maWxlKSA/PyAtMTtcclxuICAgICAgICB0aGlzLmxvZ0lzc3VlRm9ybS5hc3NvY2lhdGVkUmlza3NBdHRhY2htZW50cz8uc3BsaWNlKGZpbGVJbmRleCwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiBhZGRJc3N1ZSgpe1xyXG4gICBjb25zdCBmb3JtID0gY2xvbmVEZWVwKHRoaXMubG9nSXNzdWVGb3JtKTtcclxuICAgaWYgKGZvcm0uaXNBc3NpZ25Ub015c2VsZil7XHJcbiAgICAgZm9ybS5lbnRydXN0VG8gPSB0aGlzLmxpc3REYXRhLnVzZXJMaXN0LmZpbHRlcigoZW1wbGlzdDogYW55KSA9PiBlbXBsaXN0Lm15X21lbWJlcl9pZCA9PT0gdGhpcy5jdXJyZW50VXNlci5pZCk7XHJcbiAgIH1cclxuXHJcbiAgIHRoaXMuZmllbGRzV2l0aEVycm9yID0gW107XHJcbiAgIHRoaXMuZmllbGRzV2l0aEVycm9yID0gdGhpcy5sb2dTZXJ2aWNlLnZhbGlkYXRlKGZvcm0sIHRoaXMub3BlbmVkRnJvbSx0aGlzLmlzUkNNYW5kYXRvcnkpO1xyXG4gICBpZiAodGhpcy5maWVsZHNXaXRoRXJyb3IubGVuZ3RoID4gMCApe1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICAgY29uc3QgUEFZTE9BRCA9IHRoaXMubG9nU2VydmljZS5wYXlsb2FkQnVpbGRlcihmb3JtLCB0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMpO1xyXG5cclxuICAgaWYodGhpcy5tb2RlID09PSAnQ1JFQVRFJyl7XHJcbiAgIFBBWUxPQUQubGlua2FnZV9vYmplY3QgPSB7IHNvdXJjZSA6IHRoaXMub3BlbmVkRnJvbSwgdHlwZTonJywgdHlwZV9pZDogMCwgc291cmNlX2lkOiAwLCBzb3VyY2Vfb2JqZWN0X2lkOiAnJ307XHJcbiAgICBpZiAodGhpcy4gb3BlbmVkRnJvbSA9PT0gJ0NPTVBMSUFOQ0VfV09SS1JPT00nICYmIHRoaXMucmVwb25zaWJpbGl0eURhdGE/LnJlc3BvbnNpYmlsaXR5SWQpe1xyXG4gICAgICBQQVlMT0FELmxpbmthZ2Vfb2JqZWN0ID0geyBzb3VyY2VfaWQ6ICB0aGlzLnJlcG9uc2liaWxpdHlEYXRhPy5yZXNwb25zaWJpbGl0eUlkLCB0eXBlOiAnJywgdHlwZV9pZDogMCwgIHNvdXJjZSA6IHRoaXMub3BlbmVkRnJvbSwgc291cmNlX29iamVjdF9pZDogdGhpcy5yZXBvbnNpYmlsaXR5RGF0YT8ucmVzcG9uc2liaWxpdHlPYmplY3RJZCB9IDtcclxuICAgfVxyXG4gICBpZihbJ1ZJRVdfQVVESVRfRVhFQ1VUSU9OX1NVTU1BUlknLCdFWEVDVVRFX0FVRElUX1BMQU4nXS5pbmNsdWRlcyh0aGlzLm9wZW5lZEZyb20pKXtcclxuICAgICAgICAgIGlmKHRoaXMubG9nSXNzdWVGb3JtPy5saW5rYWdlVHlwZSAmJiB0aGlzLmxvZ0lzc3VlRm9ybT8ubGlua2VkQ29udHJvbFJpc2subGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgIGlmKFsnUklTSycsICdSRVNQT05TSUJJTElUWSddLmluY2x1ZGVzKHRoaXMubG9nSXNzdWVGb3JtPy5saW5rYWdlVHlwZSkpe1xyXG4gICAgICAgICAgICAgIFBBWUxPQUQubGlua2FnZV9vYmplY3Quc291cmNlX2lkID0gdGhpcy5sb2dJc3N1ZUZvcm0/LmxpbmtlZENvbnRyb2xSaXNrWzBdPy5pdGVtSWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgfVxyXG4gICBpZihbJ0FVRElUX1dPUktST09NJywnVklFV19BVURJVF9FWEVDVVRJT05fU1VNTUFSWScsJ0VYRUNVVEVfQVVESVRfUExBTiddLmluY2x1ZGVzKHRoaXMub3BlbmVkRnJvbSkpe1xyXG4gICAgICBpZih0aGlzLmlzc3VlRGV0YWlscy5hdWRpdFBsYW5JZCl7XHJcbiAgICAgICAgUEFZTE9BRC5saW5rYWdlX29iamVjdC5zb3VyY2VfaWQgPSAgdGhpcy5pc3N1ZURldGFpbHMuYXVkaXRQbGFuSWQ7XHJcbiAgICAgIH1cclxuICAgfVxyXG4gIH1cclxuXHJcbiAgaWYodGhpcy5tb2RlID09PSAnRURJVCcpe1xyXG4gICAgUEFZTE9BRC5Jc3N1ZUxpbmthZ2UgPSB0aGlzLmRhdGFGb3JFZGl0Py5saW5rYWdlX29iamVjdDtcclxuICB9XHJcbiAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlXHJcbiAgY29uc29sZS5sb2coJ1BBWUxPQUQgPT09PicsIFBBWUxPQUQpXHJcbiAgIGlmKHRoaXMubW9kZSA9PT0gJ0VESVQnKXtcclxuICAgIHRoaXMubG9nU2VydmljZS51cGRhdGVJc3N1ZShQQVlMT0FELHRoaXMuaXNzdWVJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgIC8vIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBUaGUgaXNzdWUgaGFzIGJlZW4gdXBkYXRlZC5gO1xyXG4gICAgICB0aGlzLmlzc3VlRGF0YSA9IHJlcztcclxuICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2VcclxuICAgICBcclxuICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcclxuICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsICdhbGVydCcpO1xyXG4gICB9KTtcclxuICAgfWVsc2UgaWYodGhpcy5tb2RlID09PSAnQ1JFQVRFJyB8fCB0aGlzLm1vZGUgPT09ICcnIHx8ICF0aGlzLm1vZGUpe1xyXG4gICAgdGhpcy5sb2dTZXJ2aWNlLmNyZWF0ZUlzc3VlKFBBWUxPQUQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pc3N1ZURhdGEgPSByZXM7XHJcbiAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XHJcbiAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgIFxyXG4gICB9LCBlcnJvciA9PiB7XHJcbiAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcclxuICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgIHRoaXMuc25hY2tCYXIuc2hvdygnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JywgJ2FsZXJ0Jyk7XHJcbiAgIH0pO1xyXG4gICB9XHJcblxyXG4gfVxyXG4gY2xvc2VTbWlsZXkoZXZ0PzogYW55KXtcclxuICB0aGlzLnJlc2V0SXNzdWVGb3JtKCk7XHJcbiAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XHJcbiAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gIHRoaXMuY2xvc2VXb3JrRmxvdyh0aGlzLmlzc3VlRGF0YSxmYWxzZSk7XHJcbiB9XHJcbi8qKlxyXG4gKiBDbG9zZXMgd29ya2Zsb3cgZW5naW5lXHJcbiAqIEBwYXJhbSBldnRcclxuICogQHBhcmFtIGNvbmZpcm1cclxuICovXHJcbmNsb3NlV29ya0Zsb3coZXZ0OiBhbnksIGNvbmZpcm06YW55KXtcclxuICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoe2V2dCwgY29uZmlybX0pO1xyXG4gfVxyXG4gYWN0aW9uKGV2dDogYW55KXtcclxuICAgaWYgKGV2dCA9PT0gJ2FkZE1vcmUnKXtcclxuICAgIHRoaXMucmVzZXRJc3N1ZUZvcm0oKTtcclxuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xyXG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5jbG9zZVdvcmtGbG93KHRoaXMuaXNzdWVEYXRhLCBmYWxzZSk7XHJcbiAgfVxyXG4gIGVsc2UgaWYoZXZ0ID09PSAndmlld0lzc3VlJyl7XHJcbiAgICB0aGlzLnZpZXdJc3N1ZSgpO1xyXG4gIH1cclxuXHJcbiAgIH1cclxuXHJcbiAgIHZpZXdJc3N1ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XHJcbiAgICAgICBsZXQgdXJsOiBzdHJpbmc7XHJcbiAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcclxuICAgICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XHJcbiAgICAgICB9XHJcblxyXG4gICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XHJcbiAgICAgICAgIHVybCArPSAnL2lzc3VlL2lzc3VlLXdvcmtyb29tLycgKyB0aGlzLmlzc3VlRGF0YT8uX2lkO1xyXG4gICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdXJsICs9ICcvYXVkaXQvaXNzdWUvaXNzdWUtd29ya3Jvb20vJyArIHRoaXMuaXNzdWVEYXRhPy5faWQ7XHJcbiAgICAgICB9XHJcbiAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICB9XHJcblxyXG4vKipcclxuICogUG9wdWxhdGUgdGhlIHRpY2ttYXJrIG9mIG9wdGlvbmFsIGZpZWxkc1xyXG4gKi9cclxucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpe1xyXG4gIGNvbnN0IGFjdGl2YXRlZE9wdGlvbnMgPSBbXTtcclxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXMpKXtcclxuICAgIGlmICh0aGlzLmFkZGl0aW9uYWxPcHRpb25TdGF0dXNba2V5XSA9PT0gdHJ1ZSl7XHJcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaChrZXkpO1xyXG4gICAgfVxyXG4gIH1cclxuICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XHJcbn1cclxuLyoqXHJcbiAqIEZldGNocyBpc3N1ZSBkZXRhaWxzIHdoZW4gaW4gZWRpdCBtb2RlIGJhc2VkIG9uIHRoZSBpbnB1dCBpZCBwYXNzZWRcclxuICovXHJcbmZldGNoSXNzdWVEZXRhaWxzKCl7XHJcbiAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcclxuICB0aGlzLmxvZ1NlcnZpY2UuZ2V0SXNzdWVEZXRhaWxzKHRoaXMuaXNzdWVJZCkuc3Vic2NyaWJlKChkYXRhOmFueSk9PntcclxuICAgIGNvbnNvbGUubG9nKFwiaXNzdWUgRGF0YVwiLGRhdGEpXHJcbiAgICB0aGlzLnBvcHVsYXRlRm9ybShkYXRhKVxyXG4gIH0pXHJcbn1cclxuLyoqXHJcbiAqIFBvcHVsYXRlcyB0aGUgaXNzdWUgZm9ybSB3aGVuIGluIGVkaXQgbW9kZVxyXG4gKiBAcGFyYW0gaXNzdWVEYXRhIGlzc3VlIGRhdGEgZmV0Y2hlZCBmcm9tIEFQSVxyXG4gKi9cclxuYXN5bmMgcG9wdWxhdGVGb3JtKGlzc3VlRGF0YSA6IGFueSl7XHJcbiAgdGhpcy5kYXRhRm9yRWRpdCA9IGlzc3VlRGF0YTtcclxuICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgY29uc3QgaXNzdWVEdWVEYXRlID0gaXNzdWVEYXRhLmZyZXF1ZW5jeV9kZXRhaWxzPy5mcmVxdWVuY3lfZGF0ZS5zcGxpdCgnLScpO1xyXG4gIHRoaXMubG9nSXNzdWVGb3JtID0ge1xyXG4gICAgaXNzdWVOYW1lIDogaXNzdWVEYXRhLnRpdGxlID8/ICcnLFxyXG4gICAgZXZpZGVuY2VSZXF1aXJlZDogaXNzdWVEYXRhPy5ldmlkZW5jZT8uZXZpZGVuY2VfZmxhZz8/MCxcclxuICAgIGlzc3VlRGVzY3JpcHRpb246IGlzc3VlRGF0YT8uZGVzY3JpcHRpb24/Lmxlbmd0aCA/IGlzc3VlRGF0YT8uZGVzY3JpcHRpb25bMF0/LnRleHQgOicnLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbkF0dGFjaGVtZW50czogaXNzdWVEYXRhPy5kZXNjcmlwdGlvbj8ubGVuZ3RoID8gaXNzdWVEYXRhPy5kZXNjcmlwdGlvblswXT8uYXR0YWNobWVudHMgOltdLFxyXG4gICAgaXNzdWVDYXRlZ29yeTogaXNzdWVEYXRhPy5jYXRlZ29yeV9pZCA/IHRoaXMubGlzdERhdGEuY2F0ZWdvcnlMaXN0LmZpbHRlcigoZTphbnkpID0+IGUuY2F0ZWdvcnlfaWQgPT09IGlzc3VlRGF0YT8uY2F0ZWdvcnlfaWQpOltdLFxyXG4gICAgaXNzdWVDdXN0b21UYWcgOiBpc3N1ZURhdGE/LmN1c3RvbV90YWdzID8/IFtdLFxyXG4gICAgaXNzdWVSQzogaXNzdWVEYXRhPy5yY19pZCA/IHRoaXMubGlzdERhdGEucmNMaXN0LmZpbHRlcigoZTphbnkpID0+IGUucmNfaWQgPT09IGlzc3VlRGF0YT8ucmNfaWQpOltdLFxyXG4gICAgcmVjb21tZW5kZWRBY3Rpb25zQXR0YWNobWVudHM6aXNzdWVEYXRhPy5yZWNvbW1lbmRhdGlvbj8ubGVuZ3RoID8gaXNzdWVEYXRhPy5yZWNvbW1lbmRhdGlvblswXT8uYXR0YWNobWVudHMgOltdLFxyXG4gICAgYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHM6W10sXHJcbiAgICBpc0Fzc2lnblRvTXlzZWxmIDogIGlzc3VlRGF0YT8uYXNzaWduZWVfaWQgPT09IHRoaXMuY3VycmVudFVzZXIuaWQgID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgZW50cnVzdFRvOiBpc3N1ZURhdGE/LmFzc2lnbmVlX2lkID09PSB0aGlzLmN1cnJlbnRVc2VyLmlkID8gW106IHRoaXMubGlzdERhdGEudXNlckxpc3QuZmlsdGVyKChlOmFueSkgPT4gZS5teV9tZW1iZXJfaWQgPT09IGlzc3VlRGF0YT8uYXNzaWduZWVfaWQgKSxcclxuICAgIGlzc3VlRHVlRGF0ZTogaXNzdWVEYXRhPy5mcmVxdWVuY3lfZGV0YWlscz8uZnJlcXVlbmN5X2RhdGU/ICBtb21lbnQoYCR7aXNzdWVEdWVEYXRlWzBdfS0ke2lzc3VlRHVlRGF0ZVsxXX0tJHtpc3N1ZUR1ZURhdGVbMl19YCk6JycsXHJcbiAgICBpc3N1ZUR1ZVRpbWU6IHRoaXMubG9nU2VydmljZS5jb252ZXJ0RnJvbTI0VG8xMkZvcm1hdChpc3N1ZURhdGEuZnJlcXVlbmN5X2RldGFpbHMuZnJlcXVlbmN5X3RpbWUpLFxyXG4gICAgZXhjZXB0aW9uVHlwZTogaXNzdWVEYXRhLmV4Y2VwdGlvbl90eXBlID8/IDEsXHJcbiAgICBpc3N1ZVJpc2tSYXRpbmc6IGlzc3VlRGF0YS5yaXNrX2NsYXNzID8/IDEsXHJcbiAgICBpc3N1ZVByaW9yaXR5OiBpc3N1ZURhdGEucHJpb3JpdHkgPz8gMSxcclxuICAgIGlzc3VlUmVjb21tZW5kYXRpb246IGlzc3VlRGF0YT8ucmVjb21tZW5kYXRpb24/Lmxlbmd0aCA/IGlzc3VlRGF0YT8ucmVjb21tZW5kYXRpb25bMF0/LnRleHQgOicnLFxyXG4gICAgaXNzdWVBc3NvY2lhdGVkUmlzazogaXNzdWVEYXRhPy5hc3NvY2lhdGVkX3Jpc2s/Lmxlbmd0aCA/IGlzc3VlRGF0YT8uYXNzb2NpYXRlZF9yaXNrWzBdPy50ZXh0IDonJyxcclxuICAgIGlzc3VlQ0NVc2VyczogaXNzdWVEYXRhLm92ZXJzZWVyPy5jY19lbWFpbC5sZW5ndGggPyBhd2FpdCB0aGlzLmdlbmVyYXRlT3ZlcnNlZXJMaXN0KHRoaXMubGlzdERhdGEudXNlckxpc3QsaXNzdWVEYXRhLm92ZXJzZWVyPy5jY19lbWFpbCkgOltdLFxyXG4gICAgZmFpbHVyZUNDVXNlcnM6IGlzc3VlRGF0YS5vdmVyc2Vlcj8uZmFpbHVyZV9jY19lbWFpbC5sZW5ndGggPyBhd2FpdCB0aGlzLmdlbmVyYXRlT3ZlcnNlZXJMaXN0KHRoaXMubGlzdERhdGEudXNlckxpc3QsaXNzdWVEYXRhLm92ZXJzZWVyPy5mYWlsdXJlX2NjX2VtYWlsKSA6W10sXHJcbiAgICBsaW5rZWRDb250cm9sUmlzazpbXSxcclxuICAgIGxpbmthZ2VUeXBlIDogJ1JFU1BPTlNJQklMSVRZJyxcclxuICAgIGlzc3VlVHlwZTogaXNzdWVEYXRhLmlzc3VlVHlwZSA/IGlzc3VlRGF0YS5pc3N1ZVR5cGUgOiAnaXNzdWUnXHJcbiAgfTtcclxuICBjb25zb2xlLmxvZyhcIkFmdGVyIEluaXRcIix0aGlzLmxvZ0lzc3VlRm9ybSlcclxuICBpZih0aGlzLm1vZGUgPT09ICdFRElUJyl7XHJcbiAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJDPy5sZW5ndGggPiAwID8gdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSB0cnVlIDogdGhpcy5pc1JDUHJlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIC8vIGlzc3VlRGF0YS5saW5rYWdlX29iamVjdD8uc291cmNlID09PSAnR0xPQkFMJz8gdGhpcy5pc1JDTWFuZGF0b3J5ID0gdHJ1ZSA6IHRoaXMuaXNSQ01hbmRhdG9yeSA9IGZhbHNlO1xyXG4gICAgKGlzc3VlRGF0YS5saW5rYWdlX29iamVjdD8uc291cmNlID09PSAnR0xPQkFMJyAmJiBpc3N1ZURhdGE/LnJjX2lkKSA/IHRoaXMuaXNSQ1ByZVNlbGVjdGVkID0gZmFsc2UgOiB0aGlzLmlzUkNQcmVTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAvLyBpZihpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LmNvbXBsaWFuY2U/Lmlkcz8ubGVuZ3RoKXtcclxuICAgIC8vICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2VkQ29udHJvbFJpc2sgPSBpc3N1ZURhdGEubGlua2FnZV9vYmplY3Q/LmNvbXBsaWFuY2U/Lmlkcz8/W10sXHJcbiAgICAvLyAgIHRoaXMubG9nSXNzdWVGb3JtLmxpbmthZ2VUeXBlID0gJ1JFU1BPTlNJQklMSVRZJ1xyXG4gICAgLy8gICB0aGlzLmlzUmlza0NvbnRyb2xWaXNpYmxlID0gdHJ1ZTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmKGlzc3VlRGF0YS5saW5rYWdlX29iamVjdD8ucmlzaz8uaWRzPy5sZW5ndGgpe1xyXG4gICAgLy8gICB0aGlzLmxvZ0lzc3VlRm9ybS5saW5rZWRDb250cm9sUmlzayA9IGlzc3VlRGF0YS5saW5rYWdlX29iamVjdD8ucmlzaz8uaWRzPz9bXSxcclxuICAgIC8vICAgdGhpcy5sb2dJc3N1ZUZvcm0ubGlua2FnZVR5cGUgPSAnUklTSyc7XHJcbiAgICAvLyAgIHRoaXMuaXNSaXNrQ29udHJvbFZpc2libGUgPSB0cnVlO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICB0aGlzLnNldE9wdGlvbmFsRmllbGQoaXNzdWVEYXRhKTtcclxufVxyXG4vKipcclxuICogU2V0cyB0aGUgdmlzaWJpbGl0eSBvZiBvcHRpb25hbCBmaWVsZHNcclxuICogQHBhcmFtIGlzc3VlRGF0YSAgaXNzdWUgZGF0YSBmZXRjaGVkIGZyb20gQVBJXHJcbiAqL1xyXG5zZXRPcHRpb25hbEZpZWxkKGlzc3VlRGF0YTphbnkpe1xyXG4gIHRoaXMuYWRkaXRpb25hbE9wdGlvblN0YXR1cyA9IHtcclxuICAgIEVYQ0VQVElPTl9UWVBFOiBpc3N1ZURhdGEuZXhjZXB0aW9uX3R5cGUgPyB0cnVlIDogZmFsc2UsXHJcbiAgICBFVklERU5DRTogaXNzdWVEYXRhLmV2aWRlbmNlLmV2aWRlbmNlX2ZsYWcgPyB0cnVlIDpmYWxzZSxcclxuICAgIFBSSU9SSVRZOiAgaXNzdWVEYXRhLnByaW9yaXR5ID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgSVNTVUVfVFlQRTogZmFsc2UsXHJcbiAgICBBU1NPQ0lBVEVEX1JJU0tTIDogaXNzdWVEYXRhLmFzc29jaWF0ZWRfcmlzay5sZW5ndGggPyAoaXNzdWVEYXRhLmFzc29jaWF0ZWRfcmlza1swXS50ZXh0Lmxlbmd0aCA/IHRydWUgOiBmYWxzZSk6ZmFsc2UsXHJcbiAgICBPVkVSU0lHSFQgOiAoaXNzdWVEYXRhLm92ZXJzZWVyLmNjX2VtYWlsLmxlbmd0aCA+IDAgfHwgaXNzdWVEYXRhLm92ZXJzZWVyLmZhaWx1cmVfY2NfZW1haWwubGVuZ3RoID4gMCkgPyB0cnVlIDogZmFsc2VcclxuICB9O1xyXG4gIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xyXG59XHJcbi8qKlxyXG4gKiBHZW5lcmF0ZXMgbGlzdCBvZiBzZWxlY3RlZCBvdmVyc2VlclxyXG4gKiBAcGFyYW0gYWxsVXNlckxpc3QgbGlzdCBvZiBhbGwgdXNlcnMgaW4gdGhlIG9yZ2FuemF0aW9uXHJcbiAqIEBwYXJhbSBvdmVyc2Vlckxpc3QgIGxpdCBvZiB0aGUgb3ZlcnNlZXIgdGhhdCBuZWVkcyB0byBiZSBmaWx0ZXJlZFxyXG4gKiBAcmV0dXJucyAgbGlzdCBvZiBhcnJheSBjb250YWluaW5nIHRoZSB1c2VycyBvYmplY3RzXHJcbiAqL1xyXG5nZW5lcmF0ZU92ZXJzZWVyTGlzdChhbGxVc2VyTGlzdDphbnksIG92ZXJzZWVyTGlzdDphbnkgKXtcclxuIHJldHVybiBvdmVyc2Vlckxpc3QubWFwKCh1c2VyOmFueSk9PntcclxuICAgIGNvbnN0IGZvdW5kVXNlciA9IGFsbFVzZXJMaXN0LmZpbmQoKGVsZW1lbnQ6YW55KSA9PiBlbGVtZW50Lm15X21lbWJlcl9pZCA9PT0gdXNlci5tZW1iZXJfaWQpO1xyXG4gICAgaWYoZm91bmRVc2VyKXtcclxuICAgICAgcmV0dXJuIGZvdW5kVXNlcjtcclxuICAgIH1cclxuICB9KVxyXG59XHJcbi8qKlxyXG4gKiBSZXNldHMgaXNzdWUgZm9ybVxyXG4gKi9cclxucmVzZXRJc3N1ZUZvcm0oKXtcclxuICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xyXG4gIHRoaXMubG9nSXNzdWVGb3JtID0ge1xyXG4gICAgaXNzdWVOYW1lIDogJycsXHJcbiAgICBldmlkZW5jZVJlcXVpcmVkOiAwLFxyXG4gICAgaXNzdWVEZXNjcmlwdGlvbjogJycsXHJcbiAgICBpc3N1ZURlc2NyaXB0aW9uQXR0YWNoZW1lbnRzOiBbXSxcclxuICAgIHJlY29tbWVuZGVkQWN0aW9uc0F0dGFjaG1lbnRzOltdLFxyXG4gICAgYXNzb2NpYXRlZFJpc2tzQXR0YWNobWVudHM6W10sXHJcbiAgICBpc3N1ZUNhdGVnb3J5OiBbXSxcclxuICAgIGlzc3VlQ3VzdG9tVGFnIDogW10sXHJcbiAgICBpc3N1ZVJDOiBbXSxcclxuICAgIGlzc3VlVHlwZTogJ2lzc3VlJyxcclxuICAgIGlzQXNzaWduVG9NeXNlbGYgOiBmYWxzZSxcclxuICAgIGVudHJ1c3RUbzogW10sXHJcbiAgICBpc3N1ZUR1ZURhdGU6ICcnLFxyXG4gICAgaXNzdWVEdWVUaW1lOiAnMTE6NTkgUE0nLFxyXG4gICAgZXhjZXB0aW9uVHlwZTogMSxcclxuICAgIGlzc3VlUmlza1JhdGluZzogMSxcclxuICAgIGlzc3VlUHJpb3JpdHk6IDEsXHJcbiAgICBpc3N1ZVJlY29tbWVuZGF0aW9uOiAnJyxcclxuICAgIGlzc3VlQXNzb2NpYXRlZFJpc2s6ICcnLFxyXG4gICAgaXNzdWVDQ1VzZXJzOiBbXSxcclxuICAgIGZhaWx1cmVDQ1VzZXJzOiBbXVxyXG4gIH07XHJcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzKSl7XHJcbiAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uU3RhdHVzW2tleV0gPSBmYWxzZTtcclxuICB9XHJcbiAvLyB0aGlzLnNtaWxleU1lc3NhZ2UgPSBgVGhlIGlzc3VlIGhhcyBiZWVuIHJlcG9ydGVkLmA7XHJcbiAgdGhpcy5tb2RlID0gJ0NSRUFURSc7XHJcbiAgdGhpcy5tb2RlQ2hhbmdlLmVtaXQodGhpcy5tb2RlKTtcclxuICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcclxuICB0aGlzLnNldFNlbGVjdGVkUkMoKTtcclxuIH1cclxuIGNoZWNrRGVzY3JpcHRpb24oKSB7XHJcbiAgaWYgKHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlRGVzY3JpcHRpb24gPT0gJzxicj4nKSB7XHJcbiAgICB0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZURlc2NyaXB0aW9uID0gJyc7XHJcbiAgfVxyXG4gIGlmICh0aGlzLmxvZ0lzc3VlRm9ybS5pc3N1ZVJlY29tbWVuZGF0aW9uID09ICc8YnI+Jykge1xyXG4gICAgdGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVSZWNvbW1lbmRhdGlvbiA9ICcnO1xyXG4gIH1cclxuICBpZiAodGhpcy5sb2dJc3N1ZUZvcm0uaXNzdWVBc3NvY2lhdGVkUmlzayA9PSAnPGJyPicpIHtcclxuICAgIHRoaXMubG9nSXNzdWVGb3JtLmlzc3VlQXNzb2NpYXRlZFJpc2sgPSAnJztcclxuICB9XHJcbn1cclxufVxyXG4iXX0=
|
|
@@ -112,7 +112,7 @@ export class AssessmentSettingsComponent {
|
|
|
112
112
|
}
|
|
113
113
|
this.editorService.formsPage.responseSegment['maxScore'] = this.criteriaService.calculateMaxScore(this.editorService.formsPage);
|
|
114
114
|
});
|
|
115
|
-
this.snackbar.show("The settings have been updated.");
|
|
115
|
+
this.snackbar.show("The settings have been updated.", 'success');
|
|
116
116
|
this.activeSettingType = '';
|
|
117
117
|
// } else {
|
|
118
118
|
// this.fd.formsPage.settings.assessmentMode = false;
|
|
@@ -129,7 +129,7 @@ export class AssessmentSettingsComponent {
|
|
|
129
129
|
if (evt.isEnabled) {
|
|
130
130
|
evt.segmentData.isEnabled = true;
|
|
131
131
|
this.editorService.formsPage.responseSegment = evt.segmentData;
|
|
132
|
-
this.snackbar.show("The settings have been updated.");
|
|
132
|
+
this.snackbar.show("The settings have been updated.", 'success');
|
|
133
133
|
this.activeSettingType = '';
|
|
134
134
|
}
|
|
135
135
|
}
|
|
@@ -154,4 +154,4 @@ AssessmentSettingsComponent.ctorParameters = () => [
|
|
|
154
154
|
AssessmentSettingsComponent.propDecorators = {
|
|
155
155
|
action: [{ type: Output }]
|
|
156
156
|
};
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1zZXR0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtZWRpdG9yL2NvbXBvbmVudHMvYXNzZXNzbWVudC1zZXR0aW5ncy9hc3Nlc3NtZW50LXNldHRpbmdzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBVSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFJakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFPL0UsTUFBTSxPQUFPLDJCQUEyQjtJQStEdEMsWUFBbUIsTUFBb0IsRUFBUyxNQUFpQixFQUFTLGVBQXNDLEVBQVMsUUFBd0I7UUFBOUgsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUFTLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBUyxvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQVBqSixnQkFBVyxHQUFpQjtZQUN4QixJQUFJLEVBQUUsT0FBTztZQUNiLFdBQVcsRUFBRSxvQ0FBb0M7U0FDbEQsQ0FBQztRQUNNLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLGlCQUFZLEdBQUc7WUFDYixjQUFjLEVBQUUsSUFBSTtZQUNwQixZQUFZLEVBQUUsQ0FBQztZQUNmLHFCQUFxQixFQUFFLFFBQVE7WUFDL0Is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LEdBQUcsRUFBRSxDQUFDO1lBQzVCLFdBQVc7WUFDWCx1REFBdUQ7WUFDdkQsNEZBQTRGO1lBQzVGLDhGQUE4RjtZQUM5RixvR0FBb0c7WUFDcEcscUNBQXFDO1lBQ3JDLCtEQUErRDtZQUMvRCxJQUFJO1lBQ0osTUFBTTtTQUNQO1FBQ0QsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFO1lBR25DLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRTtnQkFDakIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtnQkFDckQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQzthQUM3QjtTQUNGO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsaUJBQWlCLEdBQUMsRUFBRSxDQUFBO0lBQzNCLENBQUM7OztZQXRNRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMscTlUQUFtRDs7YUFFcEQ7OztZQVpRLFlBQVk7WUFDWixTQUFTO1lBS1QscUJBQXFCO1lBSnJCLGVBQWU7OztxQkF1RXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERpYWxvZ0NvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9kaWFsb2cvZGlhbG9nLWNvbmZpZyc7XHJcbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9kaWFsb2cvZGlhbG9nLXJlZic7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlXCI7XHJcblxyXG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICd2Y29tcGx5LWVkaXRvcic7XHJcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZWRpdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUmVzdWx0Q3JpdGVyaWFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Jlc3VsdC1jcml0ZXJpYS5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hc3Nlc3NtZW50LXNldHRpbmdzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXNzZXNzbWVudC1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXNzZXNzbWVudC1zZXR0aW5ncy5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3Nlc3NtZW50U2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vIEBWaWV3Q2hpbGQoJ3Njcm9sbGVmZmVjdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBzY3JvbGxFbGVtZW50ITogRWxlbWVudFJlZjtcclxuICAvLyBzaG93UmVzcG9uc2UgPSBmYWxzZTtcclxuICAvLyBzaG93TW9kZSA9IGZhbHNlO1xyXG4gIC8vIHNob3dTZWdtZW50ID0gZmFsc2U7XHJcbiAgLy8gaGlkZVNlZ21lbnRQb3B1cCA9IGZhbHNlO1xyXG4gIC8vIGVkaXRTZWdtZW50UG9wdXAgPSBmYWxzZTtcclxuXHJcbiAgLy8gY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgLy8gbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBjbGlja1Jlc3BvbnNlKCkge1xyXG4gIC8vICAgdGhpcy5zaG93UmVzcG9uc2UgPSAhdGhpcy5zaG93UmVzcG9uc2U7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBjbGlja01vZGUoKSB7XHJcbiAgLy8gICB0aGlzLnNob3dNb2RlID0gIXRoaXMuc2hvd01vZGU7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBjbGlja1NlZ21lbnQoKSB7XHJcbiAgLy8gICB0aGlzLnNob3dTZWdtZW50ID0gIXRoaXMuc2hvd1NlZ21lbnQ7XHJcbiAgLy8gICBzZXRUaW1lb3V0ICgoKT0+e1xyXG4gIC8vICAgICB0aGlzLnNjcm9sbEVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLnNjcm9sbEVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgLy8gICAgfSwxNTApXHJcbiAgLy8gfVxyXG5cclxuICAvLyBlZGl0U2VnbWVudCgpIHtcclxuICAvLyAgIHRoaXMuZWRpdFNlZ21lbnRQb3B1cCA9ICF0aGlzLmVkaXRTZWdtZW50UG9wdXA7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gIC8vICAgbW9kZTogJ3ByaW1lJyxcclxuICAvLyAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgU2VnbWVudCBjcml0ZXJpYSBkZXNjcmlwdGlvbicsXHJcbiAgLy8gfTtcclxuXHJcbiAgLy8gb3BlblNlZ21lbnRQb3B1cCgpIHtcclxuICAvLyAgIHRoaXMuaGlkZVNlZ21lbnRQb3B1cCA9IHRydWU7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBjbG9zZVNlZ21lbnRQb3B1cCgpIHtcclxuICAvLyAgIHRoaXMuaGlkZVNlZ21lbnRQb3B1cCA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5lZGl0U2VnbWVudFBvcHVwID0gZmFsc2U7XHJcbiAgLy8gfVxyXG4gIHNob3dTZWdtZW50ITphbnk7XHJcbiAgaGlkZVNlZ21lbnRQb3B1cCAhOmFueTtcclxuICBlZGl0U2VnbWVudFBvcHVwICE6YW55O1xyXG4gIHNob3dSZXNwb25zZSAhOmFueTtcclxuICBjbG9zZVNlZ21lbnRQb3B1cCgpe31cclxuICBvcGVuU2VnbWVudFBvcHVwKCl7fVxyXG4gIGVkaXRTZWdtZW50KCl7fVxyXG4gIGNsaWNrU2VnbWVudCgpe31cclxuICBjbGlja01vZGUoKXt9XHJcbiAgY2xpY2tSZXNwb25zZSgpe31cclxuICBzaG93TW9kZSAhOmFueTtcclxuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgICBtb2RlOiAncHJpbWUnLFxyXG4gICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIFNlZ21lbnQgY3JpdGVyaWEgZGVzY3JpcHRpb24nLFxyXG4gICAgfTtcclxuICBAT3V0cHV0KCkgYWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgZm9yQW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgcHVibGljIGVkaXRvclNlcnZpY2UhOmFueTtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29uZmlnOiBEaWFsb2dDb25maWcsIHB1YmxpYyBkaWFsb2c6IERpYWxvZ1JlZixwcml2YXRlIGNyaXRlcmlhU2VydmljZTogUmVzdWx0Q3JpdGVyaWFTZXJ2aWNlLHByaXZhdGUgc25hY2tiYXI6U25hY2tCYXJTZXJ2aWNlKSB7IH1cclxuICBzZXR0aW5nc0pTT04gPSB7XHJcbiAgICBhc3Nlc3NtZW50TW9kZTogdHJ1ZSxcclxuICAgIGRlZmF1bHRTY29yZTogMCxcclxuICAgIG5lZ2F0aXZlU2NvcmVDcml0ZXJpYTogJ0ZBSUxFRCcsXHJcbiAgICBuZWdhdGl2ZVNjb3JlOiAwLFxyXG4gICAgd2VpZ2h0YWdlRW5hYmxlZDogZmFsc2VcclxuICB9O1xyXG4gIHNldHRpbmdzRGF0YSE6YW55O1xyXG4gIGFjdGl2ZVNldHRpbmdUeXBlID0gJ25vbmUnO1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlID0gdGhpcy5jb25maWcuZGF0YS5zZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NEYXRhID0gdGhpcy5jb25maWcuZGF0YS5zZXR0aW5ncztcclxuICAgIHRoaXMuZm9yQW5pbWF0aW9uID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZvckFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfSwgMTAwMCk7XHJcblxyXG4gICAgdGhpcy5zZXR0aW5nc0pTT04gPSB0aGlzLmNvbmZpZy5kYXRhLnNldHRpbmdzSlNPTjtcclxuICB9XHJcbiAgY2xvc2VQYW5lbChldnQ/OmFueSkge1xyXG4gICAgXHJcbiAgICB0aGlzLmRpYWxvZy5jbG9zZSh7fSk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIG1hbmlwdWxhdGVEZWZhdWx0KG1vZGU6YW55KXtcclxuICAgIGlmIChtb2RlID09PSAnSU5DUkVBU0UnICYmIHRoaXMuc2V0dGluZ3NKU09OLmRlZmF1bHRTY29yZSA+PSAwKXtcclxuICAgICAgdGhpcy5zZXR0aW5nc0pTT04uZGVmYXVsdFNjb3JlID0gIHRoaXMuc2V0dGluZ3NKU09OLmRlZmF1bHRTY29yZSArIDE7XHJcbiAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdERUNSRUFTRScgJiYgdGhpcy5zZXR0aW5nc0pTT04uZGVmYXVsdFNjb3JlID49IDEgKXtcclxuICAgICAgdGhpcy5zZXR0aW5nc0pTT04uZGVmYXVsdFNjb3JlID0gIHRoaXMuc2V0dGluZ3NKU09OLmRlZmF1bHRTY29yZSAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG1hbmlwdWxhdGVOZWdhdGl2ZVNjb3JlKG1vZGU6YW55KXtcclxuICAgIGlmIChtb2RlID09PSAnSU5DUkVBU0UnICYmIHRoaXMuc2V0dGluZ3NKU09OLm5lZ2F0aXZlU2NvcmUgPj0gMCl7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3NKU09OLm5lZ2F0aXZlU2NvcmUgPSAgdGhpcy5zZXR0aW5nc0pTT04ubmVnYXRpdmVTY29yZSArIDE7XHJcbiAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdERUNSRUFTRScgJiYgdGhpcy5zZXR0aW5nc0pTT04ubmVnYXRpdmVTY29yZSA+PSAxICl7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3NKU09OLm5lZ2F0aXZlU2NvcmUgPSAgdGhpcy5zZXR0aW5nc0pTT04ubmVnYXRpdmVTY29yZSAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleGVjdXRlQWN0aW9uKGV2dDphbnkpe1xyXG4gICAgdGhpcy5kaWFsb2cuY2xvc2Uoe1xyXG4gICAgICBldmVudDogZXZ0LFxyXG4gICAgICBkYXRhOiB0aGlzLnNldHRpbmdzSlNPTlxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRBY3RpdmVUeXBlKHR5cGU6YW55LGluZGV4OmFueSl7XHJcbiAgICB0aGlzLmFjdGl2ZVNldHRpbmdUeXBlID0gdHlwZTtcclxuICAgIGlmKHR5cGUgPT09ICdBU1NFU1NNRU5UJyl7XHJcbiAgICAgICB0aGlzLnNldHRpbmdzRGF0YS5zZXR0aW5nc0VsZW1lbnRzW2luZGV4XS5pc0VuYWJsZWQgPSB0cnVlIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZW5hYmxlU3RhdGVDaGFuZ2VkKGU6YW55LCB0eXBlOmFueSkge1xyXG4gICAgaWYgKHR5cGUgPT09ICdBTk9OWU1PVVMnKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuYW5vbnltb3VzUmVzcG9uc2UgPSBlO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT09ICdSRVNQT05TRV9TRUdNRU5UJykge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnJlc3BvbnNlU2VnbWVudFsnaXNFbmFibGVkJ10gPSBlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHNhdmUoZXZ0OmFueSwgaW5kZXg6YW55KSB7XHJcbiAgICB0aGlzLnNldHRpbmdzRGF0YS5zZXR0aW5nc0VsZW1lbnRzW2luZGV4XSA9IGV2dDtcclxuXHJcblxyXG4gICAgXHJcbiAgICBpZiAoZXZ0LnR5cGUgPT09ICdBU1NFU1NNRU5UJykge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLmFzc2Vzc21lbnRNb2RlID0gZXZ0LmlzRW5hYmxlZDtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5zZXR0aW5ncy5kZWZhdWx0U2NvcmUgPSBldnQuZGVmYXVsdFNjb3JlO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLm5lZ2F0aXZlU2NvcmUgPSBldnQubmVnYXRpdmVTY29yZTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5zZXR0aW5ncy5uZWdhdGl2ZVNjb3JlQ3JpdGVyaWEgPSBldnQubmVnYXRpdmVTY29yZUNyaXRlcmlhO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLndlaWdodGFnZUVuYWJsZWQgPSBldnQud2VpZ2h0YWdlRW5hYmxlZDtcclxuICAgICAgdGhpcy5zZXR0aW5nc0RhdGEuc2V0dGluZ3NFbGVtZW50c1tpbmRleF0gPSBldnQ7XHJcbiAgICAgIHRoaXMuYWN0aXZlU2V0dGluZ1R5cGUgPSAnbm9uZSc7XHJcblxyXG4gICAgICBjb25zdCBhc3Nlc3NtZW50RWxpZ2libGVRdWVzdGlvbnMgPSBbJ2NoZWNrYm94JywgJ211bHRpcGxlLWNob2ljZScsICdkcm9wZG93biddO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmVsZW1lbnRzLmZvckVhY2goKHF1ZXN0aW9uOmFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zY29yZS5kZWZhdWx0U2NvcmUgPSBldnQuZGVmYXVsdFNjb3JlO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zY29yZS5uZWdhdGl2ZVNjb3JlID0gZXZ0Lm5lZ2F0aXZlU2NvcmU7XHJcbiAgICAgICAgaWYgKGFzc2Vzc21lbnRFbGlnaWJsZVF1ZXN0aW9ucy5pbmNsdWRlcyhxdWVzdGlvbi50eXBlKSkge1xyXG4gICAgICAgICAgcXVlc3Rpb24uY2hvaWNlcy5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWVsZW1lbnQuaXNGYWlsZWQpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnNjb3JlID0gZXZ0LmRlZmF1bHRTY29yZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihlbGVtZW50LmlzRmFpbGVkICYmIChldnQubmVnYXRpdmVTY29yZUNyaXRlcmlhID09PSAnRkFJTEVEJyB8fCBldnQubmVnYXRpdmVTY29yZUNyaXRlcmlhID09PSAnRkFJTEVEX1NLSVBQRUQnKSl7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5zY29yZSA9IGV2dC5uZWdhdGl2ZVNjb3JlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChldnQud2VpZ2h0YWdlRW5hYmxlZCkge1xyXG4gICAgICAgICAgICAgIGlmICghcXVlc3Rpb24ud2VpZ2h0YWdlIHx8IHF1ZXN0aW9uLndlaWdodGFnZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBxdWVzdGlvbi53ZWlnaHRhZ2UgPSAxMDA7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICBxdWVzdGlvbi53ZWlnaHRhZ2UgPSAxMDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnJlc3BvbnNlU2VnbWVudFsnbWF4U2NvcmUnXSA9IHRoaXMuY3JpdGVyaWFTZXJ2aWNlLmNhbGN1bGF0ZU1heFNjb3JlKHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zbmFja2Jhci5zaG93KFwiVGhlIHNldHRpbmdzIGhhdmUgYmVlbiB1cGRhdGVkLlwiKVxyXG4gICAgICB0aGlzLmFjdGl2ZVNldHRpbmdUeXBlID0gJyc7XHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgdGhpcy5mZC5mb3Jtc1BhZ2Uuc2V0dGluZ3MuYXNzZXNzbWVudE1vZGUgPSBmYWxzZTtcclxuICAgICAgLy8gICB0aGlzLnNldHRpbmdzRGF0YS5zZXR0aW5nc0VsZW1lbnRzW2luZGV4XS5kZWZhdWx0U2NvcmUgPSB0aGlzLmZkLnNldHRpbmdzLmRlZmF1bHRTY29yZTtcclxuICAgICAgLy8gICB0aGlzLnNldHRpbmdzRGF0YS5zZXR0aW5nc0VsZW1lbnRzW2luZGV4XS5uZWdhdGl2ZVNjb3JlID0gdGhpcy5mZC5zZXR0aW5ncy5uZWdhdGl2ZVNjb3JlO1xyXG4gICAgICAvLyAgIHRoaXMuc2V0dGluZ3NEYXRhLnNldHRpbmdzRWxlbWVudHNbaW5kZXhdLndlaWdodGFnZUVuYWJsZWQgPSB0aGlzLmZkLnNldHRpbmdzLndlaWdodGFnZUVuYWJsZWQ7XHJcbiAgICAgIC8vICAgdGhpcy5hY3RpdmVTZXR0aW5nVHlwZSA9ICdub25lJztcclxuICAgICAgLy8gdGhpcy5zZXR0aW5nc0RhdGEuc2V0dGluZ3NFbGVtZW50c1tpbmRleF0uaXNFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZ0LnR5cGUgPT09ICdSRVNQT05TRV9TRUdNRU5UJykge1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICAgIGV2dC5pc0VuYWJsZWQgPSB0cnVlO1xyXG4gICAgICBpZiAoZXZ0LmlzRW5hYmxlZCkge1xyXG4gICAgICAgIGV2dC5zZWdtZW50RGF0YS5pc0VuYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucmVzcG9uc2VTZWdtZW50ID0gZXZ0LnNlZ21lbnREYXRhO1xyXG4gICAgICAgIHRoaXMuc25hY2tiYXIuc2hvdyhcIlRoZSBzZXR0aW5ncyBoYXZlIGJlZW4gdXBkYXRlZC5cIilcclxuICAgICAgICB0aGlzLmFjdGl2ZVNldHRpbmdUeXBlID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbCgpe1xyXG4gICAgdGhpcy5hY3RpdmVTZXR0aW5nVHlwZT0nJ1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1zZXR0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtZWRpdG9yL2NvbXBvbmVudHMvYXNzZXNzbWVudC1zZXR0aW5ncy9hc3Nlc3NtZW50LXNldHRpbmdzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBVSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFJakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFPL0UsTUFBTSxPQUFPLDJCQUEyQjtJQStEdEMsWUFBbUIsTUFBb0IsRUFBUyxNQUFpQixFQUFTLGVBQXNDLEVBQVMsUUFBd0I7UUFBOUgsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUFTLFdBQU0sR0FBTixNQUFNLENBQVc7UUFBUyxvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQVBqSixnQkFBVyxHQUFpQjtZQUN4QixJQUFJLEVBQUUsT0FBTztZQUNiLFdBQVcsRUFBRSxvQ0FBb0M7U0FDbEQsQ0FBQztRQUNNLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLGlCQUFZLEdBQUc7WUFDYixjQUFjLEVBQUUsSUFBSTtZQUNwQixZQUFZLEVBQUUsQ0FBQztZQUNmLHFCQUFxQixFQUFFLFFBQVE7WUFDL0Is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QUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztZQUM1QixXQUFXO1lBQ1gsdURBQXVEO1lBQ3ZELDRGQUE0RjtZQUM1Riw4RkFBOEY7WUFDOUYsb0dBQW9HO1lBQ3BHLHFDQUFxQztZQUNyQywrREFBK0Q7WUFDL0QsSUFBSTtZQUNKLE1BQU07U0FDUDtRQUNELElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxrQkFBa0IsRUFBRTtZQUduQyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUU7Z0JBQ2pCLEdBQUcsQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO2dCQUNoRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxpQkFBaUIsR0FBQyxFQUFFLENBQUE7SUFDM0IsQ0FBQzs7O1lBdE1GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxxOVRBQW1EOzthQUVwRDs7O1lBWlEsWUFBWTtZQUNaLFNBQVM7WUFLVCxxQkFBcUI7WUFKckIsZUFBZTs7O3FCQXVFckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L2RpYWxvZy9kaWFsb2ctY29uZmlnJztcclxuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L2RpYWxvZy9kaWFsb2ctcmVmJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2VcIjtcclxuXHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9lZGl0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBSZXN1bHRDcml0ZXJpYVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcmVzdWx0LWNyaXRlcmlhLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFzc2Vzc21lbnQtc2V0dGluZ3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3Nlc3NtZW50LXNldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hc3Nlc3NtZW50LXNldHRpbmdzLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2Vzc21lbnRTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy8gQFZpZXdDaGlsZCgnc2Nyb2xsZWZmZWN0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNjcm9sbEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG4gIC8vIHNob3dSZXNwb25zZSA9IGZhbHNlO1xyXG4gIC8vIHNob3dNb2RlID0gZmFsc2U7XHJcbiAgLy8gc2hvd1NlZ21lbnQgPSBmYWxzZTtcclxuICAvLyBoaWRlU2VnbWVudFBvcHVwID0gZmFsc2U7XHJcbiAgLy8gZWRpdFNlZ21lbnRQb3B1cCA9IGZhbHNlO1xyXG5cclxuICAvLyBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvLyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyB9XHJcblxyXG4gIC8vIGNsaWNrUmVzcG9uc2UoKSB7XHJcbiAgLy8gICB0aGlzLnNob3dSZXNwb25zZSA9ICF0aGlzLnNob3dSZXNwb25zZTtcclxuICAvLyB9XHJcblxyXG4gIC8vIGNsaWNrTW9kZSgpIHtcclxuICAvLyAgIHRoaXMuc2hvd01vZGUgPSAhdGhpcy5zaG93TW9kZTtcclxuICAvLyB9XHJcblxyXG4gIC8vIGNsaWNrU2VnbWVudCgpIHtcclxuICAvLyAgIHRoaXMuc2hvd1NlZ21lbnQgPSAhdGhpcy5zaG93U2VnbWVudDtcclxuICAvLyAgIHNldFRpbWVvdXQgKCgpPT57XHJcbiAgLy8gICAgIHRoaXMuc2Nyb2xsRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcclxuICAvLyAgICB9LDE1MClcclxuICAvLyB9XHJcblxyXG4gIC8vIGVkaXRTZWdtZW50KCkge1xyXG4gIC8vICAgdGhpcy5lZGl0U2VnbWVudFBvcHVwID0gIXRoaXMuZWRpdFNlZ21lbnRQb3B1cDtcclxuICAvLyB9XHJcblxyXG4gIC8vIGRlc2NyaXB0aW9uOiBFZGl0b3JDb25maWcgPSB7XHJcbiAgLy8gICBtb2RlOiAncHJpbWUnLFxyXG4gIC8vICAgcGxhY2Vob2xkZXI6ICdFbnRlciBTZWdtZW50IGNyaXRlcmlhIGRlc2NyaXB0aW9uJyxcclxuICAvLyB9O1xyXG5cclxuICAvLyBvcGVuU2VnbWVudFBvcHVwKCkge1xyXG4gIC8vICAgdGhpcy5oaWRlU2VnbWVudFBvcHVwID0gdHJ1ZTtcclxuICAvLyB9XHJcblxyXG4gIC8vIGNsb3NlU2VnbWVudFBvcHVwKCkge1xyXG4gIC8vICAgdGhpcy5oaWRlU2VnbWVudFBvcHVwID0gZmFsc2U7XHJcbiAgLy8gICB0aGlzLmVkaXRTZWdtZW50UG9wdXAgPSBmYWxzZTtcclxuICAvLyB9XHJcbiAgc2hvd1NlZ21lbnQhOmFueTtcclxuICBoaWRlU2VnbWVudFBvcHVwICE6YW55O1xyXG4gIGVkaXRTZWdtZW50UG9wdXAgITphbnk7XHJcbiAgc2hvd1Jlc3BvbnNlICE6YW55O1xyXG4gIGNsb3NlU2VnbWVudFBvcHVwKCl7fVxyXG4gIG9wZW5TZWdtZW50UG9wdXAoKXt9XHJcbiAgZWRpdFNlZ21lbnQoKXt9XHJcbiAgY2xpY2tTZWdtZW50KCl7fVxyXG4gIGNsaWNrTW9kZSgpe31cclxuICBjbGlja1Jlc3BvbnNlKCl7fVxyXG4gIHNob3dNb2RlICE6YW55O1xyXG4gIGRlc2NyaXB0aW9uOiBFZGl0b3JDb25maWcgPSB7XHJcbiAgICAgIG1vZGU6ICdwcmltZScsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgU2VnbWVudCBjcml0ZXJpYSBkZXNjcmlwdGlvbicsXHJcbiAgICB9O1xyXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBmb3JBbmltYXRpb24gPSBmYWxzZTtcclxuICBwdWJsaWMgZWRpdG9yU2VydmljZSE6YW55O1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IERpYWxvZ0NvbmZpZywgcHVibGljIGRpYWxvZzogRGlhbG9nUmVmLHByaXZhdGUgY3JpdGVyaWFTZXJ2aWNlOiBSZXN1bHRDcml0ZXJpYVNlcnZpY2UscHJpdmF0ZSBzbmFja2JhcjpTbmFja0JhclNlcnZpY2UpIHsgfVxyXG4gIHNldHRpbmdzSlNPTiA9IHtcclxuICAgIGFzc2Vzc21lbnRNb2RlOiB0cnVlLFxyXG4gICAgZGVmYXVsdFNjb3JlOiAwLFxyXG4gICAgbmVnYXRpdmVTY29yZUNyaXRlcmlhOiAnRkFJTEVEJyxcclxuICAgIG5lZ2F0aXZlU2NvcmU6IDAsXHJcbiAgICB3ZWlnaHRhZ2VFbmFibGVkOiBmYWxzZVxyXG4gIH07XHJcbiAgc2V0dGluZ3NEYXRhITphbnk7XHJcbiAgYWN0aXZlU2V0dGluZ1R5cGUgPSAnbm9uZSc7XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UgPSB0aGlzLmNvbmZpZy5kYXRhLnNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc0RhdGEgPSB0aGlzLmNvbmZpZy5kYXRhLnNldHRpbmdzO1xyXG4gICAgdGhpcy5mb3JBbmltYXRpb24gPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9yQW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgICB9LCAxMDAwKTtcclxuXHJcbiAgICB0aGlzLnNldHRpbmdzSlNPTiA9IHRoaXMuY29uZmlnLmRhdGEuc2V0dGluZ3NKU09OO1xyXG4gIH1cclxuICBjbG9zZVBhbmVsKGV2dD86YW55KSB7XHJcbiAgICBcclxuICAgIHRoaXMuZGlhbG9nLmNsb3NlKHt9KTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbWFuaXB1bGF0ZURlZmF1bHQobW9kZTphbnkpe1xyXG4gICAgaWYgKG1vZGUgPT09ICdJTkNSRUFTRScgJiYgdGhpcy5zZXR0aW5nc0pTT04uZGVmYXVsdFNjb3JlID49IDApe1xyXG4gICAgICB0aGlzLnNldHRpbmdzSlNPTi5kZWZhdWx0U2NvcmUgPSAgdGhpcy5zZXR0aW5nc0pTT04uZGVmYXVsdFNjb3JlICsgMTtcclxuICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ0RFQ1JFQVNFJyAmJiB0aGlzLnNldHRpbmdzSlNPTi5kZWZhdWx0U2NvcmUgPj0gMSApe1xyXG4gICAgICB0aGlzLnNldHRpbmdzSlNPTi5kZWZhdWx0U2NvcmUgPSAgdGhpcy5zZXR0aW5nc0pTT04uZGVmYXVsdFNjb3JlIC0gMTtcclxuICAgIH1cclxuICB9XHJcbiAgbWFuaXB1bGF0ZU5lZ2F0aXZlU2NvcmUobW9kZTphbnkpe1xyXG4gICAgaWYgKG1vZGUgPT09ICdJTkNSRUFTRScgJiYgdGhpcy5zZXR0aW5nc0pTT04ubmVnYXRpdmVTY29yZSA+PSAwKXtcclxuICAgICAgdGhpcy5zZXR0aW5nc0pTT04ubmVnYXRpdmVTY29yZSA9ICB0aGlzLnNldHRpbmdzSlNPTi5uZWdhdGl2ZVNjb3JlICsgMTtcclxuICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ0RFQ1JFQVNFJyAmJiB0aGlzLnNldHRpbmdzSlNPTi5uZWdhdGl2ZVNjb3JlID49IDEgKXtcclxuICAgICAgdGhpcy5zZXR0aW5nc0pTT04ubmVnYXRpdmVTY29yZSA9ICB0aGlzLnNldHRpbmdzSlNPTi5uZWdhdGl2ZVNjb3JlIC0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4ZWN1dGVBY3Rpb24oZXZ0OmFueSl7XHJcbiAgICB0aGlzLmRpYWxvZy5jbG9zZSh7XHJcbiAgICAgIGV2ZW50OiBldnQsXHJcbiAgICAgIGRhdGE6IHRoaXMuc2V0dGluZ3NKU09OXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEFjdGl2ZVR5cGUodHlwZTphbnksaW5kZXg6YW55KXtcclxuICAgIHRoaXMuYWN0aXZlU2V0dGluZ1R5cGUgPSB0eXBlO1xyXG4gICAgaWYodHlwZSA9PT0gJ0FTU0VTU01FTlQnKXtcclxuICAgICAgIHRoaXMuc2V0dGluZ3NEYXRhLnNldHRpbmdzRWxlbWVudHNbaW5kZXhdLmlzRW5hYmxlZCA9IHRydWUgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmFibGVTdGF0ZUNoYW5nZWQoZTphbnksIHR5cGU6YW55KSB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ0FOT05ZTU9VUycpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5hbm9ueW1vdXNSZXNwb25zZSA9IGU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PT0gJ1JFU1BPTlNFX1NFR01FTlQnKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucmVzcG9uc2VTZWdtZW50Wydpc0VuYWJsZWQnXSA9IGU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgc2F2ZShldnQ6YW55LCBpbmRleDphbnkpIHtcclxuICAgIHRoaXMuc2V0dGluZ3NEYXRhLnNldHRpbmdzRWxlbWVudHNbaW5kZXhdID0gZXZ0O1xyXG5cclxuXHJcbiAgICBcclxuICAgIGlmIChldnQudHlwZSA9PT0gJ0FTU0VTU01FTlQnKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2Uuc2V0dGluZ3MuYXNzZXNzbWVudE1vZGUgPSBldnQuaXNFbmFibGVkO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLmRlZmF1bHRTY29yZSA9IGV2dC5kZWZhdWx0U2NvcmU7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2Uuc2V0dGluZ3MubmVnYXRpdmVTY29yZSA9IGV2dC5uZWdhdGl2ZVNjb3JlO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLm5lZ2F0aXZlU2NvcmVDcml0ZXJpYSA9IGV2dC5uZWdhdGl2ZVNjb3JlQ3JpdGVyaWE7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2Uuc2V0dGluZ3Mud2VpZ2h0YWdlRW5hYmxlZCA9IGV2dC53ZWlnaHRhZ2VFbmFibGVkO1xyXG4gICAgICB0aGlzLnNldHRpbmdzRGF0YS5zZXR0aW5nc0VsZW1lbnRzW2luZGV4XSA9IGV2dDtcclxuICAgICAgdGhpcy5hY3RpdmVTZXR0aW5nVHlwZSA9ICdub25lJztcclxuXHJcbiAgICAgIGNvbnN0IGFzc2Vzc21lbnRFbGlnaWJsZVF1ZXN0aW9ucyA9IFsnY2hlY2tib3gnLCAnbXVsdGlwbGUtY2hvaWNlJywgJ2Ryb3Bkb3duJ107XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMuZm9yRWFjaCgocXVlc3Rpb246YW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNjb3JlLmRlZmF1bHRTY29yZSA9IGV2dC5kZWZhdWx0U2NvcmU7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNjb3JlLm5lZ2F0aXZlU2NvcmUgPSBldnQubmVnYXRpdmVTY29yZTtcclxuICAgICAgICBpZiAoYXNzZXNzbWVudEVsaWdpYmxlUXVlc3Rpb25zLmluY2x1ZGVzKHF1ZXN0aW9uLnR5cGUpKSB7XHJcbiAgICAgICAgICBxdWVzdGlvbi5jaG9pY2VzLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghZWxlbWVudC5pc0ZhaWxlZCkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuc2NvcmUgPSBldnQuZGVmYXVsdFNjb3JlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGVsZW1lbnQuaXNGYWlsZWQgJiYgKGV2dC5uZWdhdGl2ZVNjb3JlQ3JpdGVyaWEgPT09ICdGQUlMRUQnIHx8IGV2dC5uZWdhdGl2ZVNjb3JlQ3JpdGVyaWEgPT09ICdGQUlMRURfU0tJUFBFRCcpKXtcclxuICAgICAgICAgICAgICBlbGVtZW50LnNjb3JlID0gZXZ0Lm5lZ2F0aXZlU2NvcmU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV2dC53ZWlnaHRhZ2VFbmFibGVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFxdWVzdGlvbi53ZWlnaHRhZ2UgfHwgcXVlc3Rpb24ud2VpZ2h0YWdlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uLndlaWdodGFnZSA9IDEwMDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uLndlaWdodGFnZSA9IDEwMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucmVzcG9uc2VTZWdtZW50WydtYXhTY29yZSddID0gdGhpcy5jcml0ZXJpYVNlcnZpY2UuY2FsY3VsYXRlTWF4U2NvcmUodGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNuYWNrYmFyLnNob3coXCJUaGUgc2V0dGluZ3MgaGF2ZSBiZWVuIHVwZGF0ZWQuXCIsICdzdWNjZXNzJylcclxuICAgICAgdGhpcy5hY3RpdmVTZXR0aW5nVHlwZSA9ICcnO1xyXG4gICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAvLyAgIHRoaXMuZmQuZm9ybXNQYWdlLnNldHRpbmdzLmFzc2Vzc21lbnRNb2RlID0gZmFsc2U7XHJcbiAgICAgIC8vICAgdGhpcy5zZXR0aW5nc0RhdGEuc2V0dGluZ3NFbGVtZW50c1tpbmRleF0uZGVmYXVsdFNjb3JlID0gdGhpcy5mZC5zZXR0aW5ncy5kZWZhdWx0U2NvcmU7XHJcbiAgICAgIC8vICAgdGhpcy5zZXR0aW5nc0RhdGEuc2V0dGluZ3NFbGVtZW50c1tpbmRleF0ubmVnYXRpdmVTY29yZSA9IHRoaXMuZmQuc2V0dGluZ3MubmVnYXRpdmVTY29yZTtcclxuICAgICAgLy8gICB0aGlzLnNldHRpbmdzRGF0YS5zZXR0aW5nc0VsZW1lbnRzW2luZGV4XS53ZWlnaHRhZ2VFbmFibGVkID0gdGhpcy5mZC5zZXR0aW5ncy53ZWlnaHRhZ2VFbmFibGVkO1xyXG4gICAgICAvLyAgIHRoaXMuYWN0aXZlU2V0dGluZ1R5cGUgPSAnbm9uZSc7XHJcbiAgICAgIC8vIHRoaXMuc2V0dGluZ3NEYXRhLnNldHRpbmdzRWxlbWVudHNbaW5kZXhdLmlzRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2dC50eXBlID09PSAnUkVTUE9OU0VfU0VHTUVOVCcpIHtcclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgICBldnQuaXNFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgaWYgKGV2dC5pc0VuYWJsZWQpIHtcclxuICAgICAgICBldnQuc2VnbWVudERhdGEuaXNFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnJlc3BvbnNlU2VnbWVudCA9IGV2dC5zZWdtZW50RGF0YTtcclxuICAgICAgICB0aGlzLnNuYWNrYmFyLnNob3coXCJUaGUgc2V0dGluZ3MgaGF2ZSBiZWVuIHVwZGF0ZWQuXCIsICdzdWNjZXNzJylcclxuICAgICAgICB0aGlzLmFjdGl2ZVNldHRpbmdUeXBlID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbCgpe1xyXG4gICAgdGhpcy5hY3RpdmVTZXR0aW5nVHlwZT0nJ1xyXG4gIH1cclxufVxyXG4iXX0=
|