@arsedizioni/ars-utils 18.1.169 → 18.1.170
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.
|
@@ -149,7 +149,7 @@ export class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
149
149
|
const height = this.dialogService.getCurrentDialogScrollableHeight(['clipper-document-fixed'], window.innerHeight);
|
|
150
150
|
if (height != this.height) {
|
|
151
151
|
elem.setAttribute('style', 'padding:0;height:' + height + 'px !important;max-height:' + height + 'px !important');
|
|
152
|
-
elem = document.getElementById('clipper-document-
|
|
152
|
+
elem = document.getElementById('clipper-document-iframe');
|
|
153
153
|
elem?.setAttribute('style', 'height:' + (height - 20) + 'px !important;max-height:' + (height - 20) + 'px !important');
|
|
154
154
|
this.height = height;
|
|
155
155
|
this.resize();
|
|
@@ -722,4 +722,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
722
722
|
}], onComplianceUsageReport: [{
|
|
723
723
|
type: Output
|
|
724
724
|
}] } });
|
|
725
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBR0wsZUFBZSxFQUNmLFlBQVksRUFDWiww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ZixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsYUFBYSw2dkJBQ2IsY0FBYyxtK0JBQ2QsZ0JBQWdCLGtJQUNoQixvQkFBb0IseU5BQ3BCLGdCQUFnQix3R0FDaEIsZ0JBQWdCLG9kQUNoQixXQUFXOzsyRkFHRix3QkFBd0I7a0JBcEJwQyxTQUFTOzJCQUNGLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxtQkFHM0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixXQUFXO3FCQUNaOzhCQUkyQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ2hCLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFHRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxuICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IE1hdERyYXdlciwgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7XHJcbiAgQ2xpcHBlckRvY3VtZW50SW5mbyxcclxuICBDbGlwcGVyRG9jdW1lbnRSZWxldmFudHMsXHJcbiAgQ2xpcHBlck1lc3NhZ2VzLFxyXG4gIENsaXBwZXJNb2RlbCxcclxuICBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZVxyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY2xpcHBlci5jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIFNhZmVVcmxQaXBlLFxyXG4gIFN5c3RlbVV0aWxzXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRmlsZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uJztcclxuaW1wb3J0IHsgRXh0ZW5kZWRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZXh0ZW5kZWQnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENsaXBwZXJSZWZlcmVuY2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVmZXJlbmNlcy9yZWZlcmVuY2VzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZGV4Q29tcG9uZW50IH0gZnJvbSAnLi4vZG9jdW1lbnQtaW5kZXgvZG9jdW1lbnQtaW5kZXguY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50TWFuYWdlciB9IGZyb20gJy4uL2RvY3VtZW50LW1hbmFnZXIvZG9jdW1lbnQtbWFuYWdlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENsaXBwZXJEb2N1bWVudERpYWxvZ0RhdGEge1xyXG4gIHNlbGVjdGlvbk1vZGU6IG51bWJlcjtcclxuICBpZDogc3RyaW5nO1xyXG4gIHF1ZXJ5Pzogc3RyaW5nIHwgbnVsbDtcclxuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZsZXhNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBFeHRlbmRlZE1vZHVsZSxcclxuICAgIE1hdERpdmlkZXJNb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxyXG4gICAgU2FmZVVybFBpcGUsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJEb2N1bWVudENvbXBvbmVudCBleHRlbmRzIENsaXBwZXJEb2N1bWVudE1hbmFnZXJcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdyZWxldmFudHNQYW5lJykgcmVsZXZhbnRzUGFuZSE6IE1hdERyYXdlcjtcclxuICBAT3V0cHV0KCkgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8vIENvbXBsaWFuY2UgcmVsYXRlZCBldmVudHNcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlQW5hbHlzaXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlUGxhbm5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlVXNhZ2VSZXBvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcclxuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZW5kZXJlckxpc3RlbmVyMTogYW55O1xyXG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPENsaXBwZXJEb2N1bWVudENvbXBvbmVudD4pO1xyXG4gIHByb3RlY3RlZCBkaWFsb2dEYXRhOiBDbGlwcGVyRG9jdW1lbnREaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgPz8geyBtb2RlOiBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzSW4gfTtcclxuXHJcblxyXG4gIHByaXZhdGUgaGVpZ2h0OiBudW1iZXIgPSAtMTtcclxuICBwcm90ZWN0ZWQgdXJsID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIHRpdGxlID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIGJ1c3kgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByb3RlY3RlZCBsYXN0UXVlcnk/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgbGFzdERvY3VtZW50PzogQ2xpcHBlckRvY3VtZW50SW5mbyB8IG51bGwgPSBudWxsO1xyXG4gIHByb3RlY3RlZCByZWxldmFudHM6IENsaXBwZXJEb2N1bWVudFJlbGV2YW50cyA9IHtcclxuICAgIGl0ZW1zOiBbXSxcclxuICAgIGhpdHM6IDAsXHJcbiAgICBoaXQ6IDAsXHJcbiAgICBtaW5pbXVtU2NvcmU6IDEwMCxcclxuICB9O1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNQYW5lSGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzUGFuZUNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNCdXN5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgaGFzUmVsZXZhbnRzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uTW9kZT86IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlID0gdGhpcy5kaWFsb2dEYXRhLnNlbGVjdGlvbk1vZGU7XHJcbiAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuaWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPVxyXG4gICAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpICtcclxuICAgICAgICAgICcvZG9jdW1lbnRzL3JlbmRlci8/cXVlcnk9JyArXHJcbiAgICAgICAgICAodGhpcy5kaWFsb2dEYXRhLnF1ZXJ5ID8/ICcnKSArXHJcbiAgICAgICAgICAnJmlkPScgK1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dEYXRhLmlkO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHVybCk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTGlzdGVuIHRvIHdpbmRvdyBtZXNzYWdlc1xyXG4gICAgdGhpcy5yZW5kZXJlckxpc3RlbmVyMSA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxyXG4gICAgICAnd2luZG93JyxcclxuICAgICAgJ21lc3NhZ2UnLFxyXG4gICAgICAoZTogRXZlbnQpID0+IHtcclxuICAgICAgICBsZXQgZXZlbnQgPSBlIGFzIE1lc3NhZ2VFdmVudDtcclxuICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XHJcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcclxuICAgICAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbmF2aWdhdGVkJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZWQoXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnRpdGxlMSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnRpdGxlMixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZGVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kdWxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kdWxlTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmRhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5udW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hdXRob3IsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcmlnaW4sXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcmlnaW5EZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmJhZyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnZhbGlkaXR5SW5mbyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmV4cGlyaW5nSW5mbyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnByaW1hcnlJZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnByaW1hcnlNb2RlbCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnNlY29uZGFyeUlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuaXNUcmlhbFxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ25hdmlnYXRlJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZShkYXRhLnVybCk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAncmVmZXJlbmNlcyc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub3BlblJlZmVyZW5jZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2RlbCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFuY2hvcixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFuY2hvclRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudXBkYXRlXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnaGl0cyc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVsZXZhbnRzLmhpdHMgPSBkYXRhLnRvdGFsO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJlbGV2YW50cygpO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIC8vIE9ic2VydmUgbGF5b3V0IGNoYW5nZXNcclxuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyXHJcbiAgICAgIC5vYnNlcnZlKFtcclxuICAgICAgICBCcmVha3BvaW50cy5YU21hbGwsXHJcbiAgICAgICAgQnJlYWtwb2ludHMuU21hbGwsXHJcbiAgICAgICAgQnJlYWtwb2ludHMuTWVkaXVtLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLkxhcmdlLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLlhMYXJnZSxcclxuICAgICAgXSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBxdWVyeSBvZiBPYmplY3Qua2V5cyhyZXN1bHQuYnJlYWtwb2ludHMpKSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmJyZWFrcG9pbnRzW3F1ZXJ5XSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlbGV2YW50c1BhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBSZWFjdCB0byB3aW5kb3cgc2l6ZSBjaGFuZ2VcclxuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSksIGRlYm91bmNlVGltZSg1MDApKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgaWYgKHRoaXMucmVuZGVyZXJMaXN0ZW5lcjEpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlckxpc3RlbmVyMSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2l6ZSBcclxuICAgKi9cclxuICBwcml2YXRlIHJlc2l6ZSgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LXNjcm9sbGFibGUnKTtcclxuICAgICAgaWYgKGVsZW0pIHtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0Q3VycmVudERpYWxvZ1Njcm9sbGFibGVIZWlnaHQoXHJcbiAgICAgICAgICBbJ2NsaXBwZXItZG9jdW1lbnQtZml4ZWQnXSxcclxuICAgICAgICAgIHdpbmRvdy5pbm5lckhlaWdodFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGhlaWdodCAhPSB0aGlzLmhlaWdodCkge1xyXG4gICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3BhZGRpbmc6MDtoZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50O21heC1oZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50Jyk7XHJcbiAgICAgICAgICBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtc2lmcmFtZScpO1xyXG4gICAgICAgICAgZWxlbT8uc2V0QXR0cmlidXRlKCdzdHlsZScsICdoZWlnaHQ6JyArIChoZWlnaHQgLSAyMCkgKyAncHggIWltcG9ydGFudDttYXgtaGVpZ2h0OicgKyAoaGVpZ2h0IC0gMjApICsgJ3B4ICFpbXBvcnRhbnQnKTtcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAqIFNob3cgaGlkZSByZWxldmFudHMgcGFuZSBtYW51YWxseVxyXG4gKi9cclxuICBwcm90ZWN0ZWQgdG9nZ2xlUmVsZXZhbnRzUGFuZSgpIHtcclxuICAgIHRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZCA9ICF0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQ7XHJcbiAgICB0aGlzLnJlbGV2YW50c1BhbmU/LnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgZmlsdGVyIHBhbmUgdmlzaWJpbGl0eVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlUmVsZXZhbnRzUGFuZVZpc2liaWxpdHkoKSB7XHJcbiAgICBpZiAodGhpcy5yZWxldmFudHNQYW5lKSB7XHJcbiAgICAgIGlmICh0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuWFNtYWxsKSB8fFxyXG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5TbWFsbCkgfHxcclxuICAgICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuTWVkaXVtKSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJlbGV2YW50c1BhbmUub3BlbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLm1vZGUgPSAnb3Zlcic7XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLmRpc2FibGVDbG9zZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMucmVsZXZhbnRzUGFuZS5vcGVuZWQgJiYgIXRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZCAmJiB0aGlzLmhhc1JlbGV2YW50cygpKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUub3BlbigpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWxldmFudHNQYW5lLm9wZW5lZCAmJiB0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQpIHtcclxuICAgICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUubW9kZSA9ICdzaWRlJztcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmVIYXNCYWNrZHJvcCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBkaWFsb2dcclxuICAgKi9cclxuXHJcbiAgcHJvdGVjdGVkIGNsb3NlKCkge1xyXG4gICAgaWYgKHRoaXMuY2xvc2luZykge1xyXG4gICAgICB0aGlzLmNsb3NpbmcuZW1pdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlIHRvIGEgbmV3IGRvY3VtZW50XHJcbiAgICogQHBhcmFtIGlkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICovXHJcbiAgbmF2aWdhdGUoaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFpZCB8fCBpZC5sZW5ndGggPT0gMClcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcbiAgICBpZiAoaWQuaW5kZXhPZignPycpICE9PSAtMSkge1xyXG4gICAgICBpZiAoaWQuc3RhcnRzV2l0aCgnL2FwaScpKVxyXG4gICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgKyBpZC5zdWJzdHJpbmcoNCkpO1xyXG4gICAgICBlbHNlIGlmICghaWQuc3RhcnRzV2l0aCh0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkpKVxyXG4gICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgKyBpZCk7XHJcbiAgICAgIGVsc2UgdGhpcy5uYXZpZ2F0ZUJ5VXJsKGlkKTtcclxuICAgIH0gZWxzZVxyXG4gICAgICB0aGlzLm5hdmlnYXRlQnlVcmwoXHJcbiAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpICtcclxuICAgICAgICAnL2RvY3VtZW50cy9yZW5kZXIvP3F1ZXJ5PSZpZD0nICtcclxuICAgICAgICBpZFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGUgYnkgdXJsXHJcbiAgICogQHBhcmFtIHVybCA6IHRoZSB1cmwgIHRvIG5hdmlnYXRlIHRvXHJcbiAgICovXHJcbiAgbmF2aWdhdGVCeVVybCh1cmw6IHN0cmluZykge1xyXG4gICAgaWYgKCF1cmwgfHwgdXJsLmxlbmd0aCA9PT0gMCB8fCB1cmwgPT09ICdhYm91dDpibGFuaycpXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG4gICAgLy8gQ2xlYW4gdXJsXHJcbiAgICBsZXQgcGFydHMgPSB1cmwuc3BsaXQoJyMnKTtcclxuICAgIHVybCA9IHBhcnRzWzBdO1xyXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdXJsICs9ICcjJyArIHBhcnRzWzFdO1xyXG4gICAgfVxyXG4gICAgLy8gSGFuZGxlIGZyZWUgdGV4dCBxdWVyeVxyXG4gICAgbGV0IHEgPSAnJztcclxuICAgIGxldCBwb3MgPSB1cmwuaW5kZXhPZigncXVlcnk9Jyk7XHJcbiAgICBpZiAocG9zICE9PSAtMSkge1xyXG4gICAgICBwb3MgKz0gNjtcclxuICAgICAgd2hpbGUgKHVybC5sZW5ndGggPiBwb3MgJiYgdXJsW3Bvc10gIT09ICcmJyAmJiB1cmxbcG9zXSAhPT0gJyMnKVxyXG4gICAgICAgIHEgKz0gdXJsW3BvcysrXTtcclxuICAgIH1cclxuICAgIGlmIChxLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gUmVzZXRcclxuICAgICAgdGhpcy5yZWxldmFudHMuaGl0ID0gMDtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICAvLyBBc3NpZ24gcXVlcnkgdG8gZW5hYmxlIHNlYXJjaCBmb3IgZnJhZ21lbnRzXHJcbiAgICAgICAgdGhpcy5sYXN0UXVlcnkgPSBkZWNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KHEpKTtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgdGhpcy5sYXN0UXVlcnkgPSBxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG5hdmlnYXRlVG9GaWxlID0gdXJsLmluZGV4T2YoJyZmaWxlPXRydWUnKSAhPT0gLTE7XHJcbiAgICBpZiAobmF2aWdhdGVUb0ZpbGUgPT09IHRydWUpIHtcclxuICAgICAgLy8gUHJldmlld1xyXG4gICAgICB0aGlzLnByZXZpZXdGaWxlKHVybCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBCZWdpbiBsb2FkaW5nIG9ubHkgaWYgbm90IGRvd25sb2FkaW5nIGEgZmlsZVxyXG4gICAgICB0aGlzLmJ1c3kuc2V0KHVybC5pbmRleE9mKCdkb2N1bWVudHMvcmVuZGVyL2l0ZW0nKSA9PT0gLTEpO1xyXG4gICAgICAvLyBOYXZpZ2F0ZVxyXG4gICAgICB0aGlzLnVybC5zZXQodXJsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlZCBjYWxsYmFjayAgIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuYXZpZ2F0ZWQoXHJcbiAgICBpZDogc3RyaW5nLCAvLyBEb2N1bW5lbnQgaWRcclxuICAgIHRpdGxlMTogc3RyaW5nLCAvLyBUaXRsZSAxXHJcbiAgICB0aXRsZTI6IHN0cmluZywgLy8gVGl0bGUgMlxyXG4gICAgbW9kZWw6IG51bWJlciwgLy8gTW9kZWxcclxuICAgIG1vZHVsZUlkOiBudW1iZXIsIC8vIE1vZHVsZVxyXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLCAvLyBNb2R1bGUgbmFtZVxyXG4gICAgZGF0ZTogc3RyaW5nLCAvLyBEYXRlXHJcbiAgICBudW1iZXI6IHN0cmluZywgLy8gTnVtYmVyXHJcbiAgICBhdXRob3I6IHN0cmluZywgLy8gQXV0aG9yXHJcbiAgICBvcmlnaW46IHN0cmluZywgLy8gT3JpZ2luXHJcbiAgICBvcmlnaW5EZXNjcmlwdGlvbjogc3RyaW5nLCAvLyBPcmlnaW4gZGVzY3JpcHRpb25cclxuICAgIGJhZzogc3RyaW5nLCAvLyBGbGFnc1xyXG4gICAgdmFsaWRpdHlJbmZvOiBzdHJpbmcsIC8vIEluZm8gYWJvdXQgdmFsaWRpdHlcclxuICAgIGV4cGlyaW5nSW5mbzogc3RyaW5nLCAvLyBJbmZvIGFib3V0IGV4cGlyaW5nIGRhdGVcclxuICAgIHByaW1hcnlJZDogc3RyaW5nLCAvLyBQcmltYXJ5IGRvY3VtZW50IGlkXHJcbiAgICBwcmltYXJ5TW9kZWw6IG51bWJlciwgLy8gUHJpbWFyeSBkb2N1bWVudCBtb2RlbFxyXG4gICAgc2Vjb25kYXJ5SWQ6IHN0cmluZywgLy8gU2Vjb25kYXJ5IGRvY3VtZW50IGlkXHJcbiAgICBpc1RyaWFsOiBib29sZWFuIC8vIFRydWUgaWYgaXMgYSB0cmlhbCByZXF1ZXN0XHJcbiAgKSB7XHJcbiAgICAvLyBDaGVjayBmb3Igc2Vzc2lvbiBleHBpcmluZ1xyXG4gICAgaWYgKHRpdGxlMSA9PT0gJ1Nlc3Npb25lIG5vbiB2YWxpZGEnKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZVxyXG4gICAgICAgIC5lcnJvcih0aXRsZTIsIG51bGwsIHRpdGxlMSwgJ0FjY2VkaSBkaSBudW92bycpXHJcbiAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbG9naW4nXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdG9yZSBkYXRhXHJcbiAgICBpZiAoIXRoaXMubGFzdERvY3VtZW50KSB7XHJcbiAgICAgIHRoaXMubGFzdERvY3VtZW50ID0ge307XHJcbiAgICB9XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5pZCA9IGlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudGl0bGUxID0gdGl0bGUxID8gU3lzdGVtVXRpbHMudXJsRGVjb2RlKHRpdGxlMSkgOiBudWxsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudGl0bGUyID0gdGl0bGUyID8gU3lzdGVtVXRpbHMudXJsRGVjb2RlKHRpdGxlMikgOiBudWxsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kZWwgPSBtb2RlbDtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm1vZHVsZSA9IG1vZHVsZUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kdWxlTmFtZSA9IG1vZHVsZU5hbWU7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5kYXRlID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5udW1iZXIgPSBudW1iZXI7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5hdXRob3IgPSBhdXRob3I7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5vcmlnaW4gPSBvcmlnaW47XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5vcmlnaW5EZXNjcmlwdGlvbiA9IG9yaWdpbkRlc2NyaXB0aW9uO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuYmFnID0gYmFnO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudmFsaWRpdHlJbmZvID0gdmFsaWRpdHlJbmZvO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeUlkID0gcHJpbWFyeUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeU1vZGVsID0gcHJpbWFyeU1vZGVsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuaGFzUHJpbWFyeSA9XHJcbiAgICAgIHByaW1hcnlJZCAmJlxyXG4gICAgICAobW9kZWwgPT09IENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvIHx8XHJcbiAgICAgICAgbW9kZWwgPT09IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlKTtcclxuICAgIGlmIChwcmltYXJ5SWQpIHtcclxuICAgICAgdmFyIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgIHN3aXRjaCAocHJpbWFyeU1vZGVsID8gcHJpbWFyeU1vZGVsIDogbW9kZWwpIHtcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnVGVzdG8gdmlnZW50ZSc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnVGVzdG8gc3Rvcmljbyc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5TY2FkZW56YTpcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ1NjYWRlbnphJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLkNvb3JkaW5hbWVudG86XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdNb2RpZmljYSc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29sbGVnYW1lbnRvJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGFzdERvY3VtZW50LnByaW1hcnlEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuc2Vjb25kYXJ5SWQgPSBzZWNvbmRhcnlJZDtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmlzVHJpYWwgPSBpc1RyaWFsO1xyXG5cclxuICAgIC8vIEhhbmRsZSBleHBpcmluZyBpbmZvXHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0Rlc2NyaXB0aW9uID0gbnVsbDtcclxuICAgIGlmIChleHBpcmluZ0luZm8pIHtcclxuICAgICAgbGV0IHBhcnRzID0gZXhwaXJpbmdJbmZvLnNwbGl0KCcjJyk7XHJcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHBhcnRzMiA9IHBhcnRzWzBdLnNwbGl0KCd8Jyk7XHJcbiAgICAgICAgaWYgKHBhcnRzMi5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgdGhpcy5sYXN0RG9jdW1lbnQuZXhwaXJpbmdEYXRlID0gbmV3IERhdGUocGFydHMyWzBdKTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDEpIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nSW5mbyA9IHBhcnRzMlsxXTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDIpXHJcbiAgICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0luZm8gKz0gJ3wnICsgcGFydHMyWzJdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0Rlc2NyaXB0aW9uID0gcGFydHNbMV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0IHRpdGxlXHJcbiAgICB0aGlzLnRpdGxlLnNldCh0aGlzLmxhc3REb2N1bWVudC50aXRsZTFcclxuICAgICAgPyB0aGlzLmxhc3REb2N1bWVudC50aXRsZTFcclxuICAgICAgOiB0aGlzLmxhc3REb2N1bWVudC50aXRsZTIpO1xyXG5cclxuICAgIC8vIEdldCBsYXN0IGRvY3VtZW50IHVwZGF0ZVxyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZS5sYXN0VXBkYXRlKHRoaXMubGFzdERvY3VtZW50LmlkKS5zdWJzY3JpYmUoKHI6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5sYXN0RG9jdW1lbnQubGFzdFVwZGF0ZSA9IHIudmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIE5vdGlmeSBuYXZpZ2F0aW9uIGhhcyBjb21wbGV0ZWRcclxuICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfTkFWSUdBVEVELCB7XHJcbiAgICAgIGRvY3VtZW50OiB0aGlzLmxhc3REb2N1bWVudCxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ290byBwcmV2aW91cyBkb2N1bWVudCBpbiBoaXN0b3J5XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGJhY2soKSB7XHJcbiAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgIGYuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgne1widHlwZVwiOiBcImJhY2tcIn0nLCAnKicpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBuZXh0IGRvY3VtZW50IGluIGhpc3RvcnlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZm9yd2FyZCgpIHtcclxuICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgZi5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCd7XCJ0eXBlXCI6IFwiZm9yd2FyZFwifScsICcqJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcmludCBjdXJyZW50IGRvY3VtZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHByaW50KCkge1xyXG4gICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoJ3tcInR5cGVcIjogXCJwcmludFwifScsICcqJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIGluIGN1cnJlbnQgZG9jdW1lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZmluZCgpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKCdQZXIgY2VyY2FyZSBuZWwgZG9jdW1lbnRvIHByZW1pIENUUkwgKyBGLicpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBuZXh0IHJlbGV2YW50IGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbmV4dFJlbGV2YW50KCkge1xyXG4gICAgbGV0IGkgPSB0aGlzLnJlbGV2YW50cy5oaXQgKyAxO1xyXG4gICAgaWYgKGkgPD0gdGhpcy5yZWxldmFudHMuaGl0cykge1xyXG4gICAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgICAgZi5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCd7XCJ0eXBlXCI6IFwicmVsZXZhbnRcIiwgXCJ2YWx1ZVwiOiBcIm5leHRcIn0nLCAnKicpO1xyXG4gICAgICB0aGlzLnJlbGV2YW50cy5oaXQrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvdG8gcHJldmlvdXMgcmVsZXZhbnQgaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBwcmV2aW91c1JlbGV2YW50KCkge1xyXG4gICAgbGV0IGkgPSB0aGlzLnJlbGV2YW50cy5oaXQgLSAxO1xyXG4gICAgaWYgKGkgPiAwKSB7XHJcbiAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgJ3tcInR5cGVcIjogXCJyZWxldmFudFwiLCBcInZhbHVlXCI6IFwicHJldmlvdXNcIn0nLFxyXG4gICAgICAgICcqJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnJlbGV2YW50cy5oaXQtLTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvdG8gYSByZWxldmFudCBpdGVtXHJcbiAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBnbyB0b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnb3RvUmVsZXZhbnQoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoaXRlbS50eXBlID09PSAyMCkge1xyXG4gICAgICB3aW5kb3cub3BlbihcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgICcvZG9jdW1lbnRzL3JlbmRlci9pdGVtLz9pZD0nICtcclxuICAgICAgICBpdGVtLmRvY3VtZW50SWQsXHJcbiAgICAgICAgJ19ibGFuaydcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgJ3tcInR5cGVcIjogXCJyZWxldmFudFwiLCBcInZhbHVlXCI6IFwiJyArIGl0ZW0udXJpICsgJ1wifScsXHJcbiAgICAgICAgJyonXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgcmVsZXZhbnQgaXRlbXNcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVJlbGV2YW50cygpIHtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMubGFzdFF1ZXJ5IHx8XHJcbiAgICAgIHRoaXMubGFzdFF1ZXJ5Lmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgICB0aGlzLmxhc3RRdWVyeSA9PT0gJyAnIHx8XHJcbiAgICAgICh0aGlzLmxhc3REb2N1bWVudCAmJlxyXG4gICAgICAgIHRoaXMubGFzdERvY3VtZW50Lm1vZGVsICE9IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlUmVsZXZhbnRzUGFuZVZpc2liaWxpdHkoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2VcclxuICAgICAgICAucXVlcnkoe1xyXG4gICAgICAgICAgZG9jdW1lbnRJZDogdGhpcy5sYXN0RG9jdW1lbnQuaWQsXHJcbiAgICAgICAgICB0ZXh0OiB0aGlzLmxhc3RRdWVyeSxcclxuICAgICAgICAgIGNvdW50OiAxLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2VzcykgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IG1pbmltdW1TY29yZSA9IDA7XHJcbiAgICAgICAgICAgIGlmIChyLnZhbHVlPy5pdGVtcyAmJiByLnZhbHVlPy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgci52YWx1ZS5pdGVtc1swXS5hbmNob3JzLmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNjb3JlID0gbi5zY29yZTtcclxuICAgICAgICAgICAgICAgIGlmIChzY29yZSA+IDcpIHNjb3JlIC09IDc7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29yZSA+IDUpIHNjb3JlIC09IDU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29yZSA+IDMpIHNjb3JlIC09IDM7XHJcbiAgICAgICAgICAgICAgICBpZiAobWluaW11bVNjb3JlID4gc2NvcmUpIG1pbmltdW1TY29yZSA9IHNjb3JlO1xyXG4gICAgICAgICAgICAgICAgbi5zY29yZSA9IHNjb3JlO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVsZXZhbnRzLm1pbmltdW1TY29yZSA9IG1pbmltdW1TY29yZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlbGV2YW50cy5pdGVtcyA9IHIudmFsdWUuaXRlbXNbMF0uYW5jaG9ycztcclxuICAgICAgICAgICAgICB0aGlzLmhhc1JlbGV2YW50cy5zZXQodGhpcy5yZWxldmFudHMuaXRlbXM/Lmxlbmd0aCA+IDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVsZXZhbnRzUGFuZVZpc2liaWxpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBkb2N1bWVudCBzdHJ1Y3R1cmVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaW5kZXgoZG9jdW1lbnRJZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgZCA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKENsaXBwZXJEb2N1bWVudEluZGV4Q29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2luZGljZSBkb2N1bWVudG8nLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGRvY3VtZW50SWQ6IGRvY3VtZW50SWQsXHJcbiAgICAgICAgZXhjbHVkZWRUeXBlczogbnVsbCxcclxuICAgICAgICBtdWx0aXBsZTogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnNjAwcHgnLFxyXG4gICAgICB3aWR0aDogJzk5JScsXHJcbiAgICB9KTtcclxuICAgIGQuY29tcG9uZW50SW5zdGFuY2UuZG9uZVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoci5kYXRhLmRvY3VtZW50SWQgPT09IGRvY3VtZW50SWQpIHtcclxuICAgICAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICAgICAgZi5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKFxyXG4gICAgICAgICAgICAne1widHlwZVwiOiBcImdvdG9cIiwgXCJ2YWx1ZVwiOlwiJyArIHIuZGF0YS51cmkgKyAnXCJ9JyxcclxuICAgICAgICAgICAgJyonXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm9wZW5Eb2N1bWVudChyLmRhdGEuZG9jdW1lbnRJZCArICcjJyArIHIuZGF0YS51cmkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZC5jbG9zZSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBHZXQgdGhlIGlkIGluIGEgcXVlcnkgc3RyaW5nXHJcbiAqIEBwYXJhbSB1cmwgOiB0aGUgdXJsIHRvIHByb2Nlc3NcclxuICogQHBhcmFtIG5hbWUgOiB0aGUgb3B0aW9uYWwgaWQgcGFyYW1lbnRlciBuYW1lLiBEZWZhdWx0IGlzICdpZCdcclxuICogQHJldHVybnMgOiB0aGUgaWQgcGFyYW1lXHJcbiAqL1xyXG4gIHByaXZhdGUgZ2V0SWQodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZyA9ICdpZCcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3RhcnQgPSB1cmwubGFzdEluZGV4T2YobmFtZSArICc9JykgKyAzO1xyXG4gICAgY29uc3QgZW5kID0gdXJsLmluZGV4T2YoJyYnLCBzdGFydCk7XHJcbiAgICByZXR1cm4gdXJsLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByZXZpZXcgYSBmaWxlIGlmIHBvc3NpYmxlXHJcbiAgICogQHBhcmFtIHVybCA6IHRoZSB1cmwgdG8gcHJldmlld1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcHJldmlld0ZpbGUodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdXJsIHx8IHVybC5sZW5ndGggPT09IDApXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG4gICAgLy8gR2V0IHRoZSBpZFxyXG4gICAgbGV0IGlkID0gdGhpcy5nZXRJZCh1cmwpO1xyXG4gICAgaWYgKCFpZCB8fCBpZC5sZW5ndGggPT09IDApXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG4gICAgLy8gQ3JlYXRlIHRoZSB1cmxcclxuICAgIHRoaXMuY2xpcHBlclNlcnZpY2UubmV3T1RQKGlkKS5zdWJzY3JpYmUoXHJcbiAgICAgIHIgPT4ge1xyXG4gICAgICAgIGlmICghci5zdWNjZXNzKSB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICBlbHNlIGlmICghci52YWx1ZS5jYW5QcmV2aWV3KVxyXG4gICAgICAgICAgLy8gRG9ubG9hZCBtYW51YWxseVxyXG4gICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEZpbGVQcmV2aWV3Q29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdwcmV2aWV3LXBhbmVsJyxcclxuICAgICAgICAgICAgYXJpYUxhYmVsOiAnYW50ZXByaW1hJyxcclxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgICAgZW1iZWQ6IHIudmFsdWUuY2FuRW1iZWRcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOiAnOTAwcHgnLFxyXG4gICAgICAgICAgICB3aWR0aDogJzk5JScsXHJcbiAgICAgICAgICAgIGhlaWdodDogJzk5JSdcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogU2hvdyBkb2N1bWVudCBjb21tZW50XHJcbiAgICAqL1xyXG4gIHByb3RlY3RlZCBzaG93Q29tbWVudCgpIHtcclxuICAgIGlmICh0aGlzLmxhc3REb2N1bWVudD8uYmFnWzddICE9PSAnVCcpIHJldHVybjtcclxuICAgIHRoaXMuY2xpcHBlclNlcnZpY2VcclxuICAgICAgLmNvbW1lbnQodGhpcy5sYXN0RG9jdW1lbnQ/LmlkKVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgaWYgKHIubWVzc2FnZSA9PT0gXCJJbCB0dW8gYWJib25hbWVudG8gbm9uIGNvbnNlbnRlIGRpIHZpc3VhbGl6emFyZSBpIGNvbW1lbnRpIGFsbGUgbm9ybWUuXCIpXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihcIklsIHNlcnZpemlvIGRpIDxiPmNvbW1lbnRpIGFsbGUgbm9ybWU8L2I+IG5vbiDDqCBjb21wcmVzbyBuZWwgdHVvIGFiYm9uYW1lbnRvLCBwZXIgbWFnZ2lvcmkgaW5mb3JtYXppb25pIHJpdm9sZ2Vyc2kgYWxsJ2FnZW50ZSBjb21tZXJjaWFsZSBkaSByaWZlcmltZW50byBvIGludmlhcmUgdW5hIG1haWwgYSA8YSBocmVmPSdtYWlsdG86c2FsZXNAYXJzZWRpemlvbmkuaXQnIHRhcmdldD0nX2JsYW5rJz5zYWxlc0BhcnNlZGl6aW9uaS5pdDwvYT4uXCIsIG51bGwsIFwiQXR0ZW56aW9uZVwiKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChyLnZhbHVlICYmIHIudmFsdWUubGVuZ3RoID4gMSlcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oci52YWx1ZS5yZXBsYWNlKC9cXG4vZywgJzxicj5cXHJcXG4nKSwgXCJDb21tZW50b1wiLCBcIkNISVVESVwiLCA3MDApO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuaW5mbyhcIkNvbW1lbnRvIG5vbiBwacO5IGRpc3BvbmliaWxlIG8gaW4gZmFzZSBkaSByZXZpc2lvbmUuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBhbiBpdGVtXHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgKiBAcGFyYW0gbmV3V2luZG93OiB0cnVlIGlmIHRoZSBkb2N1bWVudCBtdXN0IGJlIG9wZW4gaW50byBhIG5ldyB3aW5kb3dcclxuICAgKi9cclxuICBvcGVuKGRvY3VtZW50SWQ6IHN0cmluZywgbmV3V2luZG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICghbmV3V2luZG93KSB7XHJcbiAgICAgIGlmICh0aGlzLm9wZW5pbmcpIHRoaXMub3BlbmluZy5lbWl0KHsgaWQ6IGRvY3VtZW50SWQgfSk7XHJcbiAgICAgIGVsc2UgdGhpcy5vcGVuRG9jdW1lbnQoZG9jdW1lbnRJZCk7XHJcbiAgICB9IGVsc2Ugd2luZG93Lm9wZW4oJy9kb2N1bWVudG8vJyArIGRvY3VtZW50SWQsICdfYmxhbmsnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gYSBkb2N1bWVudFxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvcGVuRG9jdW1lbnQoZG9jdW1lbnRJZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIWRvY3VtZW50SWQpIHJldHVybjtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKENsaXBwZXJEb2N1bWVudENvbXBvbmVudCwge1xyXG4gICAgICBhcmlhTGFiZWw6ICdkb2N1bWVudG8nLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGRhdGE6IHsgaWQ6IGRvY3VtZW50SWQgfSxcclxuICAgICAgcGFuZWxDbGFzczogJ2RvY3VtZW50LWNvbnRhaW5lcicsXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzE0MDBweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgICAgaGVpZ2h0OiAnOTklJyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnJvd3NlIGRvY3VtZW50IHJlZmVyZW5jZXNcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqIEBwYXJhbSBtb2RlIDogdGhlIG1vZGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb3BlblJlZmVyZW5jZXMoXHJcbiAgICBkb2N1bWVudElkOiBzdHJpbmcsXHJcbiAgICBtb2RlOiBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZSA9IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLlJlZmVyZW5jZXNJbixcclxuICAgIG1vZGVsOiBudW1iZXIgPSBudWxsLFxyXG4gICAgYW5jaG9yOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgYW5jaG9yVGl0bGU6IHN0cmluZyA9IG51bGwsXHJcbiAgICB1cGRhdGU6IGJvb2xlYW4gPSB0cnVlXHJcbiAgKSB7XHJcbiAgICBpZiAoIWRvY3VtZW50SWQpIGRvY3VtZW50SWQgPSB0aGlzLmxhc3REb2N1bWVudD8uaWQ7XHJcbiAgICBsZXQgZCA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKENsaXBwZXJSZWZlcmVuY2VzQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ3JpZmVyaW1lbnRpIGxlZ2F0aSBhbCBkb2N1bWVudG8nLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGlkOiBkb2N1bWVudElkLFxyXG4gICAgICAgIG1vZGU6IG1vZGUsXHJcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxyXG4gICAgICAgIGFuY2hvcjogYW5jaG9yLFxyXG4gICAgICAgIGFuY2hvclRpdGxlOiBhbmNob3JUaXRsZSxcclxuICAgICAgICB1cGRhdGU6IHVwZGF0ZSxcclxuICAgICAgfSxcclxuICAgICAgcGFuZWxDbGFzczogJ3JlZmVyZW5jZXMtY29udGFpbmVyJyxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnMTAwMHB4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnLFxyXG4gICAgICBoZWlnaHQ6ICc5OSUnLFxyXG4gICAgfSk7XHJcbiAgICBkLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHIgJiYgci5pZCkge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZShyLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhIHJlcG9ydFxyXG4gICAqIEBwYXJhbSBpdGVtXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRpc3BsYXlSZXBvcnQoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcclxuICAgIGlmIChpdGVtLm1vZGVsICE9IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlICYmIGl0ZW0ubW9kZWwgIT0gQ2xpcHBlck1vZGVsLlNjYWRlbnphKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKFwiUXVlc3RhIGZ1bnppb25hbGl0w6Agbm9uIMOoIGRpc3BvbmliaWxlIHBlciBxdWVzdG8gdGlwbyBkaSBkb2N1bWVudG8uXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW5SZXBvcnQoaXRlbS5pZCwgaXRlbS50aXRsZTEgPyBpdGVtLnRpdGxlMSA6IGl0ZW0udGl0bGUyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBkb2N1bWVudHMgY2FuIGJlIHNlbGVjdGVkIGFuZCByZXR1cm5lZCBhcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNhblNlbGVjdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGUgPiAwICYmIHRoaXMubGFzdERvY3VtZW50ICYmICh0aGlzLmxhc3REb2N1bWVudD8ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlIHx8IHRoaXMubGFzdERvY3VtZW50Py5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kIGEgbWVzc2FnZSB3aXRoIGN1cnJlbnQgc2VsZWN0aW9uIGFuZCBjbG9zZSBkaWFsb2dcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2VsZWN0KCkge1xyXG4gICAgaWYgKHRoaXMubGFzdERvY3VtZW50KSB7XHJcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfU0VMRUNURURfSU5ORVIsIFtcclxuICAgICAgICB0aGlzLmxhc3REb2N1bWVudCxcclxuICAgICAgXSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8ZGl2IGlkPVwiY2xpcHBlci1kb2N1bWVudC1maXhlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjbGlwcGVyLWRvY3VtZW50LWhlYWRlclwiPlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdGFydFwiIGZ4TGF5b3V0R2FwPScxMHB4JyBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4Lmx0LW1kPVwiNTBcIiBmeEZsZXg9XCI3MFwiIGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgc3RhcnRcIiBmeExheW91dEdhcD1cIjVweFwiIGNsYXNzPVwidHJ1bmNhdGVkXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFyZ2UgYm9sZFwiPnt7dGl0bGUoKX19PC9kaXY+XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudCAmJiBsYXN0RG9jdW1lbnQ/Lmxhc3RVcGRhdGUpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbCBhY2NlbnRcIj5cclxuICAgICAgICAgICAgQUdHSU9STkFUTyBBOlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8ubGFzdFVwZGF0ZX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50ICYmIGxhc3REb2N1bWVudD8uZXhwaXJpbmdEZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsIGFjY2VudC1sb3dcIj5cclxuICAgICAgICAgICAge3tsYXN0RG9jdW1lbnQ/LmV4cGlyaW5nRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQgJiYgbGFzdERvY3VtZW50Py52YWxpZGl0eUluZm8pIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbCBiYWRnZS1yZWRcIj48Yj5BdHRlbnppb25lITwvYj5cclxuICAgICAgICAgICAge3tsYXN0RG9jdW1lbnQ/LnZhbGlkaXR5SW5mb319PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleC5sdC1tZD1cIjUwXCIgZnhGbGV4PVwiMzBcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jbG9zZVwiPlxyXG4gICAgICAgICAgQGlmIChjYW5TZWxlY3QoKSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJzZWxlY3QoKVwiPlxyXG4gICAgICAgICAgICBVc2Egc2VsZXppb25lXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJzdGFydFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkluZGlldHJvXCIgYXJpYS1sYWJlbD1cIkluZGlldHJvXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImJhY2soKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJzdGFydFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkF2YW50aVwiIGFyaWEtbGFiZWw9XCJBdmFudGlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZm9yd2FyZCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19mb3J3YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQ2hpdWRpXCIgYXJpYS1sYWJlbD1cIkNoaXVkaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcCBcIiBmeEZpbGwgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgc3R5bGU9XCJwYWRkaW5nOiAwIDEwcHggMjBweCAxNXB4XCI+XHJcbiAgICAgIDxkaXYgZnhGbGV4LnhzPVwiMTAwXCI+XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/Lm1vZGVsID09PSA5KSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBpbmRpY2UnXCJcclxuICAgICAgICAgIChjbGljayk9XCJpbmRleChsYXN0RG9jdW1lbnQ/LmlkKVwiPlxyXG4gICAgICAgICAgSW5kaWNlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgKGxhc3REb2N1bWVudD8uYmFnWzFdID09PSdUJyB8fCBsYXN0RG9jdW1lbnQ/LmJhZ1szXSA9PT0nVCcpKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIG1hdFRvb2x0aXA9XCJDb2xsZWdhbWVudGlcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQ29sbGVnYW1lbnRpIGFsIGRvY3VtZW50bydcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUxpbmtzXCI+XHJcbiAgICAgICAgICBDb2xsZWdhbWVudGlcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPG1hdC1tZW51ICNtZW51TGlua3M9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzFdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBkb2N1bWVudGkgcmljaGlhbWF0aSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5pZCwgMSlcIj5cclxuICAgICAgICAgICAgRG9jdW1lbnRpIHJpY2hpYW1hdGlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1szXSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRpIGNoZSByaWNoaWFtYW5vJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmlkLCAyKVwiPlxyXG4gICAgICAgICAgICBEb2N1bWVudGkgY2hlIHJpY2hpYW1hbm9cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1syXSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gZnhIaWRlIGZ4U2hvdy5sdC1tZCBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBqdXJpcydcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5pZCwgNClcIj5cclxuICAgICAgICAgICAgSnVyaXNcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gZnhIaWRlIGZ4U2hvdy5sdC1tZCBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBtb2RpZmljaGUgc3ViaXRlJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmlkLCAzKVwiPlxyXG4gICAgICAgICAgICBNb2RpZmljaGUgc3ViaXRlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gIT09J1QnICYmIGxhc3REb2N1bWVudD8uYmFnWzZdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBhcHBvcnRhdGUnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDUpXCI+XHJcbiAgICAgICAgICAgIE1vZGlmaWNoZSBhcHBvcnRhdGVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/Lmhhc1ByaW1hcnkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b25cclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBkb2N1bWVudG8gcHJpbWFyaW8nXCIgKGNsaWNrKT1cIm5hdmlnYXRlKGxhc3REb2N1bWVudD8ucHJpbWFyeUlkKVwiPlxyXG4gICAgICAgICAge3tsYXN0RG9jdW1lbnQ/LnByaW1hcnlEZXNjcmlwdGlvbn19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbMl0gPT09J1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBmeEhpZGUubHQtbWQgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGp1cmlzJ1wiIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmlkLCA0KVwiPlxyXG4gICAgICAgICAgSnVyaXNcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSA9PT0gJ1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBmeEhpZGUubHQtbWQgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBzdWJpdGUnXCIgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDMpXCI+XHJcbiAgICAgICAgICBNb2RpZmljaGUgc3ViaXRlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gIT09ICdUJyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s2XSA9PT0gJ1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBmeEhpZGUubHQtbWQgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBhcHBvcnRhdGUnXCIgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDUpXCI+XHJcbiAgICAgICAgICBNb2RpZmljaGUgYXBwb3J0YXRlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5zZWNvbmRhcnlJZCkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGRvY3VtZW50byBzZWNvbmRhcmlvJ1wiIChjbGljayk9XCJuYXZpZ2F0ZShsYXN0RG9jdW1lbnQ/LnNlY29uZGFyeUlkKVwiPlxyXG4gICAgICAgICAgVGVzdG8gc3Rvcmljb1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzddID09PSAnVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGNvbW1lbnRvJ1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd0NvbW1lbnQoKVwiPlxyXG4gICAgICAgICAgQ29tbWVudG9cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleC54cz1cIjEwMFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICBAaWYgKGhhc1JlbGV2YW50cygpICYmIHJlbGV2YW50cy5oaXRzKSB7XHJcbiAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInNtYWxsIGl0ZW0tZ3JleWVkXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDoyMHB4OyBtYXJnaW4tcmlnaHQ6IDVweFwiXHJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlBhcm9sZSBldmlkZW56aWF0ZVwiPnt7cmVsZXZhbnRzLmhpdH19XHJcbiAgICAgICAgICAgICAgZGkge3tyZWxldmFudHMuaGl0c319PC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1ZhaSBhbGxhIHBhcm9sYSBwcmVjZWRlbnRlJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzUmVsZXZhbnQoKVwiIG1hdFRvb2x0aXA9XCJQYXJvbGEgcHJlY2VkZW50ZVwiIFtkaXNhYmxlZF09XCJyZWxldmFudHMuaGl0IDw9IDFcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1ZhaSBhbGxhIHByb3NzaW1hIHBhcm9sYSdcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJuZXh0UmVsZXZhbnQoKVwiIG1hdFRvb2x0aXA9XCJQcm9zc2ltYSBwYXJvbGFcIiBbZGlzYWJsZWRdPVwicmVsZXZhbnRzLmhpdCA+PSByZWxldmFudHMuaGl0c1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQXppb25pIHN1bCBkb2N1bWVudG9cIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQXppb25pIGRhIGVzZWd1aXJlIHN1bCBkb2N1bWVudG8nXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBY3Rpb25zXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8bWF0LW1lbnUgI21lbnVBY3Rpb25zPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FwcmkgZG9jdW1lbnRvIGluIHVuYSBudW92YSBmaW5lc3RyYSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbihsYXN0RG9jdW1lbnQ/LmlkLCB0cnVlKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+b3Blbl9pbl9icm93c2VyPC9tYXQtaWNvbj5BcHJpIGluIG51b3ZhIGZpbmVzdHJhXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicHJpbnQoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1N0YW1wYSBkb2N1bWVudG8nXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5wcmludDwvbWF0LWljb24+U3RhbXBhXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZmluZCgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInVHJvdmEgbmVsIGRvY3VtZW50bydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmZpbmRfaW5fcGFnZTwvbWF0LWljb24+VHJvdmEgbmVsIGRvY3VtZW50byAoQ1RSTCtGKVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNlbmRJdGVtc1RvKFtsYXN0RG9jdW1lbnRdKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0ludmlhIGRvY3VtZW50byBwZXIgZW1haWwnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZW5kPC9tYXQtaWNvbj5JbnZpYSBwZXIgZW1haWxcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhZGRJdGVtc1RvQmFnKFtsYXN0RG9jdW1lbnRdKVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FnZ2l1bmdpIGFpIGRvY3VtZW50aSBkaSBsYXZvcm8nXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj53b3JrX291dGxpbmU8L21hdC1pY29uPkFnZ2l1bmdpIGFpIGRvY3VtZW50aSBkaSBsYXZvcm9cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQgJiYgbGFzdERvY3VtZW50Py5tb2RlbCAhPSAxMSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJleHBvcnRQZGYobGFzdERvY3VtZW50KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NhbHZhIGRvY3VtZW50byBpbiBwZGYnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zYXZlX2FsdDwvbWF0LWljb24+U2FsdmEgaW4gcGRmXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidHZW5lcmEgdW4gbGluayBwZXJtYW5lbnRlIGRhIHV0aWxpenphcmUgZXN0ZXJuYW1lbnRlJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93TGluayhsYXN0RG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5saW5rPC9tYXQtaWNvbj5MaW5rXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIEBpZiAoKGxhc3REb2N1bWVudD8ubW9kZWwgPT09IDkgfHwgbGFzdERvY3VtZW50Py5tb2RlbCA9PT0gMTApKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInR2VuZXJhIHVuIHJlcG9ydCBzdWwgZG9jdW1lbnRvJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkaXNwbGF5UmVwb3J0KGxhc3REb2N1bWVudClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFzc2lnbm1lbnQ8L21hdC1pY29uPlJlcG9ydFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKFJTX2VuYWJsZWQoW2xhc3REb2N1bWVudF0pICYmICFjYW5TZWxlY3QoKSkge1xyXG4gICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKFJTX2VuYWJsZWQoW2xhc3REb2N1bWVudF0pICYmICFjYW5TZWxlY3QoKSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSBtYXRUb29sdGlwPVwiUmVnaXN0cm8gJiBTY2FkZW56YXJpb1wiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09wemlvbmkgZGkgUmVnaXN0cm8gJiBTY2FkZW56YXJpbydcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVJTXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hbGFybV9vbjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIFJlZ2lzdHJvIGUgc2NhZGVuemFyaW9cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51UlM9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidOdW92YSBsZWdnZSdcIiAoY2xpY2spPVwiUlNfbmV3TGF3KFtsYXN0RG9jdW1lbnRdKVwiPlxyXG4gICAgICAgICAgICAgIE51b3ZhIGxlZ2dlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTnVvdmEgYXR0aXZpdMOgJ1wiIChjbGljayk9XCJSU19uZXdBY3Rpdml0eShsYXN0RG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgTnVvdmEgYXR0aXZpdMOgXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInUmVwb3J0IHV0aWxpenpvIG5vcm1hJ1wiIChjbGljayk9XCJSU191c2FnZVJlcG9ydChsYXN0RG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgUmVwb3J0IHV0aWxpenpvIG5vcm1hXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIEBpZiAoaGFzUmVsZXZhbnRzKCkgJiYgcmVsZXZhbnRzLml0ZW1zICYmIHJlbGV2YW50c1BhbmUgJiYgKCFyZWxldmFudHNQYW5lLm9wZW5lZCB8fCByZWxldmFudHNQYW5lQ2xvc2VkKSkge1xyXG4gICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiUmlsZXZhbnphXCIgYXJpYS1sYWJlbD1cIidSaWxldmFuemEnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlbGV2YW50c1BhbmUoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+bWVudV9vcGVuPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoYnVzeSgpKSB7XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciBzdHlsZT1cInotaW5kZXg6MTFcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGlkPVwiY2xpcHBlci1kb2N1bWVudC1zY3JvbGxhYmxlXCI+XHJcbiAgPG1hdC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiZmlsbFwiIFtoYXNCYWNrZHJvcF09XCJbcmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wXVwiPlxyXG4gICAgPG1hdC1kcmF3ZXIgI3JlbGV2YW50c1BhbmUgcG9zaXRpb249XCJlbmRcIiBjbGFzcz1cImRyYXdlci1zbWFsbCBkcmF3ZXItd2l0aC1sb2FkZXJcIj5cclxuICAgICAgQGlmIChyZWxldmFudHNCdXN5KCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlcIj48L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4PVwiNnB4XCI+XHJcbiAgICAgICAgICBAaWYgKHJlbGV2YW50c0J1c3koKSkge1xyXG4gICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgc3R5bGU9XCJ6LWluZGV4OiAxMTtcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPlxyXG4gICAgICAgICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgZnhGbGV4PVwiNDhweFwiIGNsYXNzPVwidGl0bGUtY29udGFpbmVyLXdpdGgtbG9hZGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+UmlsZXZhbnphPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlUmVsZXZhbnRzUGFuZSgpXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJOYXNjb25kaVwiPjxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsID5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8cD5QYXJ0aSBkZWwgZG9jdW1lbnRvIHBpw7kgc2lnbmlmaWNhdGl2ZSBwZXIgbGEgcmljZXJjYSBkaSA8c3BhbiBjbGFzcz0nd29yZC1oaXQnPnt7bGFzdFF1ZXJ5fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgY2xhc3M9XCJzY3JvbGwtYXV0b1wiPlxyXG4gICAgICAgICAgICAgIDxuYXYgY2xhc3M9XCJyZWxldmFudHMtaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiByZWxldmFudHMuaXRlbXM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJzbWFsbFwiIChjbGljayk9XCJnb3RvUmVsZXZhbnQoaXRlbSlcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0udGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0YXJ0XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uc2NvcmUgPiAxLjIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPSdmb250LXNpemU6eC1zbWFsbDsgaGVpZ2h0OiAxMHB4OyB3aWR0aDoxMHB4JyBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb2x0byByaWxldmFudGVcIj50aHVtYl91cF9hbHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8L25hdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1kcmF3ZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsbFwiPlxyXG4gICAgICA8aWZyYW1lIGlkPVwiY2xpcHBlci1kb2N1bWVudC1pZnJhbWVcIiBjbGFzcz1cImlmcmFtZVwiIFtzcmNdPVwidXJsKCkgfCBzYWZlVXJsXCI+PC9pZnJhbWU+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1kcmF3ZXItY29udGFpbmVyPlxyXG48L2Rpdj4iXX0=
|
|
725
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBR0wsZUFBZSxFQUNmLFlBQVksRUFDWiwwQkFBMEIsRUFDM0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFdBQVcsRUFDWixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7Ozs7QUE2QjlFLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxzQkFBc0I7SUFwQnBFOztRQXVCWSxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU1Qyw0QkFBNEI7UUFDbEIseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMvQyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQy9DLDRCQUF1QixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFcEQsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNqRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hELGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixjQUFTLEdBQUcsTUFBTSxDQUFDLENBQUEsWUFBc0MsQ0FBQSxDQUFDLENBQUM7UUFDekQsZUFBVSxHQUE4QixNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsMEJBQTBCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFHdkgsV0FBTSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLFFBQUcsR0FBRyxNQUFNLENBQVMsSUFBSSxDQUFDLENBQUM7UUFDM0IsVUFBSyxHQUFHLE1BQU0sQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUM3QixTQUFJLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBbUIsSUFBSSxDQUFDO1FBQ2pDLGlCQUFZLEdBQWdDLElBQUksQ0FBQztRQUNqRCxjQUFTLEdBQTZCO1lBQzlDLEtBQUssRUFBRSxFQUFFO1lBQ1QsSUFBSSxFQUFFLENBQUM7WUFDUCxHQUFHLEVBQUUsQ0FBQztZQUNOLFlBQVksRUFBRSxHQUFHO1NBQ2xCLENBQUM7UUFDUSw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFDMUMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQW1CLElBQUksQ0FBQztLQW1zQmhEO0lBanNCQyxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUNuRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sR0FBRyxHQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVTtvQkFDOUIsMkJBQTJCO29CQUMzQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDN0IsTUFBTTtvQkFDTixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUxQixDQUFDO1FBQ0gsQ0FBQztRQUVELDRCQUE0QjtRQUM1QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQzNDLFFBQVEsRUFDUixTQUFTLEVBQ1QsQ0FBQyxDQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksS0FBSyxHQUFHLENBQWlCLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsT0FBTztZQUNuQixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUM7b0JBQ0gsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xDLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQ1QsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7NEJBQ2xCLEtBQUssV0FBVztnQ0FDZCxJQUFJLENBQUMsU0FBUyxDQUNaLElBQUksQ0FBQyxFQUFFLEVBQ1AsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsR0FBRyxFQUNSLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO2dDQUNGLE1BQU07NEJBQ1IsS0FBSyxVQUFVO2dDQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dDQUN4QixNQUFNOzRCQUNSLEtBQUssWUFBWTtnQ0FDZixJQUFJLENBQUMsY0FBYyxDQUNqQixJQUFJLENBQUMsRUFBRSxFQUNQLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztnQ0FDRixNQUFNOzRCQUNSLEtBQUssTUFBTTtnQ0FDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dDQUNqQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0NBQ3ZCLE1BQU07d0JBQ1YsQ0FBQzt3QkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNyQyxDQUFDO2dCQUNILENBQUM7Z0JBQUMsTUFBTSxDQUFDO2dCQUNULENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUNGLENBQUM7UUFFRix5QkFBeUI7UUFDekIsSUFBSSxDQUFDLGtCQUFrQjthQUNwQixPQUFPLENBQUM7WUFDUCxXQUFXLENBQUMsTUFBTTtZQUNsQixXQUFXLENBQUMsS0FBSztZQUNqQixXQUFXLENBQUMsTUFBTTtZQUNsQixXQUFXLENBQUMsS0FBSztZQUNqQixXQUFXLENBQUMsTUFBTTtTQUNuQixDQUFDO2FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDakMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzlCLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO2dCQUN2QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsOEJBQThCO1FBQzlCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFHRDs7T0FFRztJQUNLLE1BQU07UUFDWixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQ2xFLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQ0FBZ0MsQ0FDaEUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUMxQixNQUFNLENBQUMsV0FBVyxDQUNuQixDQUFDO2dCQUNGLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEdBQUcsTUFBTSxHQUFHLDJCQUEyQixHQUFHLE1BQU0sR0FBRyxlQUFlLENBQUMsQ0FBQztvQkFDbEgsSUFBSSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsQ0FBQztvQkFDMUQsSUFBSSxFQUFFLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxHQUFHLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLDJCQUEyQixHQUFHLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO29CQUN2SCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztvQkFDckIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUlEOztLQUVDO0lBQ1MsbUJBQW1CO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFJRDs7T0FFRztJQUNLLDZCQUE2QjtRQUNuQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztnQkFDdkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7WUFDdkMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztvQkFDbkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDNUIsQ0FBQztxQkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO29CQUNqRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM3QixDQUFDO2dCQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBRU8sS0FBSztRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxFQUFVO1FBQ2pCLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxnQkFBZ0I7UUFDMUIsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2xFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDOztnQkFDckQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixDQUFDOztZQUNDLElBQUksQ0FBQyxhQUFhLENBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVTtnQkFDOUIsK0JBQStCO2dCQUMvQixFQUFFLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsR0FBVztRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxhQUFhO1lBQ25ELE9BQU8sQ0FBQyxnQkFBZ0I7UUFDMUIsWUFBWTtRQUNaLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixHQUFHLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNYLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNmLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDVCxPQUFPLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUc7Z0JBQzdELENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pCLFFBQVE7WUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDO2dCQUNILDhDQUE4QztnQkFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLGNBQWMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksY0FBYyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzVCLFVBQVU7WUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sK0NBQStDO1lBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELFdBQVc7WUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUyxDQUNkLEVBQVUsRUFBRSxlQUFlO0lBQzNCLE1BQWMsRUFBRSxVQUFVO0lBQzFCLE1BQWMsRUFBRSxVQUFVO0lBQzFCLEtBQWEsRUFBRSxRQUFRO0lBQ3ZCLFFBQWdCLEVBQUUsU0FBUztJQUMzQixVQUFrQixFQUFFLGNBQWM7SUFDbEMsSUFBWSxFQUFFLE9BQU87SUFDckIsTUFBYyxFQUFFLFNBQVM7SUFDekIsTUFBYyxFQUFFLFNBQVM7SUFDekIsTUFBYyxFQUFFLFNBQVM7SUFDekIsaUJBQXlCLEVBQUUscUJBQXFCO0lBQ2hELEdBQVcsRUFBRSxRQUFRO0lBQ3JCLFlBQW9CLEVBQUUsc0JBQXNCO0lBQzVDLFlBQW9CLEVBQUUsMkJBQTJCO0lBQ2pELFNBQWlCLEVBQUUsc0JBQXNCO0lBQ3pDLFlBQW9CLEVBQUUseUJBQXlCO0lBQy9DLFdBQW1CLEVBQUUsd0JBQXdCO0lBQzdDLE9BQWdCLENBQUMsNkJBQTZCOztRQUU5Qyw2QkFBNkI7UUFDN0IsSUFBSSxNQUFNLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYTtpQkFDZixLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsaUJBQWlCLENBQUM7aUJBQzlDLFdBQVcsRUFBRTtpQkFDYixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztZQUNMLE9BQU87UUFDVCxDQUFDO1FBRUQsYUFBYTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVU7WUFDMUIsU0FBUztnQkFDVCxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUMsc0JBQXNCO29CQUM1QyxLQUFLLEtBQUssWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUNyQixRQUFRLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDNUMsS0FBSyxZQUFZLENBQUMsZ0JBQWdCO29CQUNoQyxXQUFXLEdBQUcsZUFBZSxDQUFDO29CQUM5QixNQUFNO2dCQUNSLEtBQUssWUFBWSxDQUFDLHNCQUFzQjtvQkFDdEMsV0FBVyxHQUFHLGVBQWUsQ0FBQztvQkFDOUIsTUFBTTtnQkFDUixLQUFLLFlBQVksQ0FBQyxRQUFRO29CQUN4QixXQUFXLEdBQUcsVUFBVSxDQUFDO29CQUN6QixNQUFNO2dCQUNSLEtBQUssWUFBWSxDQUFDLGFBQWE7b0JBQzdCLFdBQVcsR0FBRyxVQUFVLENBQUM7b0JBQ3pCLE1BQU07Z0JBQ1I7b0JBQ0UsV0FBVyxHQUFHLGNBQWMsQ0FBQztvQkFDN0IsTUFBTTtZQUNWLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUVwQyx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDN0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixJQUFJLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakMsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xFLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDO29CQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsWUFBWTtRQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtZQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQzFCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFO1lBQ3BFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDTyxJQUFJO1FBQ1osSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBUSxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNPLE9BQU87UUFDZixJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFRLENBQUM7UUFDbEUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ08sS0FBSztRQUNiLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQVEsQ0FBQztRQUNsRSxDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxJQUFJO1FBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7O09BRUc7SUFDTyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQVEsQ0FBQztZQUNsRSxDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxnQkFBZ0I7UUFDeEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBUSxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUN6QiwyQ0FBMkMsRUFDM0MsR0FBRyxDQUNKLENBQUM7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sWUFBWSxDQUFDLElBQVM7UUFDOUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVO2dCQUM5Qiw2QkFBNkI7Z0JBQzdCLElBQUksQ0FBQyxVQUFVLEVBQ2YsUUFBUSxDQUNULENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQVEsQ0FBQztZQUNsRSxDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FDekIsaUNBQWlDLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEVBQ25ELEdBQUcsQ0FDSixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWU7UUFDckIsSUFDRSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxLQUFLLEdBQUc7WUFDdEIsQ0FBQyxJQUFJLENBQUMsWUFBWTtnQkFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQzNELENBQUM7WUFDRCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxjQUFjO2lCQUNoQixLQUFLLENBQUM7Z0JBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUNwQixLQUFLLEVBQUUsQ0FBQzthQUNULENBQUM7aUJBQ0QsU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTztvQkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQy9DLENBQUM7b0JBQ0osSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO29CQUNyQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDaEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFOzRCQUMxQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDOzRCQUNwQixJQUFJLEtBQUssR0FBRyxDQUFDO2dDQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7aUNBQ3JCLElBQUksS0FBSyxHQUFHLENBQUM7Z0NBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztpQ0FDMUIsSUFBSSxLQUFLLEdBQUcsQ0FBQztnQ0FBRSxLQUFLLElBQUksQ0FBQyxDQUFDOzRCQUMvQixJQUFJLFlBQVksR0FBRyxLQUFLO2dDQUFFLFlBQVksR0FBRyxLQUFLLENBQUM7NEJBQy9DLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO3dCQUNsQixDQUFDLENBQUMsQ0FBQzt3QkFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7d0JBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQzt3QkFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUMxRCxDQUFDO29CQUNELElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO2dCQUN2QyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUlEOztPQUVHO0lBQ08sS0FBSyxDQUFDLFVBQWtCO1FBQ2hDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQzdELFNBQVMsRUFBRSxrQkFBa0I7WUFDN0IsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsWUFBWSxFQUFFLElBQUk7WUFDbEIsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixJQUFJLEVBQUU7Z0JBQ0osVUFBVSxFQUFFLFVBQVU7Z0JBQ3RCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixRQUFRLEVBQUUsS0FBSzthQUNoQjtZQUNELFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLElBQUk7YUFDckIsU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBUSxDQUFDO2dCQUNsRSxDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FDekIsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUNoRCxHQUFHLENBQ0osQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFELENBQUM7WUFFRCxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7S0FLQztJQUNPLEtBQUssQ0FBQyxHQUFXLEVBQUUsT0FBZSxJQUFJO1FBQzVDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwQyxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSyxXQUFXLENBQUMsR0FBVztRQUM3QixJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUMxQixPQUFPLENBQUMsZ0JBQWdCO1FBQzFCLGFBQWE7UUFDYixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0I7UUFDMUIsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FDdEMsQ0FBQyxDQUFDLEVBQUU7WUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87Z0JBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUMvQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVO2dCQUMxQixtQkFBbUI7Z0JBQ25CLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO2lCQUNqQixDQUFDO2dCQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO29CQUM1QyxVQUFVLEVBQUUsZUFBZTtvQkFDM0IsU0FBUyxFQUFFLFdBQVc7b0JBQ3RCLFNBQVMsRUFBRSxLQUFLO29CQUNoQixZQUFZLEVBQUUsS0FBSztvQkFDbkIsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLElBQUksRUFBRTt3QkFDSixHQUFHLEVBQUUsR0FBRzt3QkFDUixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRO3FCQUN4QjtvQkFDRCxRQUFRLEVBQUUsT0FBTztvQkFDakIsUUFBUSxFQUFFLE9BQU87b0JBQ2pCLEtBQUssRUFBRSxLQUFLO29CQUNaLE1BQU0sRUFBRSxLQUFLO2lCQUNkLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7UUFFSTtJQUNNLFdBQVc7UUFDbkIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHO1lBQUUsT0FBTztRQUM5QyxJQUFJLENBQUMsY0FBYzthQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7YUFDOUIsU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssd0VBQXdFO29CQUN4RixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQywrUEFBK1AsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7O29CQUU5UyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO29CQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQzs7b0JBRXZGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHNEQUFzRCxDQUFDLENBQUM7WUFDcEYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdEOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsVUFBa0IsRUFBRSxZQUFxQixLQUFLO1FBQ2pELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLElBQUksSUFBSSxDQUFDLE9BQU87Z0JBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQzs7Z0JBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsQ0FBQzs7WUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVksQ0FBQyxVQUFrQjtRQUNyQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDaEQsU0FBUyxFQUFFLFdBQVc7WUFDdEIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsWUFBWSxFQUFFLElBQUk7WUFDbEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRTtZQUN4QixVQUFVLEVBQUUsb0JBQW9CO1lBQ2hDLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGNBQWMsQ0FDdEIsVUFBa0IsRUFDbEIsT0FBbUMsMEJBQTBCLENBQUMsWUFBWSxFQUMxRSxRQUFnQixJQUFJLEVBQ3BCLFNBQWlCLElBQUksRUFDckIsY0FBc0IsSUFBSSxFQUMxQixTQUFrQixJQUFJO1FBRXRCLElBQUksQ0FBQyxVQUFVO1lBQUUsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQzFELFNBQVMsRUFBRSxpQ0FBaUM7WUFDNUMsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsWUFBWSxFQUFFLElBQUk7WUFDbEIsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixJQUFJLEVBQUU7Z0JBQ0osRUFBRSxFQUFFLFVBQVU7Z0JBQ2QsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osTUFBTSxFQUFFLE1BQU07Z0JBQ2QsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLE1BQU0sRUFBRSxNQUFNO2FBQ2Y7WUFDRCxVQUFVLEVBQUUsc0JBQXNCO1lBQ2xDLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUM7UUFDSCxDQUFDLENBQUMsV0FBVyxFQUFFO2FBQ1osU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7O09BR0c7SUFDTyxhQUFhLENBQUMsSUFBUztRQUMvQixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2RixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO1lBQy9GLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7O09BRUc7SUFDTyxTQUFTO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxLQUFLLFlBQVksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssS0FBSyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtJQUN4TCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxNQUFNO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsdUJBQXVCLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxZQUFZO2FBQ2xCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7OEdBdHVCVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixtUkFuQm5CLFdBQVcsQ0FBQyxZQUFZLEVBQUUscUtDbEQ1QyxtMGJBb1JNLDJnUkQ1TkYsVUFBVSwraEdBQ1YsZUFBZSx3VUFDZixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsYUFBYSw2dkJBQ2IsY0FBYyxtK0JBQ2QsZ0JBQWdCLGtJQUNoQixvQkFBb0IseU5BQ3BCLGdCQUFnQix3R0FDaEIsZ0JBQWdCLG9kQUNoQixXQUFXOzsyRkFHRix3QkFBd0I7a0JBcEJwQyxTQUFTOzJCQUNGLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxtQkFHM0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixXQUFXO3FCQUNaOzhCQUkyQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ2hCLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFHRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxuICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IE1hdERyYXdlciwgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7XHJcbiAgQ2xpcHBlckRvY3VtZW50SW5mbyxcclxuICBDbGlwcGVyRG9jdW1lbnRSZWxldmFudHMsXHJcbiAgQ2xpcHBlck1lc3NhZ2VzLFxyXG4gIENsaXBwZXJNb2RlbCxcclxuICBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZVxyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY2xpcHBlci5jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIFNhZmVVcmxQaXBlLFxyXG4gIFN5c3RlbVV0aWxzXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRmlsZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uJztcclxuaW1wb3J0IHsgRXh0ZW5kZWRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZXh0ZW5kZWQnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENsaXBwZXJSZWZlcmVuY2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVmZXJlbmNlcy9yZWZlcmVuY2VzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZGV4Q29tcG9uZW50IH0gZnJvbSAnLi4vZG9jdW1lbnQtaW5kZXgvZG9jdW1lbnQtaW5kZXguY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50TWFuYWdlciB9IGZyb20gJy4uL2RvY3VtZW50LW1hbmFnZXIvZG9jdW1lbnQtbWFuYWdlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENsaXBwZXJEb2N1bWVudERpYWxvZ0RhdGEge1xyXG4gIHNlbGVjdGlvbk1vZGU6IG51bWJlcjtcclxuICBpZDogc3RyaW5nO1xyXG4gIHF1ZXJ5Pzogc3RyaW5nIHwgbnVsbDtcclxuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZsZXhNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBFeHRlbmRlZE1vZHVsZSxcclxuICAgIE1hdERpdmlkZXJNb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxyXG4gICAgU2FmZVVybFBpcGUsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJEb2N1bWVudENvbXBvbmVudCBleHRlbmRzIENsaXBwZXJEb2N1bWVudE1hbmFnZXJcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdyZWxldmFudHNQYW5lJykgcmVsZXZhbnRzUGFuZSE6IE1hdERyYXdlcjtcclxuICBAT3V0cHV0KCkgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8vIENvbXBsaWFuY2UgcmVsYXRlZCBldmVudHNcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlQW5hbHlzaXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlUGxhbm5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlVXNhZ2VSZXBvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcclxuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZW5kZXJlckxpc3RlbmVyMTogYW55O1xyXG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPENsaXBwZXJEb2N1bWVudENvbXBvbmVudD4pO1xyXG4gIHByb3RlY3RlZCBkaWFsb2dEYXRhOiBDbGlwcGVyRG9jdW1lbnREaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgPz8geyBtb2RlOiBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzSW4gfTtcclxuXHJcblxyXG4gIHByaXZhdGUgaGVpZ2h0OiBudW1iZXIgPSAtMTtcclxuICBwcm90ZWN0ZWQgdXJsID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIHRpdGxlID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIGJ1c3kgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByb3RlY3RlZCBsYXN0UXVlcnk/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgbGFzdERvY3VtZW50PzogQ2xpcHBlckRvY3VtZW50SW5mbyB8IG51bGwgPSBudWxsO1xyXG4gIHByb3RlY3RlZCByZWxldmFudHM6IENsaXBwZXJEb2N1bWVudFJlbGV2YW50cyA9IHtcclxuICAgIGl0ZW1zOiBbXSxcclxuICAgIGhpdHM6IDAsXHJcbiAgICBoaXQ6IDAsXHJcbiAgICBtaW5pbXVtU2NvcmU6IDEwMCxcclxuICB9O1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNQYW5lSGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzUGFuZUNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNCdXN5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgaGFzUmVsZXZhbnRzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uTW9kZT86IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlID0gdGhpcy5kaWFsb2dEYXRhLnNlbGVjdGlvbk1vZGU7XHJcbiAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuaWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPVxyXG4gICAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpICtcclxuICAgICAgICAgICcvZG9jdW1lbnRzL3JlbmRlci8/cXVlcnk9JyArXHJcbiAgICAgICAgICAodGhpcy5kaWFsb2dEYXRhLnF1ZXJ5ID8/ICcnKSArXHJcbiAgICAgICAgICAnJmlkPScgK1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dEYXRhLmlkO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHVybCk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTGlzdGVuIHRvIHdpbmRvdyBtZXNzYWdlc1xyXG4gICAgdGhpcy5yZW5kZXJlckxpc3RlbmVyMSA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxyXG4gICAgICAnd2luZG93JyxcclxuICAgICAgJ21lc3NhZ2UnLFxyXG4gICAgICAoZTogRXZlbnQpID0+IHtcclxuICAgICAgICBsZXQgZXZlbnQgPSBlIGFzIE1lc3NhZ2VFdmVudDtcclxuICAgICAgICBpZiAoIWV2ZW50KSByZXR1cm47XHJcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcclxuICAgICAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbmF2aWdhdGVkJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZWQoXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnRpdGxlMSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnRpdGxlMixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZGVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kdWxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kdWxlTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmRhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5udW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hdXRob3IsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcmlnaW4sXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcmlnaW5EZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmJhZyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnZhbGlkaXR5SW5mbyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmV4cGlyaW5nSW5mbyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnByaW1hcnlJZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnByaW1hcnlNb2RlbCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnNlY29uZGFyeUlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuaXNUcmlhbFxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ25hdmlnYXRlJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZShkYXRhLnVybCk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAncmVmZXJlbmNlcyc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub3BlblJlZmVyZW5jZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2RlbCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFuY2hvcixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFuY2hvclRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudXBkYXRlXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnaGl0cyc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVsZXZhbnRzLmhpdHMgPSBkYXRhLnRvdGFsO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJlbGV2YW50cygpO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIC8vIE9ic2VydmUgbGF5b3V0IGNoYW5nZXNcclxuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyXHJcbiAgICAgIC5vYnNlcnZlKFtcclxuICAgICAgICBCcmVha3BvaW50cy5YU21hbGwsXHJcbiAgICAgICAgQnJlYWtwb2ludHMuU21hbGwsXHJcbiAgICAgICAgQnJlYWtwb2ludHMuTWVkaXVtLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLkxhcmdlLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLlhMYXJnZSxcclxuICAgICAgXSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBxdWVyeSBvZiBPYmplY3Qua2V5cyhyZXN1bHQuYnJlYWtwb2ludHMpKSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmJyZWFrcG9pbnRzW3F1ZXJ5XSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlbGV2YW50c1BhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBSZWFjdCB0byB3aW5kb3cgc2l6ZSBjaGFuZ2VcclxuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSksIGRlYm91bmNlVGltZSg1MDApKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgaWYgKHRoaXMucmVuZGVyZXJMaXN0ZW5lcjEpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlckxpc3RlbmVyMSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2l6ZSBcclxuICAgKi9cclxuICBwcml2YXRlIHJlc2l6ZSgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LXNjcm9sbGFibGUnKTtcclxuICAgICAgaWYgKGVsZW0pIHtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0Q3VycmVudERpYWxvZ1Njcm9sbGFibGVIZWlnaHQoXHJcbiAgICAgICAgICBbJ2NsaXBwZXItZG9jdW1lbnQtZml4ZWQnXSxcclxuICAgICAgICAgIHdpbmRvdy5pbm5lckhlaWdodFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGhlaWdodCAhPSB0aGlzLmhlaWdodCkge1xyXG4gICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3BhZGRpbmc6MDtoZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50O21heC1oZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50Jyk7XHJcbiAgICAgICAgICBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJyk7XHJcbiAgICAgICAgICBlbGVtPy5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDonICsgKGhlaWdodCAtIDIwKSArICdweCAhaW1wb3J0YW50O21heC1oZWlnaHQ6JyArIChoZWlnaHQgLSAyMCkgKyAncHggIWltcG9ydGFudCcpO1xyXG4gICAgICAgICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICogU2hvdyBoaWRlIHJlbGV2YW50cyBwYW5lIG1hbnVhbGx5XHJcbiAqL1xyXG4gIHByb3RlY3RlZCB0b2dnbGVSZWxldmFudHNQYW5lKCkge1xyXG4gICAgdGhpcy5yZWxldmFudHNQYW5lQ2xvc2VkID0gIXRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZDtcclxuICAgIHRoaXMucmVsZXZhbnRzUGFuZT8udG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBmaWx0ZXIgcGFuZSB2aXNpYmlsaXR5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpIHtcclxuICAgIGlmICh0aGlzLnJlbGV2YW50c1BhbmUpIHtcclxuICAgICAgaWYgKHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5YU21hbGwpIHx8XHJcbiAgICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLlNtYWxsKSB8fFxyXG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5NZWRpdW0pKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVsZXZhbnRzUGFuZS5vcGVuZWQpIHtcclxuICAgICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUubW9kZSA9ICdvdmVyJztcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuZGlzYWJsZUNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lSGFzQmFja2Ryb3AgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5yZWxldmFudHNQYW5lLm9wZW5lZCAmJiAhdGhpcy5yZWxldmFudHNQYW5lQ2xvc2VkICYmIHRoaXMuaGFzUmVsZXZhbnRzKCkpIHtcclxuICAgICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5vcGVuKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlbGV2YW50c1BhbmUub3BlbmVkICYmIHRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5tb2RlID0gJ3NpZGUnO1xyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlIGRpYWxvZ1xyXG4gICAqL1xyXG5cclxuICBwcm90ZWN0ZWQgY2xvc2UoKSB7XHJcbiAgICBpZiAodGhpcy5jbG9zaW5nKSB7XHJcbiAgICAgIHRoaXMuY2xvc2luZy5lbWl0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGUgdG8gYSBuZXcgZG9jdW1lbnRcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgKi9cclxuICBuYXZpZ2F0ZShpZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIWlkIHx8IGlkLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZG9cclxuICAgIGlmIChpZC5pbmRleE9mKCc/JykgIT09IC0xKSB7XHJcbiAgICAgIGlmIChpZC5zdGFydHNXaXRoKCcvYXBpJykpXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArIGlkLnN1YnN0cmluZyg0KSk7XHJcbiAgICAgIGVsc2UgaWYgKCFpZC5zdGFydHNXaXRoKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSkpXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArIGlkKTtcclxuICAgICAgZWxzZSB0aGlzLm5hdmlnYXRlQnlVcmwoaWQpO1xyXG4gICAgfSBlbHNlXHJcbiAgICAgIHRoaXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgICcvZG9jdW1lbnRzL3JlbmRlci8/cXVlcnk9JmlkPScgK1xyXG4gICAgICAgIGlkXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSBieSB1cmxcclxuICAgKiBAcGFyYW0gdXJsIDogdGhlIHVybCAgdG8gbmF2aWdhdGUgdG9cclxuICAgKi9cclxuICBuYXZpZ2F0ZUJ5VXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXVybCB8fCB1cmwubGVuZ3RoID09PSAwIHx8IHVybCA9PT0gJ2Fib3V0OmJsYW5rJylcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcbiAgICAvLyBDbGVhbiB1cmxcclxuICAgIGxldCBwYXJ0cyA9IHVybC5zcGxpdCgnIycpO1xyXG4gICAgdXJsID0gcGFydHNbMF07XHJcbiAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xyXG4gICAgICB1cmwgKz0gJyMnICsgcGFydHNbMV07XHJcbiAgICB9XHJcbiAgICAvLyBIYW5kbGUgZnJlZSB0ZXh0IHF1ZXJ5XHJcbiAgICBsZXQgcSA9ICcnO1xyXG4gICAgbGV0IHBvcyA9IHVybC5pbmRleE9mKCdxdWVyeT0nKTtcclxuICAgIGlmIChwb3MgIT09IC0xKSB7XHJcbiAgICAgIHBvcyArPSA2O1xyXG4gICAgICB3aGlsZSAodXJsLmxlbmd0aCA+IHBvcyAmJiB1cmxbcG9zXSAhPT0gJyYnICYmIHVybFtwb3NdICE9PSAnIycpXHJcbiAgICAgICAgcSArPSB1cmxbcG9zKytdO1xyXG4gICAgfVxyXG4gICAgaWYgKHEubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyBSZXNldFxyXG4gICAgICB0aGlzLnJlbGV2YW50cy5oaXQgPSAwO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIC8vIEFzc2lnbiBxdWVyeSB0byBlbmFibGUgc2VhcmNoIGZvciBmcmFnbWVudHNcclxuICAgICAgICB0aGlzLmxhc3RRdWVyeSA9IGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQocSkpO1xyXG4gICAgICB9IGNhdGNoIHtcclxuICAgICAgICB0aGlzLmxhc3RRdWVyeSA9IHE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgbmF2aWdhdGVUb0ZpbGUgPSB1cmwuaW5kZXhPZignJmZpbGU9dHJ1ZScpICE9PSAtMTtcclxuICAgIGlmIChuYXZpZ2F0ZVRvRmlsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAvLyBQcmV2aWV3XHJcbiAgICAgIHRoaXMucHJldmlld0ZpbGUodXJsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEJlZ2luIGxvYWRpbmcgb25seSBpZiBub3QgZG93bmxvYWRpbmcgYSBmaWxlXHJcbiAgICAgIHRoaXMuYnVzeS5zZXQodXJsLmluZGV4T2YoJ2RvY3VtZW50cy9yZW5kZXIvaXRlbScpID09PSAtMSk7XHJcbiAgICAgIC8vIE5hdmlnYXRlXHJcbiAgICAgIHRoaXMudXJsLnNldCh1cmwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVkIGNhbGxiYWNrICAgXHJcbiAgICovXHJcbiAgcHVibGljIG5hdmlnYXRlZChcclxuICAgIGlkOiBzdHJpbmcsIC8vIERvY3VtbmVudCBpZFxyXG4gICAgdGl0bGUxOiBzdHJpbmcsIC8vIFRpdGxlIDFcclxuICAgIHRpdGxlMjogc3RyaW5nLCAvLyBUaXRsZSAyXHJcbiAgICBtb2RlbDogbnVtYmVyLCAvLyBNb2RlbFxyXG4gICAgbW9kdWxlSWQ6IG51bWJlciwgLy8gTW9kdWxlXHJcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsIC8vIE1vZHVsZSBuYW1lXHJcbiAgICBkYXRlOiBzdHJpbmcsIC8vIERhdGVcclxuICAgIG51bWJlcjogc3RyaW5nLCAvLyBOdW1iZXJcclxuICAgIGF1dGhvcjogc3RyaW5nLCAvLyBBdXRob3JcclxuICAgIG9yaWdpbjogc3RyaW5nLCAvLyBPcmlnaW5cclxuICAgIG9yaWdpbkRlc2NyaXB0aW9uOiBzdHJpbmcsIC8vIE9yaWdpbiBkZXNjcmlwdGlvblxyXG4gICAgYmFnOiBzdHJpbmcsIC8vIEZsYWdzXHJcbiAgICB2YWxpZGl0eUluZm86IHN0cmluZywgLy8gSW5mbyBhYm91dCB2YWxpZGl0eVxyXG4gICAgZXhwaXJpbmdJbmZvOiBzdHJpbmcsIC8vIEluZm8gYWJvdXQgZXhwaXJpbmcgZGF0ZVxyXG4gICAgcHJpbWFyeUlkOiBzdHJpbmcsIC8vIFByaW1hcnkgZG9jdW1lbnQgaWRcclxuICAgIHByaW1hcnlNb2RlbDogbnVtYmVyLCAvLyBQcmltYXJ5IGRvY3VtZW50IG1vZGVsXHJcbiAgICBzZWNvbmRhcnlJZDogc3RyaW5nLCAvLyBTZWNvbmRhcnkgZG9jdW1lbnQgaWRcclxuICAgIGlzVHJpYWw6IGJvb2xlYW4gLy8gVHJ1ZSBpZiBpcyBhIHRyaWFsIHJlcXVlc3RcclxuICApIHtcclxuICAgIC8vIENoZWNrIGZvciBzZXNzaW9uIGV4cGlyaW5nXHJcbiAgICBpZiAodGl0bGUxID09PSAnU2Vzc2lvbmUgbm9uIHZhbGlkYScpIHtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgLmVycm9yKHRpdGxlMiwgbnVsbCwgdGl0bGUxLCAnQWNjZWRpIGRpIG51b3ZvJylcclxuICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsb2dpbiddKTtcclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN0b3JlIGRhdGFcclxuICAgIGlmICghdGhpcy5sYXN0RG9jdW1lbnQpIHtcclxuICAgICAgdGhpcy5sYXN0RG9jdW1lbnQgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMubGFzdERvY3VtZW50LmlkID0gaWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC50aXRsZTEgPSB0aXRsZTEgPyBTeXN0ZW1VdGlscy51cmxEZWNvZGUodGl0bGUxKSA6IG51bGw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC50aXRsZTIgPSB0aXRsZTIgPyBTeXN0ZW1VdGlscy51cmxEZWNvZGUodGl0bGUyKSA6IG51bGw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5tb2RlbCA9IG1vZGVsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kdWxlID0gbW9kdWxlSWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5tb2R1bGVOYW1lID0gbW9kdWxlTmFtZTtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm51bWJlciA9IG51bWJlcjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmF1dGhvciA9IGF1dGhvcjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm9yaWdpbiA9IG9yaWdpbjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm9yaWdpbkRlc2NyaXB0aW9uID0gb3JpZ2luRGVzY3JpcHRpb247XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5iYWcgPSBiYWc7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC52YWxpZGl0eUluZm8gPSB2YWxpZGl0eUluZm87XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5wcmltYXJ5SWQgPSBwcmltYXJ5SWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5wcmltYXJ5TW9kZWwgPSBwcmltYXJ5TW9kZWw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5oYXNQcmltYXJ5ID1cclxuICAgICAgcHJpbWFyeUlkICYmXHJcbiAgICAgIChtb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8gfHxcclxuICAgICAgICBtb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUpO1xyXG4gICAgaWYgKHByaW1hcnlJZCkge1xyXG4gICAgICB2YXIgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgc3dpdGNoIChwcmltYXJ5TW9kZWwgPyBwcmltYXJ5TW9kZWwgOiBtb2RlbCkge1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGU6XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdUZXN0byB2aWdlbnRlJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm86XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdUZXN0byBzdG9yaWNvJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlNjYWRlbnphOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnU2NhZGVuemEnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuQ29vcmRpbmFtZW50bzpcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ01vZGlmaWNhJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb2xsZWdhbWVudG8nO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeURlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XHJcbiAgICB9XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5zZWNvbmRhcnlJZCA9IHNlY29uZGFyeUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuaXNUcmlhbCA9IGlzVHJpYWw7XHJcblxyXG4gICAgLy8gSGFuZGxlIGV4cGlyaW5nIGluZm9cclxuICAgIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nRGVzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgaWYgKGV4cGlyaW5nSW5mbykge1xyXG4gICAgICBsZXQgcGFydHMgPSBleHBpcmluZ0luZm8uc3BsaXQoJyMnKTtcclxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgcGFydHMyID0gcGFydHNbMF0uc3BsaXQoJ3wnKTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0RhdGUgPSBuZXcgRGF0ZShwYXJ0czJbMF0pO1xyXG4gICAgICAgIGlmIChwYXJ0czIubGVuZ3RoID4gMSkgdGhpcy5sYXN0RG9jdW1lbnQuZXhwaXJpbmdJbmZvID0gcGFydHMyWzFdO1xyXG4gICAgICAgIGlmIChwYXJ0czIubGVuZ3RoID4gMilcclxuICAgICAgICAgIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nSW5mbyArPSAnfCcgKyBwYXJ0czJbMl07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nRGVzY3JpcHRpb24gPSBwYXJ0c1sxXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXQgdGl0bGVcclxuICAgIHRoaXMudGl0bGUuc2V0KHRoaXMubGFzdERvY3VtZW50LnRpdGxlMVxyXG4gICAgICA/IHRoaXMubGFzdERvY3VtZW50LnRpdGxlMVxyXG4gICAgICA6IHRoaXMubGFzdERvY3VtZW50LnRpdGxlMik7XHJcblxyXG4gICAgLy8gR2V0IGxhc3QgZG9jdW1lbnQgdXBkYXRlXHJcbiAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLmxhc3RVcGRhdGUodGhpcy5sYXN0RG9jdW1lbnQuaWQpLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5sYXN0VXBkYXRlID0gci52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gTm90aWZ5IG5hdmlnYXRpb24gaGFzIGNvbXBsZXRlZFxyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5ET0NVTUVOVF9OQVZJR0FURUQsIHtcclxuICAgICAgZG9jdW1lbnQ6IHRoaXMubGFzdERvY3VtZW50LFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5idXN5LnNldChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnb3RvIHByZXZpb3VzIGRvY3VtZW50IGluIGhpc3RvcnlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFjaygpIHtcclxuICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgZi5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCd7XCJ0eXBlXCI6IFwiYmFja1wifScsICcqJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIG5leHQgZG9jdW1lbnQgaW4gaGlzdG9yeVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBmb3J3YXJkKCkge1xyXG4gICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoJ3tcInR5cGVcIjogXCJmb3J3YXJkXCJ9JywgJyonKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByaW50IGN1cnJlbnQgZG9jdW1lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcHJpbnQoKSB7XHJcbiAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgIGYuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgne1widHlwZVwiOiBcInByaW50XCJ9JywgJyonKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmQgaW4gY3VycmVudCBkb2N1bWVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBmaW5kKCkge1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oJ1BlciBjZXJjYXJlIG5lbCBkb2N1bWVudG8gcHJlbWkgQ1RSTCArIEYuJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIG5leHQgcmVsZXZhbnQgaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBuZXh0UmVsZXZhbnQoKSB7XHJcbiAgICBsZXQgaSA9IHRoaXMucmVsZXZhbnRzLmhpdCArIDE7XHJcbiAgICBpZiAoaSA8PSB0aGlzLnJlbGV2YW50cy5oaXRzKSB7XHJcbiAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoJ3tcInR5cGVcIjogXCJyZWxldmFudFwiLCBcInZhbHVlXCI6IFwibmV4dFwifScsICcqJyk7XHJcbiAgICAgIHRoaXMucmVsZXZhbnRzLmhpdCsrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBwcmV2aW91cyByZWxldmFudCBpdGVtXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHByZXZpb3VzUmVsZXZhbnQoKSB7XHJcbiAgICBsZXQgaSA9IHRoaXMucmVsZXZhbnRzLmhpdCAtIDE7XHJcbiAgICBpZiAoaSA+IDApIHtcclxuICAgICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICAgIGYuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcclxuICAgICAgICAne1widHlwZVwiOiBcInJlbGV2YW50XCIsIFwidmFsdWVcIjogXCJwcmV2aW91c1wifScsXHJcbiAgICAgICAgJyonXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMucmVsZXZhbnRzLmhpdC0tO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBhIHJlbGV2YW50IGl0ZW1cclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGdvIHRvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdvdG9SZWxldmFudChpdGVtOiBhbnkpIHtcclxuICAgIGlmIChpdGVtLnR5cGUgPT09IDIwKSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKFxyXG4gICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArXHJcbiAgICAgICAgJy9kb2N1bWVudHMvcmVuZGVyL2l0ZW0vP2lkPScgK1xyXG4gICAgICAgIGl0ZW0uZG9jdW1lbnRJZCxcclxuICAgICAgICAnX2JsYW5rJ1xyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICAgIGYuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcclxuICAgICAgICAne1widHlwZVwiOiBcInJlbGV2YW50XCIsIFwidmFsdWVcIjogXCInICsgaXRlbS51cmkgKyAnXCJ9JyxcclxuICAgICAgICAnKidcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSByZWxldmFudCBpdGVtc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlUmVsZXZhbnRzKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5sYXN0UXVlcnkgfHxcclxuICAgICAgdGhpcy5sYXN0UXVlcnkubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgIHRoaXMubGFzdFF1ZXJ5ID09PSAnICcgfHxcclxuICAgICAgKHRoaXMubGFzdERvY3VtZW50ICYmXHJcbiAgICAgICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kZWwgIT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5oYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGlwcGVyU2VydmljZVxyXG4gICAgICAgIC5xdWVyeSh7XHJcbiAgICAgICAgICBkb2N1bWVudElkOiB0aGlzLmxhc3REb2N1bWVudC5pZCxcclxuICAgICAgICAgIHRleHQ6IHRoaXMubGFzdFF1ZXJ5LFxyXG4gICAgICAgICAgY291bnQ6IDEsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgbWluaW11bVNjb3JlID0gMDtcclxuICAgICAgICAgICAgaWYgKHIudmFsdWU/Lml0ZW1zICYmIHIudmFsdWU/Lml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICByLnZhbHVlLml0ZW1zWzBdLmFuY2hvcnMuZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2NvcmUgPSBuLnNjb3JlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNjb3JlID4gNykgc2NvcmUgLT0gNztcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gNSkgc2NvcmUgLT0gNTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gMykgc2NvcmUgLT0gMztcclxuICAgICAgICAgICAgICAgIGlmIChtaW5pbXVtU2NvcmUgPiBzY29yZSkgbWluaW11bVNjb3JlID0gc2NvcmU7XHJcbiAgICAgICAgICAgICAgICBuLnNjb3JlID0gc2NvcmU7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxldmFudHMubWluaW11bVNjb3JlID0gbWluaW11bVNjb3JlO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVsZXZhbnRzLml0ZW1zID0gci52YWx1ZS5pdGVtc1swXS5hbmNob3JzO1xyXG4gICAgICAgICAgICAgIHRoaXMuaGFzUmVsZXZhbnRzLnNldCh0aGlzLnJlbGV2YW50cy5pdGVtcz8ubGVuZ3RoID4gMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGRvY3VtZW50IHN0cnVjdHVyZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbmRleChkb2N1bWVudElkOiBzdHJpbmcpIHtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlckRvY3VtZW50SW5kZXhDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAnaW5kaWNlIGRvY3VtZW50bycsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZG9jdW1lbnRJZDogZG9jdW1lbnRJZCxcclxuICAgICAgICBleGNsdWRlZFR5cGVzOiBudWxsLFxyXG4gICAgICAgIG11bHRpcGxlOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6ICc2MDBweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgIH0pO1xyXG4gICAgZC5jb21wb25lbnRJbnN0YW5jZS5kb25lXHJcbiAgICAgIC5zdWJzY3JpYmUoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyLmRhdGEuZG9jdW1lbnRJZCA9PT0gZG9jdW1lbnRJZCkge1xyXG4gICAgICAgICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICAgICAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICd7XCJ0eXBlXCI6IFwiZ290b1wiLCBcInZhbHVlXCI6XCInICsgci5kYXRhLnVyaSArICdcIn0nLFxyXG4gICAgICAgICAgICAnKidcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub3BlbkRvY3VtZW50KHIuZGF0YS5kb2N1bWVudElkICsgJyMnICsgci5kYXRhLnVyaSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkLmNsb3NlKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEdldCB0aGUgaWQgaW4gYSBxdWVyeSBzdHJpbmdcclxuICogQHBhcmFtIHVybCA6IHRoZSB1cmwgdG8gcHJvY2Vzc1xyXG4gKiBAcGFyYW0gbmFtZSA6IHRoZSBvcHRpb25hbCBpZCBwYXJhbWVudGVyIG5hbWUuIERlZmF1bHQgaXMgJ2lkJ1xyXG4gKiBAcmV0dXJucyA6IHRoZSBpZCBwYXJhbWVcclxuICovXHJcbiAgcHJpdmF0ZSBnZXRJZCh1cmw6IHN0cmluZywgbmFtZTogc3RyaW5nID0gJ2lkJyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzdGFydCA9IHVybC5sYXN0SW5kZXhPZihuYW1lICsgJz0nKSArIDM7XHJcbiAgICBjb25zdCBlbmQgPSB1cmwuaW5kZXhPZignJicsIHN0YXJ0KTtcclxuICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJldmlldyBhIGZpbGUgaWYgcG9zc2libGVcclxuICAgKiBAcGFyYW0gdXJsIDogdGhlIHVybCB0byBwcmV2aWV3XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwcmV2aWV3RmlsZSh1cmw6IHN0cmluZykge1xyXG4gICAgaWYgKCF1cmwgfHwgdXJsLmxlbmd0aCA9PT0gMClcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcbiAgICAvLyBHZXQgdGhlIGlkXHJcbiAgICBsZXQgaWQgPSB0aGlzLmdldElkKHVybCk7XHJcbiAgICBpZiAoIWlkIHx8IGlkLmxlbmd0aCA9PT0gMClcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcbiAgICAvLyBDcmVhdGUgdGhlIHVybFxyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZS5uZXdPVFAoaWQpLnN1YnNjcmliZShcclxuICAgICAgciA9PiB7XHJcbiAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgIGVsc2UgaWYgKCFyLnZhbHVlLmNhblByZXZpZXcpXHJcbiAgICAgICAgICAvLyBEb25sb2FkIG1hbnVhbGx5XHJcbiAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oRmlsZVByZXZpZXdDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3ByZXZpZXctcGFuZWwnLFxyXG4gICAgICAgICAgICBhcmlhTGFiZWw6ICdhbnRlcHJpbWEnLFxyXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgICAgICBlbWJlZDogci52YWx1ZS5jYW5FbWJlZFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgICAgICAgbWF4V2lkdGg6ICc5MDBweCcsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgICAgICAgICAgaGVpZ2h0OiAnOTklJ1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBTaG93IGRvY3VtZW50IGNvbW1lbnRcclxuICAgICovXHJcbiAgcHJvdGVjdGVkIHNob3dDb21tZW50KCkge1xyXG4gICAgaWYgKHRoaXMubGFzdERvY3VtZW50Py5iYWdbN10gIT09ICdUJykgcmV0dXJuO1xyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZVxyXG4gICAgICAuY29tbWVudCh0aGlzLmxhc3REb2N1bWVudD8uaWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICBpZiAoci5tZXNzYWdlID09PSBcIklsIHR1byBhYmJvbmFtZW50byBub24gY29uc2VudGUgZGkgdmlzdWFsaXp6YXJlIGkgY29tbWVudGkgYWxsZSBub3JtZS5cIilcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKFwiSWwgc2Vydml6aW8gZGkgPGI+Y29tbWVudGkgYWxsZSBub3JtZTwvYj4gbm9uIMOoIGNvbXByZXNvIG5lbCB0dW8gYWJib25hbWVudG8sIHBlciBtYWdnaW9yaSBpbmZvcm1hemlvbmkgcml2b2xnZXJzaSBhbGwnYWdlbnRlIGNvbW1lcmNpYWxlIGRpIHJpZmVyaW1lbnRvIG8gaW52aWFyZSB1bmEgbWFpbCBhIDxhIGhyZWY9J21haWx0bzpzYWxlc0BhcnNlZGl6aW9uaS5pdCcgdGFyZ2V0PSdfYmxhbmsnPnNhbGVzQGFyc2VkaXppb25pLml0PC9hPi5cIiwgbnVsbCwgXCJBdHRlbnppb25lXCIpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHIudmFsdWUgJiYgci52YWx1ZS5sZW5ndGggPiAxKVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuaW5mbyhyLnZhbHVlLnJlcGxhY2UoL1xcbi9nLCAnPGJyPlxcclxcbicpLCBcIkNvbW1lbnRvXCIsIFwiQ0hJVURJXCIsIDcwMCk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKFwiQ29tbWVudG8gbm9uIHBpw7kgZGlzcG9uaWJpbGUgbyBpbiBmYXNlIGRpIHJldmlzaW9uZS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGFuIGl0ZW1cclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqIEBwYXJhbSBuZXdXaW5kb3c6IHRydWUgaWYgdGhlIGRvY3VtZW50IG11c3QgYmUgb3BlbiBpbnRvIGEgbmV3IHdpbmRvd1xyXG4gICAqL1xyXG4gIG9wZW4oZG9jdW1lbnRJZDogc3RyaW5nLCBuZXdXaW5kb3c6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgaWYgKCFuZXdXaW5kb3cpIHtcclxuICAgICAgaWYgKHRoaXMub3BlbmluZykgdGhpcy5vcGVuaW5nLmVtaXQoeyBpZDogZG9jdW1lbnRJZCB9KTtcclxuICAgICAgZWxzZSB0aGlzLm9wZW5Eb2N1bWVudChkb2N1bWVudElkKTtcclxuICAgIH0gZWxzZSB3aW5kb3cub3BlbignL2RvY3VtZW50by8nICsgZG9jdW1lbnRJZCwgJ19ibGFuaycpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBhIGRvY3VtZW50XHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgKi9cclxuICBwcml2YXRlIG9wZW5Eb2N1bWVudChkb2N1bWVudElkOiBzdHJpbmcpIHtcclxuICAgIGlmICghZG9jdW1lbnRJZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlckRvY3VtZW50Q29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2RvY3VtZW50bycsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgZGF0YTogeyBpZDogZG9jdW1lbnRJZCB9LFxyXG4gICAgICBwYW5lbENsYXNzOiAnZG9jdW1lbnQtY29udGFpbmVyJyxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnMTQwMHB4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnLFxyXG4gICAgICBoZWlnaHQ6ICc5OSUnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCcm93c2UgZG9jdW1lbnQgcmVmZXJlbmNlc1xyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICogQHBhcmFtIG1vZGUgOiB0aGUgbW9kZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBvcGVuUmVmZXJlbmNlcyhcclxuICAgIGRvY3VtZW50SWQ6IHN0cmluZyxcclxuICAgIG1vZGU6IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlID0gQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuUmVmZXJlbmNlc0luLFxyXG4gICAgbW9kZWw6IG51bWJlciA9IG51bGwsXHJcbiAgICBhbmNob3I6IHN0cmluZyA9IG51bGwsXHJcbiAgICBhbmNob3JUaXRsZTogc3RyaW5nID0gbnVsbCxcclxuICAgIHVwZGF0ZTogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIGlmICghZG9jdW1lbnRJZCkgZG9jdW1lbnRJZCA9IHRoaXMubGFzdERvY3VtZW50Py5pZDtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlclJlZmVyZW5jZXNDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAncmlmZXJpbWVudGkgbGVnYXRpIGFsIGRvY3VtZW50bycsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgaWQ6IGRvY3VtZW50SWQsXHJcbiAgICAgICAgbW9kZTogbW9kZSxcclxuICAgICAgICBtb2RlbDogbW9kZWwsXHJcbiAgICAgICAgYW5jaG9yOiBhbmNob3IsXHJcbiAgICAgICAgYW5jaG9yVGl0bGU6IGFuY2hvclRpdGxlLFxyXG4gICAgICAgIHVwZGF0ZTogdXBkYXRlLFxyXG4gICAgICB9LFxyXG4gICAgICBwYW5lbENsYXNzOiAncmVmZXJlbmNlcy1jb250YWluZXInLFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6ICcxMDAwcHgnLFxyXG4gICAgICB3aWR0aDogJzk5JScsXHJcbiAgICAgIGhlaWdodDogJzk5JScsXHJcbiAgICB9KTtcclxuICAgIGQuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAociAmJiByLmlkKSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlKHIuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGEgcmVwb3J0XHJcbiAgICogQHBhcmFtIGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGlzcGxheVJlcG9ydChpdGVtOiBhbnkpIHtcclxuICAgIGlmICghaXRlbSkgcmV0dXJuO1xyXG4gICAgaWYgKGl0ZW0ubW9kZWwgIT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUgJiYgaXRlbS5tb2RlbCAhPSBDbGlwcGVyTW9kZWwuU2NhZGVuemEpIHtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oXCJRdWVzdGEgZnVuemlvbmFsaXTDoCBub24gw6ggZGlzcG9uaWJpbGUgcGVyIHF1ZXN0byB0aXBvIGRpIGRvY3VtZW50by5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub3BlblJlcG9ydChpdGVtLmlkLCBpdGVtLnRpdGxlMSA/IGl0ZW0udGl0bGUxIDogaXRlbS50aXRsZTIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGRvY3VtZW50cyBjYW4gYmUgc2VsZWN0ZWQgYW5kIHJldHVybmVkIGFzIG1lc3NhZ2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgY2FuU2VsZWN0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA+IDAgJiYgdGhpcy5sYXN0RG9jdW1lbnQgJiYgKHRoaXMubGFzdERvY3VtZW50Py5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUgfHwgdGhpcy5sYXN0RG9jdW1lbnQ/Lm1vZGVsID09PSBDbGlwcGVyTW9kZWwuQWdnaW9ybmFtZW50b05vcm1hdGl2bylcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmQgYSBtZXNzYWdlIHdpdGggY3VycmVudCBzZWxlY3Rpb24gYW5kIGNsb3NlIGRpYWxvZ1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZWxlY3QoKSB7XHJcbiAgICBpZiAodGhpcy5sYXN0RG9jdW1lbnQpIHtcclxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5ET0NVTUVOVF9TRUxFQ1RFRF9JTk5FUiwgW1xyXG4gICAgICAgIHRoaXMubGFzdERvY3VtZW50LFxyXG4gICAgICBdKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjxkaXYgaWQ9XCJjbGlwcGVyLWRvY3VtZW50LWZpeGVkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNsaXBwZXItZG9jdW1lbnQtaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0YXJ0XCIgZnhMYXlvdXRHYXA9JzEwcHgnIGZ4RmlsbD5cclxuICAgICAgPGRpdiBmeEZsZXgubHQtbWQ9XCI1MFwiIGZ4RmxleD1cIjcwXCIgY2xhc3M9XCJ0aXRsZS1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBzdGFydFwiIGZ4TGF5b3V0R2FwPVwiNXB4XCIgY2xhc3M9XCJ0cnVuY2F0ZWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXJnZSBib2xkXCI+e3t0aXRsZSgpfX08L2Rpdj5cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50ICYmIGxhc3REb2N1bWVudD8ubGFzdFVwZGF0ZSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsIGFjY2VudFwiPlxyXG4gICAgICAgICAgICBBR0dJT1JOQVRPIEE6XHJcbiAgICAgICAgICAgIHt7bGFzdERvY3VtZW50Py5sYXN0VXBkYXRlfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQgJiYgbGFzdERvY3VtZW50Py5leHBpcmluZ0Rlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic21hbGwgYWNjZW50LWxvd1wiPlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8uZXhwaXJpbmdEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudCAmJiBsYXN0RG9jdW1lbnQ/LnZhbGlkaXR5SW5mbykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsIGJhZGdlLXJlZFwiPjxiPkF0dGVuemlvbmUhPC9iPlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8udmFsaWRpdHlJbmZvfX08L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4Lmx0LW1kPVwiNTBcIiBmeEZsZXg9XCIzMFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNsb3NlXCI+XHJcbiAgICAgICAgICBAaWYgKGNhblNlbGVjdCgpKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtZmxhdC1idXR0b24gKGNsaWNrKT1cInNlbGVjdCgpXCI+XHJcbiAgICAgICAgICAgIFVzYSBzZWxlemlvbmVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiSW5kaWV0cm9cIiBhcmlhLWxhYmVsPVwiSW5kaWV0cm9cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYmFjaygpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQXZhbnRpXCIgYXJpYS1sYWJlbD1cIkF2YW50aVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJmb3J3YXJkKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2ZvcndhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIiBhcmlhLWxhYmVsPVwiQ2hpdWRpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvdyB3cmFwIFwiIGZ4RmlsbCBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAgMTBweCAyMHB4IDE1cHhcIj5cclxuICAgICAgPGRpdiBmeEZsZXgueHM9XCIxMDBcIj5cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8ubW9kZWwgPT09IDkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGluZGljZSdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImluZGV4KGxhc3REb2N1bWVudD8uaWQpXCI+XHJcbiAgICAgICAgICBJbmRpY2VcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiAobGFzdERvY3VtZW50Py5iYWdbMV0gPT09J1QnIHx8IGxhc3REb2N1bWVudD8uYmFnWzNdID09PSdUJykpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gbWF0VG9vbHRpcD1cIkNvbGxlZ2FtZW50aVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDb2xsZWdhbWVudGkgYWwgZG9jdW1lbnRvJ1wiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51TGlua3NcIj5cclxuICAgICAgICAgIENvbGxlZ2FtZW50aVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8bWF0LW1lbnUgI21lbnVMaW5rcz1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbMV0gPT09J1QnKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGRvY3VtZW50aSByaWNoaWFtYXRpJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmlkLCAxKVwiPlxyXG4gICAgICAgICAgICBEb2N1bWVudGkgcmljaGlhbWF0aVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzNdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBkb2N1bWVudGkgY2hlIHJpY2hpYW1hbm8nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDIpXCI+XHJcbiAgICAgICAgICAgIERvY3VtZW50aSBjaGUgcmljaGlhbWFub1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzJdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGp1cmlzJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmlkLCA0KVwiPlxyXG4gICAgICAgICAgICBKdXJpc1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzRdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBzdWJpdGUnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDMpXCI+XHJcbiAgICAgICAgICAgIE1vZGlmaWNoZSBzdWJpdGVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSAhPT0nVCcgJiYgbGFzdERvY3VtZW50Py5iYWdbNl0gPT09J1QnKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4SGlkZSBmeFNob3cubHQtbWQgbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgbW9kaWZpY2hlIGFwcG9ydGF0ZSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5pZCwgNSlcIj5cclxuICAgICAgICAgICAgTW9kaWZpY2hlIGFwcG9ydGF0ZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uaGFzUHJpbWFyeSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGRvY3VtZW50byBwcmltYXJpbydcIiAoY2xpY2spPVwibmF2aWdhdGUobGFzdERvY3VtZW50Py5wcmltYXJ5SWQpXCI+XHJcbiAgICAgICAgICB7e2xhc3REb2N1bWVudD8ucHJpbWFyeURlc2NyaXB0aW9ufX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1syXSA9PT0nVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGZ4SGlkZS5sdC1tZCBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEganVyaXMnXCIgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDQpXCI+XHJcbiAgICAgICAgICBKdXJpc1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzRdID09PSAnVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGZ4SGlkZS5sdC1tZCBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgbW9kaWZpY2hlIHN1Yml0ZSdcIiAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5pZCwgMylcIj5cclxuICAgICAgICAgIE1vZGlmaWNoZSBzdWJpdGVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSAhPT0gJ1QnICYmIGxhc3REb2N1bWVudD8uYmFnWzZdID09PSAnVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGZ4SGlkZS5sdC1tZCBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgbW9kaWZpY2hlIGFwcG9ydGF0ZSdcIiAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5pZCwgNSlcIj5cclxuICAgICAgICAgIE1vZGlmaWNoZSBhcHBvcnRhdGVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LnNlY29uZGFyeUlkKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRvIHNlY29uZGFyaW8nXCIgKGNsaWNrKT1cIm5hdmlnYXRlKGxhc3REb2N1bWVudD8uc2Vjb25kYXJ5SWQpXCI+XHJcbiAgICAgICAgICBUZXN0byBzdG9yaWNvXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbN10gPT09ICdUJykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgY29tbWVudG8nXCJcclxuICAgICAgICAgIChjbGljayk9XCJzaG93Q29tbWVudCgpXCI+XHJcbiAgICAgICAgICBDb21tZW50b1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4LnhzPVwiMTAwXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgIEBpZiAoaGFzUmVsZXZhbnRzKCkgJiYgcmVsZXZhbnRzLmhpdHMpIHtcclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNsYXNzPVwic21hbGwgaXRlbS1ncmV5ZWRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OjIwcHg7IG1hcmdpbi1yaWdodDogNXB4XCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiUGFyb2xlIGV2aWRlbnppYXRlXCI+e3tyZWxldmFudHMuaGl0fX1cclxuICAgICAgICAgICAgICBkaSB7e3JlbGV2YW50cy5oaXRzfX08L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInVmFpIGFsbGEgcGFyb2xhIHByZWNlZGVudGUnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNSZWxldmFudCgpXCIgbWF0VG9vbHRpcD1cIlBhcm9sYSBwcmVjZWRlbnRlXCIgW2Rpc2FibGVkXT1cInJlbGV2YW50cy5oaXQgPD0gMVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInVmFpIGFsbGEgcHJvc3NpbWEgcGFyb2xhJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRSZWxldmFudCgpXCIgbWF0VG9vbHRpcD1cIlByb3NzaW1hIHBhcm9sYVwiIFtkaXNhYmxlZF09XCJyZWxldmFudHMuaGl0ID49IHJlbGV2YW50cy5oaXRzXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJBemlvbmkgc3VsIGRvY3VtZW50b1wiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBemlvbmkgZGEgZXNlZ3VpcmUgc3VsIGRvY3VtZW50bydcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUFjdGlvbnNcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtbWVudSAjbWVudUFjdGlvbnM9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInQXByaSBkb2N1bWVudG8gaW4gdW5hIG51b3ZhIGZpbmVzdHJhJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuKGxhc3REb2N1bWVudD8uaWQsIHRydWUpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5vcGVuX2luX2Jyb3dzZXI8L21hdC1pY29uPkFwcmkgaW4gbnVvdmEgZmluZXN0cmFcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJwcmludCgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInU3RhbXBhIGRvY3VtZW50bydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnByaW50PC9tYXQtaWNvbj5TdGFtcGFcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJmaW5kKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidUcm92YSBuZWwgZG9jdW1lbnRvJ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZmluZF9pbl9wYWdlPC9tYXQtaWNvbj5Ucm92YSBuZWwgZG9jdW1lbnRvIChDVFJMK0YpXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2VuZEl0ZW1zVG8oW2xhc3REb2N1bWVudF0pXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInSW52aWEgZG9jdW1lbnRvIHBlciBlbWFpbCdcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnNlbmQ8L21hdC1pY29uPkludmlhIHBlciBlbWFpbFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFkZEl0ZW1zVG9CYWcoW2xhc3REb2N1bWVudF0pXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQWdnaXVuZ2kgYWkgZG9jdW1lbnRpIGRpIGxhdm9ybydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPndvcmtfb3V0bGluZTwvbWF0LWljb24+QWdnaXVuZ2kgYWkgZG9jdW1lbnRpIGRpIGxhdm9yb1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudCAmJiBsYXN0RG9jdW1lbnQ/Lm1vZGVsICE9IDExKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImV4cG9ydFBkZihsYXN0RG9jdW1lbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInU2FsdmEgZG9jdW1lbnRvIGluIHBkZidcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnNhdmVfYWx0PC9tYXQtaWNvbj5TYWx2YSBpbiBwZGZcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0dlbmVyYSB1biBsaW5rIHBlcm1hbmVudGUgZGEgdXRpbGl6emFyZSBlc3Rlcm5hbWVudGUnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dMaW5rKGxhc3REb2N1bWVudClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmxpbms8L21hdC1pY29uPkxpbmtcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgQGlmICgobGFzdERvY3VtZW50Py5tb2RlbCA9PT0gOSB8fCBsYXN0RG9jdW1lbnQ/Lm1vZGVsID09PSAxMCkpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidHZW5lcmEgdW4gcmVwb3J0IHN1bCBkb2N1bWVudG8nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlSZXBvcnQobGFzdERvY3VtZW50KVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXNzaWdubWVudDwvbWF0LWljb24+UmVwb3J0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoUlNfZW5hYmxlZChbbGFzdERvY3VtZW50XSkgJiYgIWNhblNlbGVjdCgpKSB7XHJcbiAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoUlNfZW5hYmxlZChbbGFzdERvY3VtZW50XSkgJiYgIWNhblNlbGVjdCgpKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIG1hdFRvb2x0aXA9XCJSZWdpc3RybyAmIFNjYWRlbnphcmlvXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInT3B6aW9uaSBkaSBSZWdpc3RybyAmIFNjYWRlbnphcmlvJ1wiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51UlNcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFsYXJtX29uPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgUmVnaXN0cm8gZSBzY2FkZW56YXJpb1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnVSUz1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ051b3ZhIGxlZ2dlJ1wiIChjbGljayk9XCJSU19uZXdMYXcoW2xhc3REb2N1bWVudF0pXCI+XHJcbiAgICAgICAgICAgICAgTnVvdmEgbGVnZ2VcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidOdW92YSBhdHRpdml0w6AnXCIgKGNsaWNrKT1cIlJTX25ld0FjdGl2aXR5KGxhc3REb2N1bWVudClcIj5cclxuICAgICAgICAgICAgICBOdW92YSBhdHRpdml0w6BcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZXBvcnQgdXRpbGl6em8gbm9ybWEnXCIgKGNsaWNrKT1cIlJTX3VzYWdlUmVwb3J0KGxhc3REb2N1bWVudClcIj5cclxuICAgICAgICAgICAgICBSZXBvcnQgdXRpbGl6em8gbm9ybWFcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgQGlmIChoYXNSZWxldmFudHMoKSAmJiByZWxldmFudHMuaXRlbXMgJiYgcmVsZXZhbnRzUGFuZSAmJiAoIXJlbGV2YW50c1BhbmUub3BlbmVkIHx8IHJlbGV2YW50c1BhbmVDbG9zZWQpKSB7XHJcbiAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJSaWxldmFuemFcIiBhcmlhLWxhYmVsPVwiJ1JpbGV2YW56YSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUmVsZXZhbnRzUGFuZSgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5tZW51X29wZW48L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmIChidXN5KCkpIHtcclxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIHN0eWxlPVwiei1pbmRleDoxMVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgaWQ9XCJjbGlwcGVyLWRvY3VtZW50LXNjcm9sbGFibGVcIj5cclxuICA8bWF0LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJmaWxsXCIgW2hhc0JhY2tkcm9wXT1cIltyZWxldmFudHNQYW5lSGFzQmFja2Ryb3BdXCI+XHJcbiAgICA8bWF0LWRyYXdlciAjcmVsZXZhbnRzUGFuZSBwb3NpdGlvbj1cImVuZFwiIGNsYXNzPVwiZHJhd2VyLXNtYWxsIGRyYXdlci13aXRoLWxvYWRlclwiPlxyXG4gICAgICBAaWYgKHJlbGV2YW50c0J1c3koKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI2cHhcIj5cclxuICAgICAgICAgIEBpZiAocmVsZXZhbnRzQnVzeSgpKSB7XHJcbiAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBzdHlsZT1cInotaW5kZXg6IDExO1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+XHJcbiAgICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI0OHB4XCIgY2xhc3M9XCJ0aXRsZS1jb250YWluZXItd2l0aC1sb2FkZXJcIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5SaWxldmFuemE8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVSZWxldmFudHNQYW5lKClcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk5hc2NvbmRpXCI+PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGwgPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxwPlBhcnRpIGRlbCBkb2N1bWVudG8gcGnDuSBzaWduaWZpY2F0aXZlIHBlciBsYSByaWNlcmNhIGRpIDxzcGFuIGNsYXNzPSd3b3JkLWhpdCc+e3tsYXN0UXVlcnl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBjbGFzcz1cInNjcm9sbC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgPG5hdiBjbGFzcz1cInJlbGV2YW50cy1pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHJlbGV2YW50cy5pdGVtczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInNtYWxsXCIgKGNsaWNrKT1cImdvdG9SZWxldmFudChpdGVtKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiaXRlbS50aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgc3RhcnRcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zY29yZSA+IDEuMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9J2ZvbnQtc2l6ZTp4LXNtYWxsOyBoZWlnaHQ6IDEwcHg7IHdpZHRoOjEwcHgnIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vbHRvIHJpbGV2YW50ZVwiPnRodW1iX3VwX2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgIDwvbmF2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWRyYXdlcj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWxsXCI+XHJcbiAgICAgIDxpZnJhbWUgaWQ9XCJjbGlwcGVyLWRvY3VtZW50LWlmcmFtZVwiIGNsYXNzPVwiaWZyYW1lXCIgW3NyY109XCJ1cmwoKSB8IHNhZmVVcmxcIj48L2lmcmFtZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWRyYXdlci1jb250YWluZXI+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1869,7 +1869,7 @@ class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
1869
1869
|
const height = this.dialogService.getCurrentDialogScrollableHeight(['clipper-document-fixed'], window.innerHeight);
|
|
1870
1870
|
if (height != this.height) {
|
|
1871
1871
|
elem.setAttribute('style', 'padding:0;height:' + height + 'px !important;max-height:' + height + 'px !important');
|
|
1872
|
-
elem = document.getElementById('clipper-document-
|
|
1872
|
+
elem = document.getElementById('clipper-document-iframe');
|
|
1873
1873
|
elem?.setAttribute('style', 'height:' + (height - 20) + 'px !important;max-height:' + (height - 20) + 'px !important');
|
|
1874
1874
|
this.height = height;
|
|
1875
1875
|
this.resize();
|