vcomply-workflow-engine 6.2.6 → 6.2.7
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.
|
@@ -1332,6 +1332,7 @@ export class WorkflowPolicyComponent {
|
|
|
1332
1332
|
this.uiKitService.isLoader = false;
|
|
1333
1333
|
this.pickerChanged.emit(true);
|
|
1334
1334
|
}
|
|
1335
|
+
res.data.policy.categoryId = payload.categoryId;
|
|
1335
1336
|
this.navigateToWorkroom(res);
|
|
1336
1337
|
}, (err) => {
|
|
1337
1338
|
console.error(err);
|
|
@@ -1905,4 +1906,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1905
1906
|
type: HostListener,
|
|
1906
1907
|
args: ['document:click', ['$event']]
|
|
1907
1908
|
}] } });
|
|
1908
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXBvbGljeS93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcG9saWN5L3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBVzNDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUtuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBS3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPN0QsTUFBTSxPQUFPLHVCQUF1QjtJQWlMbEMsWUFDVSxhQUE0QixFQUM1QixRQUF5QixFQUN6QixZQUEwQixFQUMxQixXQUF3QixF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bEJBOGhCQTs7NEZEaGZhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7eWpCQVFyQixhQUFhO3NCQUF0QixNQUFNO2dCQUNFLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ2tCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDYixjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUV1QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFFM0IsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkErbUU1RCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCB1bmlxQnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICd2Y29tcGx5LWVkaXRvcic7XG5pbXBvcnQgeyBDb25maXJtYXRpb25BbGVydCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlybWF0aW9uLWFsZXJ0JztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9saWN5Rm9ybSB9IGZyb20gJy4uL3dvcmtmbG93LWludGVyZmFjZXMvY3JlYXRlLXBvbGljeS1mb3JtJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFBvbGljeVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wb2xpY3kuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcbmltcG9ydCB7IFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1hdEFuZEV2aWRlbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9mb3JtYXQtYW5kLWV2aWRlbmNlL2Zvcm1hdC1hbmQtZXZpZGVuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IFJlc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9saW5rLXByb2dyYW0vcmVzdGFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IERFRkFVTFRfMjRIUiwgREVGQVVMVF9USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzL3RpbWUuY29uc3RhbnRzJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25Vc2VyU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL29yZ2FuaXphdGlvbi11c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2NvbW1vbi13b3JrZmxvdy1zZXJ2aWNlcy9vcmdhbml6YXRpb24tY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvY29tcGxpYW5jZS1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBDT05TVEFOVFMgfSBmcm9tICcuLi9saW5rLXJlbGF0ZWQtcG9saWNpZXMvY29uc3RhbnRzJztcbmltcG9ydCB7IExJTktTIH0gZnJvbSAnLi4vd29ya2Zsb3cvc2hhcmVkL2NvbnN0YW50cy9jZG4tbGluay5jb25zdGFudCc7XG5pbXBvcnQgeyBJZnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaWZyYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgUFJPR1JBTV9MSVNUX0FQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9hcGkuY29uc3RhbnRzJztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9wcm9ncmFtLWxpc3QvaW50ZXJmYWNlcy9saXN0LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9hcGkuY29uc3RhbnRzJztcbmltcG9ydCB7IFBvc3RNZXNzYWdlRXZlbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lmcmFtZS10eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXBvbGljeScsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1BvbGljeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgQ09OU1RBTlRTOiBhbnkgPSBDT05TVEFOVFM7XG4gIExJTktTOiBhbnkgPSBMSU5LUztcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcbiAgQElucHV0KCkgcG9saWN5SWQgPSAnJztcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xuICBAT3V0cHV0KCkgc2hvd0NvbmZpcm1hdGlvbkFsZXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2hpZnRUb0VkaXRNb2RlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBjb252ZXJ0RmlsZURhdGE6IGFueSA9IHt9O1xuICBASW5wdXQoKSBzZWxlY3RlZENhdGVnb3J5ID0gJyc7XG4gIEBJbnB1dCgpIGlzU2VuZEZvckF0dGVzdGF0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRlbXBsYXRlSWQ6IHN0cmluZyA9ICcnO1xuXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1hdEV2aWRlbmNlJykgZm9ybWF0RXZpZGVuY2UhOiBGb3JtYXRBbmRFdmlkZW5jZUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICBkYXRlUGlja2VyUG9wVXAhOiBFbGVtZW50UmVmO1xuXG4gIGRlc2NyaXB0aW9uOiBFZGl0b3JDb25maWcgPSB7XG4gICAgLy8gbW9kZTogJ3ByaW1lJyxcbiAgICBjb2xvclBhbGV0dGU6IHRydWUsXG4gICAgbGluazogdHJ1ZSxcbiAgICBwbGFjZWhvbGRlcjogJ0FkZCBhIGRlc2NyaXB0aW9uIGZvciB0aGlzIHBvbGljeS4nLFxuICB9O1xuICB3b3JrZmxvd1R5cGUgPSAnU0VRVUVOVElBTCc7XG4gIHNjcm9sbFRvQm90dG9tID0gZmFsc2U7XG4gIG5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gZmFsc2U7XG5cbiAgYWN0aXZlU2VsZWN0b3IgPSAnJztcbiAgcmNMaXN0OiBhbnkgPSBbXTtcbiAgdXNlcnNMaXN0OiBhbnkgPSBbXTtcbiAgYWxsQXBwcm92ZXJzOiBhbnkgPSBbXTtcbiAgYWxsUmV2aWV3ZXJzOiBhbnkgPSBbXTtcbiAgYXNzaWduZWVzTGlzdDogYW55ID0gW107XG4gIG93bmVybGlzdDogYW55ID0gW107XG4gIHJldmlld2Vyc0xpc3Q6IGFueSA9IFtdO1xuICBvdmVyc2VlcnNMaXN0OiBhbnkgPSBbXTtcbiAgcmNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIHVzZXJzTGlzdExvYWRlZCA9IGZhbHNlO1xuICBjYXRlZ29yeUxpc3Q6IGFueSA9IFtdO1xuICBncm91cHNMaXN0OiBhbnlbXSA9IFtdO1xuICB3b3JrRmxvd0xpc3Q6IGFueVtdID0gW107XG4gIGFwcHJvdmVyV29ya0Zsb3dMaXN0OiBhbnlbXSA9IFtdO1xuICBzdWJtaXR0ZWQgPSBmYWxzZTtcbiAgY2NFbWFpbE9iaklkczogYW55W10gPSBbXTtcbiAgY2NGYWlsR3JvdXBPYmpJZHM6IGFueVtdID0gW107XG4gIHVzZXJzQWNjZXNzTGlzdDogYW55W10gPSBbXTtcbiAgdXNlcnNBY2Nlc3NMaXN0SWRzOiBhbnlbXSA9IFtdO1xuICBncm91cHNBY2Nlc3NMaXN0SWRzOiBhbnlbXSA9IFtdO1xuICBncm91cHNBY2Nlc3NMaXN0OiBhbnlbXSA9IFtdO1xuICBTZWxlY3RlZExpc3RPZlBvbGljaWVzOiBhbnlbXSA9IFtdO1xuXG4gIGxvYWRlciA9IGZhbHNlO1xuICBjYXRlZ29yaWVzTGlzdExvYWRlZCA9IGZhbHNlO1xuICBncm91cHNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIGNhdGVnb3J5Q29uZmlnID0ge1xuICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgUG9saWN5IENhdGVnb3J5JyxcbiAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ1BvbGljeSBDYXRlZ29yeSBTZWxlY3RlZCcsXG4gICAgZmxvYXRpbmdUZXh0UGx1cmFsOiAnUG9saWN5IENhdGVnb3JpZXMgU2VsZWN0ZWQnLFxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIFBvbGljeSBDYXRlZ29yeScsXG4gICAgc2VhcmNoRW5hYmxlZDogdHJ1ZSxcbiAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlLFxuICAgIHdvcmtmbG93OiAncG9saWN5JyxcbiAgfTtcbiAgYXBwcm92YWxXb3JrZmxvd0NvbmZpZyA9IHtcbiAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IHVzZXIocyknLFxuICAgIGZsb2F0aW5nVGV4dFNpbmd1bGFyOiAnVXNlciBzZWxlY3RlZCcsXG4gICAgZmxvYXRpbmdUZXh0UGx1cmFsOiAnVXNlcnMgc2VsZWN0ZWQnLFxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIFVzZXInLFxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXG4gICAgc2VsZWN0QWxsRW5hYmxlZDogdHJ1ZSxcbiAgfTtcblxuICBhZGRNb3JlTGV2ZWxzID0gZmFsc2U7XG4gIGFwcHJvdmVyc0xpc3RJbmRleCA9IDA7XG4gIHdvcmtmbG93TGlzdCA9IFsnU0VRVUVOVElBTCcsICdST1VORC1ST0JJTicsICdBTlkgT05FJ107XG4gIGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XG4gIGRhdGVDb25maWcgPSB7XG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxuICAgIGZvcm1hdDogJ0REIE1NIFlZWVknLFxuICAgIHVuU2VsZWN0T25DbGljazogdHJ1ZSxcbiAgICBvcGVuT25DbGljazogZmFsc2UsXG4gICAgb3Blbk9uRm9jdXM6IGZhbHNlLFxuICB9O1xuICBmcmVxdWVuY3lEZXRhaWxzID0ge1xuICAgIHBhdHRlcm46ICcnLFxuICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXG4gICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXG4gICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXG4gICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXG4gICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHdpbmRvdzogMCxcbiAgICBmYWlsZWQ6IDAsXG4gICAgdGltZTogREVGQVVMVF9USU1FLFxuICAgIGZhaWxlZFRpbWU6ICcnLFxuICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXG4gIH07XG4gIHJldmlld2VyRnJlcXVlbmN5RGV0YWlscyA9IHtcbiAgICBwYXR0ZXJuOiAnJyxcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICB3aW5kb3c6IDAsXG4gICAgZmFpbGVkOiAwLFxuICAgIHRpbWU6IERFRkFVTFRfVElNRSxcbiAgICBmYWlsZWRUaW1lOiAnJyxcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAzLFxuICB9O1xuICBmcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdXaGF0IGlzIHRoZSBhdHRlc3RhdGlvbiBzY2hlZHVsZSBmb3IgdGhpcyBwb2xpY3k/JztcbiAgcmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdXaGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSByZXZpZXdlZD8nO1xuXG4gIHNpZGVTZWxlY3RvckVsZW1lbnRzID0gW1xuICAgICdhcHByb3ZhbFdvcmtmbG93JyxcbiAgICAnYXNzaWduZWVzJyxcbiAgICAnYXBwcm92ZXJzJyxcbiAgICAncmV2aWV3ZXInLFxuICAgICdjY0VtYWlsJyxcbiAgICAnY2NGYWlsJyxcbiAgICAncmMnLFxuICAgICdjYXRlZ29yeScsXG4gICAgJ2ZyZXF1ZW5jeScsXG4gICAgJ3Jldmlld2VyRnJlcXVlbmN5JyxcbiAgICAnY2hlY2twb2ludHMnLFxuICAgICdsaW5rUHJvZ3JhbScsXG4gICAgJ2lzQXNzZXNzbWVudCcsXG4gICAgJ2lzTGlua2VkUG9saWNlcycsXG4gICAgJ293bmVycycsXG4gICAgJ3BvbGljeUFjY2VzcycsXG4gIF07XG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcbiAgICB7IG5hbWU6ICdMT1cnLCB2YWx1ZTogMSwgY2xhc3M6ICdsb3cnIH0sXG4gICAgeyBuYW1lOiAnTE9XLU1lZGl1bScsIHZhbHVlOiAyLCBjbGFzczogJ2xvdy1tZWQnIH0sXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogMywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6IDQsIGNsYXNzOiAnaGlnaCcgfSxcbiAgXTtcbiAgc2hvd1Jpc2tDbGFzc2lmaWNhdGlvbiA9IHRydWU7XG4gIHNob3dDcmVhdGVEb2N1bWVudHMgPSBmYWxzZTtcbiAgb3JnYW5pemF0aW9uX2lkID0gJyc7XG4gIG1lbWJlcl9vYmpfaWQgPSAnJztcbiAgbWVtYmVySWQgPSAwO1xuICB1c2VySW5mbyE6IGFueTtcblxuICBwb2xpY3lBcHByb3ZhbEZsYWcgPSAwO1xuICBiYXNlVVJMID0gJyc7XG4gIGdyb3VwRW5hYmxlZDogYW55ID0gdHJ1ZTtcbiAgb3ZlcnNlZXJHcm91cHNMaXN0OiBhbnlbXSA9IFtdO1xuICBlbmFibGVBcHByb3ZhbFdvcmtmbG93OiBib29sZWFuID0gZmFsc2U7XG4gIGlzVmVyc2lvblZhbGlkOiBib29sZWFuID0gdHJ1ZTtcbiAgc2VsZWN0ZWRMaW5rUHJvZ3JhbTogYW55ID0ge307XG4gIHZlcnNpb25FcnJvck1lc3NhZ2U6IHN0cmluZyA9XG4gICAgJ1lvdSBoYXZlIGVudGVyZWQgYW4gaW5jb3JyZWN0IGZvcm1hdC4gVGhlIHZlcnNpb24gZmllbGQgY2FuIGVpdGhlciBpbmNsdWRlIG51bWJlcnMsIGFscGhhYmV0cywgaHlwaGVuIG9yIGRvdHMuJztcbiAgc2VsZWN0ZWRXb3JrZmxvdzogYW55W10gPSBbXTtcbiAgZWRpdEFwcHJvdmFsV29ya2Zsb3chOiBhbnk7XG4gIGFwcHJvdmFsV29ya2Zsb3dJZHM6IGFueVtdID0gW107XG4gIGRlZmF1bHRFZGl0QXBwcm92ZXJzOiBhbnkgPSB7fTtcbiAgY3JlYXRlQXBwcm92YWxDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuICBlZGl0V29ya2Zsb3dMZXZlbCA9IHt9O1xuICBub1dvcmtmbG93U2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGVtcGxhdGVWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gIHRlbXBsYXRlVXJsOiBzdHJpbmcgPSAnJztcbiAgaXNUZW1wbGF0ZUNsb3NlZDogYm9vbGVhbiA9IHRydWU7XG4gIHByb2dyYW1MaXN0VXJsOiBhbnkgPSBQUk9HUkFNX0xJU1RfQVBJO1xuICBzZWxlY3RlZFByb2dyYW1zOiBhbnkgPSB7fTtcbiAgYWxsUHJvZ2FtU2VsZWN0ZWQ6IExpc3RJdGVtW10gPSBbXTtcbiAgbGlua1Byb2dyYW06IGFueSA9IHt9O1xuICBzZWxlY3RlZFBvbGljeUNhdGVnb3J5OiBhbnkgPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBvbGljeVNlcnZpY2U6IFBvbGljeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNwb25zaWJpbGl0eVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSxcbiAgICBwbGF0Zm9ybUxvY2F0aW9uOiBQbGF0Zm9ybUxvY2F0aW9uLFxuICAgIHByaXZhdGUgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlc3RBcGlTZXJ2aWNlOiBSZXN0QXBpU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25Vc2VyU2VydmljZTogT3JnYW5pemF0aW9uVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25Db21tb25TZXJ2aWNlOiBPcmdhbml6YXRpb25Db21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tcGxpYW5jZUNvbW1vblNlcnZpY2U6IENvbXBsaWFuY2VDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgaWZyYW1lU2VydmljZTogSWZyYW1lU2VydmljZVxuICApIHtcbiAgICB0aGlzLmJhc2VVUkwgPSBsb2NhdGlvbj8ub3JpZ2luO1xuICAgIGlmICh0aGlzLmJhc2VVUkwgPT0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMCcpIHtcbiAgICAgIHRoaXMuYmFzZVVSTCA9ICdodHRwczovL2Rldi52LWNvbXBseS5jb20nO1xuICAgIH1cbiAgfVxuICBwb2xpY3lGb3JtOiBQb2xpY3lGb3JtID0ge1xuICAgIHBvbGljeU5hbWU6ICcnLFxuICAgIHBvbGljeU5vdGVzOiAnJyxcbiAgICBzZWxlY3RlZENhdGVnb3JpZXM6IFtdLFxuICAgIHNlbGVjdGVkQXBwcm92ZXJzOiBbXSxcbiAgICBzZWxlY3RlZEFzc2lnbmVlczogW10sIC8vZG91YnQgaW4gbmFtZVxuICAgIHNlbGVjdGVkR3JvdXBBc3NpZ25lZTogW10sXG4gICAgc2VsZWN0ZWRSZXZpZXdlcnM6IFtdLFxuXG4gICAgc2VsZWN0ZWRSQ3M6IFtdLFxuICAgIENDRmFpbEVtYWlsOiBbXSxcbiAgICBDQ0ZhaWxFbWFpbEdyb3VwOiBbXSxcbiAgICBDQ0VtYWlsOiBbXSxcbiAgICBDQ0dyb3VwRW1haWw6IFtdLFxuICAgIGF2YWlsYWJsZU9uUG9ydGFsOiBmYWxzZSxcbiAgICBhY2NlcHRTdWdnZXN0aW9uczogZmFsc2UsXG4gICAgcmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvbjogZmFsc2UsXG4gICAgcmlza1JhdGluZzogMSxcbiAgICBhc3NvY2lhdGVkRG9jdW1lbnRzOiB7XG4gICAgICBmb3JtYXRGaWxlczogW10sXG4gICAgfSxcbiAgICBwb2xpY3lEdWVEYXRlOiBtb21lbnQoKSxcbiAgICBjdXN0b21UYWdzOiBbXSxcbiAgICBjaGVja3BvaW50RGV0YWlsczogW10sXG4gICAgTGlua2VkUG9saWNpZXM6IFtdLFxuICAgIHRvdGFsUXVlc3Rpb246IDAsXG4gICAgcGFzc2luZ01hcmtzOiAwLFxuICAgIGRvY3VtZW50c0FuZExpbmtzOiB7XG4gICAgICBmb3JtYXRGaWxlczogW10sXG4gICAgICBmb3JtYXRMaW5rczogW10sXG4gICAgfSxcbiAgICBhZGRSZXNwb25zaWJpbGl0eUNlbnRlcnM6IGZhbHNlLFxuICAgIGFkZFJldmlld2VyczogZmFsc2UsXG4gICAgYWRkQ2hlY2twb2ludHM6IGZhbHNlLFxuICAgIGFkZE92ZXJzZWVyczogZmFsc2UsXG4gICAgYWRkQXNzb2NpYXRlZERvY3VtZW50czogZmFsc2UsXG4gICAgYWRkVmVyc2lvbjogZmFsc2UsXG4gICAgYWRkTGlua0Fzc2Vzc21lbnQ6IGZhbHNlLFxuICAgIGFkZExpbmtQcm9ncmFtOiBmYWxzZSxcbiAgICBhZGRMaW5rUG9saWNpZXM6IGZhbHNlLFxuICAgIGlzUG9ydGFsRGlzcGxheUVuYWJsZWQ6IGZhbHNlLFxuICAgIGFkZEVmZmVjdGl2ZURhdGU6IGZhbHNlLFxuICAgIGFkZFBvbGljeUNhdGVnb3J5OiB0cnVlLFxuXG4gICAgZmFpbGVkX3RpbWU6ICcnLFxuICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiAnJyxcbiAgICBmcmVxdWVuY3lfdGV4dDogJycsXG4gICAgbWFya19mYWlsZWRfYWZ0ZXI6IDAsXG4gICAgcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOiAwLFxuXG4gICAgcmV2aWV3RmFpbGVkQWZ0ZXI6IDAsXG4gICAgcmV2aWV3RmFpbGVkVGltZTogJycsXG4gICAgcmV2aWV3X2ZyZXF1ZW5jeV9kZXRhaWxzOiAnJyxcbiAgICByZXZpZXdfZnJlcXVlbmN5X3R5cGU6ICcnLFxuICAgIHJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGU6IDAsXG4gICAgcmV2aWV3OiBmYWxzZSxcbiAgICBsaW5rUHJvZ3JhbToge30sXG4gICAgcHJvZ3JhbVNlbGVjdGVkVmFsdWVzOiB7fSxcbiAgICBhc3NpZ25lZV9zdGFydF9kYXRlOiAnJywgLy9UaHUgRmViIDIyIDIwMjRcbiAgICByZXZpZXdlcl9zdGFydF9kYXRlOiAnJywgLy9UaHUgRmViIDIyIDIwMjRcbiAgICBwb2xpY3lfdmVyc2lvbjogJycsIC8vIGl0IHdpbGwgYWNjZXB0IG1hdGNoZXMgYWxwaGFiZXRzLCBoeXBoZW5zICgtKSwgZG90cyAoLiksIGFuZCBudW1lcmljIHZhbHVlcyBvbmx5IGFuZCBzaG91bGQgYmUgc21hbGxlciBvciBlcXVhbCB0byA2IGNoYXJhY3RlcnNcbiAgICBhc3Nlc3NtZW50OiBbXSxcbiAgICBwb2xpY3lfb3duZXJzOiBbXSxcbiAgICBwb2xpY3lfZ3JvdXBfb3duZXJzOiBbXSxcbiAgICBidXNpbmVzc0N5Y2xlOiB7fSxcbiAgICBwb2xpY3lfaWQ6IDAsXG4gICAgcG9saWN5X2FjY2Vzc190eXBlOiAwLFxuICAgIHBvbGljeV9hY2Nlc3Nfb3duZXJzOiBbXSxcbiAgICBwb2xpY3lfYWNjZXNzX2dyb3VwczogW10sXG4gIH07XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2luaXRpYXRlQVBJKCk7XG4gICAgdGhpcy5vdmVyc2Vlckdyb3VwTGlzdCgpO1xuICB9XG5cbiAgX2luaXRpYXRlQVBJKCkge1xuICAgIHRoaXMuZ3JvdXBFbmFibGVkID1cbiAgICAgIHRoaXMuZmVhdHVyZT8uaXNGZWF0dXJlRW5hYmxlZCgnZmZfcG9saWN5X2dyb3VwcycpIHx8IHRydWU7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLl9pbml0aWF0ZUVkaXRBUEkoKTtcbiAgICB9XG4gICAgdGhpcy5nZXRVc2Vyc0xpc3QoKTtcbiAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XG4gICAgdGhpcy5sb2FkZXIgPSB0aGlzLm1vZGUgPT09ICdFRElUJyA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLmdldE9yZ0RldGFpbHMoKTtcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlPy5nZXRVc2VyRGV0YWlscygpPy5faWQ7XG4gICAgdGhpcy51c2VySW5mbyA9IHRoaXMuYXV0aFNlcnZpY2U/LmdldFVzZXJEZXRhaWxzKCk/LnVzZXI7XG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2U/LmdldE1lbWJlcklkKCk7XG4gICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMucG9saWN5Rm9ybS5idXNpbmVzc0N5Y2xlID0gdGhpcy5yZXN0QXBpU2VydmljZT8uZ2V0QnVzaW5lc3NDeWNsZSgpO1xuICAgIC8vdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcbiAgfVxuXG4gIF9pbml0aWF0ZUVkaXRBUEkoKSB7XG4gICAgdGhpcy5nZXRSQ0xpc3QoKTtcbiAgICB0aGlzLmdldENhdGVnb3JpZXNMaXN0KCk7XG4gICAgdGhpcy5vdmVyc2Vlckdyb3VwTGlzdCgpO1xuICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xuICB9XG5cbiAgZ2V0T3JnRGV0YWlscygpIHtcbiAgICB0aGlzLm9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2U/LmdldE9yZ0RldGFpbHNJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFyZXM/LmVuYWJsZV9yaXNrY2xhc3MpIHtcbiAgICAgICAgICB0aGlzLnNob3dSaXNrQ2xhc3NpZmljYXRpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzPy5faWQpIHtcbiAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvbl9pZCA9IHJlcz8uX2lkO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRMaW5rZWRQb2xpY2llcyhwb2xpY3lJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLkxpbmtlZFBvbGljaWVzTGlzdChwb2xpY3lJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgIHRoaXMuU2VsZWN0ZWRMaXN0T2ZQb2xpY2llcyA9IFsuLi5uZXcgU2V0KHJlc3BvbnNlPy5kYXRhKV0ucmV2ZXJzZSgpO1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5MaW5rZWRQb2xpY2llcyA9IHRoaXMuU2VsZWN0ZWRMaXN0T2ZQb2xpY2llcz8uZmlsdGVyKFxuICAgICAgICAgIChpdGVtKSA9PiBpdGVtPy5jb250cmFjdF9pZFxuICAgICAgICApLm1hcCgoaXRlbSkgPT4gaXRlbT8uY29udHJhY3RfaWQpO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uaXNQb3J0YWxEaXNwbGF5RW5hYmxlZCA9IHJlc3BvbnNlPy5kaXNwbGF5T25Qb3J0YWw7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUG9saWNpZXMgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUG9saWNpZXMgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgdGhlIGxpc3RpbmcgcGFnZXMgdGhlIGxlZnQgc2lkZSBvZiBwb2xpY3kgZm9ybSB0byBzZXQgYW5kIGVkaXQgdGhlIGRyb3Bkb3duIGZpZWxkcyB2YWx1ZXNcbiAgICogQHBhcmFtIHR5cGUgaG9sZHMgbmFtZSBvZiBwYXJ0aWN1bGFyIGxpc3QgaXMgdG8gYmUgZGlzcGxheWVkXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBib29sZWFuIHZhbHVlIHRvIGRpc3BsYXkgdGhlIGxpc3Qgb3Igbm90XG4gICAqIEBwYXJhbSB3b3JrZmxvd1R5cGUgaXQgc2V0cyB0aGUgYXBwcm92YWwgd29ya2Zsb3cgdHlwZSB3aGlsZSBlZGl0aW5nIHRoZSBhcHByb3ZhbCB3b3JrZmxvdy5cbiAgICovXG4gIGFjdGl2YXRlU2VsZWN0b3IodHlwZTogYW55LCBldmVudDogYm9vbGVhbiwgd29ya2Zsb3dUeXBlPzogYW55KSB7XG4gICAgaWYgKHdvcmtmbG93VHlwZSkge1xuICAgICAgdGhpcy53b3JrZmxvd1R5cGUgPSB3b3JrZmxvd1R5cGU7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSBldmVudCA/IHR5cGUgOiAnJztcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3JjJzpcbiAgICAgICAgdGhpcy5nZXRSQ0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXRlZ29yeSc6XG4gICAgICAgIC8vIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjY0VtYWlsJzpcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxuICAgICAgICB0aGlzLmdldEdyb3Vwc0xpc3QoKTtcbiAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3VwTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHRoaXMuc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXModHlwZSkpIHtcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBsaXN0aW5nIHBhZ2VzXG4gICAqL1xuICBkaXNhYmxlU2VsZWN0b3IoKSB7XG4gICAgdGhpcy5hZGRNb3JlTGV2ZWxzID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9ICcnO1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIFJlc3BvbnNpYmlsaXR5IGNlbnRlcnMgbGlzdFxuICAgKi9cbiAgZ2V0UkNMaXN0KCkge1xuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2U/LmdldFJjTGlzdEluZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnJjTGlzdCA9IHJlcztcbiAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBvcmdhbml6YXRpb24gdXNlcnMgbGlzdFxuICAgKi9cbiAgZ2V0VXNlcnNMaXN0KCkge1xuICAgIHRoaXMub3JnYW5pemF0aW9uVXNlclNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uVXNlcnMoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICAgICAgdGhpcy51c2Vyc0xpc3QgPSB0aGlzLnVwZGF0ZU1lbWJlcklkS2V5KHJlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51c2Vyc0xpc3QgPSByZXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLnVzZXJzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8vIHJlcGxhY2UgbWVtYmVyX2lkIHZhbHVlIHRvIG15X21lbWJlcl9pZFxuICB1cGRhdGVNZW1iZXJJZEtleShsaXN0OiBhbnkpIHtcbiAgICBsZXQgdXBkYXRlZExpc3QgPSBsaXN0Lm1hcCgoZWxlOiBhbnkpID0+ICh7XG4gICAgICAuLi5lbGUsXG4gICAgICBtZW1iZXJfaWQ6IGVsZT8ubXlfbWVtYmVyX2lkLFxuICAgIH0pKTtcbiAgICByZXR1cm4gdXBkYXRlZExpc3Q7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBQb2xpY3kgQ2F0ZWdvcmllcyBsaXN0XG4gICAqL1xuICBnZXRDYXRlZ29yaWVzTGlzdCgpIHtcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3QoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jYXRlZ29yeUxpc3QgPSByZXM7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIG9yZ2FuaXphdGlvbiB1c2VycyBncm91cHMgbGlzdFxuICAgKi9cbiAgZ2V0R3JvdXBzTGlzdCgpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRPcmdhbml6YXRpb25Qb2xpY3lHcm91cHMoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlcy5kYXRhO1xuICAgICAgICBjb25zdCBncm91cHM6IGFueSA9IFtdO1xuICAgICAgICBkYXRhPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgICAgICBncm91cE5hbWU6IGVsZW1lbnQuZ3JvdXBfbmFtZSxcbiAgICAgICAgICAgIHVzZXJJZHM6IGVsZW1lbnQubWVtYmVyX2lkcyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGdyb3Vwcy5wdXNoKG9iaik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyb3Vwc0xpc3QgPSBncm91cHM7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLy9HZXQgdGhlIGxpc3Qgb2Ygb3ZlcnNlZXJzIGdyb3VwLlxuICBvdmVyc2Vlckdyb3VwTGlzdCgpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZT8uZ2V0T3JnYW5pemF0aW9uT3ZlcnNlZXJzR3JvdXBzKCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0ID0gcmVzPy5kYXRhO1xuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYXBwcm92ZXJzIHdvcmtmbG93IGZyb20gdGhlIHNlbGVjdGVkIHdvcmtmbG93IG9uIEFwcHJvdmVycyB3b3JrZmxvdyBsaXN0XG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBwcmVkZWZpbmVkIHdvcmtmbG93XG4gICAqL1xuICBzZWxlY3RlZFdvcmtmbG93Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQgPT09IC0xKSB7XG4gICAgICAvLyB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBbXTtcbiAgICAgIC8vIHRoaXMuYWRkTW9yZUxldmVscyA9IHRydWVcbiAgICAgIC8vIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkYXRhID0gY2xvbmVEZWVwKGV2ZW50LmFwcHJvdmFsX3dvcmtmbG93KTtcbiAgICAgIGNvbnN0IG5ld0FycmF5ID0gZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBpdGVtLm5hbWUgPSBpdGVtLnR5cGU7XG4gICAgICAgIGNvbnN0IGlkcyA9IGl0ZW0uYXBwcm92ZXJzLm1hcCgoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkKTtcbiAgICAgICAgaXRlbS5hcHByb3ZlcnMgPSB0aGlzLnNldExpc3QodGhpcy5hbGxBcHByb3ZlcnMsIGlkcywgJ21lbWJlcl9pZCcpO1xuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gbmV3QXJyYXkuZmlsdGVyKFxuICAgICAgICAobGV2ZWw6IGFueSkgPT4gbGV2ZWwuYXBwcm92ZXJzLmxlbmd0aCA+IDBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgQXBwcm92ZXJzIHdvcmtmbG93IGxpc3QgYmFzZWQgb24gc2VsZWN0ZWQgcG9saWN5IGNhdGVnb3JpZXNcbiAgICogQHBhcmFtIGlkIGNvbnRhaW5zIHNlbGVjdGVkIGNhdGVnb3JpZXMgaWQnc1xuICAgKi9cbiAgZ2V0QXBwcm92ZXJXb3JrRmxvdyhpZDogYW55LCBkYXRhPzogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRXb3JrZmxvd0xpc3QoaWQpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzPy5sZW5ndGggPj0gMCkge1xuICAgICAgICAgIHRoaXMuYXBwcm92ZXJXb3JrRmxvd0xpc3QgPSByZXM7IC8vIGdldHRpbmcgYWxsIGFwcHJvdmVyIHNhdmVkIHdvcmtmbG93c1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyA9IFtdO1xuICAgICAgICAgIHRoaXMuYXBwcm92ZXJXb3JrRmxvd0xpc3Q/LmZvckVhY2goKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcHByb3ZhbFdvcmtmbG93SWRzPy5pbmNsdWRlcyh3b3JrZmxvdz8uX2lkKSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3c/LnB1c2god29ya2Zsb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgYXBwcm92YWxEYXRhOiBhbnkgPSBbXTtcbiAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRXb3JrZmxvdz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLm5vV29ya2Zsb3dTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgYXBwcm92YWxXb3JrZmxvdzogYW55W10gPSBbXTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlV29ya2Zsb3coKTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnMpLmZvckVhY2goKGFwcHJvdmVyc0xldmVsKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnNbYXBwcm92ZXJzTGV2ZWxdLmFwcHJvdmVycyA9XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVyc1thcHByb3ZlcnNMZXZlbF0/LmFwcHJvdmVycz8ubWFwKFxuICAgICAgICAgICAgICAgICAgKGFwcDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYXBwLm1lbWJlcl9uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwcm92ZXJVc2VyID0gdGhpcy51c2Vyc0xpc3Q/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAodXNlcjogYW55KSA9PiB1c2VyLm15X21lbWJlcl9pZCA9PSBhcHAubWVtYmVyX2lkXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwcm92ZXJVc2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAubWVtYmVyX25hbWUgPSBhcHByb3ZlclVzZXI/Lm1lbWJlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGFwcHJvdmFsV29ya2Zsb3cucHVzaCh7XG4gICAgICAgICAgICAgICAgbGV2ZWwxOiBhcHByb3ZlcnNMZXZlbCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRlZmF1bHRFZGl0QXBwcm92ZXJzW2FwcHJvdmVyc0xldmVsXSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFwcHJvdmFsRGF0YS5wdXNoKHtcbiAgICAgICAgICAgICAgd29ya2Zsb3dfbmFtZTogJycsXG4gICAgICAgICAgICAgIHdvcmtmbG93X21vZHVsZTogJ1BPTElDWScsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7fSxcbiAgICAgICAgICAgICAgYXBwcm92YWxfd29ya2Zsb3c6IGFwcHJvdmFsV29ya2Zsb3csXG4gICAgICAgICAgICAgIGNhdGVnb3J5X2FycjogW10sXG4gICAgICAgICAgICAgIGNyZWF0b3I6IHt9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0uYXBwcm92YWxfd29ya2Zsb3cgPSBhcHByb3ZhbERhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IHRoaXMuc2VsZWN0ZWRXb3JrZmxvdztcbiAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5nZXRBcHByb3ZlcnNBbmRSZXZpZXdlcnNMaXN0KFxuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgW2RhdGEuUmV2aWV3ZXJNZW1iZXJJZF0sXG4gICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcmVtb3ZlV29ya2Zsb3coKSB7XG4gICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93ID0gW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW107XG4gICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93SWRzID0gW107XG4gICAgdGhpcy5lZGl0QXBwcm92YWxXb3JrZmxvdyA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIEFwcHJvdmVycyBhbmQgcmV2aWV3ZXJzIGxpc3QgYmFzZWQgb24gc2VsZWN0ZWQgcG9saWN5IGNhdGVnb3JpZXNcbiAgICogQHBhcmFtIGNhdGVnb3J5SWRzIGNvbnRhaW5zIHNlbGVjdGVkIGNhdGVnb3JpZXMgaWQnc1xuICAgKi9cbiAgZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChcbiAgICBjYXRlZ29yeUlkczogYW55LFxuICAgIGFwcHJvdmVySWRzPzogYW55LFxuICAgIHJldmlld2VySWRzPzogYW55LFxuICAgIHBvbGljeT86IGFueVxuICApIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5hbGxBcHByb3ZlcnMgPSBbXTtcbiAgICB0aGlzLmFsbFJldmlld2VycyA9IFtdO1xuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRSZXZpZXdlcnMoY2F0ZWdvcnlJZHMpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzPy5sZW5ndGggPj0gMCkge1xuICAgICAgICAgIHJlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsQXBwcm92ZXJzID0gdW5pcUJ5KFxuICAgICAgICAgICAgICB0aGlzLmFsbEFwcHJvdmVycy5jb25jYXQoZWxlbWVudC5hbGxfYXBwcm92ZXJzKSxcbiAgICAgICAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmFsbFJldmlld2VycyA9IHVuaXFCeShcbiAgICAgICAgICAgICAgZWxlbWVudC5hbGxfYXBwcm92ZXJzLmNvbmNhdChcbiAgICAgICAgICAgICAgICB0aGlzLmFsbFJldmlld2VycyxcbiAgICAgICAgICAgICAgICBlbGVtZW50LmFsbF9hdXRob3JzXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0NSRUFURScpIHRoaXMuc2V0T3duZXJzT25Mb2FkKCk7XG4gICAgICAgICAgICBpZiAocG9saWN5Py5wb2xpY3lfb3duZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X293bmVycyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEFwcHJvdmVycyxcbiAgICAgICAgICAgICAgICBwb2xpY3k/LnBvbGljeV9vd25lcnMgPz8gW10sXG4gICAgICAgICAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ2V0VXNlcnNBY2Nlc3NMaXN0QnlDYXRlZ29yeShlbGVtZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXBwcm92ZXJJZHM/LmFwcHJvdmVycykge1xuICAgICAgICAgIGxldCBvYmogPSBhcHByb3Zlcklkcz8uYXBwcm92ZXJzO1xuICAgICAgICAgIGxldCBhcHByb3ZlckxldmVscyA9IFtdO1xuICAgICAgICAgIC8vIGZvciAodmFyIGl0ZW0gaW4gb2JqKSB7XG4gICAgICAgICAgLy8gICBjb25zdCBpZHMgPSBvYmpbaXRlbV0/LmFwcHJvdmVycz8ubWFwKFxuICAgICAgICAgIC8vICAgICAoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkXG4gICAgICAgICAgLy8gICApO1xuXG4gICAgICAgICAgLy8gICBsZXQgZGF0YSA9IHtcbiAgICAgICAgICAvLyAgICAgbmFtZTogb2JqW2l0ZW1dPy50eXBlLFxuICAgICAgICAgIC8vICAgICBhcHByb3ZlcnM6IHRoaXMuc2V0TGlzdCh0aGlzLmFsbEFwcHJvdmVycywgaWRzLCAnbWVtYmVyX2lkJyksXG4gICAgICAgICAgLy8gICB9O1xuICAgICAgICAgIC8vICAgaWYgKGRhdGEubmFtZSA9PSAnUk9VTkRST0JJTicpIHtcbiAgICAgICAgICAvLyAgICAgZGF0YS5uYW1lID0gJ1JPVU5ELVJPQklOJztcbiAgICAgICAgICAvLyAgIH0gZWxzZSBpZiAoZGF0YS5uYW1lID09ICdBTllPTkUnKSB7XG4gICAgICAgICAgLy8gICAgIGRhdGEubmFtZSA9ICdBTlkgT05FJztcbiAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAvLyAgIGFwcHJvdmVyTGV2ZWxzLnB1c2goZGF0YSk7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGlmIChhcHByb3Zlcklkcz8uYXBwcm92ZXJzKSB7XG4gICAgICAgICAgICBsZXQgb2JqID0gYXBwcm92ZXJJZHM/LmFwcHJvdmVycztcbiAgICAgICAgICAgIGxldCBhcHByb3ZlckxldmVscyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaXRlbSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgY29uc3QgaWRzID0gb2JqW2l0ZW1dPy5hcHByb3ZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IG9ialtpdGVtXT8ubmFtZSA/PyBvYmpbaXRlbV0/LnR5cGUsXG4gICAgICAgICAgICAgICAgYXBwcm92ZXJzOiBvYmpbaXRlbV0/LmFwcHJvdmVycyxcbiAgICAgICAgICAgICAgICBhcHByb3ZhbF9kb25lOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsZXZlbDE6IG9ialtpdGVtXT8ubGV2ZWwxIHx8IGl0ZW0sXG4gICAgICAgICAgICAgICAgYWxpYXNfbmFtZTogb2JqW2l0ZW1dPy5hbGlhc19uYW1lLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAvL0NyZWF0aW5nIGlzc3VlIGluIGFwcHJvdmFsIHdvcmtmbG93IHBheWxvYWQgKHR5cGUpIHdoaWxlIGVkaXRpbmcgcG9saWN5XG4gICAgICAgICAgICAgIC8vIGlmIChkYXRhLnR5cGUgPT0gJ1JPVU5EUk9CSU4nKSB7XG4gICAgICAgICAgICAgIC8vICAgZGF0YS50eXBlID0gJ1JPVU5ELVJPQklOJztcbiAgICAgICAgICAgICAgLy8gfSBlbHNlIGlmIChkYXRhLnR5cGUgPT0gJ0FOWU9ORScpIHtcbiAgICAgICAgICAgICAgLy8gICBkYXRhLnR5cGUgPSAnQU5ZIE9ORSc7XG4gICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgYXBwcm92ZXJMZXZlbHMucHVzaChkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0uYXBwcm92YWxfd29ya2Zsb3cgPSBhcHByb3ZlckxldmVscztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhcHByb3ZhbF93b3JrZmxvdzogYXBwcm92ZXJMZXZlbHMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IHRoaXMuc2VsZWN0ZWRXb3JrZmxvdztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJldmlld2VySWRzKSB7XG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICAgIHRoaXMuYWxsUmV2aWV3ZXJzLFxuICAgICAgICAgICAgICByZXZpZXdlcklkcyxcbiAgICAgICAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqXG4gICAqIEl0IGlzIHRvIHBvcHVsYXRlIG1vcmUgb3B0aW9ucyBlbGVtZW50cyB3aGlsZSBlZGl0aW5nIHRoZSBwb2xpY3kgZm9ybVxuICAgKi9cbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnMpIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnUkVTUE9OU0lCSUxJVFlfQ0VOVEVSJyk7XG4gICAgfVxuICAgIC8vIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzKSB7IGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnUkVWSUVXRVInKTsgfVxuICAgIC8vIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkQ2hlY2twb2ludHMpIHsgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdDSEVDS1BPSU5UUycpOyB9XG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMpIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnT1ZFUlNFRVInKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzKSB7XG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JFTEFURURfRE9DVU1FTlRTJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24pIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnVkVSU0lPTicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudC5sZW5ndGgpIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTElOS19BU1NFU1NNRU5UUycpO1xuICAgICAgdGhpcy5nZXRBc3Nlc3NtZW50RGV0YWlscyh0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudFswXSk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMucG9saWN5Rm9ybT8ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzPy5wcm9ncmFtICYmXG4gICAgICB0aGlzLnBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRcbiAgICApIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTElOS19QUk9HUkFNX1JFU1BPTlNJQklMSVRJRVMnKTtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUHJvZ3JhbSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLlNlbGVjdGVkTGlzdE9mUG9saWNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdMSU5LX1JFTEFURURfUE9MSUNJRVMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5hZGRFZmZlY3RpdmVEYXRlKSB7XG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ0VGRkVDVElWRV9EQVRFJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkUG9saWN5Q2F0ZWdvcnkpIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnUE9MSUNZX0NBVEVHT1JZJyk7XG4gICAgfVxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChhY3RpdmF0ZWRPcHRpb25zKTtcbiAgfVxuICAvKipcbiAgICogSXQgaXMgdG8gYWRkIGFuZCByZW1vdmUgdGhlIGVsZW1lbnRzIGZyb20gTW9yZSBvcHRpb24gdG8gdGhlIHBvbGljeSBGb3JtXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBkZXRhaWxzIHJlbGF0ZWQgdG8gY2hlY2tlZCB2YWx1ZSwgY29kZSBwYXJ0aWN1bGFyIGVsZW1lbnRzIGZyb20gTW9yZSBvcHRpb25zXG4gICAqL1xuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XG4gICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICBjYXNlICdSRVNQT05TSUJJTElUWV9DRU5URVInOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBjYXNlICdSRVZJRVdFUic6XG4gICAgICAvLyAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMgPSBldmVudC5jaGVja2VkO1xuICAgICAgLy8gICBicmVhaztcbiAgICAgIGNhc2UgJ0NIRUNLUE9JTlRTJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZENoZWNrcG9pbnRzID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdPVkVSU0VFUic6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMgPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1JFTEFURURfRE9DVU1FTlRTJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZEFzc29jaWF0ZWREb2N1bWVudHMgPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1ZFUlNJT04nOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkVmVyc2lvbiA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTElOS19QUk9HUkFNX1JFU1BPTlNJQklMSVRJRVMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua1Byb2dyYW0gPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xJTktfQVNTRVNTTUVOVFMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua0Fzc2Vzc21lbnQgPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xJTktfUkVMQVRFRF9QT0xJQ0lFUyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRMaW5rUG9saWNpZXMgPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VGRkVDVElWRV9EQVRFJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZEVmZmVjdGl2ZURhdGUgPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1BPTElDWV9DQVRFR09SWSc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRQb2xpY3lDYXRlZ29yeSA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBpcyB0byBlbnN1cmUgd2hldGhlciBhbGwgcmVxdWlyZWQgbGlzdHMgb24gUG9saWN5IGZyb20gaXMgbG9hZGVkIGZyb20gdGhlIGFwaSBjYWxsIG9yIG5vdFxuICAgKi9cbiAgY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKSB7XG4gICAgY29uc3QgZWRpdExvYWRlciA9XG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJ1xuICAgICAgICA/IHRoaXMucmNMaXN0TG9hZGVkICYmXG4gICAgICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCAmJlxuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZFxuICAgICAgICA6IHRydWU7XG4gICAgaWYgKHRoaXMudXNlcnNMaXN0TG9hZGVkICYmIGVkaXRMb2FkZXIpIHtcbiAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICBpZiAodGhpcy5jb252ZXJ0RmlsZURhdGEgJiYgdGhpcy5jb252ZXJ0RmlsZURhdGEuZmlsZU5hbWUpIHtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUgPSB0aGlzLmNvbnZlcnRGaWxlRGF0YS5maWxlTmFtZS5zdWJzdHJpbmcoXG4gICAgICAgICAgMCxcbiAgICAgICAgICB0aGlzLmNvbnZlcnRGaWxlRGF0YS5maWxlTmFtZS5sYXN0SW5kZXhPZignLicpXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmNvbnZlcnRGaWxlRGF0YS5jYXRlZ29yeUlkKSB7XG4gICAgICAgICAgdGhpcy5zYXZlU2VsZWN0ZWRMaXN0KCdjYXRlZ29yeScsIFt0aGlzLmNvbnZlcnRGaWxlRGF0YS5jYXRlZ29yeUlkXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkpIHtcbiAgICAgICAgdGhpcy5zYXZlU2VsZWN0ZWRMaXN0KCdjYXRlZ29yeScsIFt0aGlzLnNlbGVjdGVkQ2F0ZWdvcnldKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgICB0aGlzLmVkaXRQb2xpY3koKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XG4gICAgICB9LCAzMDApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VycyB0aGUgY29uZmlybWF0aW9uIHBvcHVwIHdoZW4gYXZhaWxhYmlsaXR5IG9uIFBvbGljeSBwb3J0YWwgdG9nZ2xlIGluIE9OXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyB0b2dnbGUgdmFsdWUgd2hpY2ggaXMgYWx3YXlzIHRydWUgb3IgZmFsc2VcbiAgICovXG4gIGF2YWlsYWJpbGl0eU9uUG9ydGFsKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbkRldGFpbHM6IENvbmZpcm1hdGlvbkFsZXJ0ID0ge1xuICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgIG1lc3NhZ2U6IGBUaGUgcG9saWNpZXMgdGhhdCB5b3UgaW50ZW5kIHRvIG1ha2UgYWNjZXNzaWJsZSB0byB0aGUgZW50aXJlIG9yZ2FuaXphdGlvbiBjYW4gYmUgYWRkZWQgdG8gdGhlIHBvbGljeSBwb3J0YWwuXG4gICAgICAgIEl0IGlzIGxpa2UgYSBzaGFyZWQgY2F0YWxvZyBvZiBhbGwgYWN0aXZlICYgdXBkYXRlZCBwb2xpY2llcyB0aGF0IGFueSBsb2dnZWQgaW4gdXNlciBjYW4gcmVhZC8gZG93bmxvYWQgZm9yIHJlZmVyZW5jZS5cbiAgICAgICAgSGVuY2UsIGlmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIGl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIHlvdSB0byBzZXQgdXAgYW4gYXR0ZXN0YXRpb24gc2NoZWR1bGUgb3Igc2VsZWN0XG4gICAgICAgIHJlYWRlcnMgdG8gYXR0ZXN0IHRoZSBwb2xpY2llcy5gLFxuICAgICAgICBhY3Rpb246ICdQT0xJQ1lfUE9SVEFMJyxcbiAgICAgIH07XG4gICAgICB0aGlzLnNob3dDb25maXJtYXRpb25BbGVydC5lbWl0KGNvbmZpcm1hdGlvbkRldGFpbHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNlaXZlcyB0aGUgaW5wdXQgZnJvbSB0aGUgQ29uZmlybWF0aW9uIGRpYWxvZyBvZiBhdmFpbGFibGUgb24gUG9saWN5IHBvcnRhbFxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgb3B0aW9uIGZyb20gdGhlIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2hpY2ggaXMgYWx3YXlzIGVpdGhlciAnWUVTJyBvciAnTk8nXG4gICAqL1xuICBjb25maXJtUG9saWN5UG9ydGFsKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPSBldmVudCA9PSAnWUVTJyA/IHRydWUgOiBmYWxzZTtcbiAgICBpZiAoZXZlbnQgPT0gJ05PJykge1xuICAgICAgdGhpcy5wb2xpY3lGb3JtLmFjY2VwdFN1Z2dlc3Rpb25zID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBvbGljeUZvcm0gd2l0aCBzZWxlY3RlZCBlbGVtZW50cyBmcm9tIHRoZSBsaXN0aW5nLCBmcmVxdWVuY3ksIGZpbGUgdXBsb2FkIGNvbXBvbmVudHNcbiAgICogQHBhcmFtIHR5cGUgZGVmaW5lcyB0aGUgcGFydGljdWxhciBmaWVsZCBvbiBQb2xpY3kgZm9ybS5cbiAgICogQHBhcmFtIHNlbGVjdGVkSXRlbXMgY29udGFpbnMgdGhlIGxpc3Qgb2Ygc2VsZWN0ZWQgaXRlbXMgZnJvbSB0aGUgbGlzdFxuICAgKi9cbiAgc2F2ZVNlbGVjdGVkTGlzdCh0eXBlOiBzdHJpbmcsIHNlbGVjdGVkSXRlbXM6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAncmMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5yY0xpc3QsXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAnaXRlbV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXRlZ29yeSc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICBjb25zdCBvYmplY3RJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLFxuICAgICAgICAgICdfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5yZXNldFBvbGljeUFjY2Vzc0RldGFpbHMoKTtcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzID0gW107XG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJXb3JrRmxvdyhvYmplY3RJZHMpO1xuICAgICAgICB0aGlzLmdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3Qob2JqZWN0SWRzKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIGxldCB1c2VySWRzLCBncm91cElkcztcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICAgICAgdXNlcklkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMudXNlcnMsICdtZW1iZXJfaWQnKTtcbiAgICAgICAgICBncm91cElkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMuZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRHcm91cEFzc2lnbmVlID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXG4gICAgICAgICAgICBncm91cElkcyxcbiAgICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVzZXJJZHMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgdXNlcklkcyxcbiAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmV2aWV3ZXInOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMsXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXMubWVtYmVyX2lkXSxcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjRW1haWwnOlxuICAgICAgICBsZXQgc2VsZWN0ZWRVc2VySWRzLCBzZWxlY3RlZEdyb3VwSWRzO1xuICAgICAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZFVzZXJJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zPy51c2VycywgJ21lbWJlcl9pZCcpO1xuICAgICAgICAgIHNlbGVjdGVkR3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zPy5ncm91cHMsICdncm91cF9pZCcpO1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWwgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkR3JvdXBJZHMsXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRVc2VySWRzLFxuICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuY2NFbWFpbE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZChcbiAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2NGYWlsJzpcbiAgICAgICAgbGV0IHNlbGVjdGVkRmFpbFVzZXJJZHMsIHNlbGVjdGVkRmFpbEdyb3VwSWRzO1xuICAgICAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZEZhaWxVc2VySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy51c2VycyxcbiAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZWxlY3RlZEZhaWxHcm91cElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLFxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsR3JvdXAgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkRmFpbEdyb3VwSWRzLFxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy51c2Vyc0xpc3QsXG4gICAgICAgICAgICBzZWxlY3RlZEZhaWxVc2VySWRzLFxuICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQoXG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXBwcm92ZXJzJzpcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9yZUxldmVscykge1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMud29ya2Zsb3dUeXBlLFxuICAgICAgICAgICAgYXBwcm92ZXJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuYWRkTW9yZUxldmVscyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1t0aGlzLmFwcHJvdmVyc0xpc3RJbmRleF0gPSB7XG4gICAgICAgICAgbmFtZTogdGhpcy53b3JrZmxvd1R5cGUsXG4gICAgICAgICAgYXBwcm92ZXJzLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Jldmlld2VyX2F0dGFjaG1lbnRzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5maWxlcyA/PyBbXTtcblxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uZG9jdW1lbnRzQW5kTGlua3MuZm9ybWF0TGlua3MgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmxpbmtzID8/IFtdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc29jaWF0ZWREb2N1bWVudHMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXNzb2NpYXRlZERvY3VtZW50cy5mb3JtYXRGaWxlcyA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZmlsZXMgPz8gW107XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjaGVja3BvaW50cyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5jaGVja3BvaW50RGV0YWlscyA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uY2hlY2twb2ludERldGFpbHMgPz8gW107XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5jaGVja3BvaW50RGV0YWlscz8ubGVuZ3RoID8/IDA7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wYXNzaW5nTWFya3MgPSBzZWxlY3RlZEl0ZW1zPy5yZXF1aXJlZFBvaW50ID8/IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3duZXJzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMsXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BvbGljeUFjY2Vzcyc6XG4gICAgICAgIGxldCBhY2Nlc3NJZHMsIGFjY2Vzc0dyb3VwSWRzO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmZ1dHVyZVVzZXJzV2lsbFNlbGVjdDtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICAgICAgYWNjZXNzSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcy51c2VycywgJ21lbWJlcl9pZCcpO1xuICAgICAgICAgIGFjY2Vzc0dyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcy5ncm91cHMsICdncm91cF9pZCcpO1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX2dyb3VwcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxuICAgICAgICAgICAgYWNjZXNzR3JvdXBJZHMsXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY2Nlc3NJZHMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgYWNjZXNzSWRzLFxuICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaXNMaW5rZWRQb2xpY2VzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkxpbmtlZFBvbGljaWVzID0gdGhpcy5saXN0T2ZTZWxlY3RlZFBvbGljaWVzKFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnNlbGVjdGVkUG9saWN5TGlzdFxuICAgICAgICApO1xuICAgICAgICB0aGlzLlNlbGVjdGVkTGlzdE9mUG9saWNpZXMgPSBzZWxlY3RlZEl0ZW1zPy5zZWxlY3RlZFBvbGljeUxpc3Q7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XG4gIH1cblxuICBsaXN0T2ZTZWxlY3RlZFBvbGljaWVzKHNlbGVjdGVkUG9saWNpZXM6IGFueSkge1xuICAgIHJldHVybiBzZWxlY3RlZFBvbGljaWVzPy5tYXAoKHBvbGljeTogYW55KSA9PiBwb2xpY3k/LmNvbnRyYWN0X2lkKTtcbiAgfVxuXG4gIC8vcmV0dXJuIHRoZSBfaWQgZnJvbSB0aGUgc2VsZWN0ZWQgb3ZlcnNlZXIgZ3JvdXAuXG4gIGdldEdyb3VwT2JqZWN0SWQob3ZlcnNlZXJHcm91cD86IGFueSkge1xuICAgIGxldCBvdmVyc2Vlckdyb3VwSWRBcnJheSA9IG92ZXJzZWVyR3JvdXAubWFwKChlbGU6IGFueSkgPT4gZWxlLl9pZCk7XG4gICAgcmV0dXJuIG92ZXJzZWVyR3JvdXBJZEFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIHBhcnRpY3VsYXIgZWxlbWVudCBmcm9tIHNlbGVjdGVkIGxpc3RcbiAgICogQHBhcmFtIHR5cGUgZGVmaW5lcyB0aGUgcGFydGljdWxhciBjYXNlXG4gICAqIEBwYXJhbSBldmVudCBob2xkcyB0aGUgaWQgb3Iga2V5IG9mIGVsZW1lbnQgdG8gYmUgcmVtb3ZlZFxuICAgKiBAcGFyYW0gcmVtb3ZlSW5kZXggY29udGFpbnMgdGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHJlbW92ZSh0eXBlOiBhbnksIGV2ZW50OiBhbnksIHJlbW92ZUluZGV4PzogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdyYyc6XG4gICAgICAgIGNvbnN0IHJjSW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MuZmluZEluZGV4KFxuICAgICAgICAgIChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3Muc3BsaWNlKHJjSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIGNvbnN0IGVudHJ1c3RJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKG93bmVyOiBhbnkpID0+IG93bmVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcy5zcGxpY2UoZW50cnVzdEluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdncm91cEFzc2lnbmVlcyc6XG4gICAgICAgIGNvbnN0IGdyb3VwSW5kZXg6IGFueSA9XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8uZmluZEluZGV4KFxuICAgICAgICAgICAgKGdyb3VwOiBhbnkpID0+IGdyb3VwLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZT8uc3BsaWNlKGdyb3VwSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vycy5maW5kSW5kZXgoXG4gICAgICAgICAgKHJldmlld2VyOiBhbnkpID0+IHJldmlld2VyLm1lbWJlcl9pZCA9PSBldmVudC5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzLnNwbGljZShyZXZpZXdlckluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2NFbWFpbCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVySW5kZXggPSB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbC5maW5kSW5kZXgoXG4gICAgICAgICAgKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsLnNwbGljZShvdmVyc2VlckluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjY0dyb3VwRW1haWwnOlxuICAgICAgICBjb25zdCBjY0dyb3VwSW5kZXg6IGFueSA9IHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5maW5kSW5kZXgoXG4gICAgICAgICAgKGdyb3VwOiBhbnkpID0+IGdyb3VwPy5ncm91cF9pZCA9PSBldmVudD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbD8uc3BsaWNlKGNjR3JvdXBJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2NFbWFpbE9iaklkcyA9IHRoaXMuZ2V0R3JvdXBPYmplY3RJZChcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyTm90aWZ5SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwuZmluZEluZGV4KFxuICAgICAgICAgIChvdmVyc2Vlck46IGFueSkgPT4gb3ZlcnNlZXJOLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbC5zcGxpY2Uob3ZlcnNlZXJOb3RpZnlJbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2NHcm91cEZhaWxFbWFpbCc6XG4gICAgICAgIGNvbnN0IGNjRmFpbEdyb3VwSW5kZXg6IGFueSA9XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwPy5zcGxpY2UoY2NGYWlsR3JvdXBJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2NGYWlsR3JvdXBPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQoXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXBwcm92ZXJzJzpcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzSW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbXG4gICAgICAgICAgcmVtb3ZlSW5kZXhcbiAgICAgICAgXS5hcHByb3ZlcnMuZmluZEluZGV4KFxuICAgICAgICAgIChhcHByb3ZlcjogYW55KSA9PiBhcHByb3Zlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVyc1tyZW1vdmVJbmRleF0uYXBwcm92ZXJzLnNwbGljZShcbiAgICAgICAgICBhcHByb3ZlcnNJbmRleCxcbiAgICAgICAgICAxXG4gICAgICAgICk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbcmVtb3ZlSW5kZXhdLmFwcHJvdmVycy5sZW5ndGggPT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMuZmluZEluZGV4KFxuICAgICAgICAgIChjYXRlZ29yeTogYW55KSA9PiBjYXRlZ29yeS5pdGVtX2lkID09IGV2ZW50Lml0ZW1faWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcy5zcGxpY2UoY2F0ZWdvcnlJbmRleCwgMSk7XG4gICAgICAgIGNvbnN0IHRhZyA9IGV2ZW50LmN1c3RvbV90YWdzO1xuICAgICAgICBpZiAodGFnLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleENUID0gdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ25hbWUgPT0gdGFnRGF0YS50YWduYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGluZGV4Q1QgIT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3Muc3BsaWNlKGluZGV4Q1QsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9iamVjdElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsXG4gICAgICAgICAgJ19pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNldFJldmlld2VyRnJlcXVlbmN5KCk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UoXG4gICAgICAgICAgMCxcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtID0gT2JqZWN0LmFzc2lnbih0aGlzLnBvbGljeUZvcm0pO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcldvcmtGbG93KG9iamVjdElkcyk7XG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChvYmplY3RJZHMpO1xuICAgICAgICB0aGlzLnJlc2V0UG9saWN5QWNjZXNzRGV0YWlscygpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPSBbXTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnRvdGFsUXVlc3Rpb24gPSAwO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucGFzc2luZ01hcmtzID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3b3JrZmxvd0xldmVsJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5zZWxlY3RlZEFwcHJvdmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnJlbW92ZVdvcmtmbG93KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGlua1Byb2dyYW0nOlxuICAgICAgICB0aGlzLmFsbFByb2dhbVNlbGVjdGVkID0gdGhpcy5hbGxQcm9nYW1TZWxlY3RlZC5maWx0ZXIoXG4gICAgICAgICAgKHByb2dyYW06IGFueSkgPT4gcHJvZ3JhbT8uaWQgIT09IGV2ZW50Py5pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbW92ZVByb2dyYW0oZXZlbnQpO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnb3duZXJzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5wb2xpY3lfb3duZXJzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncG9saWN5QWNjZXNzJzpcbiAgICAgICAgY29uc3QgdXNlckFjY2Vzc0luZGV4ID0gdGhpcy5wb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycy5maW5kSW5kZXgoXG4gICAgICAgICAgKG93bmVyOiBhbnkpID0+IG93bmVyPy5lbXBsb3llZV9pZCA9PSBldmVudD8uZW1wbG95ZWVfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX293bmVycz8uc3BsaWNlKHVzZXJBY2Nlc3NJbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWNjZXNzR3JvdXAnOlxuICAgICAgICBjb25zdCBncm91cEFjY2Vzc0luZGV4OiBhbnkgPVxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHM/LmZpbmRJbmRleChcbiAgICAgICAgICAgIChncm91cDogYW55KSA9PiBncm91cD8uZ3JvdXBfaWQgPT0gZXZlbnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8uc3BsaWNlKGdyb3VwQWNjZXNzSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ZyZXF1ZW5jeSc6XG4gICAgICAgIHRoaXMucmVtb3ZlRnJlcXVlbmN5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaXNMaW5rZWRQb2xpY2VzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkxpbmtlZFBvbGljaWVzID0gdGhpcy5wb2xpY3lGb3JtLkxpbmtlZFBvbGljaWVzPy5maWx0ZXIoXG4gICAgICAgICAgKHBvbGljeUlkOiBhbnkpID0+IGV2ZW50ICE9PSBwb2xpY3lJZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLlNlbGVjdGVkTGlzdE9mUG9saWNpZXMgPSB0aGlzLlNlbGVjdGVkTGlzdE9mUG9saWNpZXM/LmZpbHRlcihcbiAgICAgICAgICAoaXRlbSkgPT4gaXRlbT8uY29udHJhY3RfaWQgIT09IGV2ZW50XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogUmVmcmVzaGVzIHRoZSBhc3NpZ25lZXMgYW5kIG92ZXJzZWVycyBsaXN0IHN1Y2ggdGhhdCBib3RoIGxpc3QgZG9lcyBub3QgY29udGFpbiB0aGUgc2FtZSB1c2VycyBiYXNlZCBvbiBzZWxlY3Rpb25cbiAgICovXG4gIHJlZnJlc2hBbGxMaXN0cygpIHtcbiAgICBsZXQgYXNzaWduZWVzSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgcmV2aWV3ZXJzSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgb3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xuICAgIGNvbnN0IGFsbFVzZXJzID0gY2xvbmVEZWVwKHRoaXMudXNlcnNMaXN0KTtcbiAgICBjb25zdCBhc3NpZ25lZXMgPSBjbG9uZURlZXAodGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzKTtcbiAgICBjb25zdCBvdmVyc2Vlckxpc3QgPSBjbG9uZURlZXAodGhpcy5wb2xpY3lGb3JtLkNDRW1haWwpO1xuICAgIGNvbnN0IG5vdGlmeU92ZXJzZWVycyA9IGNsb25lRGVlcCh0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwpO1xuICAgIGFzc2lnbmVlcz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBhc3NpZ25lZXNJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcbiAgICB9KTtcbiAgICBvdmVyc2Vlckxpc3Q/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcbiAgICB9KTtcbiAgICBub3RpZnlPdmVyc2VlcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyLmVtcGxveWVlX2lkKTtcbiAgICB9KTtcblxuICAgIGFzc2lnbmVlc0lkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlc0lkcyldO1xuICAgIHJldmlld2Vyc0lkcyA9IFsuLi5uZXcgU2V0KHJldmlld2Vyc0lkcyldO1xuICAgIG92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQob3ZlcnNlZXJJZHMpXTtcblxuICAgIC8vIHRoaXMuYXNzaWdub3JzTGlzdCA9IGJlaGFsZlVzZXJzLmZpbHRlcigodXNlcjogYW55KSA9PiAhKHJldmlld2Vyc0lkcy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZCkgfHwgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5tZW1iZXJfaWQpKSk7XG4gICAgdGhpcy5hc3NpZ25lZXNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgIShcbiAgICAgICAgICByZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHxcbiAgICAgICAgICBvdmVyc2Vlcklkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKVxuICAgICAgICApXG4gICAgKTtcbiAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgIGNvbnN0IHVzZXJPYmogPSB0aGlzLmFzc2lnbmVlc0xpc3Q7XG4gICAgICB1c2VyT2JqPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgdXNlci5tZW1iZXJfaWQgPSB1c2VyLm15X21lbWJlcl9pZDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5vd25lcmxpc3QgPSB1c2VyT2JqO1xuICAgIH1cbiAgICAvLyB0aGlzLnJldmlld2Vyc0xpc3QgPSBhbGxVc2Vycy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gIShhc3NpZ25lZXNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHwgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkpKTtcbiAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSBhbGxVc2Vycy5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICAhKFxuICAgICAgICAgIGFzc2lnbmVlc0lkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKSB8fFxuICAgICAgICAgIHJldmlld2Vyc0lkcy5pbmNsdWRlcyh1c2VyLmVtcGxveWVlX2lkKVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdob2xlIGxpc3QgYmFzZWQgb24gc2VsZWN0ZWQgaWQncyBmcm9tIGEgcGFydGljdWxhciBsaXN0IGVsZW1lbnRzXG4gICAqIEBwYXJhbSBsaXN0IGl0IGlzIHRoZSBtYWluIGxpc3QgIHdoaWNoIGNvbnRhaW5zIGFsbCBlbGVtZW50cyBsaXN0XG4gICAqIEBwYXJhbSBrZXkgY29udGFpbnMga2V5IHRvIGZpbHRlciBzZWxlY3RlZCBsaXN0IGZyb20gdGhlIGxpc3RcbiAgICogQHBhcmFtIGlkcyBzZWxlY3RlZCBpZHMgYXJyYXlcbiAgICovXG4gIHNldExpc3QobGlzdDogYW55W10sIGlkczogYW55W10sIGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XG4gICAgaWRzPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdD8uZmluZEluZGV4KFxuICAgICAgICAobGlzdEVsZW1lbnQ6IGFueSkgPT4gbGlzdEVsZW1lbnRba2V5XSA9PSBlbGVtZW50XG4gICAgICApO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBkYXRhLnB1c2gobGlzdFtpbmRleF0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgaWQncyBmcm9tIGEgcGFydGljdWxhciBsaXN0IGVsZW1lbnRzXG4gICAqIEBwYXJhbSBsaXN0IGFjdHVhbCBzZWxlY3RlZCBsaXN0XG4gICAqIEBwYXJhbSBrZXkgY29udGFpbnMga2V5IHRvIGV4dHJhY3QgaWQgZnJvbSB0aGUgbGlzdFxuICAgKi9cbiAgcmV0dXJuSWRzKGxpc3Q6IGFueVtdLCBrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBsaXN0Lm1hcCgoZWxlKSA9PiB7XG4gICAgICBpZiAoZWxlW2tleV0pIHtcbiAgICAgICAgcmV0dXJuIGVsZVtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJldmlld2VyIHR5cGUgaW4gYXBwcm92YWwgd29ya2Zsb3dcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIHJldmlld2VyIHR5cGVcbiAgICovXG4gIHJldmlld2VyVHlwZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy53b3JrZmxvd1R5cGUgPSBldmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGZyZXF1ZW5jeSBpbiBlZGl0ICBtb2RlXG4gICAqL1xuICBmcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihldmVudDogYW55LCBtb2RlOiAnU0VMRUNUJyB8ICdQT1BVTEFURScgPSAnU0VMRUNUJykge1xuICAgIC8vbmVlZHMgdG8gZGlzY3VzcyB3aXRoIGJhY2tlbmQgYWJvdXQgZWRpdCBhbmQgZGVmYXVsdCB2YWx1ZXNcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgcGF0dGVybjogZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzLCAvL1xuICAgICAgd2luZG93OiBldmVudD8ucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlLFxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5tYXJrX2ZhaWxlZF9hZnRlcixcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogJycsXG4gICAgICBsaWZlY3ljbGVEZXRhaWxzOiAnMDAwMC0wMC0wMH5+MCcsXG4gICAgICB0aW1lSW4yNEhyOiBldmVudC5mYWlsZWRfdGltZSAhPSAnJyA/IGV2ZW50LmZhaWxlZF90aW1lIDogREVGQVVMVF8yNEhSLFxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcbiAgICAgIHN0YXJ0RnJvbTogTWF0aC5mbG9vcihcbiAgICAgICAgbmV3IERhdGUoZXZlbnQuYXNzaWduZWVfc3RhcnRfZGF0ZSkuZ2V0VGltZSgpIC8gMTAwMFxuICAgICAgKSxcbiAgICAgIHN0YXJ0RGF0ZTogJycsXG4gICAgICByZXBvcnRJZDogMCxcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihcbiAgICAgICAgZXZlbnQuZmFpbGVkX3RpbWUgIT0gJycgPyBldmVudC5mYWlsZWRfdGltZSA6IERFRkFVTFRfMjRIUlxuICAgICAgKSxcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5mcmVxdWVuY3lfdGV4dCxcbiAgICB9O1xuXG4gICAgdGhpcy5mcmVxdWVuY3lEYXRhKGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzIGluIHRoZSBwb2xpY3lGb3JtXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlsc1xuICAgKi9cbiAgZnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzID0gZXZlbnQucGF0dGVybjtcbiAgICAodGhpcy5wb2xpY3lGb3JtLmZyZXF1ZW5jeV90ZXh0ID0gZXZlbnQucGxhY2Vob2xkZXIpLFxuICAgICAgKHRoaXMucG9saWN5Rm9ybS5tYXJrX2ZhaWxlZF9hZnRlciA9IGV2ZW50LmZhaWxlZEFmdGVyKTtcbiAgICB0aGlzLnBvbGljeUZvcm0ucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlID0gZXZlbnQud2luZG93O1xuICAgIHRoaXMucG9saWN5Rm9ybS5mYWlsZWRfdGltZSA9IGV2ZW50LnRpbWVJbjI0SHI7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFzc2lnbmVlX3N0YXJ0X2RhdGUgPSBtb21lbnQoZXZlbnQuc3RhcnRGcm9tICogMTAwMCkuZm9ybWF0KFxuICAgICAgJ2RkZCBNTU0gREQgWVlZWSdcbiAgICApO1xuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgZmFsc2UpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczogZXZlbnQucGF0dGVybixcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBldmVudC50aW1lSW4xMmhyLFxuICAgICAgcmVtaW5kZXJfYmVmb3JlX2RheXM6IGV2ZW50LndpbmRvdyxcbiAgICAgIGZhaWxlZF9hZnRlcl9kYXlzOiBldmVudC5mYWlsZWRBZnRlcixcbiAgICAgIGxpZmVjeWNsZV9kZXRhaWxzOiBldmVudC5saWZlY3ljbGVEZXRhaWxzLFxuICAgICAgc3RhcnRfb2ZfZGF5X3V0YzogZXZlbnQuc3RhcnRGcm9tLFxuICAgICAgb25fY29tcGxldGlvbl9vZjogW2V2ZW50LnJlcG9ydElkXSxcbiAgICAgIGRvbV91dGM6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyxcbiAgICAgIHBsYWNlaG9sZGVyOiBldmVudC5wbGFjZWhvbGRlcixcbiAgICB9O1xuICAgIHRoaXMuZnJlcXVlbmN5UG9wdWxhdGlvbihwYXlsb2FkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb3B1bGF0ZXMgdGhlIGZyZXF1ZW5jeSBmaWVsZCB3aXRoIHNlbGVjdGVkIGRhdGEgZnJvbSBmcmVxdWVuY3kgY29tcG9uZW50XG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlsc1xuICAgKi9cbiAgZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnBhdHRlcm4gPSBldmVudD8uZnJlcXVlbmN5X2RldGFpbHM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZFRpbWUgPSBldmVudD8uZnJlcXVlbmN5X3RpbWU7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZmFpbGVkID0gZXZlbnQ/LmZhaWxlZF9hZnRlcl9kYXlzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5saWZlY3ljbGUgPSBldmVudD8ubGlmZWN5Y2xlX2RldGFpbHM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydCA9IGV2ZW50Py5vbl9jb21wbGV0aW9uX29mWzBdID8/IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmRhdGVPZk1vZGlmaWVkID0gZXZlbnQ/LmRvbV91dGM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAzO1xuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBldmVudD8ucGxhY2Vob2xkZXJcbiAgICAgID8gZXZlbnQucGxhY2Vob2xkZXJcbiAgICAgIDogJ0hvdyBvZnRlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgYXR0ZXN0ZWQ/JztcbiAgfVxuXG4gIHJldmlld2VyRnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xuICAgIC8vbmVlZHMgdG8gZGlzY3VzcyB3aXRoIGJhY2tlbmQgYWJvdXQgZWRpdCBhbmQgZGVmYXVsdCB2YWx1ZXNcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgcGF0dGVybjogZXZlbnQ/LnJldmlld19mcmVxdWVuY3lfZGV0YWlscywgLy9cbiAgICAgIHdpbmRvdzogZXZlbnQ/LnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUsXG4gICAgICBmYWlsZWRBZnRlcjogZXZlbnQ/LnJldmlld0ZhaWxlZEFmdGVyLFxuICAgICAgZmFpbGVkX3RpbWVfdXRjOiAnJyxcbiAgICAgIGxpZmVjeWNsZURldGFpbHM6ICcwMDAwLTAwLTAwfn4wJyxcbiAgICAgIHRpbWVJbjI0SHI6XG4gICAgICAgIGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgIT0gJycgPyBldmVudC5yZXZpZXdGYWlsZWRUaW1lIDogREVGQVVMVF8yNEhSLFxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcbiAgICAgIHN0YXJ0RnJvbTogTWF0aC5mbG9vcihcbiAgICAgICAgbmV3IERhdGUoZXZlbnQucmV2aWV3ZXJfc3RhcnRfZGF0ZSkuZ2V0VGltZSgpIC8gMTAwMFxuICAgICAgKSxcbiAgICAgIHN0YXJ0RGF0ZTogJycsXG4gICAgICByZXBvcnRJZDogMCxcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihcbiAgICAgICAgZXZlbnQucmV2aWV3RmFpbGVkVGltZSAhPSAnJyA/IGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgOiBERUZBVUxUXzI0SFJcbiAgICAgICksXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucmV2aWV3ZnJlcXVlbmN5RGV0YWlscyxcbiAgICB9O1xuXG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURhdGEoZGF0YSk7XG4gIH1cblxuICByZXNldFJldmlld2VyRnJlcXVlbmN5KCkge1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzID0ge1xuICAgICAgcGF0dGVybjogJycsXG4gICAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxuICAgICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXG4gICAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcbiAgICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxuICAgICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXG4gICAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICAgIHdpbmRvdzogMCxcbiAgICAgIGZhaWxlZDogMCxcbiAgICAgIHRpbWU6IERFRkFVTFRfVElNRSxcbiAgICAgIGZhaWxlZFRpbWU6ICcnLFxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogMyxcbiAgICB9O1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRBZnRlciA9IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfZGV0YWlscyA9ICcnO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X3R5cGUgPSAnJztcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZFRpbWUgPSBERUZBVUxUXzI0SFI7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICdXaGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSByZXZpZXdlZCA/JztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCByZXZpZXdlciBmcmVxdWVuY3kgZGV0YWlscyBpbiB0aGUgcG9saWN5Rm9ybVxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcbiAgICovXG4gIHJldmlld2VyRnJlcXVlbmN5RGF0YShldmVudDogYW55KSB7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZEFmdGVyID0gZXZlbnQuZmFpbGVkQWZ0ZXI7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfZGV0YWlscyA9IGV2ZW50LnBhdHRlcm47XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19mcmVxdWVuY3lfdHlwZSA9IGV2ZW50LnBhdHRlcm4uc3BsaXQoJ34nKVswXTtcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X3JlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IGV2ZW50LndpbmRvdztcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3RmFpbGVkVGltZSA9IGV2ZW50LnRpbWVJbjI0SHI7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld2VyX3N0YXJ0X2RhdGUgPSBtb21lbnQoZXZlbnQuc3RhcnRGcm9tICogMTAwMCkuZm9ybWF0KFxuICAgICAgJ2RkZCBNTU0gREQgWVlZWSdcbiAgICApO1xuXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIGZhbHNlKTtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGV2ZW50LnBhdHRlcm4sXG4gICAgICBmcmVxdWVuY3lfdGltZTogZXZlbnQudGltZUluMTJocixcbiAgICAgIHJlbWluZGVyX2JlZm9yZV9kYXlzOiBldmVudC53aW5kb3csXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZXZlbnQuZmFpbGVkQWZ0ZXIsXG4gICAgICBsaWZlY3ljbGVfZGV0YWlsczogZXZlbnQubGlmZWN5Y2xlRGV0YWlscyxcbiAgICAgIHN0YXJ0X29mX2RheV91dGM6IGV2ZW50LnN0YXJ0RnJvbSxcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IFtldmVudC5yZXBvcnRJZF0sXG4gICAgICBkb21fdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucGxhY2Vob2xkZXIsXG4gICAgfTtcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5UG9wdWxhdGlvbihwYXlsb2FkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb3B1bGF0ZXMgdGhlIHJldmlld2VyIGZyZXF1ZW5jeSBmaWVsZCB3aXRoIHNlbGVjdGVkIGRhdGEgZnJvbSBmcmVxdWVuY3kgY29tcG9uZW50XG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlsc1xuICAgKi9cbiAgcmV2aWV3ZXJGcmVxdWVuY3lQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmZhaWxlZFRpbWUgPSBldmVudD8uZnJlcXVlbmN5X3RpbWU7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMud2luZG93ID0gZXZlbnQ/LnJlbWluZGVyX2JlZm9yZV9kYXlzO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5saWZlY3ljbGUgPSBldmVudD8ubGlmZWN5Y2xlX2RldGFpbHM7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuc3RhcnREYXRlID0gZXZlbnQ/LnN0YXJ0X29mX2RheV91dGM7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPVxuICAgICAgZXZlbnQ/Lm9uX2NvbXBsZXRpb25fb2ZbMF0gPz8gMDtcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAzO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciA9IGV2ZW50Py5wbGFjZWhvbGRlclxuICAgICAgPyBldmVudC5wbGFjZWhvbGRlclxuICAgICAgOiAnV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQgPyc7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBkYXRhIHN1Ym1pdHRlZCBvbiBjcmVhdGUgcG9saWN5IGZvcm1cbiAgICovXG4gIHZhbGlkYXRlUG9saWN5KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgIH0sIDEwMCk7XG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZTtcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gZXZlbnQucmVwbGFjZShyZSwgJycpLnRyaW0oKTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lLnRyaW0oKSA9PSAnJ1xuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFrZXMgYW4gYXBpIGNhbGwgdG8gY3JlYXRlIGEgcG9saWN5XG4gICAqIEBwYXJhbSBwb2xpY3kgY29udGFpbnMgcG9saWN5Rm9ybSBkYXRhXG4gICAqL1xuICBzdWJtaXRQb2xpY3koKSB7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVQb2xpY3koKTtcbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWU7XG4gICAgaWYgKHRoaXMubm9Xb3JrZmxvd1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSB0aGlzLnNlbGVjdGVkV29ya2Zsb3c7XG4gICAgfVxuICAgIGNvbnN0IHBvbGljeSA9IHRoaXMucG9saWN5Rm9ybTtcbiAgICBsZXQgYXBwcm92ZXJzRGF0YTogYW55ID0gdGhpcy5jb252ZXJ0QXBwcm92YWxXb3JrZmxvdyhcbiAgICAgIHBvbGljeS5zZWxlY3RlZEFwcHJvdmVyc1xuICAgICk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gcG9saWN5LnBvbGljeUR1ZURhdGU/LiRkID8/IHBvbGljeS5wb2xpY3lEdWVEYXRlO1xuICAgIGxldCByZXZpZXdlckZpbGVzQXJyYXkgPSBjbG9uZURlZXAocG9saWN5LmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdEZpbGVzKTtcbiAgICBjb25zdCByZXZpZXdlckZpbGVzID0gcmV2aWV3ZXJGaWxlc0FycmF5Lm1hcCgoZmlsZTogYW55KSA9PiB7XG4gICAgICBmaWxlLm5hbWUgPSBmaWxlLmZpbGVuYW1lO1xuICAgICAgZmlsZS5maWxlX3BhdGggPSBmaWxlLmZpbGVwYXRoO1xuICAgICAgZmlsZS5vcmdfbmFtZSA9IGZpbGUub3JpZ2luYWxfZmlsZW5hbWU7XG4gICAgICBkZWxldGUgZmlsZS5maWxlbmFtZTtcbiAgICAgIGRlbGV0ZSBmaWxlLmZpbGVwYXRoO1xuICAgICAgZGVsZXRlIGZpbGUub3JpZ2luYWxfZmlsZW5hbWU7XG4gICAgICBkZWxldGUgZmlsZS5saW5rU2V0O1xuICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfSk7XG5cbiAgICBsZXQgYXR0ZXN0YXRpb25GaWxlc0FycmF5ID0gY2xvbmVEZWVwKFxuICAgICAgcG9saWN5LmFzc29jaWF0ZWREb2N1bWVudHMuZm9ybWF0RmlsZXNcbiAgICApO1xuICAgIGNvbnN0IGF0dGVzdGF0aW9uRmlsZXMgPSBhdHRlc3RhdGlvbkZpbGVzQXJyYXkubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgZWxlLm5hbWUgPSBlbGUuZmlsZW5hbWU7XG4gICAgICBlbGUuZmlsZV9wYXRoID0gZWxlLmZpbGVwYXRoO1xuICAgICAgZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZSA9IGVsZS5vcmlnaW5hbF9maWxlbmFtZTtcbiAgICAgIGVsZS5mb2xkZXJfaWQgPSBlbGU/LmZvbGRlcl9pZCA/IGVsZS5mb2xkZXJfaWQgOiAwO1xuICAgICAgZWxlLnBhdGggPSBlbGU/LnBhdGggPyBlbGUucGF0aCA6IGVsZS5maWxlcGF0aCArIGVsZS5maWxlbmFtZTtcbiAgICAgIGVsZS5pc0xpbmtTZXQgPSBlbGUubGlua1NldDtcbiAgICAgIGVsZS5vdGhlcl90eXBlID0gZWxlPy5vdGhlcnM7XG4gICAgICBkZWxldGUgZWxlLmZpbGVuYW1lO1xuICAgICAgZGVsZXRlIGVsZS5maWxlcGF0aDtcbiAgICAgIGRlbGV0ZSBlbGUub3JpZ2luYWxfZmlsZW5hbWU7XG4gICAgICBkZWxldGUgZWxlLmxpbmtTZXQ7XG4gICAgICBkZWxldGUgZWxlLmZpbGVfbmFtZTtcbiAgICAgIGRlbGV0ZSBlbGUub3RoZXJzO1xuICAgICAgcmV0dXJuIGVsZTtcbiAgICB9KTtcbiAgICBjb25zdCByZXZpZXdlcklEID0gdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkUmV2aWV3ZXJzLCAnbWVtYmVyX2lkJyk7XG4gICAgY29uc3QgcG9saWN5QWNjZXNzVXNlcnNJZHMgPVxuICAgICAgdGhpcy5yZXR1cm5JZHMocG9saWN5LnBvbGljeV9hY2Nlc3Nfb3duZXJzLCAnbWVtYmVyX2lkJykgPz8gW107XG4gICAgY29uc3QgcG9saWN5QWNjZXNzR3JvdXBzSWRzID1cbiAgICAgIHRoaXMucmV0dXJuSWRzKHBvbGljeS5wb2xpY3lfYWNjZXNzX2dyb3VwcywgJ19pZCcpID8/IFtdO1xuICAgIGNvbnN0IGxpbmtQcm9ncmFtID0gdGhpcy5jb21tb25TZXJ2aWNlLnRyYW5zZm9ybVByb2dyYW1EYXRhKFxuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zLFxuICAgICAgdGhpcy5saW5rUHJvZ3JhbT8ucHJvZ3JhbT8ubGlua2VkXG4gICAgKTtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgbmFtZTogcG9saWN5LnBvbGljeU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcG9saWN5LnBvbGljeU5vdGVzLFxuICAgICAgY2F0ZWdvcnlJZDogdGhpcy5yZXR1cm5JZHMocG9saWN5LnNlbGVjdGVkQ2F0ZWdvcmllcywgJ2lkJylbMF0sXG4gICAgICBlZmZlY3RpdmVEYXRlOiBtb21lbnQoc3RhcnREYXRlKS5mb3JtYXQoJ2RkZCBNTU0gREQgWVlZWScpLFxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJzOiB0aGlzLnBvbGljeUZvcm0/LmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVyc1xuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZFJDcywgJ3JjaWQnKVxuICAgICAgICA6ICcnLFxuICAgIH07XG4gICAgLy8gdGhpcy5uYXZpZ2F0ZVRvV29ya3Jvb20ocGF5bG9hZCk7XG4gICAgaWYgKHRoaXMubW9kZSA9PSAnQ1JFQVRFJykge1xuICAgICAgdGhpcy5wb2xpY3lTZXJ2aWNlLnN1Ym1pdFBvbGljeShwYXlsb2FkKS5zdWJzY3JpYmUoXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMucG9saWN5SWQgPSByZXMuZGF0YS5wb2xpY3kuaWQ7XG4gICAgICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhPy5maWxlTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5saW5rRG9jdW1lbnRXaXRoUG9saWN5KHRoaXMuY29udmVydEZpbGVEYXRhKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZUlkKSB7XG4gICAgICAgICAgICB0aGlzLm9uVGVtcGxhdGVTZWxlY3QoW3sgX2lkOiB0aGlzLnRlbXBsYXRlSWQgfV0sIHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvV29ya3Jvb20ocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXG4gICAgICAgICAgICAnYWxlcnQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZSA9PSAnRURJVCcpIHtcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS51cGRhdGVQb2xpY3kocGF5bG9hZCwgdGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wb2xpY3lJZCA9IHJlcy5faWQ7XG5cbiAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTZW5kRm9yQXR0ZXN0YXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgICAgICdUaGUgcG9saWN5IGhhcyBiZWVuIHNlbnQgZm9yIGF0dGVzdGF0aW9uJyxcbiAgICAgICAgICAgICAgICAnc3VjY2VzcydcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnVGhlIHBvbGljeSBoYXMgYmVlbiB1cGRhdGVkJywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHVybCA9XG4gICAgICAgICAgICAgIHRoaXMuYmFzZVVSTCArICcvYWxsL3BvbGljeS93b3Jrcm9vbT9pZD0nICsgdGhpcy5wb2xpY3lJZDtcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0cnVlKTtcbiAgICAgICAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3BvbGljeS93b3Jrcm9vbSddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiB0aGlzLnBvbGljeUlkIH0sIHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcbiAgICAgICAgICAgICdhbGVydCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlVG9Xb3Jrcm9vbShwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5pZnJhbWVTZXJ2aWNlLmdldENsb3NlV2Vidmlld01lc3NhZ2UoXG4gICAgICBQb3N0TWVzc2FnZUV2ZW50LlBPTElDWV9DUkVBVEVELFxuICAgICAgcGF5bG9hZFxuICAgICk7XG4gICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnBvc3RNZXNzYWdlKG1lc3NhZ2UpO1xuICB9XG5cbiAgbGlua0RvY3VtZW50V2l0aFBvbGljeShkb2N1bWVudDogYW55KSB7XG4gICAgbGV0IHVybDogc3RyaW5nID0gJyc7XG4gICAgaWYgKFxuICAgICAgZG9jdW1lbnQuZmlsZU5hbWUgJiZcbiAgICAgIChkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAncGRmJyB8fFxuICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJyB8fFxuICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnZG9jeCcgfHxcbiAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ0RPQ1gnKVxuICAgICkge1xuICAgICAgdGhpcy5wb2xpY3lTZXJ2aWNlXG4gICAgICAgIC5leHRyYWN0RmlsZShkb2N1bWVudC5maWxlRXh0ZW5zaW9uLCBkb2N1bWVudC5maWxlUGF0aCwgdGhpcy5wb2xpY3lJZClcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgJiYgdGhpcy5wb2xpY3lJZCkge1xuICAgICAgICAgICAgICBpZiAocmVzLm1lc3NhZ2UgPT09ICdkb25lJyB8fCByZXMuY29udGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ2RvY3gnIHx8XG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnRE9DWCdcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHVybCA9IHRoaXMuYmFzZVVSTCArIEFQSS5lZGl0UG9saWN5ICsgdGhpcy5wb2xpY3lJZDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ3BkZicgfHxcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdQREYnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLmJhc2VVUkwgKyBBUEkuZ29Ub1BvbGljeVdvcmtyb29tICsgdGhpcy5wb2xpY3lJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnJlZGlyZWN0SWZJbklmcmFtZSh1cmwsIHRydWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgICAgICAgIFwiT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXQncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT9cIixcbiAgICAgICAgICAgICAgJ2FsZXJ0J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgIFwiT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLiBMZXQncyBnaXZlIGl0IGFub3RoZXIgdHJ5LCBzaGFsbCB3ZT9cIixcbiAgICAgICAgJ2FsZXJ0J1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogb3BlbnMgdGhlIGRhdGUgcGlja2VyIG9uIHBvbGljeSBmb3JtXG4gICAqL1xuICBvcGVuRGF0ZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8ub3BlbigpO1xuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xuICAgIC8vIHRoaXMuc2V0QWN0aXZlRmllbGRTZWxlY3RvcignSVNTVUVfREFURV9USU1FJywgJ0lTU1VFX0RBVEVfVElNRScpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNsb3NlcyB0aGUgZGF0ZSBwaWNrZXIgZnJvbSBwb2xpY3kgZm9ybVxuICAgKi9cbiAgY2xvc2VEYXRlUGlja2VyKGV2dDogYW55KSB7XG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xuXG4gICAgaWYgKCFldnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2dD8uZGF0ZT8uJGQpIHtcbiAgICAgIGxldCBtb250aEFycmF5ID0gW1xuICAgICAgICAnSmFuJyxcbiAgICAgICAgJ0ZlYicsXG4gICAgICAgICdNYXInLFxuICAgICAgICAnQXByJyxcbiAgICAgICAgJ0p1bicsXG4gICAgICAgICdKdWwnLFxuICAgICAgICAnQXVnJyxcbiAgICAgICAgJ1NlcCcsXG4gICAgICAgICdPY3QnLFxuICAgICAgICAnTm92JyxcbiAgICAgICAgJ0RlYycsXG4gICAgICBdO1xuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy4kZCkuZ2V0RGF0ZSgpO1xuICAgICAgY29uc3QgbW9udGhWYWx1ZSA9IG1vbnRoQXJyYXlbbmV3IERhdGUoZXZ0Py5kYXRlPy4kZCkuZ2V0TW9udGgoKV07XG4gICAgICBjb25zdCB5ZWFyVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/LiRkKS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgZGF0ZVN0ciA9IGAke2RhdGVWYWx1ZX0gJHttb250aFZhbHVlfSAke3llYXJWYWx1ZX1gO1xuICAgIH1cbiAgICBpZiAoZXZ0Py5kYXRlPy4kZCkge1xuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeUR1ZURhdGUgPSBldnQ/LmRhdGU/LiRkO1xuICAgIH1cbiAgICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcbiAgfVxuICBlZGl0UG9saWN5RnJvbURvY3VtZW50cygpIHtcbiAgICB0aGlzLm1vZGUgPSAnRURJVCc7XG4gICAgdGhpcy5zaGlmdFRvRWRpdE1vZGUuZW1pdCgpO1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLnNob3dDcmVhdGVEb2N1bWVudHMgPSBmYWxzZTtcbiAgICB0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLmVkaXRQb2xpY3koKTtcbiAgfVxuXG4gIGNoZWNrRm9yQ3JlYXRlRG9jdW1lbnRzKCkge1xuICAgIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2hvd0NyZWF0ZURvY3VtZW50cycpO1xuICAgIHRoaXMubmF2aWdhdGVUb0RvY3VtZW50c1NlY3Rpb24gPSBkYXRhID09PSAndHJ1ZScgPyB0cnVlIDogZmFsc2U7XG4gICAgaWYgKHRoaXMubmF2aWdhdGVUb0RvY3VtZW50c1NlY3Rpb24pIHtcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzaG93Q3JlYXRlRG9jdW1lbnRzJyk7XG4gICAgfVxuICB9XG5cbiAgZWRpdFBvbGljeSgpIHtcbiAgICB0aGlzLm1vZGUgPSAnRURJVCc7XG5cbiAgICBpZiAodGhpcy5wb2xpY3lJZCkge1xuICAgICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmVkaXRQb2xpY3kodGhpcy5wb2xpY3lJZCkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzWzBdO1xuICAgICAgICAgIGNvbnN0IGNhdGVnb3J5SWRzID0gZGF0YS5jYXRlZ29yeV9kZXRhaWxzX2Fyci5tYXAoXG4gICAgICAgICAgICAoaWQ6IGFueSkgPT4gaWQuY2F0T2JqSWRcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMucG9saWN5QXBwcm92YWxGbGFnID0gZGF0YS5wb2xpY3lBcHByb3ZhbEZsYWc7XG4gICAgICAgICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93SWRzID0gZGF0YT8uYXBwcm92YWxXb3JrZmxvd0RldGFpbHM/Lm1hcChcbiAgICAgICAgICAgICh3b3JrZmxvdzogYW55KSA9PiB3b3JrZmxvdz8uX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3cgPSBbXTtcbiAgICAgICAgICB0aGlzLmRlZmF1bHRFZGl0QXBwcm92ZXJzID0gZGF0YT8uYXBwcm92ZXJzO1xuICAgICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJXb3JrRmxvdyhjYXRlZ29yeUlkcywgZGF0YSk7XG4gICAgICAgICAgdGhpcy5nZXRMaW5rZWRQb2xpY2llcyhkYXRhPy5faWQpO1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVQb2xpY3lGb3JtKGRhdGEsIGNhdGVnb3J5SWRzKTtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGRhdGEpO1xuICAgICAgICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihkYXRhKTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUG9saWN5QWNjZXNzRGV0YWlscyhkYXRhKTtcbiAgICAgICAgICB0aGlzLmdldExpbmtQcm9ncmFtKHJlc1swXT8ucG9saWQpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZVBvbGljeUZvcm0oZGF0YTogYW55LCBjYXRlZ29yeUlkczogYW55KSB7XG4gICAgY29uc3QgcmV2aWV3ZXJGaWxlcyA9IGRhdGEuUmV2aWV3ZXJBdHRhY2htZW50cy5tYXAoKGZpbGU6IGFueSkgPT4ge1xuICAgICAgZmlsZS5maWxlbmFtZSA9IGZpbGUubmFtZTtcbiAgICAgIGZpbGUuZmlsZXBhdGggPSBmaWxlLmZpbGVfcGF0aDtcbiAgICAgIGZpbGUub3JpZ2luYWxfZmlsZW5hbWUgPSBmaWxlLm9yZ19uYW1lO1xuICAgICAgZmlsZS5maWxlX25hbWUgPSBmaWxlLm9yZ19uYW1lO1xuICAgICAgZmlsZS5saW5rU2V0ID0gJyc7XG4gICAgICBkZWxldGUgZmlsZS5uYW1lO1xuICAgICAgZGVsZXRlIGZpbGUuZmlsZV9wYXRoO1xuICAgICAgZGVsZXRlIGZpbGUub3JnX25hbWU7XG5cbiAgICAgIHJldHVybiBmaWxlO1xuICAgIH0pO1xuICAgIGNvbnN0IGF0dGVzdGF0aW9uRmlsZXMgPSBkYXRhLmFzc29jaWF0ZWRfZG9jdW1lbnRzLm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgIGVsZS5maWxlbmFtZSA9IGVsZS5uYW1lO1xuICAgICAgZWxlLmZpbGVwYXRoID0gZWxlLmZpbGVfcGF0aDtcbiAgICAgIGVsZS5vcmlnaW5hbF9maWxlbmFtZSA9IGVsZS5vcmlnaW5hbF9maWxlX25hbWU7XG4gICAgICBlbGUuZmlsZV9uYW1lID0gZWxlLm9yaWdpbmFsX2ZpbGVfbmFtZTtcbiAgICAgIGVsZS5saW5rU2V0ID0gZWxlLmlzTGlua1NldDtcbiAgICAgIGVsZS5vdGhlcnMgPSBlbGU/Lm90aGVyX3R5cGU7XG5cbiAgICAgIGRlbGV0ZSBlbGUubmFtZTtcbiAgICAgIGRlbGV0ZSBlbGUuZmlsZV9wYXRoO1xuICAgICAgZGVsZXRlIGVsZS5vcmlnaW5hbF9maWxlX25hbWU7XG4gICAgICBkZWxldGUgZWxlLmlzTGlua1NldDtcbiAgICAgIGRlbGV0ZSBlbGU/Lm90aGVyX3R5cGU7XG4gICAgICByZXR1cm4gZWxlO1xuICAgIH0pO1xuICAgIGNvbnN0IGdyb3VwX2VtcGxveWVlSWRzID0gZGF0YS5ncm91cF9lbXBsb3llZU5hbWVzLm1hcChcbiAgICAgIChpZDogYW55KSA9PiBpZD8uZW1wbG95ZWVfaWRcbiAgICApO1xuICAgIGNvbnN0IGdyb3VwX0lkcyA9IGRhdGE/LnVzZXJncm91cF9pZHM/Lm1hcCgoaWQ6IGFueSkgPT4gaWQpID8/IFtdO1xuXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0LFxuICAgICAgY2F0ZWdvcnlJZHMsXG4gICAgICAnX2lkJ1xuICAgICk7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9pZCA9IGRhdGE/LnBvbGljeV9pZDtcbiAgICAodGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUgPSBkYXRhLnBvbGljeV9uYW1lKSxcbiAgICAgICh0aGlzLnBvbGljeUZvcm0ucG9saWN5Tm90ZXMgPSBkYXRhLm5vdGVzKSxcbiAgICAgICh0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncyA9IGRhdGEuY3VzdG9tX3RhZ3MgPyBkYXRhLmN1c3RvbV90YWdzIDogW10pO1xuXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXNzaWduZWVzID1cbiAgICAgIGdyb3VwX2VtcGxveWVlSWRzLmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5hc3NpZ25lZXNMaXN0LCBncm91cF9lbXBsb3llZUlkcywgJ215X21lbWJlcl9pZCcpXG4gICAgICAgIDogW107IC8vZG91YnQgaW4gbmFtZVxuXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZSA9XG4gICAgICBncm91cF9JZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsIGdyb3VwX0lkcywgJ19pZCcpXG4gICAgICAgIDogW107XG5cbiAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MgPSBkYXRhLmVudGl0aWVzXG4gICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLnJjTGlzdCwgZGF0YS5lbnRpdGllcy5zcGxpdCgnLCcpLCAnaXRlbV9pZCcpXG4gICAgICA6IFtdO1xuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCA9IGRhdGEuQ0NGYWlsRW1haWxcbiAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMub3ZlcnNlZXJzTGlzdCwgZGF0YS5DQ0ZhaWxFbWFpbCwgJ2VtcGxveWVlX2VtYWlsJylcbiAgICAgIDogW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsR3JvdXAgPVxuICAgICAgZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXG4gICAgICAgICAgICBkYXRhPy5jY19mYWlsX3VzZXJncm91cF9pZHMsXG4gICAgICAgICAgICAnX2lkJ1xuICAgICAgICAgIClcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbCA9IGRhdGEuQ0NFbWFpbFxuICAgICAgPyB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxuICAgICAgICAgIGRhdGEuQ0NFbWFpbC5zcGxpdCgnLCcpLFxuICAgICAgICAgICdlbXBsb3llZV9lbWFpbCdcbiAgICAgICAgKVxuICAgICAgOiBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NHcm91cEVtYWlsID1cbiAgICAgIGRhdGE/LmNjX3VzZXJncm91cF9pZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsIGRhdGE/LmNjX3VzZXJncm91cF9pZHMsICdfaWQnKVxuICAgICAgICA6IFtdO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hdmFpbGFibGVPblBvcnRhbCA9IGRhdGEuZW5hYmxlUG9ydGFsID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9ucyA9IGRhdGEuZW5hYmxlU3VnZ2VzdGlvbiA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLnBvbGljeUZvcm0ucmVxdWlyZXNTaWduYXR1cmVGb3JBdHRlc3RhdGlvbiA9IGRhdGEuaXNfc2lnbmF0dXJlX3JlcXVpcmVkXG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2U7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJpc2tSYXRpbmcgPSBkYXRhLnJpc2tfY2xhc3MgPyBOdW1iZXIoZGF0YS5yaXNrX2NsYXNzKSA6IDE7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFzc29jaWF0ZWREb2N1bWVudHMgPSBkYXRhLmFzc29jaWF0ZWRfZG9jdW1lbnRzXG4gICAgICA/IHtcbiAgICAgICAgICBmb3JtYXRGaWxlczogYXR0ZXN0YXRpb25GaWxlcyxcbiAgICAgICAgfVxuICAgICAgOiB7IGZvcm1hdEZpbGVzOiBbXSB9O1xuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlID0gZGF0YS5zdGFydERhdGVcbiAgICAgID8gbW9tZW50KGRhdGEuc3RhcnREYXRlKVxuICAgICAgOiBtb21lbnQoKTtcbiAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPSBkYXRhLmNoZWNrcG9pbnRzXG4gICAgICA/IGRhdGEuY2hlY2twb2ludHNcbiAgICAgIDogW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLnRvdGFsUXVlc3Rpb24gPSBkYXRhLnRvdGFsX21hcmtzID8gZGF0YS50b3RhbF9tYXJrcyA6IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnBhc3NpbmdNYXJrcyA9IGRhdGEucGFzc19tYXJrcyA/IGRhdGEucGFzc19tYXJrcyA6IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzID0gZGF0YS5SZXZpZXdlckF0dGFjaG1lbnRzXG4gICAgICA/IHtcbiAgICAgICAgICBmb3JtYXRGaWxlczogcmV2aWV3ZXJGaWxlcyxcbiAgICAgICAgICBmb3JtYXRMaW5rczogZGF0YS5SZXZpZXdlckxpbmtzLFxuICAgICAgICB9XG4gICAgICA6IHsgZm9ybWF0RmlsZXM6IFtdLCBmb3JtYXRMaW5rczogW10gfTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzID1cbiAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJDcy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMgPSBkYXRhLlJldmlld2VyTWVtYmVySWQgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZENoZWNrcG9pbnRzID1cbiAgICAgIHRoaXMucG9saWN5Rm9ybS5jaGVja3BvaW50RGV0YWlscy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRPdmVyc2VlcnMgPVxuICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbD8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0VtYWlsPy5sZW5ndGggPiAwIHx8XG4gICAgICB0aGlzLnBvbGljeUZvcm0/LkNDRmFpbEVtYWlsR3JvdXA/Lmxlbmd0aCA+IDAgfHxcbiAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NHcm91cEVtYWlsPy5sZW5ndGggPiAwXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID1cbiAgICAgIGRhdGEuYXNzb2NpYXRlZF9kb2N1bWVudHMubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLmNjRW1haWxPYmpJZHMgPVxuICAgICAgZGF0YT8uY2NfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMCA/IGRhdGE/LmNjX3VzZXJncm91cF9pZHMgOiBbXTtcbiAgICB0aGlzLmNjRmFpbEdyb3VwT2JqSWRzID1cbiAgICAgIGRhdGE/LmNjX2ZhaWxfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMFxuICAgICAgICA/IGRhdGE/LmNjX2ZhaWxfdXNlcmdyb3VwX2lkc1xuICAgICAgICA6IFtdO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3Nlc3NtZW50ID0gZGF0YT8uYXNzZXNzbWVudCA/PyBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua0Fzc2Vzc21lbnQgPSBkYXRhPy5hc3Nlc3NtZW50Py5sZW5ndGg7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZFZlcnNpb24gPSBkYXRhPy5wb2xpY3lfdmVyc2lvbiA/IHRydWUgOiBmYWxzZTtcbiAgICAvLyB0aGlzLmNoZWNrRm9yQ3JlYXRlRG9jdW1lbnRzKCk7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uID0gZGF0YS5wb2xpY3lfdmVyc2lvbjtcbiAgICB0aGlzLnBvbGljeUZvcm0ucHJvZ3JhbVNlbGVjdGVkVmFsdWVzLnByb2dyYW0gPVxuICAgICAgZGF0YT8ucHJvZ3JhbUNhdERldGFpbHMgJiYgZGF0YT8ucHJvZ3JhbUNhdERldGFpbHM/Lmxlbmd0aFxuICAgICAgICA/IGRhdGE/LnByb2dyYW1DYXREZXRhaWxzWzBdXG4gICAgICAgIDoge307XG4gICAgdGhpcy5zZWxlY3RlZExpbmtQcm9ncmFtID1cbiAgICAgIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzICYmIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzPy5sZW5ndGhcbiAgICAgICAgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGE/LnByb2dyYW1DYXREZXRhaWxzWzBdKSlcbiAgICAgICAgOiB7fTtcbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICB9XG4gIGNoYW5nZU5hbWUoZXZlbnQ6IHN0cmluZykge1xuICAgIGxldCB0ZXh0ID0gZXZlbnQ7XG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPCguKj8pPi9naSwgJycpO1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgdHlwZVNlbGVjdGVkKGV2ZW50OiBib29sZWFuKSB7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZFJldmlld2VycyA9IGV2ZW50O1xuICB9XG4gIG9uVmVyc2lvbihldmVudDogYW55KSB7XG4gICAgY29uc3QgcmVnZXhNYXRjaCA9IG5ldyBSZWdFeHAoJ15bQS1aYS16MC05XFxcXC4tXSokJyk7XG4gICAgdGhpcy5pc1ZlcnNpb25WYWxpZCA9IHJlZ2V4TWF0Y2gudGVzdCh0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24pO1xuICAgIGlmICghdGhpcy5pc1ZlcnNpb25WYWxpZCkge1xuICAgICAgaWYgKHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvbj8ubGVuZ3RoID4gMjApIHtcbiAgICAgICAgdGhpcy52ZXJzaW9uRXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAnWW91ciBpbnB1dCBpcyBpbnZhbGlkLiBUaGUgdmVyc2lvbiBmaWVsZCBjYW4gb25seSBpbmNsdWRlIG51bWJlcnMsIGFscGhhYmV0cywgaHlwaGVuIG9yIGRvdHMuIFRoZSBtYXhpbXVtIGNoYXJhY3RlciBsaW1pdCBpcyAyMCBjaGFyYWN0ZXJzLic7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuaXNWZXJzaW9uVmFsaWQgJiZcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvbj8ubGVuZ3RoID4gMjBcbiAgICApIHtcbiAgICAgIHRoaXMudmVyc2lvbkVycm9yTWVzc2FnZSA9XG4gICAgICAgICdZb3VyIGlucHV0IGlzIGludmFsaWQuIFRoZSBtYXhpbXVtIGNoYXJhY3RlciBsaW1pdCBpcyAyMCBjaGFyYWN0ZXJzLic7XG4gICAgfVxuICB9XG5cbiAgLy90aGlzIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIHdoZW4gd2UgY2xpY2sgb24gZGl2IHNlbGVjdFxuICBjbGlja0FwcHJvdmFsV29ya2Zsb3coZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSBldmVudDtcbiAgICB0aGlzLmNyZWF0ZUFwcHJvdmFsQ2xpY2sgPSBmYWxzZTtcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xuICB9XG5cbiAgbGlzdENhbmNlbENsaWNrZWQoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gZmFsc2U7XG4gICAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICAgICAgLy8gdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdGVkQXBwcm92YWxXb3JrZmxvdyhldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93ID0gW2V2ZW50XTtcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dJZHMgPSBldmVudD8uX2lkID8gW2V2ZW50Py5faWRdIDogW107XG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gZmFsc2U7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW2V2ZW50XTtcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICB9XG5cbiAgdXBkYXRlZFByb2dyYW1EZXRhaWxzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ubGlua1Byb2dyYW0gPSBldmVudD8ubGlua1Byb2dyYW07XG4gICAgdGhpcy5wb2xpY3lGb3JtLnByb2dyYW1TZWxlY3RlZFZhbHVlcyA9IGV2ZW50Py5zZWxlY3RlZFZhbHVlcztcbiAgICB0aGlzLnBvbGljeUZvcm0uYnVzaW5lc3NDeWNsZSA9IGV2ZW50Py5idXNpbmVzc0N5Y2xlO1xuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XG4gIH1cblxuICBvbkFzc2Vzc21lbnRTZWxlY3QoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3Nlc3NtZW50ID0gW2V2ZW50XTtcbiAgfVxuICBnZXRBc3Nlc3NtZW50RGV0YWlscyhhc3Nlc3NtZW50RGV0YWlsczogYW55LCB0eXBlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgICAgIC5nZXRBc3Nlc3NtZW50RGV0YWlsc0J5SUQoYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBjYXRlZ29yeURldGFpbHMgPSByZXNbMF0uY2F0ZWdvcnkuZmluZChcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLl9pZCA9PSBhc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeV9pZFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudCA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGFzc2Vzc21lbnREZXRhaWxzLmNhdGVnb3J5X2lkLFxuICAgICAgICAgICAgICBhc3Nlc3NtZW50X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgICAgICBhc3Nlc3NtZW50RGV0YWlsczoge1xuICAgICAgICAgICAgICAgIGlkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgICAgICAgIGFzc2Vzc21lbnRfbmFtZTogcmVzWzBdLmFzc2Vzc21lbnRfbmFtZSxcbiAgICAgICAgICAgICAgICBxdWVzdGlvbnM6IHJlc1swXS5xdWVzdGlvbnNDb3VudCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfZGV0YWlsczogY2F0ZWdvcnlEZXRhaWxzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldE93bmVyc09uTG9hZCgpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X293bmVycyA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLFxuICAgICAgW3RoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKV0sXG4gICAgICAnbWVtYmVyX2lkJ1xuICAgICk7XG4gIH1cblxuICBhcHByb3ZhbFdvcmtmbG93QVBJQ2FsbChldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBjb25zdCBvYmplY3RJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyxcbiAgICAgICAgJ19pZCdcbiAgICAgICk7XG4gICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3cob2JqZWN0SWRzKTtcbiAgICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY29udmVydEFwcHJvdmFsV29ya2Zsb3coYXBwcm92ZXJMaXN0OiBhbnkpIHtcbiAgICBsZXQgcmV0dXJuSnNvbjogYW55ID0ge307XG4gICAgY29uc3QgbW9kaWZpZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhcHByb3Zlckxpc3QpKTtcbiAgICBtb2RpZmllZERhdGE/LmZvckVhY2goKHdvcmtmbG93OiBhbnkpID0+IHtcbiAgICAgIHdvcmtmbG93Py5hcHByb3ZhbF93b3JrZmxvdz8uZm9yRWFjaCgoYXBwcm92ZXI6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBsZXQgaSA9IGluZGV4ICsgMTtcbiAgICAgICAgcmV0dXJuSnNvblsnbGV2ZWwnICsgaV0gPSBhcHByb3ZlcjtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiByZXR1cm5Kc29uO1xuICB9XG5cbiAgZGVsZXRlTGV2ZWwoaW5kZXg6IGFueSkge1xuICAgIC8vIEFwcHJvdmVyIExldmVsIGRlbGV0ZVxuICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXT8uYXBwcm92YWxfd29ya2Zsb3cuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBmb3IgKFxuICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgIGkgPCB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0/LmFwcHJvdmFsX3dvcmtmbG93Lmxlbmd0aDtcbiAgICAgIGkrK1xuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0uYXBwcm92YWxfd29ya2Zsb3dbaW5kZXhdWydsZXZlbDEnXSA9PT1cbiAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdPy5hcHByb3ZhbF93b3JrZmxvd1tpbmRleF1bJ2FsaWFzX25hbWUnXVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXS5hcHByb3ZhbF93b3JrZmxvd1tpbmRleF1bXG4gICAgICAgICAgJ2FsaWFzX25hbWUnXG4gICAgICAgIF0gPSBgTGV2ZWwgJHtpICsgMX1gO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93W2luZGV4XVsnbGV2ZWwxJ10gPSBgTGV2ZWwgJHtcbiAgICAgICAgaSArIDFcbiAgICAgIH1gO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRXb3JrZmxvdyhldmVudDogYW55KSB7XG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gdHJ1ZTtcbiAgICB0aGlzLmVkaXRBcHByb3ZhbFdvcmtmbG93ID0gZXZlbnQ7XG4gICAgdGhpcy5jcmVhdGVBcHByb3ZhbENsaWNrID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcbiAgfVxuXG4gIC8vRnVuY3Rpb24gcmVzcG9uc2libGUgd2hlbiB3ZSBjbGljayBvbiBDUkVBVEUgQSBORVcgQVBQUk9WQUwgV09SS0ZMT1dcbiAgY3JlYXRlQXBwcm92YWxXb3JrZmxvdygpIHtcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSB0cnVlO1xuICAgIHRoaXMuY3JlYXRlQXBwcm92YWxDbGljayA9IHRydWU7XG4gIH1cblxuICBjbG9zZUNsaWNrZWRDcmVhdGVGb3JtKCkge1xuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IGZhbHNlO1xuICAgIHRoaXMuZGlzYWJsZVNlbGVjdG9yKCk7XG4gIH1cblxuICBlZGl0TGV2ZWxDbGlja2VkKGVkaXRMZXZlbDogYW55LCBpbmRleDogYW55KSB7XG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gdHJ1ZTtcbiAgICB0aGlzLmVkaXRXb3JrZmxvd0xldmVsID0ge1xuICAgICAgZWRpdExldmVsOiBlZGl0TGV2ZWwsXG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgfTtcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xuICB9XG5cbiAgc2V0QWNjZXNzRmllbGQoZXZlbnQ6IG51bWJlcikge1xuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX3R5cGUgPSBldmVudDtcbiAgICBpZiAoZXZlbnQgPT0gMCkge1xuICAgICAgLy8gdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3Nfb3duZXJzID0gdGhpcy51c2Vyc0FjY2Vzc0xpc3Q7XG4gICAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QoJ3BvbGljeUFjY2VzcycsIHtcbiAgICAgICAgdXNlcnM6IHRoaXMudXNlcnNBY2Nlc3NMaXN0LFxuICAgICAgICBncm91cHM6IFtdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VXNlcnNBY2Nlc3NMaXN0QnlDYXRlZ29yeShjYXRlZ29yeURldGFpbHM6IGFueSkge1xuICAgIGxldCB1bmlxdWVVc2VyczogYW55ID0gW107XG4gICAgbGV0IHVuaXF1ZUdyb3Vwc0lkOiBhbnkgPSBbXTtcbiAgICB1bmlxdWVVc2VycyA9IHVuaXFCeShcbiAgICAgIGNhdGVnb3J5RGV0YWlscz8uYWxsX21hbmFnZXJzPy5jb25jYXQoXG4gICAgICAgIGNhdGVnb3J5RGV0YWlscz8uYWxsX2FwcHJvdmVycyxcbiAgICAgICAgY2F0ZWdvcnlEZXRhaWxzPy5hbGxfYXV0aG9yc1xuICAgICAgKSxcbiAgICAgICdtZW1iZXJfaWQnXG4gICAgKTtcbiAgICB0aGlzLnVzZXJzQWNjZXNzTGlzdCA9IHVuaXF1ZVVzZXJzO1xuICAgIHRoaXMudXNlcnNBY2Nlc3NMaXN0SWRzID0gdGhpcy5yZXR1cm5JZHModGhpcy51c2Vyc0FjY2Vzc0xpc3QsICdtZW1iZXJfaWQnKTtcblxuICAgIHVuaXF1ZUdyb3Vwc0lkID0gW1xuICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgY2F0ZWdvcnlEZXRhaWxzPy5hdXRob3JfdXNlcmdyb3VwX2lkcz8uY29uY2F0KFxuICAgICAgICAgIGNhdGVnb3J5RGV0YWlscz8ub3duZXJfdXNlcmdyb3VwX2lkc1xuICAgICAgICApXG4gICAgICApLFxuICAgIF07XG4gICAgdGhpcy5ncm91cHNBY2Nlc3NMaXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXG4gICAgICB1bmlxdWVHcm91cHNJZCxcbiAgICAgICdfaWQnXG4gICAgKTtcbiAgICB0aGlzLmdyb3Vwc0FjY2Vzc0xpc3RJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgIHRoaXMuZ3JvdXBzQWNjZXNzTGlzdCxcbiAgICAgICdncm91cF9pZCdcbiAgICApO1xuICB9XG5cbiAgcG9wdWxhdGVQb2xpY3lBY2Nlc3NEZXRhaWxzKHBvbGljeURldGFpbHM6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX3R5cGUgPSBwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX3R5cGU7XG4gICAgaWYgKHBvbGljeURldGFpbHM/LnBvbGljeV9hY2Nlc3Nfb3duZXJzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgdGhpcy51c2Vyc0xpc3QsXG4gICAgICAgIHBvbGljeURldGFpbHM/LnBvbGljeV9hY2Nlc3Nfb3duZXJzLFxuICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHBvbGljeURldGFpbHM/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX2dyb3VwcyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXG4gICAgICAgIHBvbGljeURldGFpbHM/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzLFxuICAgICAgICAnX2lkJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXNldFBvbGljeUFjY2Vzc0RldGFpbHMoKSB7XG4gICAgaWYgKHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX3R5cGUgPT0gMCkge1xuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3Nfb3duZXJzID0gW107XG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19ncm91cHMgPSBbXTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVGcmVxdWVuY3koKSB7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzID0gJyc7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmZyZXF1ZW5jeV90ZXh0ID0gJyc7XG4gICAgdGhpcy5wb2xpY3lGb3JtLm1hcmtfZmFpbGVkX2FmdGVyID0gMDtcbiAgICB0aGlzLnBvbGljeUZvcm0ucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlID0gMDtcbiAgICB0aGlzLnBvbGljeUZvcm0uZmFpbGVkX3RpbWUgPSAnJztcbiAgICB0aGlzLnBvbGljeUZvcm0uYXNzaWduZWVfc3RhcnRfZGF0ZSA9ICcnO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gJyc7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZFRpbWUgPSAnJztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMud2luZG93ID0gMDtcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZmFpbGVkID0gMDtcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gJyc7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLnNlbGVjdGVkUmVwb3J0ID0gMDtcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZGF0ZU9mTW9kaWZpZWQgPSAwO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMDtcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICdIb3cgb2Z0ZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIGF0dGVzdGVkPyc7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIGRvY3VtZW50Q2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGVQaWNrZXJPYmplY3QgPSB7XG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICBjbGFzczogJ2VmZmVjdGl2ZS1kYXRlJyxcbiAgICAgIHBvcHVwOiB0aGlzLmRhdGVQaWNrZXJQb3BVcCxcbiAgICAgIGNvbXBvbmVudDogdGhpcy5kYXRlUGlja2VyLFxuICAgICAgb3ZlcmxheTogdGhpcy5kYXRlUGlja2VyT3ZlcmxheSxcbiAgICB9O1xuICAgIHRoaXMuY29tbW9uU2VydmljZS5oYW5kbGVEb2N1bWVudENsaWNrKGRhdGVQaWNrZXJPYmplY3QpO1xuICB9XG5cbiAgb25UZW1wbGF0ZVNlbGVjdChldmVudDogYW55LCBpc1ByZXNlbGVjdGVkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAoZXZlbnQ/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5pc1RlbXBsYXRlQ2xvc2VkID0gZmFsc2U7XG4gICAgICB0aGlzLnRlbXBsYXRlVmlldyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xuXG4gICAgY29uc3QgdW5hbWUgPSB0aGlzLnVzZXJJbmZvID8gdGhpcy51c2VySW5mby5uYW1lIDogJyc7XG4gICAgY29uc3QgdWlkID0gdGhpcy5tZW1iZXJfb2JqX2lkO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZS50cmltKCk7XG4gICAgY29uc3QgaWQgPSB0aGlzLnBvbGljeUlkO1xuICAgIHRoaXMudGVtcGxhdGVJZCA9IGV2ZW50WzBdPy5faWQ7XG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlXG4gICAgICAuc2F2ZVBvbGljeURldGFpbHModW5hbWUsIHVpZCwgaWQsIG5hbWUsICcnLCAwKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVWaWV3ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2V0TmF2aWdhdGlvblVybCgpO1xuICAgICAgICBpZiAoaXNQcmVzZWxlY3RlZCkge1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1RlbXBsYXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgc2V0TmF2aWdhdGlvblVybCgpIHtcbiAgICBjb25zdCBiYXNVcmwgPVxuICAgICAgdGhpcy5iYXNlVVJMICtcbiAgICAgICcvYWxsL3BvbGljeS9lZGl0LXBvbGljeT9pZD0nICtcbiAgICAgIHRoaXMucG9saWN5SWQgK1xuICAgICAgJyZ0ZW1wbGF0ZUlkPScgK1xuICAgICAgdGhpcy50ZW1wbGF0ZUlkO1xuICAgIHRoaXMudGVtcGxhdGVVcmwgPSBiYXNVcmw7XG4gIH1cblxuICBuYXZpZ2F0ZVRvVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnJlZGlyZWN0SWZJbklmcmFtZSh0aGlzLnRlbXBsYXRlVXJsLCB0cnVlKTtcbiAgfVxuXG4gIG9uSXRlbXNTZWxlY3RlZENoYW5nZShpdGVtczogTGlzdEl0ZW1bXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtcyA9IGl0ZW1zO1xuICAgIHRoaXMuYWxsUHJvZ2FtU2VsZWN0ZWQgPSAoW10gYXMgYW55KS5jb25jYXQoLi4uT2JqZWN0LnZhbHVlcyhpdGVtcykpO1xuICB9XG5cbiAgb25Qb2xpY3lDYXRlZ29yeVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkUG9saWN5Q2F0ZWdvcnkgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUG9saWN5Q2F0ZWdvcnkucHVzaChldmVudCk7XG4gIH1cblxuICBzZWxlY3RDYXRlZ29yeSgpOiB2b2lkIHtcbiAgICB0aGlzLmFsbFByb2dhbVNlbGVjdGVkID0gKFtdIGFzIGFueSkuY29uY2F0KFxuICAgICAgLi4uT2JqZWN0LnZhbHVlcyh0aGlzLnNlbGVjdGVkUHJvZ3JhbXMpXG4gICAgKTtcbiAgfVxuXG4gIHJlbW92ZVByb2dyYW0ocHJvZ3JhbTogYW55KTogdm9pZCB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRQcm9ncmFtcyk7XG4gICAga2V5cy5mb3JFYWNoKChrZXk6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNba2V5XS5maW5kSW5kZXgoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnBpZCA9PT0gcHJvZ3JhbT8ucGlkXG4gICAgICApO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNba2V5XS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TGlua1Byb2dyYW0ocG9saWN5SWQ6IHN0cmluZykge1xuICAgIHRoaXMucG9saWN5U2VydmljZS5nZXRMaW5rZWRQcm9ncmFtcyhwb2xpY3lJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5saW5rUHJvZ3JhbSA9IHJlcztcbiAgICB9KTtcbiAgfVxuXG5cbiAgZGVsZXRlU2VsZWN0ZWQoKXtcbiAgICB0aGlzLnNlbGVjdGVkUG9saWN5Q2F0ZWdvcnkgPSBbXTtcbiAgfVxufVxuIiwiPCEtLSA8cD53b3JrZmxvdy1wb2xpY3kgd29ya3MhPC9wPiAtLT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93Q3JlYXRlRG9jdW1lbnRzXCI+XG4gIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1wb2xpY3lcIj5cbiAgICA8IS0tIFBvbGljeSBOYW1lIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwicG9saWN5Rm9ybT8ucG9saWN5TmFtZVwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW3NyY109XCJBU1NFVFMud2hhdFwiXG4gICAgICAgICAgYWx0PVwibmFtZVwiXG4gICAgICAgICAgKm5nSWY9XCIhcG9saWN5Rm9ybT8ucG9saWN5TmFtZSB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5wb2xpY3lOYW1lICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxuICAgICAgICAgICAgUG9saWN5IE5hbWUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImFjdGl2ZVNlbGVjdG9yID0gJ25hbWUnXCJcbiAgICAgICAgICAgIChmb2N1c2luKT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLCB0cnVlKVwiXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0ucG9saWN5TmFtZSA9PSAnJyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCJcbiAgICAgICAgICAgIChmb2N1c291dCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgZmFsc2UpXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInBvbGljeUZvcm0ucG9saWN5TmFtZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwb2xpY3lGb3JtLnBvbGljeU5hbWUgPSBjaGFuZ2VOYW1lKCRldmVudClcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIHRoaXMgcG9saWN5XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeU5hbWUubGVuZ3RoICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgcG9saWN5Rm9ybS5wb2xpY3lOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgdHJ1ZSlcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiAhcG9saWN5Rm9ybS5wb2xpY3lOYW1lLnRyaW0oKVwiXG4gICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBQbGVhc2UgZW50ZXIgYSBuYW1lIGZvciB0aGlzIHBvbGljeS5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBvbGljeUZvcm0ucG9saWN5Tm90ZXNcIlxuICAgICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidGV4dC1hcmVhXCI+XG4gICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTUgdngtcC0yIHZ4LW0tMFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSBoZXJlLi4uXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwb2xpY3lGb3JtLnBvbGljeU5vdGVzXCJcbiAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8IS0tIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICBbKG5nVmFsdWUpXT1cInBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWxcIlxuICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwiYXZhaWxhYmlsaXR5T25Qb3J0YWwoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgRG8geW91IHdhbnQgdGhpcyBwb2xpY3kgdG8gYmUgYXZhaWxhYmxlIG9uIHRoZSBwb3J0YWw/XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ1RoZSBwb2xpY2llcyB0aGF0IHlvdSBpbnRlbmQgdG8gbWFrZSBhY2Nlc3NpYmxlIHRvIHRoZSBlbnRpcmUgb3JnYW5pemF0aW9uIGNhbiBiZSBhZGRlZCB0byB0aGUgcG9saWN5IHBvcnRhbC4gSXQgaXMgbGlrZSBhIHNoYXJlZCBjYXRhbG9nIG9mIGFsbCBhY3RpdmUgJiB1cGRhdGVkIHBvbGljaWVzIHRoYXQgYW55IGxvZ2dlZCBpbiB1c2VyIGNhbiByZWFkL2Rvd25sb2FkIGZvciByZWZlcmVuY2UuJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPiYjeGU5MzI7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWxcIlxuICAgICAgICAgICAgWyhuZ1ZhbHVlKV09XCJwb2xpY3lGb3JtLmFjY2VwdFN1Z2dlc3Rpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBBY2NlcHQgc3VnZ2VzdGlvbnNcbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAnSWYgZW5hYmxlZCwgdXNlcnMgY2FuIHByb3ZpZGUgaW1wcm92ZW1lbnQgc3VnZ2VzdGlvbnMgdG8gdGhlIHBvbGljaWVzIHRoYXQgYXJlIGxpc3RlZCBvbiB0aGUgUG9saWN5IFBvcnRhbC4nXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+JiN4ZTkzMjs8L2lcbiAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2g+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBQb2xpY3kgQ2F0ZWdvcnkgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkUG9saWN5Q2F0ZWdvcnlcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICAgIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLmNhc2VfY2F0ZWdvcnlcIlxuICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnY2F0ZWdvcnknXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5Qb2xpY3kgQ2F0ZWdvcnkgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID09IDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjYXRlZ29yeScsIHRydWUpXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgYSBjYXRlZ29yeSBmb3IgdGhpcyBwb2xpY3kuXCJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBjYXRlZ29yeSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/LnNsaWNlKDAsIDEpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdjYXRlZ29yeScsIGNhdGVnb3J5KVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNhdGVnb3J5Lm5hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3sgY2F0ZWdvcnkubmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhdGVnb3J5LnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGg+MVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5wbHVzXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoPjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8uc2xpY2UoMCwyKVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JyxjYXRlZ29yeSlcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2F0ZWdvcnkuaXRlbV9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJjYXRlZ29yeS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5J1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNjYXRlZ29yeSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgY2F0ZWdvcnkgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2NhdGVnb3J5JywgY2F0ZWdvcnkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBjYXRlZ29yeS5pdGVtX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCIgKm5nSWY9XCJwb2xpY3lGb3JtPy5jdXN0b21UYWdzPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFnIG9mIHBvbGljeUZvcm0/LmN1c3RvbVRhZ3NcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtbXQtMlwiPnt7IHRhZy50YWduYW1lIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFnLnZhbHVlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyB0YWcudGFnbmFtZSB9fVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBFZmZlY3RpdmUgRGF0ZSAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5hZGRFZmZlY3RpdmVEYXRlXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInRydWVcIj5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwidHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+RWZmZWN0aXZlIERhdGU8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXRpbWUtcGlja2VyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSBlZmZlY3RpdmUgZGF0ZSBvZiB0aGUgcG9saWN5LlwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZSB8IGRhdGUgOiAnZGQgTU1NIHl5eXknXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJlZmZlY3RpdmUtZGF0ZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cbiAgICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTsgY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwb2xpY3lGb3JtLnBvbGljeUR1ZURhdGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnNcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnICYmXG4gICAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA9PSAwIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAncmMnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5yZXNwb25zaWJpbGl0eV9jZW50ZXJcIlxuICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdyYydcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJlc3BvbnNpYmlsaXR5IENlbnRlcjwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA9PSAwXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCB0cnVlKVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKSB0aGF0IHRoaXMgcG9saWN5IHJlbGF0ZXMgdG8uXCJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmMgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/LnNsaWNlKDAsIDEpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjKVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJjLml0ZW1fbmFtZVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID57eyByYy5pdGVtX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJjUG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3M/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyYycsIHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YXBwLXBvcG92ZXIgI3JjUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmMgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRSQ3MgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLCByYylcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICB7eyByYy5pdGVtX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxhcHAtbGlzdC1jb250YWluZXJcbiAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2F0ZWdvcnknXCJcbiAgICBbaGVhZGluZ109XCInU2VsZWN0IGEgUG9saWN5IENhdGVnb3J5J1wiXG4gICAgKGNsb3NlKT1cImRpc2FibGVTZWxlY3RvcigpXCJcbiAgPlxuICAgIDxhcHAtcG9saWN5LWNhdGVnb3J5LWxpc3RcbiAgICAgIGJvZHlcbiAgICAgIChpdGVtc1NlbGVjdGVkQ2hhbmdlKT1cIm9uUG9saWN5Q2F0ZWdvcnlTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkUG9saWN5Q2F0ZWdvcnlcIlxuICAgICAgW3VybF09XCJwcm9ncmFtTGlzdFVybFwiXG4gICAgPjwvYXBwLXBvbGljeS1jYXRlZ29yeS1saXN0PlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC13LTEwMFwiIGZvb3Rlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXNpZGUgdngtZnMtMTIgdngtZC1mbGV4XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFBvbGljeUNhdGVnb3J5Py5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJwb2xpY3lDYXRlZ29yeUNvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJzZWxlY3RlZFBvbGljeUNhdGVnb3J5WzBdPy5uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHNlbGVjdGVkUG9saWN5Q2F0ZWdvcnlbMF0/Lm5hbWUgfX08L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm5hbWUgdngtZnMtMTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFBvbGljeSBDYXRlZ29yeSBTZWxlY3RlZFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXNpZGUgdngtZC1mbGV4XCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxCdG5cIiAoY2xpY2spPVwiZGlzYWJsZVNlbGVjdG9yKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwibmV4dEJ0blwiXG4gICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgZGlzYWJsZVNlbGVjdG9yKCk7XG4gICAgICAgICAgICBzZWxlY3RDYXRlZ29yeSgpO1xuICAgICAgICAgICAgc2F2ZVNlbGVjdGVkTGlzdCgnY2F0ZWdvcnknLCBzZWxlY3RlZFBvbGljeUNhdGVnb3J5KVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICBOZXh0IDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFlOzwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9hcHAtbGlzdC1jb250YWluZXI+XG5cbiAgPCEtLSA8YXBwLWNoZWNrYm94LWxpc3RcbiAgICBbY29uZmlnXT1cImNhdGVnb3J5Q29uZmlnXCJcbiAgICBbdHdvQ29sdW1uXT1cInRydWVcIlxuICAgIFtpdGVtc0xpc3RdPVwiY2F0ZWdvcnlMaXN0XCJcbiAgICBbc2VsZWN0ZWRJdGVtc109XCJwb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllc1wiXG4gICAgW2lkZW50aWZpZXJLZXldPVwiJ19pZCdcIlxuICAgIFtkaXNwbGF5S2V5XT1cIidpdGVtX25hbWUnXCJcbiAgICBbdG9vbHRpcEtleV09XCInaXRlbV9uYW1lJ1wiXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXG4gICAgKHNhdmVMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgKGNsb3NlTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gICAgW2xvYWRlZF09XCIhY2F0ZWdvcmllc0xpc3RMb2FkZWRcIlxuICA+XG4gIDwvYXBwLWNoZWNrYm94LWxpc3Q+IC0tPlxuXG4gIDxhcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0XG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1wiXG4gICAgW3Jlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RdPVwicmNMaXN0XCJcbiAgICBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNdPVwicG9saWN5Rm9ybS5zZWxlY3RlZFJDc1wiXG4gICAgW3JjSWRLZXldPVwiJ2l0ZW1faWQnXCJcbiAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdyYycsICRldmVudClcIlxuICAgIChjbG9zZVJjTGlzdCk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gICAgW2xvYWRlZF09XCJyY0xpc3RMb2FkZWRcIlxuICA+XG4gIDwvYXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdD5cbjwvbmctY29udGFpbmVyPlxuXG48YXBwLXNlbGVjdC10ZW1wbGF0ZS1saXN0XG4gICpuZ0lmPVwidGVtcGxhdGVWaWV3XCJcbiAgW3NlbGVjdGVkQ2F0ZWdvcnlJZF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXNcIlxuICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbiAgKG9uVGVtcGxhdGVTZWxlY3QpPVwib25UZW1wbGF0ZVNlbGVjdCgkZXZlbnQpXCJcbj48L2FwcC1zZWxlY3QtdGVtcGxhdGUtbGlzdD5cbiJdfQ==
|
|
1909
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXBvbGljeS93b3JrZmxvdy1wb2xpY3kuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcG9saWN5L3dvcmtmbG93LXBvbGljeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBVzNDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUtuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBS3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPN0QsTUFBTSxPQUFPLHVCQUF1QjtJQWlMbEMsWUFDVSxhQUE0QixFQUM1QixRQUF5QixFQUN6QixZQUEwQixFQUMxQixXQUF3QixF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QUFDO0lBQ25DLENBQUM7K0dBenRFVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix3ekJBbUJELFVBQVUsNkJDakU3QyxrcmxCQThoQkE7OzRGRGhmYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCO3lqQkFRckIsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0kscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNrQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ2IsY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFdUIsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBRTNCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBZ25FNUQsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAndmNvbXBseS1lZGl0b3InO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uQWxlcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpcm1hdGlvbi1hbGVydCc7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvbGljeUZvcm0gfSBmcm9tICcuLi93b3JrZmxvdy1pbnRlcmZhY2VzL2NyZWF0ZS1wb2xpY3ktZm9ybSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBQb2xpY3lTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcG9saWN5LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtYXRBbmRFdmlkZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvZm9ybWF0LWFuZC1ldmlkZW5jZS9mb3JtYXQtYW5kLWV2aWRlbmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXN0QXBpU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvbGluay1wcm9ncmFtL3Jlc3RhcGkuc2VydmljZSc7XG5pbXBvcnQgeyBERUZBVUxUXzI0SFIsIERFRkFVTFRfVElNRSB9IGZyb20gJy4uL2NvbnN0YW50cy90aW1lLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uVXNlclNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9vcmdhbml6YXRpb24tdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvb3JnYW5pemF0aW9uLWNvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBsaWFuY2VDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL2NvbXBsaWFuY2UtY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09OU1RBTlRTIH0gZnJvbSAnLi4vbGluay1yZWxhdGVkLXBvbGljaWVzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBMSU5LUyB9IGZyb20gJy4uL3dvcmtmbG93L3NoYXJlZC9jb25zdGFudHMvY2RuLWxpbmsuY29uc3RhbnQnO1xuaW1wb3J0IHsgSWZyYW1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2lmcmFtZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnRzJztcbmltcG9ydCB7IFBST0dSQU1fTElTVF9BUEkgfSBmcm9tICcuLi9jb25zdGFudHMvYXBpLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvcHJvZ3JhbS1saXN0L2ludGVyZmFjZXMvbGlzdC1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi9jb25zdGFudHMvYXBpLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBQb3N0TWVzc2FnZUV2ZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pZnJhbWUtdHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC13b3JrZmxvdy1wb2xpY3knLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctcG9saWN5LmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQb2xpY3lDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIENPTlNUQU5UUzogYW55ID0gQ09OU1RBTlRTO1xuICBMSU5LUzogYW55ID0gTElOS1M7XG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtb2RlID0gJ0NSRUFURSc7XG4gIEBJbnB1dCgpIHBvbGljeUlkID0gJyc7XG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25BbGVydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNoaWZ0VG9FZGl0TW9kZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgY29udmVydEZpbGVEYXRhOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgc2VsZWN0ZWRDYXRlZ29yeSA9ICcnO1xuICBASW5wdXQoKSBpc1NlbmRGb3JBdHRlc3RhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB0ZW1wbGF0ZUlkOiBzdHJpbmcgPSAnJztcblxuICBAVmlld0NoaWxkKCdmb3JtYXRFdmlkZW5jZScpIGZvcm1hdEV2aWRlbmNlITogRm9ybWF0QW5kRXZpZGVuY2VDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgZGF0ZVBpY2tlclBvcFVwITogRWxlbWVudFJlZjtcblxuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xuICAgIC8vIG1vZGU6ICdwcmltZScsXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgIGxpbms6IHRydWUsXG4gICAgcGxhY2Vob2xkZXI6ICdBZGQgYSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBwb2xpY3kuJyxcbiAgfTtcbiAgd29ya2Zsb3dUeXBlID0gJ1NFUVVFTlRJQUwnO1xuICBzY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xuICBuYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbiA9IGZhbHNlO1xuXG4gIGFjdGl2ZVNlbGVjdG9yID0gJyc7XG4gIHJjTGlzdDogYW55ID0gW107XG4gIHVzZXJzTGlzdDogYW55ID0gW107XG4gIGFsbEFwcHJvdmVyczogYW55ID0gW107XG4gIGFsbFJldmlld2VyczogYW55ID0gW107XG4gIGFzc2lnbmVlc0xpc3Q6IGFueSA9IFtdO1xuICBvd25lcmxpc3Q6IGFueSA9IFtdO1xuICByZXZpZXdlcnNMaXN0OiBhbnkgPSBbXTtcbiAgb3ZlcnNlZXJzTGlzdDogYW55ID0gW107XG4gIHJjTGlzdExvYWRlZCA9IGZhbHNlO1xuICB1c2Vyc0xpc3RMb2FkZWQgPSBmYWxzZTtcbiAgY2F0ZWdvcnlMaXN0OiBhbnkgPSBbXTtcbiAgZ3JvdXBzTGlzdDogYW55W10gPSBbXTtcbiAgd29ya0Zsb3dMaXN0OiBhbnlbXSA9IFtdO1xuICBhcHByb3ZlcldvcmtGbG93TGlzdDogYW55W10gPSBbXTtcbiAgc3VibWl0dGVkID0gZmFsc2U7XG4gIGNjRW1haWxPYmpJZHM6IGFueVtdID0gW107XG4gIGNjRmFpbEdyb3VwT2JqSWRzOiBhbnlbXSA9IFtdO1xuICB1c2Vyc0FjY2Vzc0xpc3Q6IGFueVtdID0gW107XG4gIHVzZXJzQWNjZXNzTGlzdElkczogYW55W10gPSBbXTtcbiAgZ3JvdXBzQWNjZXNzTGlzdElkczogYW55W10gPSBbXTtcbiAgZ3JvdXBzQWNjZXNzTGlzdDogYW55W10gPSBbXTtcbiAgU2VsZWN0ZWRMaXN0T2ZQb2xpY2llczogYW55W10gPSBbXTtcblxuICBsb2FkZXIgPSBmYWxzZTtcbiAgY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSBmYWxzZTtcbiAgZ3JvdXBzTGlzdExvYWRlZCA9IGZhbHNlO1xuICBjYXRlZ29yeUNvbmZpZyA9IHtcbiAgICBwYW5lbFRpdGxlOiAnU2VsZWN0IFBvbGljeSBDYXRlZ29yeScsXG4gICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdQb2xpY3kgQ2F0ZWdvcnkgU2VsZWN0ZWQnLFxuICAgIGZsb2F0aW5nVGV4dFBsdXJhbDogJ1BvbGljeSBDYXRlZ29yaWVzIFNlbGVjdGVkJyxcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBQb2xpY3kgQ2F0ZWdvcnknLFxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXG4gICAgc2VsZWN0QWxsRW5hYmxlZDogdHJ1ZSxcbiAgICB3b3JrZmxvdzogJ3BvbGljeScsXG4gIH07XG4gIGFwcHJvdmFsV29ya2Zsb3dDb25maWcgPSB7XG4gICAgcGFuZWxUaXRsZTogJ1NlbGVjdCB1c2VyKHMpJyxcbiAgICBmbG9hdGluZ1RleHRTaW5ndWxhcjogJ1VzZXIgc2VsZWN0ZWQnLFxuICAgIGZsb2F0aW5nVGV4dFBsdXJhbDogJ1VzZXJzIHNlbGVjdGVkJyxcbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCBVc2VyJyxcbiAgICBzZWFyY2hFbmFibGVkOiB0cnVlLFxuICAgIHNlbGVjdEFsbEVuYWJsZWQ6IHRydWUsXG4gIH07XG5cbiAgYWRkTW9yZUxldmVscyA9IGZhbHNlO1xuICBhcHByb3ZlcnNMaXN0SW5kZXggPSAwO1xuICB3b3JrZmxvd0xpc3QgPSBbJ1NFUVVFTlRJQUwnLCAnUk9VTkQtUk9CSU4nLCAnQU5ZIE9ORSddO1xuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xuICBkYXRlQ29uZmlnID0ge1xuICAgIGRpc2FibGVLZXlwcmVzczogdHJ1ZSxcbiAgICBmb3JtYXQ6ICdERCBNTSBZWVlZJyxcbiAgICB1blNlbGVjdE9uQ2xpY2s6IHRydWUsXG4gICAgb3Blbk9uQ2xpY2s6IGZhbHNlLFxuICAgIG9wZW5PbkZvY3VzOiBmYWxzZSxcbiAgfTtcbiAgZnJlcXVlbmN5RGV0YWlscyA9IHtcbiAgICBwYXR0ZXJuOiAnJyxcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICB3aW5kb3c6IDAsXG4gICAgZmFpbGVkOiAwLFxuICAgIHRpbWU6IERFRkFVTFRfVElNRSxcbiAgICBmYWlsZWRUaW1lOiAnJyxcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxuICB9O1xuICByZXZpZXdlckZyZXF1ZW5jeURldGFpbHMgPSB7XG4gICAgcGF0dGVybjogJycsXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcbiAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgd2luZG93OiAwLFxuICAgIGZhaWxlZDogMCxcbiAgICB0aW1lOiBERUZBVUxUX1RJTUUsXG4gICAgZmFpbGVkVGltZTogJycsXG4gICAgY29udGludW91c19mYWlsZWRfZGF5czogMyxcbiAgfTtcbiAgZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnV2hhdCBpcyB0aGUgYXR0ZXN0YXRpb24gc2NoZWR1bGUgZm9yIHRoaXMgcG9saWN5Pyc7XG4gIHJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQ/JztcblxuICBzaWRlU2VsZWN0b3JFbGVtZW50cyA9IFtcbiAgICAnYXBwcm92YWxXb3JrZmxvdycsXG4gICAgJ2Fzc2lnbmVlcycsXG4gICAgJ2FwcHJvdmVycycsXG4gICAgJ3Jldmlld2VyJyxcbiAgICAnY2NFbWFpbCcsXG4gICAgJ2NjRmFpbCcsXG4gICAgJ3JjJyxcbiAgICAnY2F0ZWdvcnknLFxuICAgICdmcmVxdWVuY3knLFxuICAgICdyZXZpZXdlckZyZXF1ZW5jeScsXG4gICAgJ2NoZWNrcG9pbnRzJyxcbiAgICAnbGlua1Byb2dyYW0nLFxuICAgICdpc0Fzc2Vzc21lbnQnLFxuICAgICdpc0xpbmtlZFBvbGljZXMnLFxuICAgICdvd25lcnMnLFxuICAgICdwb2xpY3lBY2Nlc3MnLFxuICBdO1xuICByaXNrQ2xhc3NpZmljYXRpb24gPSBbXG4gICAgeyBuYW1lOiAnTE9XJywgdmFsdWU6IDEsIGNsYXNzOiAnbG93JyB9LFxuICAgIHsgbmFtZTogJ0xPVy1NZWRpdW0nLCB2YWx1ZTogMiwgY2xhc3M6ICdsb3ctbWVkJyB9LFxuICAgIHsgbmFtZTogJ01lZGl1bS1IaWdoJywgdmFsdWU6IDMsIGNsYXNzOiAnbWVkLWhpZ2gnIH0sXG4gICAgeyBuYW1lOiAnSGlnaCcsIHZhbHVlOiA0LCBjbGFzczogJ2hpZ2gnIH0sXG4gIF07XG4gIHNob3dSaXNrQ2xhc3NpZmljYXRpb24gPSB0cnVlO1xuICBzaG93Q3JlYXRlRG9jdW1lbnRzID0gZmFsc2U7XG4gIG9yZ2FuaXphdGlvbl9pZCA9ICcnO1xuICBtZW1iZXJfb2JqX2lkID0gJyc7XG4gIG1lbWJlcklkID0gMDtcbiAgdXNlckluZm8hOiBhbnk7XG5cbiAgcG9saWN5QXBwcm92YWxGbGFnID0gMDtcbiAgYmFzZVVSTCA9ICcnO1xuICBncm91cEVuYWJsZWQ6IGFueSA9IHRydWU7XG4gIG92ZXJzZWVyR3JvdXBzTGlzdDogYW55W10gPSBbXTtcbiAgZW5hYmxlQXBwcm92YWxXb3JrZmxvdzogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1ZlcnNpb25WYWxpZDogYm9vbGVhbiA9IHRydWU7XG4gIHNlbGVjdGVkTGlua1Byb2dyYW06IGFueSA9IHt9O1xuICB2ZXJzaW9uRXJyb3JNZXNzYWdlOiBzdHJpbmcgPVxuICAgICdZb3UgaGF2ZSBlbnRlcmVkIGFuIGluY29ycmVjdCBmb3JtYXQuIFRoZSB2ZXJzaW9uIGZpZWxkIGNhbiBlaXRoZXIgaW5jbHVkZSBudW1iZXJzLCBhbHBoYWJldHMsIGh5cGhlbiBvciBkb3RzLic7XG4gIHNlbGVjdGVkV29ya2Zsb3c6IGFueVtdID0gW107XG4gIGVkaXRBcHByb3ZhbFdvcmtmbG93ITogYW55O1xuICBhcHByb3ZhbFdvcmtmbG93SWRzOiBhbnlbXSA9IFtdO1xuICBkZWZhdWx0RWRpdEFwcHJvdmVyczogYW55ID0ge307XG4gIGNyZWF0ZUFwcHJvdmFsQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZWRpdFdvcmtmbG93TGV2ZWwgPSB7fTtcbiAgbm9Xb3JrZmxvd1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHRlbXBsYXRlVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuICB0ZW1wbGF0ZVVybDogc3RyaW5nID0gJyc7XG4gIGlzVGVtcGxhdGVDbG9zZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm9ncmFtTGlzdFVybDogYW55ID0gUFJPR1JBTV9MSVNUX0FQSTtcbiAgc2VsZWN0ZWRQcm9ncmFtczogYW55ID0ge307XG4gIGFsbFByb2dhbVNlbGVjdGVkOiBMaXN0SXRlbVtdID0gW107XG4gIGxpbmtQcm9ncmFtOiBhbnkgPSB7fTtcbiAgc2VsZWN0ZWRQb2xpY3lDYXRlZ29yeTogYW55ID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwb2xpY3lTZXJ2aWNlOiBQb2xpY3lTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UsXG4gICAgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvbixcbiAgICBwcml2YXRlIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZXN0QXBpU2VydmljZTogUmVzdEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uVXNlclNlcnZpY2U6IE9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uQ29tbW9uU2VydmljZTogT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbXBsaWFuY2VDb21tb25TZXJ2aWNlOiBDb21wbGlhbmNlQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGlmcmFtZVNlcnZpY2U6IElmcmFtZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5iYXNlVVJMID0gbG9jYXRpb24/Lm9yaWdpbjtcbiAgICBpZiAodGhpcy5iYXNlVVJMID09ICdodHRwOi8vbG9jYWxob3N0OjQyMDAnKSB7XG4gICAgICB0aGlzLmJhc2VVUkwgPSAnaHR0cHM6Ly9kZXYudi1jb21wbHkuY29tJztcbiAgICB9XG4gIH1cbiAgcG9saWN5Rm9ybTogUG9saWN5Rm9ybSA9IHtcbiAgICBwb2xpY3lOYW1lOiAnJyxcbiAgICBwb2xpY3lOb3RlczogJycsXG4gICAgc2VsZWN0ZWRDYXRlZ29yaWVzOiBbXSxcbiAgICBzZWxlY3RlZEFwcHJvdmVyczogW10sXG4gICAgc2VsZWN0ZWRBc3NpZ25lZXM6IFtdLCAvL2RvdWJ0IGluIG5hbWVcbiAgICBzZWxlY3RlZEdyb3VwQXNzaWduZWU6IFtdLFxuICAgIHNlbGVjdGVkUmV2aWV3ZXJzOiBbXSxcblxuICAgIHNlbGVjdGVkUkNzOiBbXSxcbiAgICBDQ0ZhaWxFbWFpbDogW10sXG4gICAgQ0NGYWlsRW1haWxHcm91cDogW10sXG4gICAgQ0NFbWFpbDogW10sXG4gICAgQ0NHcm91cEVtYWlsOiBbXSxcbiAgICBhdmFpbGFibGVPblBvcnRhbDogZmFsc2UsXG4gICAgYWNjZXB0U3VnZ2VzdGlvbnM6IGZhbHNlLFxuICAgIHJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb246IGZhbHNlLFxuICAgIHJpc2tSYXRpbmc6IDEsXG4gICAgYXNzb2NpYXRlZERvY3VtZW50czoge1xuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxuICAgIH0sXG4gICAgcG9saWN5RHVlRGF0ZTogbW9tZW50KCksXG4gICAgY3VzdG9tVGFnczogW10sXG4gICAgY2hlY2twb2ludERldGFpbHM6IFtdLFxuICAgIExpbmtlZFBvbGljaWVzOiBbXSxcbiAgICB0b3RhbFF1ZXN0aW9uOiAwLFxuICAgIHBhc3NpbmdNYXJrczogMCxcbiAgICBkb2N1bWVudHNBbmRMaW5rczoge1xuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxuICAgICAgZm9ybWF0TGlua3M6IFtdLFxuICAgIH0sXG4gICAgYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzOiBmYWxzZSxcbiAgICBhZGRSZXZpZXdlcnM6IGZhbHNlLFxuICAgIGFkZENoZWNrcG9pbnRzOiBmYWxzZSxcbiAgICBhZGRPdmVyc2VlcnM6IGZhbHNlLFxuICAgIGFkZEFzc29jaWF0ZWREb2N1bWVudHM6IGZhbHNlLFxuICAgIGFkZFZlcnNpb246IGZhbHNlLFxuICAgIGFkZExpbmtBc3Nlc3NtZW50OiBmYWxzZSxcbiAgICBhZGRMaW5rUHJvZ3JhbTogZmFsc2UsXG4gICAgYWRkTGlua1BvbGljaWVzOiBmYWxzZSxcbiAgICBpc1BvcnRhbERpc3BsYXlFbmFibGVkOiBmYWxzZSxcbiAgICBhZGRFZmZlY3RpdmVEYXRlOiBmYWxzZSxcbiAgICBhZGRQb2xpY3lDYXRlZ29yeTogdHJ1ZSxcblxuICAgIGZhaWxlZF90aW1lOiAnJyxcbiAgICBmcmVxdWVuY3lfZGV0YWlsczogJycsXG4gICAgZnJlcXVlbmN5X3RleHQ6ICcnLFxuICAgIG1hcmtfZmFpbGVkX2FmdGVyOiAwLFxuICAgIHJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZTogMCxcblxuICAgIHJldmlld0ZhaWxlZEFmdGVyOiAwLFxuICAgIHJldmlld0ZhaWxlZFRpbWU6ICcnLFxuICAgIHJldmlld19mcmVxdWVuY3lfZGV0YWlsczogJycsXG4gICAgcmV2aWV3X2ZyZXF1ZW5jeV90eXBlOiAnJyxcbiAgICByZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlOiAwLFxuICAgIHJldmlldzogZmFsc2UsXG4gICAgbGlua1Byb2dyYW06IHt9LFxuICAgIHByb2dyYW1TZWxlY3RlZFZhbHVlczoge30sXG4gICAgYXNzaWduZWVfc3RhcnRfZGF0ZTogJycsIC8vVGh1IEZlYiAyMiAyMDI0XG4gICAgcmV2aWV3ZXJfc3RhcnRfZGF0ZTogJycsIC8vVGh1IEZlYiAyMiAyMDI0XG4gICAgcG9saWN5X3ZlcnNpb246ICcnLCAvLyBpdCB3aWxsIGFjY2VwdCBtYXRjaGVzIGFscGhhYmV0cywgaHlwaGVucyAoLSksIGRvdHMgKC4pLCBhbmQgbnVtZXJpYyB2YWx1ZXMgb25seSBhbmQgc2hvdWxkIGJlIHNtYWxsZXIgb3IgZXF1YWwgdG8gNiBjaGFyYWN0ZXJzXG4gICAgYXNzZXNzbWVudDogW10sXG4gICAgcG9saWN5X293bmVyczogW10sXG4gICAgcG9saWN5X2dyb3VwX293bmVyczogW10sXG4gICAgYnVzaW5lc3NDeWNsZToge30sXG4gICAgcG9saWN5X2lkOiAwLFxuICAgIHBvbGljeV9hY2Nlc3NfdHlwZTogMCxcbiAgICBwb2xpY3lfYWNjZXNzX293bmVyczogW10sXG4gICAgcG9saWN5X2FjY2Vzc19ncm91cHM6IFtdLFxuICB9O1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0aWF0ZUFQSSgpO1xuICAgIHRoaXMub3ZlcnNlZXJHcm91cExpc3QoKTtcbiAgfVxuXG4gIF9pbml0aWF0ZUFQSSgpIHtcbiAgICB0aGlzLmdyb3VwRW5hYmxlZCA9XG4gICAgICB0aGlzLmZlYXR1cmU/LmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3BvbGljeV9ncm91cHMnKSB8fCB0cnVlO1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgdGhpcy5faW5pdGlhdGVFZGl0QVBJKCk7XG4gICAgfVxuICAgIHRoaXMuZ2V0VXNlcnNMaXN0KCk7XG4gICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xuICAgIHRoaXMubG9hZGVyID0gdGhpcy5tb2RlID09PSAnRURJVCcgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5nZXRPcmdEZXRhaWxzKCk7XG4gICAgdGhpcy5tZW1iZXJfb2JqX2lkID0gdGhpcy5hdXRoU2VydmljZT8uZ2V0VXNlckRldGFpbHMoKT8uX2lkO1xuICAgIHRoaXMudXNlckluZm8gPSB0aGlzLmF1dGhTZXJ2aWNlPy5nZXRVc2VyRGV0YWlscygpPy51c2VyO1xuICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlPy5nZXRNZW1iZXJJZCgpO1xuICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYnVzaW5lc3NDeWNsZSA9IHRoaXMucmVzdEFwaVNlcnZpY2U/LmdldEJ1c2luZXNzQ3ljbGUoKTtcbiAgICAvL3RoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XG4gIH1cblxuICBfaW5pdGlhdGVFZGl0QVBJKCkge1xuICAgIHRoaXMuZ2V0UkNMaXN0KCk7XG4gICAgdGhpcy5nZXRDYXRlZ29yaWVzTGlzdCgpO1xuICAgIHRoaXMub3ZlcnNlZXJHcm91cExpc3QoKTtcbiAgICB0aGlzLmdldEdyb3Vwc0xpc3QoKTtcbiAgfVxuXG4gIGdldE9yZ0RldGFpbHMoKSB7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Db21tb25TZXJ2aWNlPy5nZXRPcmdEZXRhaWxzSW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmICghcmVzPy5lbmFibGVfcmlza2NsYXNzKSB7XG4gICAgICAgICAgdGhpcy5zaG93Umlza0NsYXNzaWZpY2F0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcz8uX2lkKSB7XG4gICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25faWQgPSByZXM/Ll9pZDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TGlua2VkUG9saWNpZXMocG9saWN5SWQ6IHN0cmluZykge1xuICAgIHRoaXMucG9saWN5U2VydmljZS5MaW5rZWRQb2xpY2llc0xpc3QocG9saWN5SWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICB0aGlzLlNlbGVjdGVkTGlzdE9mUG9saWNpZXMgPSBbLi4ubmV3IFNldChyZXNwb25zZT8uZGF0YSldLnJldmVyc2UoKTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uTGlua2VkUG9saWNpZXMgPSB0aGlzLlNlbGVjdGVkTGlzdE9mUG9saWNpZXM/LmZpbHRlcihcbiAgICAgICAgICAoaXRlbSkgPT4gaXRlbT8uY29udHJhY3RfaWRcbiAgICAgICAgKS5tYXAoKGl0ZW0pID0+IGl0ZW0/LmNvbnRyYWN0X2lkKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmlzUG9ydGFsRGlzcGxheUVuYWJsZWQgPSByZXNwb25zZT8uZGlzcGxheU9uUG9ydGFsO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua1BvbGljaWVzID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua1BvbGljaWVzID0gZmFsc2U7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIHRoZSBsaXN0aW5nIHBhZ2VzIHRoZSBsZWZ0IHNpZGUgb2YgcG9saWN5IGZvcm0gdG8gc2V0IGFuZCBlZGl0IHRoZSBkcm9wZG93biBmaWVsZHMgdmFsdWVzXG4gICAqIEBwYXJhbSB0eXBlIGhvbGRzIG5hbWUgb2YgcGFydGljdWxhciBsaXN0IGlzIHRvIGJlIGRpc3BsYXllZFxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgYm9vbGVhbiB2YWx1ZSB0byBkaXNwbGF5IHRoZSBsaXN0IG9yIG5vdFxuICAgKiBAcGFyYW0gd29ya2Zsb3dUeXBlIGl0IHNldHMgdGhlIGFwcHJvdmFsIHdvcmtmbG93IHR5cGUgd2hpbGUgZWRpdGluZyB0aGUgYXBwcm92YWwgd29ya2Zsb3cuXG4gICAqL1xuICBhY3RpdmF0ZVNlbGVjdG9yKHR5cGU6IGFueSwgZXZlbnQ6IGJvb2xlYW4sIHdvcmtmbG93VHlwZT86IGFueSkge1xuICAgIGlmICh3b3JrZmxvd1R5cGUpIHtcbiAgICAgIHRoaXMud29ya2Zsb3dUeXBlID0gd29ya2Zsb3dUeXBlO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gZXZlbnQgPyB0eXBlIDogJyc7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdyYyc6XG4gICAgICAgIHRoaXMuZ2V0UkNMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxuICAgICAgICAvLyB0aGlzLmdldENhdGVnb3JpZXNMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2NFbWFpbCc6XG4gICAgICBjYXNlICdjY0ZhaWwnOlxuICAgICAgY2FzZSAnYXNzaWduZWVzJzpcbiAgICAgICAgdGhpcy5nZXRHcm91cHNMaXN0KCk7XG4gICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLnNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgbGlzdGluZyBwYWdlc1xuICAgKi9cbiAgZGlzYWJsZVNlbGVjdG9yKCkge1xuICAgIHRoaXMuYWRkTW9yZUxldmVscyA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJztcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBSZXNwb25zaWJpbGl0eSBjZW50ZXJzIGxpc3RcbiAgICovXG4gIGdldFJDTGlzdCgpIHtcbiAgICB0aGlzLmNvbXBsaWFuY2VDb21tb25TZXJ2aWNlPy5nZXRSY0xpc3RJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5yY0xpc3QgPSByZXM7XG4gICAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgb3JnYW5pemF0aW9uIHVzZXJzIGxpc3RcbiAgICovXG4gIGdldFVzZXJzTGlzdCgpIHtcbiAgICB0aGlzLm9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblVzZXJzKCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMudXNlcnNMaXN0ID0gdGhpcy51cGRhdGVNZW1iZXJJZEtleShyZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudXNlcnNMaXN0ID0gcmVzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXNlcnNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy51c2Vyc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvLyByZXBsYWNlIG1lbWJlcl9pZCB2YWx1ZSB0byBteV9tZW1iZXJfaWRcbiAgdXBkYXRlTWVtYmVySWRLZXkobGlzdDogYW55KSB7XG4gICAgbGV0IHVwZGF0ZWRMaXN0ID0gbGlzdC5tYXAoKGVsZTogYW55KSA9PiAoe1xuICAgICAgLi4uZWxlLFxuICAgICAgbWVtYmVyX2lkOiBlbGU/Lm15X21lbWJlcl9pZCxcbiAgICB9KSk7XG4gICAgcmV0dXJuIHVwZGF0ZWRMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgUG9saWN5IENhdGVnb3JpZXMgbGlzdFxuICAgKi9cbiAgZ2V0Q2F0ZWdvcmllc0xpc3QoKSB7XG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmdldENhdGVnb3JpZXNMaXN0KCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gcmVzO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBvcmdhbml6YXRpb24gdXNlcnMgZ3JvdXBzIGxpc3RcbiAgICovXG4gIGdldEdyb3Vwc0xpc3QoKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uUG9saWN5R3JvdXBzKCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgY29uc3QgZ3JvdXBzOiBhbnkgPSBbXTtcbiAgICAgICAgZGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICAgICAgZ3JvdXBOYW1lOiBlbGVtZW50Lmdyb3VwX25hbWUsXG4gICAgICAgICAgICB1c2VySWRzOiBlbGVtZW50Lm1lbWJlcl9pZHMsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBncm91cHMucHVzaChvYmopO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0ID0gZ3JvdXBzO1xuICAgICAgICBpZiAodGhpcy5ncm91cEVuYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmdyb3Vwc0xpc3QgPSBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8vR2V0IHRoZSBsaXN0IG9mIG92ZXJzZWVycyBncm91cC5cbiAgb3ZlcnNlZXJHcm91cExpc3QoKSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2U/LmdldE9yZ2FuaXphdGlvbk92ZXJzZWVyc0dyb3VwcygpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCA9IHJlcz8uZGF0YTtcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFwcHJvdmVycyB3b3JrZmxvdyBmcm9tIHRoZSBzZWxlY3RlZCB3b3JrZmxvdyBvbiBBcHByb3ZlcnMgd29ya2Zsb3cgbGlzdFxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgcHJlZGVmaW5lZCB3b3JrZmxvd1xuICAgKi9cbiAgc2VsZWN0ZWRXb3JrZmxvd0NoYW5nZShldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50ID09PSAtMSkge1xuICAgICAgLy8gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gW107XG4gICAgICAvLyB0aGlzLmFkZE1vcmVMZXZlbHMgPSB0cnVlXG4gICAgICAvLyB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2FwcHJvdmVycycsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGF0YSA9IGNsb25lRGVlcChldmVudC5hcHByb3ZhbF93b3JrZmxvdyk7XG4gICAgICBjb25zdCBuZXdBcnJheSA9IGRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgaXRlbS5uYW1lID0gaXRlbS50eXBlO1xuICAgICAgICBjb25zdCBpZHMgPSBpdGVtLmFwcHJvdmVycy5tYXAoKGFwcHJvdmVyOiBhbnkpID0+IGFwcHJvdmVyLm1lbWJlcl9pZCk7XG4gICAgICAgIGl0ZW0uYXBwcm92ZXJzID0gdGhpcy5zZXRMaXN0KHRoaXMuYWxsQXBwcm92ZXJzLCBpZHMsICdtZW1iZXJfaWQnKTtcbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IG5ld0FycmF5LmZpbHRlcihcbiAgICAgICAgKGxldmVsOiBhbnkpID0+IGxldmVsLmFwcHJvdmVycy5sZW5ndGggPiAwXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIEFwcHJvdmVycyB3b3JrZmxvdyBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIHBvbGljeSBjYXRlZ29yaWVzXG4gICAqIEBwYXJhbSBpZCBjb250YWlucyBzZWxlY3RlZCBjYXRlZ29yaWVzIGlkJ3NcbiAgICovXG4gIGdldEFwcHJvdmVyV29ya0Zsb3coaWQ6IGFueSwgZGF0YT86IGFueSkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0V29ya2Zsb3dMaXN0KGlkKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcz8ubGVuZ3RoID49IDApIHtcbiAgICAgICAgICB0aGlzLmFwcHJvdmVyV29ya0Zsb3dMaXN0ID0gcmVzOyAvLyBnZXR0aW5nIGFsbCBhcHByb3ZlciBzYXZlZCB3b3JrZmxvd3NcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3cgPSBbXTtcbiAgICAgICAgICB0aGlzLmFwcHJvdmVyV29ya0Zsb3dMaXN0Py5mb3JFYWNoKCh3b3JrZmxvdykgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXBwcm92YWxXb3JrZmxvd0lkcz8uaW5jbHVkZXMod29ya2Zsb3c/Ll9pZCkpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93Py5wdXNoKHdvcmtmbG93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IGFwcHJvdmFsRGF0YTogYW55ID0gW107XG4gICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkV29ya2Zsb3c/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ub1dvcmtmbG93U2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IGFwcHJvdmFsV29ya2Zsb3c6IGFueVtdID0gW107XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVdvcmtmbG93KCk7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmRlZmF1bHRFZGl0QXBwcm92ZXJzKS5mb3JFYWNoKChhcHByb3ZlcnNMZXZlbCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRFZGl0QXBwcm92ZXJzW2FwcHJvdmVyc0xldmVsXS5hcHByb3ZlcnMgPVxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEVkaXRBcHByb3ZlcnNbYXBwcm92ZXJzTGV2ZWxdPy5hcHByb3ZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAgIChhcHA6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFwcC5tZW1iZXJfbmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcHJvdmVyVXNlciA9IHRoaXMudXNlcnNMaXN0Py5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXI6IGFueSkgPT4gdXNlci5teV9tZW1iZXJfaWQgPT0gYXBwLm1lbWJlcl9pZFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcHJvdmVyVXNlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLm1lbWJlcl9uYW1lID0gYXBwcm92ZXJVc2VyPy5tZW1iZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBhcHByb3ZhbFdvcmtmbG93LnB1c2goe1xuICAgICAgICAgICAgICAgIGxldmVsMTogYXBwcm92ZXJzTGV2ZWwsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVyc1thcHByb3ZlcnNMZXZlbF0sXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhcHByb3ZhbERhdGEucHVzaCh7XG4gICAgICAgICAgICAgIHdvcmtmbG93X25hbWU6ICcnLFxuICAgICAgICAgICAgICB3b3JrZmxvd19tb2R1bGU6ICdQT0xJQ1knLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoge30sXG4gICAgICAgICAgICAgIGFwcHJvdmFsX3dvcmtmbG93OiBhcHByb3ZhbFdvcmtmbG93LFxuICAgICAgICAgICAgICBjYXRlZ29yeV9hcnI6IFtdLFxuICAgICAgICAgICAgICBjcmVhdG9yOiB7fSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFdvcmtmbG93Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93ID0gYXBwcm92YWxEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSB0aGlzLnNlbGVjdGVkV29ya2Zsb3c7XG4gICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJzQW5kUmV2aWV3ZXJzTGlzdChcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgIFtkYXRhLlJldmlld2VyTWVtYmVySWRdLFxuICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJlbW92ZVdvcmtmbG93KCkge1xuICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyA9IFtdO1xuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xuICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd0lkcyA9IFtdO1xuICAgIHRoaXMuZWRpdEFwcHJvdmFsV29ya2Zsb3cgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBBcHByb3ZlcnMgYW5kIHJldmlld2VycyBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIHBvbGljeSBjYXRlZ29yaWVzXG4gICAqIEBwYXJhbSBjYXRlZ29yeUlkcyBjb250YWlucyBzZWxlY3RlZCBjYXRlZ29yaWVzIGlkJ3NcbiAgICovXG4gIGdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3QoXG4gICAgY2F0ZWdvcnlJZHM6IGFueSxcbiAgICBhcHByb3Zlcklkcz86IGFueSxcbiAgICByZXZpZXdlcklkcz86IGFueSxcbiAgICBwb2xpY3k/OiBhbnlcbiAgKSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuYWxsQXBwcm92ZXJzID0gW107XG4gICAgdGhpcy5hbGxSZXZpZXdlcnMgPSBbXTtcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0UmV2aWV3ZXJzKGNhdGVnb3J5SWRzKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcz8ubGVuZ3RoID49IDApIHtcbiAgICAgICAgICByZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbEFwcHJvdmVycyA9IHVuaXFCeShcbiAgICAgICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMuY29uY2F0KGVsZW1lbnQuYWxsX2FwcHJvdmVycyksXG4gICAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMgPSB1bmlxQnkoXG4gICAgICAgICAgICAgIGVsZW1lbnQuYWxsX2FwcHJvdmVycy5jb25jYXQoXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxSZXZpZXdlcnMsXG4gICAgICAgICAgICAgICAgZWxlbWVudC5hbGxfYXV0aG9yc1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdDUkVBVEUnKSB0aGlzLnNldE93bmVyc09uTG9hZCgpO1xuICAgICAgICAgICAgaWYgKHBvbGljeT8ucG9saWN5X293bmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxBcHByb3ZlcnMsXG4gICAgICAgICAgICAgICAgcG9saWN5Py5wb2xpY3lfb3duZXJzID8/IFtdLFxuICAgICAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmdldFVzZXJzQWNjZXNzTGlzdEJ5Q2F0ZWdvcnkoZWxlbWVudCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwcHJvdmVySWRzPy5hcHByb3ZlcnMpIHtcbiAgICAgICAgICBsZXQgb2JqID0gYXBwcm92ZXJJZHM/LmFwcHJvdmVycztcbiAgICAgICAgICBsZXQgYXBwcm92ZXJMZXZlbHMgPSBbXTtcbiAgICAgICAgICAvLyBmb3IgKHZhciBpdGVtIGluIG9iaikge1xuICAgICAgICAgIC8vICAgY29uc3QgaWRzID0gb2JqW2l0ZW1dPy5hcHByb3ZlcnM/Lm1hcChcbiAgICAgICAgICAvLyAgICAgKGFwcHJvdmVyOiBhbnkpID0+IGFwcHJvdmVyLm1lbWJlcl9pZFxuICAgICAgICAgIC8vICAgKTtcblxuICAgICAgICAgIC8vICAgbGV0IGRhdGEgPSB7XG4gICAgICAgICAgLy8gICAgIG5hbWU6IG9ialtpdGVtXT8udHlwZSxcbiAgICAgICAgICAvLyAgICAgYXBwcm92ZXJzOiB0aGlzLnNldExpc3QodGhpcy5hbGxBcHByb3ZlcnMsIGlkcywgJ21lbWJlcl9pZCcpLFxuICAgICAgICAgIC8vICAgfTtcbiAgICAgICAgICAvLyAgIGlmIChkYXRhLm5hbWUgPT0gJ1JPVU5EUk9CSU4nKSB7XG4gICAgICAgICAgLy8gICAgIGRhdGEubmFtZSA9ICdST1VORC1ST0JJTic7XG4gICAgICAgICAgLy8gICB9IGVsc2UgaWYgKGRhdGEubmFtZSA9PSAnQU5ZT05FJykge1xuICAgICAgICAgIC8vICAgICBkYXRhLm5hbWUgPSAnQU5ZIE9ORSc7XG4gICAgICAgICAgLy8gICB9XG4gICAgICAgICAgLy8gICBhcHByb3ZlckxldmVscy5wdXNoKGRhdGEpO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICBpZiAoYXBwcm92ZXJJZHM/LmFwcHJvdmVycykge1xuICAgICAgICAgICAgbGV0IG9iaiA9IGFwcHJvdmVySWRzPy5hcHByb3ZlcnM7XG4gICAgICAgICAgICBsZXQgYXBwcm92ZXJMZXZlbHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGl0ZW0gaW4gb2JqKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGlkcyA9IG9ialtpdGVtXT8uYXBwcm92ZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGFwcHJvdmVyOiBhbnkpID0+IGFwcHJvdmVyLm1lbWJlcl9pZFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBvYmpbaXRlbV0/Lm5hbWUgPz8gb2JqW2l0ZW1dPy50eXBlLFxuICAgICAgICAgICAgICAgIGFwcHJvdmVyczogb2JqW2l0ZW1dPy5hcHByb3ZlcnMsXG4gICAgICAgICAgICAgICAgYXBwcm92YWxfZG9uZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbGV2ZWwxOiBvYmpbaXRlbV0/LmxldmVsMSB8fCBpdGVtLFxuICAgICAgICAgICAgICAgIGFsaWFzX25hbWU6IG9ialtpdGVtXT8uYWxpYXNfbmFtZSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgLy9DcmVhdGluZyBpc3N1ZSBpbiBhcHByb3ZhbCB3b3JrZmxvdyBwYXlsb2FkICh0eXBlKSB3aGlsZSBlZGl0aW5nIHBvbGljeVxuICAgICAgICAgICAgICAvLyBpZiAoZGF0YS50eXBlID09ICdST1VORFJPQklOJykge1xuICAgICAgICAgICAgICAvLyAgIGRhdGEudHlwZSA9ICdST1VORC1ST0JJTic7XG4gICAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAoZGF0YS50eXBlID09ICdBTllPTkUnKSB7XG4gICAgICAgICAgICAgIC8vICAgZGF0YS50eXBlID0gJ0FOWSBPTkUnO1xuICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgIGFwcHJvdmVyTGV2ZWxzLnB1c2goZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFdvcmtmbG93Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93ID0gYXBwcm92ZXJMZXZlbHM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3cgPSBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXBwcm92YWxfd29ya2Zsb3c6IGFwcHJvdmVyTGV2ZWxzLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSB0aGlzLnNlbGVjdGVkV29ya2Zsb3c7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXZpZXdlcklkcykge1xuICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgICB0aGlzLmFsbFJldmlld2VycyxcbiAgICAgICAgICAgICAgcmV2aWV3ZXJJZHMsXG4gICAgICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKioqKioqKlxuICAgKiBJdCBpcyB0byBwb3B1bGF0ZSBtb3JlIG9wdGlvbnMgZWxlbWVudHMgd2hpbGUgZWRpdGluZyB0aGUgcG9saWN5IGZvcm1cbiAgICovXG4gIHBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKSB7XG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzKSB7XG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JFU1BPTlNJQklMSVRZX0NFTlRFUicpO1xuICAgIH1cbiAgICAvLyBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZFJldmlld2VycykgeyBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1JFVklFV0VSJyk7IH1cbiAgICAvLyBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZENoZWNrcG9pbnRzKSB7IGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnQ0hFQ0tQT0lOVFMnKTsgfVxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkT3ZlcnNlZXJzKSB7XG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ09WRVJTRUVSJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkQXNzb2NpYXRlZERvY3VtZW50cykge1xuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdSRUxBVEVEX0RPQ1VNRU5UUycpO1xuICAgIH1cbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uKSB7XG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1ZFUlNJT04nKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLmFzc2Vzc21lbnQubGVuZ3RoKSB7XG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ0xJTktfQVNTRVNTTUVOVFMnKTtcbiAgICAgIHRoaXMuZ2V0QXNzZXNzbWVudERldGFpbHModGhpcy5wb2xpY3lGb3JtLmFzc2Vzc21lbnRbMF0pO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnBvbGljeUZvcm0/LnByb2dyYW1TZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbSAmJlxuICAgICAgdGhpcy5wb2xpY3lGb3JtPy5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkXG4gICAgKSB7XG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ0xJTktfUFJPR1JBTV9SRVNQT05TSUJJTElUSUVTJyk7XG4gICAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua1Byb2dyYW0gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5TZWxlY3RlZExpc3RPZlBvbGljaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaCgnTElOS19SRUxBVEVEX1BPTElDSUVTJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvbGljeUZvcm0uYWRkRWZmZWN0aXZlRGF0ZSkge1xuICAgICAgYWN0aXZhdGVkT3B0aW9ucy5wdXNoKCdFRkZFQ1RJVkVfREFURScpO1xuICAgIH1cbiAgICBpZiAodGhpcy5wb2xpY3lGb3JtLmFkZFBvbGljeUNhdGVnb3J5KSB7XG4gICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goJ1BPTElDWV9DQVRFR09SWScpO1xuICAgIH1cbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XG4gIH1cbiAgLyoqXG4gICAqIEl0IGlzIHRvIGFkZCBhbmQgcmVtb3ZlIHRoZSBlbGVtZW50cyBmcm9tIE1vcmUgb3B0aW9uIHRvIHRoZSBwb2xpY3kgRm9ybVxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgZGV0YWlscyByZWxhdGVkIHRvIGNoZWNrZWQgdmFsdWUsIGNvZGUgcGFydGljdWxhciBlbGVtZW50cyBmcm9tIE1vcmUgb3B0aW9uc1xuICAgKi9cbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgY2FzZSAnUkVTUE9OU0lCSUxJVFlfQ0VOVEVSJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gY2FzZSAnUkVWSUVXRVInOlxuICAgICAgLy8gICB0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgIC8vICAgYnJlYWs7XG4gICAgICBjYXNlICdDSEVDS1BPSU5UUyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRDaGVja3BvaW50cyA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnT1ZFUlNFRVInOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkT3ZlcnNlZXJzID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdSRUxBVEVEX0RPQ1VNRU5UUyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRBc3NvY2lhdGVkRG9jdW1lbnRzID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdWRVJTSU9OJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZFZlcnNpb24gPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xJTktfUFJPR1JBTV9SRVNQT05TSUJJTElUSUVTJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZExpbmtQcm9ncmFtID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdMSU5LX0FTU0VTU01FTlRTJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFkZExpbmtBc3Nlc3NtZW50ID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdMSU5LX1JFTEFURURfUE9MSUNJRVMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkTGlua1BvbGljaWVzID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFRkZFQ1RJVkVfREFURSc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5hZGRFZmZlY3RpdmVEYXRlID0gZXZlbnQuY2hlY2tlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdQT0xJQ1lfQ0FURUdPUlknOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uYWRkUG9saWN5Q2F0ZWdvcnkgPSBldmVudC5jaGVja2VkO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdG8gZW5zdXJlIHdoZXRoZXIgYWxsIHJlcXVpcmVkIGxpc3RzIG9uIFBvbGljeSBmcm9tIGlzIGxvYWRlZCBmcm9tIHRoZSBhcGkgY2FsbCBvciBub3RcbiAgICovXG4gIGNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCkge1xuICAgIGNvbnN0IGVkaXRMb2FkZXIgPVxuICAgICAgdGhpcy5tb2RlID09PSAnRURJVCdcbiAgICAgICAgPyB0aGlzLnJjTGlzdExvYWRlZCAmJlxuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgJiZcbiAgICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWRcbiAgICAgICAgOiB0cnVlO1xuICAgIGlmICh0aGlzLnVzZXJzTGlzdExvYWRlZCAmJiBlZGl0TG9hZGVyKSB7XG4gICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgaWYgKHRoaXMuY29udmVydEZpbGVEYXRhICYmIHRoaXMuY29udmVydEZpbGVEYXRhLmZpbGVOYW1lKSB7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gdGhpcy5jb252ZXJ0RmlsZURhdGEuZmlsZU5hbWUuc3Vic3RyaW5nKFxuICAgICAgICAgIDAsXG4gICAgICAgICAgdGhpcy5jb252ZXJ0RmlsZURhdGEuZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKVxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5jb252ZXJ0RmlsZURhdGEuY2F0ZWdvcnlJZCkge1xuICAgICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdCgnY2F0ZWdvcnknLCBbdGhpcy5jb252ZXJ0RmlsZURhdGEuY2F0ZWdvcnlJZF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZENhdGVnb3J5KSB7XG4gICAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdCgnY2F0ZWdvcnknLCBbdGhpcy5zZWxlY3RlZENhdGVnb3J5XSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgICAgdGhpcy5lZGl0UG9saWN5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcnMgdGhlIGNvbmZpcm1hdGlvbiBwb3B1cCB3aGVuIGF2YWlsYWJpbGl0eSBvbiBQb2xpY3kgcG9ydGFsIHRvZ2dsZSBpbiBPTlxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgdG9nZ2xlIHZhbHVlIHdoaWNoIGlzIGFsd2F5cyB0cnVlIG9yIGZhbHNlXG4gICAqL1xuICBhdmFpbGFiaWxpdHlPblBvcnRhbChldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBjb25zdCBjb25maXJtYXRpb25EZXRhaWxzOiBDb25maXJtYXRpb25BbGVydCA9IHtcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgICBtZXNzYWdlOiBgVGhlIHBvbGljaWVzIHRoYXQgeW91IGludGVuZCB0byBtYWtlIGFjY2Vzc2libGUgdG8gdGhlIGVudGlyZSBvcmdhbml6YXRpb24gY2FuIGJlIGFkZGVkIHRvIHRoZSBwb2xpY3kgcG9ydGFsLlxuICAgICAgICBJdCBpcyBsaWtlIGEgc2hhcmVkIGNhdGFsb2cgb2YgYWxsIGFjdGl2ZSAmIHVwZGF0ZWQgcG9saWNpZXMgdGhhdCBhbnkgbG9nZ2VkIGluIHVzZXIgY2FuIHJlYWQvIGRvd25sb2FkIGZvciByZWZlcmVuY2UuXG4gICAgICAgIEhlbmNlLCBpZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkLCBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciB5b3UgdG8gc2V0IHVwIGFuIGF0dGVzdGF0aW9uIHNjaGVkdWxlIG9yIHNlbGVjdFxuICAgICAgICByZWFkZXJzIHRvIGF0dGVzdCB0aGUgcG9saWNpZXMuYCxcbiAgICAgICAgYWN0aW9uOiAnUE9MSUNZX1BPUlRBTCcsXG4gICAgICB9O1xuICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uQWxlcnQuZW1pdChjb25maXJtYXRpb25EZXRhaWxzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVjZWl2ZXMgdGhlIGlucHV0IGZyb20gdGhlIENvbmZpcm1hdGlvbiBkaWFsb2cgb2YgYXZhaWxhYmxlIG9uIFBvbGljeSBwb3J0YWxcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIG9wdGlvbiBmcm9tIHRoZSBjb25maXJtYXRpb24gZGlhbG9nIHdoaWNoIGlzIGFsd2F5cyBlaXRoZXIgJ1lFUycgb3IgJ05PJ1xuICAgKi9cbiAgY29uZmlybVBvbGljeVBvcnRhbChldmVudDogYW55KSB7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsID0gZXZlbnQgPT0gJ1lFUycgPyB0cnVlIDogZmFsc2U7XG4gICAgaWYgKGV2ZW50ID09ICdOTycpIHtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9ucyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwb2xpY3lGb3JtIHdpdGggc2VsZWN0ZWQgZWxlbWVudHMgZnJvbSB0aGUgbGlzdGluZywgZnJlcXVlbmN5LCBmaWxlIHVwbG9hZCBjb21wb25lbnRzXG4gICAqIEBwYXJhbSB0eXBlIGRlZmluZXMgdGhlIHBhcnRpY3VsYXIgZmllbGQgb24gUG9saWN5IGZvcm0uXG4gICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1zIGNvbnRhaW5zIHRoZSBsaXN0IG9mIHNlbGVjdGVkIGl0ZW1zIGZyb20gdGhlIGxpc3RcbiAgICovXG4gIHNhdmVTZWxlY3RlZExpc3QodHlwZTogc3RyaW5nLCBzZWxlY3RlZEl0ZW1zOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3JjJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMucmNMaXN0LFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgJ2l0ZW1faWQnXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgY29uc3Qgb2JqZWN0SWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQ2F0ZWdvcmllcyxcbiAgICAgICAgICAnX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gW107XG4gICAgICAgIHRoaXMucmVzZXRQb2xpY3lBY2Nlc3NEZXRhaWxzKCk7XG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uY3VzdG9tVGFncyA9IFtdO1xuICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3cob2JqZWN0SWRzKTtcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZlcnNBbmRSZXZpZXdlcnNMaXN0KG9iamVjdElkcyk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxuICAgICAgICBsZXQgdXNlcklkcywgZ3JvdXBJZHM7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xuICAgICAgICAgIHVzZXJJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zLnVzZXJzLCAnbWVtYmVyX2lkJyk7XG4gICAgICAgICAgZ3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhzZWxlY3RlZEl0ZW1zLmdyb3VwcywgJ2dyb3VwX2lkJyk7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkR3JvdXBBc3NpZ25lZSA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxuICAgICAgICAgICAgZ3JvdXBJZHMsXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1c2VySWRzID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxuICAgICAgICAgIHVzZXJJZHMsXG4gICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuYWxsUmV2aWV3ZXJzLFxuICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zLm1lbWJlcl9pZF0sXG4gICAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjY0VtYWlsJzpcbiAgICAgICAgbGV0IHNlbGVjdGVkVXNlcklkcywgc2VsZWN0ZWRHcm91cElkcztcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICAgICAgc2VsZWN0ZWRVc2VySWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcz8udXNlcnMsICdtZW1iZXJfaWQnKTtcbiAgICAgICAgICBzZWxlY3RlZEdyb3VwSWRzID0gdGhpcy5yZXR1cm5JZHMoc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NHcm91cEVtYWlsID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXG4gICAgICAgICAgICBzZWxlY3RlZEdyb3VwSWRzLFxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLnVzZXJzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkVXNlcklkcyxcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmNjRW1haWxPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQoXG4gICAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLnVzZXJzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjRmFpbCc6XG4gICAgICAgIGxldCBzZWxlY3RlZEZhaWxVc2VySWRzLCBzZWxlY3RlZEZhaWxHcm91cElkcztcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICAgICAgc2VsZWN0ZWRGYWlsVXNlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8udXNlcnMsXG4gICAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgc2VsZWN0ZWRGYWlsR3JvdXBJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/Lmdyb3VwcyxcbiAgICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5vdmVyc2Vlckdyb3Vwc0xpc3QsXG4gICAgICAgICAgICBzZWxlY3RlZEZhaWxHcm91cElkcyxcbiAgICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRGYWlsVXNlcklkcyxcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmNjRmFpbEdyb3VwT2JqSWRzID0gdGhpcy5nZXRHcm91cE9iamVjdElkKFxuICAgICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLnVzZXJzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FwcHJvdmVycyc6XG4gICAgICAgIGNvbnN0IGFwcHJvdmVycyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmFsbEFwcHJvdmVycyxcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmFkZE1vcmVMZXZlbHMpIHtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLndvcmtmbG93VHlwZSxcbiAgICAgICAgICAgIGFwcHJvdmVycyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmFkZE1vcmVMZXZlbHMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbdGhpcy5hcHByb3ZlcnNMaXN0SW5kZXhdID0ge1xuICAgICAgICAgIG5hbWU6IHRoaXMud29ya2Zsb3dUeXBlLFxuICAgICAgICAgIGFwcHJvdmVycyxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXZpZXdlcl9hdHRhY2htZW50cyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlcyA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZmlsZXMgPz8gW107XG5cbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmRvY3VtZW50c0FuZExpbmtzLmZvcm1hdExpbmtzID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5saW5rcyA/PyBbXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NvY2lhdGVkRG9jdW1lbnRzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFzc29jaWF0ZWREb2N1bWVudHMuZm9ybWF0RmlsZXMgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmZpbGVzID8/IFtdO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxuICAgICAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnREZXRhaWxzID8/IFtdO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0udG90YWxRdWVzdGlvbiA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uY2hlY2twb2ludERldGFpbHM/Lmxlbmd0aCA/PyAwO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucGFzc2luZ01hcmtzID0gc2VsZWN0ZWRJdGVtcz8ucmVxdWlyZWRQb2ludCA/PyAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ293bmVycyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfb3duZXJzID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuYWxsQXBwcm92ZXJzLFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwb2xpY3lBY2Nlc3MnOlxuICAgICAgICBsZXQgYWNjZXNzSWRzLCBhY2Nlc3NHcm91cElkcztcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5mdXR1cmVVc2Vyc1dpbGxTZWxlY3Q7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwRW5hYmxlZCkge1xuICAgICAgICAgIGFjY2Vzc0lkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMudXNlcnMsICdtZW1iZXJfaWQnKTtcbiAgICAgICAgICBhY2Nlc3NHcm91cElkcyA9IHRoaXMucmV0dXJuSWRzKHNlbGVjdGVkSXRlbXMuZ3JvdXBzLCAnZ3JvdXBfaWQnKTtcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19ncm91cHMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLm92ZXJzZWVyR3JvdXBzTGlzdCxcbiAgICAgICAgICAgIGFjY2Vzc0dyb3VwSWRzLFxuICAgICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjZXNzSWRzID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19vd25lcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxuICAgICAgICAgIGFjY2Vzc0lkcyxcbiAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lzTGlua2VkUG9saWNlcyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5MaW5rZWRQb2xpY2llcyA9IHRoaXMubGlzdE9mU2VsZWN0ZWRQb2xpY2llcyhcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5zZWxlY3RlZFBvbGljeUxpc3RcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5TZWxlY3RlZExpc3RPZlBvbGljaWVzID0gc2VsZWN0ZWRJdGVtcz8uc2VsZWN0ZWRQb2xpY3lMaXN0O1xuXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICB9XG5cbiAgbGlzdE9mU2VsZWN0ZWRQb2xpY2llcyhzZWxlY3RlZFBvbGljaWVzOiBhbnkpIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRQb2xpY2llcz8ubWFwKChwb2xpY3k6IGFueSkgPT4gcG9saWN5Py5jb250cmFjdF9pZCk7XG4gIH1cblxuICAvL3JldHVybiB0aGUgX2lkIGZyb20gdGhlIHNlbGVjdGVkIG92ZXJzZWVyIGdyb3VwLlxuICBnZXRHcm91cE9iamVjdElkKG92ZXJzZWVyR3JvdXA/OiBhbnkpIHtcbiAgICBsZXQgb3ZlcnNlZXJHcm91cElkQXJyYXkgPSBvdmVyc2Vlckdyb3VwLm1hcCgoZWxlOiBhbnkpID0+IGVsZS5faWQpO1xuICAgIHJldHVybiBvdmVyc2Vlckdyb3VwSWRBcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBwYXJ0aWN1bGFyIGVsZW1lbnQgZnJvbSBzZWxlY3RlZCBsaXN0XG4gICAqIEBwYXJhbSB0eXBlIGRlZmluZXMgdGhlIHBhcnRpY3VsYXIgY2FzZVxuICAgKiBAcGFyYW0gZXZlbnQgaG9sZHMgdGhlIGlkIG9yIGtleSBvZiBlbGVtZW50IHRvIGJlIHJlbW92ZWRcbiAgICogQHBhcmFtIHJlbW92ZUluZGV4IGNvbnRhaW5zIHRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byBiZSByZW1vdmVkXG4gICAqL1xuICByZW1vdmUodHlwZTogYW55LCBldmVudDogYW55LCByZW1vdmVJbmRleD86IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAncmMnOlxuICAgICAgICBjb25zdCByY0luZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzLmZpbmRJbmRleChcbiAgICAgICAgICAocmM6IGFueSkgPT4gcmMucmNfaWQgPT0gZXZlbnQucmNfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzLnNwbGljZShyY0luZGV4LCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxuICAgICAgICBjb25zdCBlbnRydXN0SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMuZmluZEluZGV4KFxuICAgICAgICAgIChvd25lcjogYW55KSA9PiBvd25lci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBc3NpZ25lZXMuc3BsaWNlKGVudHJ1c3RJbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZ3JvdXBBc3NpZ25lZXMnOlxuICAgICAgICBjb25zdCBncm91cEluZGV4OiBhbnkgPVxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWU/LmZpbmRJbmRleChcbiAgICAgICAgICAgIChncm91cDogYW55KSA9PiBncm91cC5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWU/LnNwbGljZShncm91cEluZGV4LCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXZpZXdlcic6XG4gICAgICAgIGNvbnN0IHJldmlld2VySW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSZXZpZXdlcnMuZmluZEluZGV4KFxuICAgICAgICAgIChyZXZpZXdlcjogYW55KSA9PiByZXZpZXdlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZFJldmlld2Vycy5zcGxpY2UocmV2aWV3ZXJJbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjRW1haWwnOlxuICAgICAgICBjb25zdCBvdmVyc2VlckluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwuZmluZEluZGV4KFxuICAgICAgICAgIChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NFbWFpbC5zcGxpY2Uob3ZlcnNlZXJJbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2NHcm91cEVtYWlsJzpcbiAgICAgICAgY29uc3QgY2NHcm91cEluZGV4OiBhbnkgPSB0aGlzLnBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbD8uZmluZEluZGV4KFxuICAgICAgICAgIChncm91cDogYW55KSA9PiBncm91cD8uZ3JvdXBfaWQgPT0gZXZlbnQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5DQ0dyb3VwRW1haWw/LnNwbGljZShjY0dyb3VwSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLmNjRW1haWxPYmpJZHMgPSB0aGlzLmdldEdyb3VwT2JqZWN0SWQoXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0dyb3VwRW1haWxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjY0ZhaWwnOlxuICAgICAgICBjb25zdCBvdmVyc2Vlck5vdGlmeUluZGV4ID0gdGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsLmZpbmRJbmRleChcbiAgICAgICAgICAob3ZlcnNlZXJOOiBhbnkpID0+IG92ZXJzZWVyTi5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwuc3BsaWNlKG92ZXJzZWVyTm90aWZ5SW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NjR3JvdXBGYWlsRW1haWwnOlxuICAgICAgICBjb25zdCBjY0ZhaWxHcm91cEluZGV4OiBhbnkgPVxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cD8uZmluZEluZGV4KFxuICAgICAgICAgICAgKGdyb3VwOiBhbnkpID0+IGdyb3VwPy5ncm91cF9pZCA9PSBldmVudD8uZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWxHcm91cD8uc3BsaWNlKGNjRmFpbEdyb3VwSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLmNjRmFpbEdyb3VwT2JqSWRzID0gdGhpcy5nZXRHcm91cE9iamVjdElkKFxuICAgICAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NGYWlsRW1haWxHcm91cFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FwcHJvdmVycyc6XG4gICAgICAgIGNvbnN0IGFwcHJvdmVyc0luZGV4ID0gdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW1xuICAgICAgICAgIHJlbW92ZUluZGV4XG4gICAgICAgIF0uYXBwcm92ZXJzLmZpbmRJbmRleChcbiAgICAgICAgICAoYXBwcm92ZXI6IGFueSkgPT4gYXBwcm92ZXIubWVtYmVyX2lkID09IGV2ZW50Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnNbcmVtb3ZlSW5kZXhdLmFwcHJvdmVycy5zcGxpY2UoXG4gICAgICAgICAgYXBwcm92ZXJzSW5kZXgsXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzW3JlbW92ZUluZGV4XS5hcHByb3ZlcnMubGVuZ3RoID09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXRlZ29yeSc6XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5SW5kZXggPSB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnkuaXRlbV9pZCA9PSBldmVudC5pdGVtX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMuc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xuICAgICAgICBjb25zdCB0YWcgPSBldmVudC5jdXN0b21fdGFncztcbiAgICAgICAgaWYgKHRhZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXhDVCA9IHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWduYW1lID09IHRhZ0RhdGEudGFnbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpbmRleENUICE9IC0xKSB7XG4gICAgICAgICAgICAgIHRoaXMucG9saWN5Rm9ybS5jdXN0b21UYWdzLnNwbGljZShpbmRleENULCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYmplY3RJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzLFxuICAgICAgICAgICdfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpO1xuICAgICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRBcHByb3ZlcnMuc3BsaWNlKFxuICAgICAgICAgIDAsXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybSA9IE9iamVjdC5hc3NpZ24odGhpcy5wb2xpY3lGb3JtKTtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUmV2aWV3ZXJzID0gW107XG4gICAgICAgIHRoaXMuZ2V0QXBwcm92ZXJXb3JrRmxvdyhvYmplY3RJZHMpO1xuICAgICAgICB0aGlzLmdldEFwcHJvdmVyc0FuZFJldmlld2Vyc0xpc3Qob2JqZWN0SWRzKTtcbiAgICAgICAgdGhpcy5yZXNldFBvbGljeUFjY2Vzc0RldGFpbHMoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnRzJzpcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmNoZWNrcG9pbnREZXRhaWxzID0gW107XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uID0gMDtcbiAgICAgICAgdGhpcy5wb2xpY3lGb3JtLnBhc3NpbmdNYXJrcyA9IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnd29ya2Zsb3dMZXZlbCc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8uc2VsZWN0ZWRBcHByb3ZlcnMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5yZW1vdmVXb3JrZmxvdygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xpbmtQcm9ncmFtJzpcbiAgICAgICAgdGhpcy5hbGxQcm9nYW1TZWxlY3RlZCA9IHRoaXMuYWxsUHJvZ2FtU2VsZWN0ZWQuZmlsdGVyKFxuICAgICAgICAgIChwcm9ncmFtOiBhbnkpID0+IHByb2dyYW0/LmlkICE9PSBldmVudD8uaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZW1vdmVQcm9ncmFtKGV2ZW50KTtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ293bmVycyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X293bmVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BvbGljeUFjY2Vzcyc6XG4gICAgICAgIGNvbnN0IHVzZXJBY2Nlc3NJbmRleCA9IHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnMuZmluZEluZGV4KFxuICAgICAgICAgIChvd25lcjogYW55KSA9PiBvd25lcj8uZW1wbG95ZWVfaWQgPT0gZXZlbnQ/LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19vd25lcnM/LnNwbGljZSh1c2VyQWNjZXNzSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FjY2Vzc0dyb3VwJzpcbiAgICAgICAgY29uc3QgZ3JvdXBBY2Nlc3NJbmRleDogYW55ID1cbiAgICAgICAgICB0aGlzLnBvbGljeUZvcm0/LnBvbGljeV9hY2Nlc3NfZ3JvdXBzPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybT8ucG9saWN5X2FjY2Vzc19ncm91cHM/LnNwbGljZShncm91cEFjY2Vzc0luZGV4LCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmcmVxdWVuY3knOlxuICAgICAgICB0aGlzLnJlbW92ZUZyZXF1ZW5jeSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lzTGlua2VkUG9saWNlcyc6XG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5MaW5rZWRQb2xpY2llcyA9IHRoaXMucG9saWN5Rm9ybS5MaW5rZWRQb2xpY2llcz8uZmlsdGVyKFxuICAgICAgICAgIChwb2xpY3lJZDogYW55KSA9PiBldmVudCAhPT0gcG9saWN5SWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5TZWxlY3RlZExpc3RPZlBvbGljaWVzID0gdGhpcy5TZWxlY3RlZExpc3RPZlBvbGljaWVzPy5maWx0ZXIoXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0/LmNvbnRyYWN0X2lkICE9PSBldmVudFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgYXNzaWduZWVzIGFuZCBvdmVyc2VlcnMgbGlzdCBzdWNoIHRoYXQgYm90aCBsaXN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIHNhbWUgdXNlcnMgYmFzZWQgb24gc2VsZWN0aW9uXG4gICAqL1xuICByZWZyZXNoQWxsTGlzdHMoKSB7XG4gICAgbGV0IGFzc2lnbmVlc0lkczogYW55ID0gW107XG4gICAgbGV0IHJldmlld2Vyc0lkczogYW55ID0gW107XG4gICAgbGV0IG92ZXJzZWVySWRzOiBhbnkgPSBbXTtcbiAgICBjb25zdCBhbGxVc2VycyA9IGNsb25lRGVlcCh0aGlzLnVzZXJzTGlzdCk7XG4gICAgY29uc3QgYXNzaWduZWVzID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcyk7XG4gICAgY29uc3Qgb3ZlcnNlZXJMaXN0ID0gY2xvbmVEZWVwKHRoaXMucG9saWN5Rm9ybS5DQ0VtYWlsKTtcbiAgICBjb25zdCBub3RpZnlPdmVyc2VlcnMgPSBjbG9uZURlZXAodGhpcy5wb2xpY3lGb3JtLkNDRmFpbEVtYWlsKTtcbiAgICBhc3NpZ25lZXM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgYXNzaWduZWVzSWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XG4gICAgfSk7XG4gICAgb3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XG4gICAgfSk7XG4gICAgbm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlci5lbXBsb3llZV9pZCk7XG4gICAgfSk7XG5cbiAgICBhc3NpZ25lZXNJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZXNJZHMpXTtcbiAgICByZXZpZXdlcnNJZHMgPSBbLi4ubmV3IFNldChyZXZpZXdlcnNJZHMpXTtcbiAgICBvdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KG92ZXJzZWVySWRzKV07XG5cbiAgICAvLyB0aGlzLmFzc2lnbm9yc0xpc3QgPSBiZWhhbGZVc2Vycy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gIShyZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5tZW1iZXJfaWQpIHx8IG92ZXJzZWVySWRzLmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKSkpO1xuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgICEoXG4gICAgICAgICAgcmV2aWV3ZXJzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpIHx8XG4gICAgICAgICAgb3ZlcnNlZXJJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZClcbiAgICAgICAgKVxuICAgICk7XG4gICAgaWYgKHRoaXMuZ3JvdXBFbmFibGVkKSB7XG4gICAgICBjb25zdCB1c2VyT2JqID0gdGhpcy5hc3NpZ25lZXNMaXN0O1xuICAgICAgdXNlck9iaj8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICAgIHVzZXIubWVtYmVyX2lkID0gdXNlci5teV9tZW1iZXJfaWQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMub3duZXJsaXN0ID0gdXNlck9iajtcbiAgICB9XG4gICAgLy8gdGhpcy5yZXZpZXdlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKCh1c2VyOiBhbnkpID0+ICEoYXNzaWduZWVzSWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpIHx8IG92ZXJzZWVySWRzLmluY2x1ZGVzKHVzZXIuZW1wbG95ZWVfaWQpKSk7XG4gICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgIShcbiAgICAgICAgICBhc3NpZ25lZXNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZCkgfHxcbiAgICAgICAgICByZXZpZXdlcnNJZHMuaW5jbHVkZXModXNlci5lbXBsb3llZV9pZClcbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aG9sZSBsaXN0IGJhc2VkIG9uIHNlbGVjdGVkIGlkJ3MgZnJvbSBhIHBhcnRpY3VsYXIgbGlzdCBlbGVtZW50c1xuICAgKiBAcGFyYW0gbGlzdCBpdCBpcyB0aGUgbWFpbiBsaXN0ICB3aGljaCBjb250YWlucyBhbGwgZWxlbWVudHMgbGlzdFxuICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBmaWx0ZXIgc2VsZWN0ZWQgbGlzdCBmcm9tIHRoZSBsaXN0XG4gICAqIEBwYXJhbSBpZHMgc2VsZWN0ZWQgaWRzIGFycmF5XG4gICAqL1xuICBzZXRMaXN0KGxpc3Q6IGFueVtdLCBpZHM6IGFueVtdLCBrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xuICAgIGlkcz8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGxpc3Q/LmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGlkJ3MgZnJvbSBhIHBhcnRpY3VsYXIgbGlzdCBlbGVtZW50c1xuICAgKiBAcGFyYW0gbGlzdCBhY3R1YWwgc2VsZWN0ZWQgbGlzdFxuICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBleHRyYWN0IGlkIGZyb20gdGhlIGxpc3RcbiAgICovXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGlzdC5tYXAoKGVsZSkgPT4ge1xuICAgICAgaWYgKGVsZVtrZXldKSB7XG4gICAgICAgIHJldHVybiBlbGVba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZXZpZXdlciB0eXBlIGluIGFwcHJvdmFsIHdvcmtmbG93XG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBzZWxlY3RlZCByZXZpZXdlciB0eXBlXG4gICAqL1xuICByZXZpZXdlclR5cGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMud29ya2Zsb3dUeXBlID0gZXZlbnQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBmcmVxdWVuY3kgaW4gZWRpdCAgbW9kZVxuICAgKi9cbiAgZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSwgbW9kZTogJ1NFTEVDVCcgfCAnUE9QVUxBVEUnID0gJ1NFTEVDVCcpIHtcbiAgICAvL25lZWRzIHRvIGRpc2N1c3Mgd2l0aCBiYWNrZW5kIGFib3V0IGVkaXQgYW5kIGRlZmF1bHQgdmFsdWVzXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIHBhdHRlcm46IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscywgLy9cbiAgICAgIHdpbmRvdzogZXZlbnQ/LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSxcbiAgICAgIGZhaWxlZEFmdGVyOiBldmVudD8ubWFya19mYWlsZWRfYWZ0ZXIsXG4gICAgICBmYWlsZWRfdGltZV91dGM6ICcnLFxuICAgICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxuICAgICAgdGltZUluMjRIcjogZXZlbnQuZmFpbGVkX3RpbWUgIT0gJycgPyBldmVudC5mYWlsZWRfdGltZSA6IERFRkFVTFRfMjRIUixcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXG4gICAgICBzdGFydEZyb206IE1hdGguZmxvb3IoXG4gICAgICAgIG5ldyBEYXRlKGV2ZW50LmFzc2lnbmVlX3N0YXJ0X2RhdGUpLmdldFRpbWUoKSAvIDEwMDBcbiAgICAgICksXG4gICAgICBzdGFydERhdGU6ICcnLFxuICAgICAgcmVwb3J0SWQ6IDAsXG4gICAgICB0aW1lSW4xMmhyOiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUluMTIoXG4gICAgICAgIGV2ZW50LmZhaWxlZF90aW1lICE9ICcnID8gZXZlbnQuZmFpbGVkX3RpbWUgOiBERUZBVUxUXzI0SFJcbiAgICAgICksXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQuZnJlcXVlbmN5X3RleHQsXG4gICAgfTtcblxuICAgIHRoaXMuZnJlcXVlbmN5RGF0YShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBmcmVxdWVuY3kgZGV0YWlscyBpbiB0aGUgcG9saWN5Rm9ybVxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcbiAgICovXG4gIGZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9IGV2ZW50LnBhdHRlcm47XG4gICAgKHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfdGV4dCA9IGV2ZW50LnBsYWNlaG9sZGVyKSxcbiAgICAgICh0aGlzLnBvbGljeUZvcm0ubWFya19mYWlsZWRfYWZ0ZXIgPSBldmVudC5mYWlsZWRBZnRlcik7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IGV2ZW50LndpbmRvdztcbiAgICB0aGlzLnBvbGljeUZvcm0uZmFpbGVkX3RpbWUgPSBldmVudC50aW1lSW4yNEhyO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3NpZ25lZV9zdGFydF9kYXRlID0gbW9tZW50KGV2ZW50LnN0YXJ0RnJvbSAqIDEwMDApLmZvcm1hdChcbiAgICAgICdkZGQgTU1NIEREIFlZWVknXG4gICAgKTtcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIGZhbHNlKTtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGV2ZW50LnBhdHRlcm4sXG4gICAgICBmcmVxdWVuY3lfdGltZTogZXZlbnQudGltZUluMTJocixcbiAgICAgIHJlbWluZGVyX2JlZm9yZV9kYXlzOiBldmVudC53aW5kb3csXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZXZlbnQuZmFpbGVkQWZ0ZXIsXG4gICAgICBsaWZlY3ljbGVfZGV0YWlsczogZXZlbnQubGlmZWN5Y2xlRGV0YWlscyxcbiAgICAgIHN0YXJ0X29mX2RheV91dGM6IGV2ZW50LnN0YXJ0RnJvbSxcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IFtldmVudC5yZXBvcnRJZF0sXG4gICAgICBkb21fdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXG4gICAgICBwbGFjZWhvbGRlcjogZXZlbnQucGxhY2Vob2xkZXIsXG4gICAgfTtcbiAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XG4gIH1cblxuICAvKipcbiAgICogUG9wdWxhdGVzIHRoZSBmcmVxdWVuY3kgZmllbGQgd2l0aCBzZWxlY3RlZCBkYXRhIGZyb20gZnJlcXVlbmN5IGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcbiAgICovXG4gIGZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy53aW5kb3cgPSBldmVudD8ucmVtaW5kZXJfYmVmb3JlX2RheXM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSBldmVudD8uc3RhcnRfb2ZfZGF5X3V0YztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPSBldmVudD8ub25fY29tcGxldGlvbl9vZlswXSA/PyAwO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMztcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gZXZlbnQ/LnBsYWNlaG9sZGVyXG4gICAgICA/IGV2ZW50LnBsYWNlaG9sZGVyXG4gICAgICA6ICdIb3cgb2Z0ZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIGF0dGVzdGVkPyc7XG4gIH1cblxuICByZXZpZXdlckZyZXF1ZW5jeURhdGFQb3B1bGF0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICAvL25lZWRzIHRvIGRpc2N1c3Mgd2l0aCBiYWNrZW5kIGFib3V0IGVkaXQgYW5kIGRlZmF1bHQgdmFsdWVzXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIHBhdHRlcm46IGV2ZW50Py5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMsIC8vXG4gICAgICB3aW5kb3c6IGV2ZW50Py5yZXZpZXdfcmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlLFxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5yZXZpZXdGYWlsZWRBZnRlcixcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogJycsXG4gICAgICBsaWZlY3ljbGVEZXRhaWxzOiAnMDAwMC0wMC0wMH5+MCcsXG4gICAgICB0aW1lSW4yNEhyOlxuICAgICAgICBldmVudC5yZXZpZXdGYWlsZWRUaW1lICE9ICcnID8gZXZlbnQucmV2aWV3RmFpbGVkVGltZSA6IERFRkFVTFRfMjRIUixcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXG4gICAgICBzdGFydEZyb206IE1hdGguZmxvb3IoXG4gICAgICAgIG5ldyBEYXRlKGV2ZW50LnJldmlld2VyX3N0YXJ0X2RhdGUpLmdldFRpbWUoKSAvIDEwMDBcbiAgICAgICksXG4gICAgICBzdGFydERhdGU6ICcnLFxuICAgICAgcmVwb3J0SWQ6IDAsXG4gICAgICB0aW1lSW4xMmhyOiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUluMTIoXG4gICAgICAgIGV2ZW50LnJldmlld0ZhaWxlZFRpbWUgIT0gJycgPyBldmVudC5yZXZpZXdGYWlsZWRUaW1lIDogREVGQVVMVF8yNEhSXG4gICAgICApLFxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnJldmlld2ZyZXF1ZW5jeURldGFpbHMsXG4gICAgfTtcblxuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEYXRhKGRhdGEpO1xuICB9XG5cbiAgcmVzZXRSZXZpZXdlckZyZXF1ZW5jeSgpIHtcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscyA9IHtcbiAgICAgIHBhdHRlcm46ICcnLFxuICAgICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcbiAgICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXG4gICAgICBzZWxlY3RlZFJlcG9ydDogMCxcbiAgICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICB3aW5kb3c6IDAsXG4gICAgICBmYWlsZWQ6IDAsXG4gICAgICB0aW1lOiBERUZBVUxUX1RJTUUsXG4gICAgICBmYWlsZWRUaW1lOiAnJyxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDMsXG4gICAgfTtcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3RmFpbGVkQWZ0ZXIgPSAwO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgPSAnJztcbiAgICB0aGlzLnBvbGljeUZvcm0ucmV2aWV3X2ZyZXF1ZW5jeV90eXBlID0gJyc7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSAwO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRUaW1lID0gREVGQVVMVF8yNEhSO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAnV2hlbiBkb2VzIHRoaXMgcG9saWN5IG5lZWQgdG8gYmUgcmV2aWV3ZWQgPyc7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0ZWQgcmV2aWV3ZXIgZnJlcXVlbmN5IGRldGFpbHMgaW4gdGhlIHBvbGljeUZvcm1cbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIHNlbGVjdGVkIGZyZXF1ZW5jeSBkZXRhaWxzXG4gICAqL1xuICByZXZpZXdlckZyZXF1ZW5jeURhdGEoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdGYWlsZWRBZnRlciA9IGV2ZW50LmZhaWxlZEFmdGVyO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X2RldGFpbHMgPSBldmVudC5wYXR0ZXJuO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdfZnJlcXVlbmN5X3R5cGUgPSBldmVudC5wYXR0ZXJuLnNwbGl0KCd+JylbMF07XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld19yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPSBldmVudC53aW5kb3c7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJldmlld0ZhaWxlZFRpbWUgPSBldmVudC50aW1lSW4yNEhyO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yZXZpZXdlcl9zdGFydF9kYXRlID0gbW9tZW50KGV2ZW50LnN0YXJ0RnJvbSAqIDEwMDApLmZvcm1hdChcbiAgICAgICdkZGQgTU1NIEREIFlZWVknXG4gICAgKTtcblxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXJGcmVxdWVuY3knLCBmYWxzZSk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBldmVudC5wYXR0ZXJuLFxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGV2ZW50LnRpbWVJbjEyaHIsXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZXZlbnQud2luZG93LFxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50LmZhaWxlZEFmdGVyLFxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGV2ZW50LmxpZmVjeWNsZURldGFpbHMsXG4gICAgICBzdGFydF9vZl9kYXlfdXRjOiBldmVudC5zdGFydEZyb20sXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBbZXZlbnQucmVwb3J0SWRdLFxuICAgICAgZG9tX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnBsYWNlaG9sZGVyLFxuICAgIH07XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XG4gIH1cblxuICAvKipcbiAgICogUG9wdWxhdGVzIHRoZSByZXZpZXdlciBmcmVxdWVuY3kgZmllbGQgd2l0aCBzZWxlY3RlZCBkYXRhIGZyb20gZnJlcXVlbmN5IGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgc2VsZWN0ZWQgZnJlcXVlbmN5IGRldGFpbHNcbiAgICovXG4gIHJldmlld2VyRnJlcXVlbmN5UG9wdWxhdGlvbihldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9IGV2ZW50Py5mcmVxdWVuY3lfZGV0YWlscztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IGV2ZW50Py5yZW1pbmRlcl9iZWZvcmVfZGF5cztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5mYWlsZWQgPSBldmVudD8uZmFpbGVkX2FmdGVyX2RheXM7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnN0YXJ0RGF0ZSA9IGV2ZW50Py5zdGFydF9vZl9kYXlfdXRjO1xuICAgIHRoaXMucmV2aWV3ZXJGcmVxdWVuY3lEZXRhaWxzLnNlbGVjdGVkUmVwb3J0ID1cbiAgICAgIGV2ZW50Py5vbl9jb21wbGV0aW9uX29mWzBdID8/IDA7XG4gICAgdGhpcy5yZXZpZXdlckZyZXF1ZW5jeURldGFpbHMuZGF0ZU9mTW9kaWZpZWQgPSBldmVudD8uZG9tX3V0YztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMztcbiAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBldmVudD8ucGxhY2Vob2xkZXJcbiAgICAgID8gZXZlbnQucGxhY2Vob2xkZXJcbiAgICAgIDogJ1doZW4gZG9lcyB0aGlzIHBvbGljeSBuZWVkIHRvIGJlIHJldmlld2VkID8nO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZGF0YSBzdWJtaXR0ZWQgb24gY3JlYXRlIHBvbGljeSBmb3JtXG4gICAqL1xuICB2YWxpZGF0ZVBvbGljeSgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICB9LCAxMDApO1xuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWU7XG4gICAgY29uc3QgcmUgPSAvJm5ic3A7fDxicj4vZztcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZSA9IGV2ZW50LnJlcGxhY2UocmUsICcnKS50cmltKCk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5TmFtZS50cmltKCkgPT0gJydcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1ha2VzIGFuIGFwaSBjYWxsIHRvIGNyZWF0ZSBhIHBvbGljeVxuICAgKiBAcGFyYW0gcG9saWN5IGNvbnRhaW5zIHBvbGljeUZvcm0gZGF0YVxuICAgKi9cbiAgc3VibWl0UG9saWN5KCkge1xuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLnZhbGlkYXRlUG9saWN5KCk7XG4gICAgaWYgKCF2YWxpZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xuICAgIGlmICh0aGlzLm5vV29ya2Zsb3dTZWxlY3RlZCkge1xuICAgICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkQXBwcm92ZXJzID0gdGhpcy5zZWxlY3RlZFdvcmtmbG93O1xuICAgIH1cbiAgICBjb25zdCBwb2xpY3kgPSB0aGlzLnBvbGljeUZvcm07XG4gICAgbGV0IGFwcHJvdmVyc0RhdGE6IGFueSA9IHRoaXMuY29udmVydEFwcHJvdmFsV29ya2Zsb3coXG4gICAgICBwb2xpY3kuc2VsZWN0ZWRBcHByb3ZlcnNcbiAgICApO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHBvbGljeS5wb2xpY3lEdWVEYXRlPy4kZCA/PyBwb2xpY3kucG9saWN5RHVlRGF0ZTtcbiAgICBsZXQgcmV2aWV3ZXJGaWxlc0FycmF5ID0gY2xvbmVEZWVwKHBvbGljeS5kb2N1bWVudHNBbmRMaW5rcy5mb3JtYXRGaWxlcyk7XG4gICAgY29uc3QgcmV2aWV3ZXJGaWxlcyA9IHJldmlld2VyRmlsZXNBcnJheS5tYXAoKGZpbGU6IGFueSkgPT4ge1xuICAgICAgZmlsZS5uYW1lID0gZmlsZS5maWxlbmFtZTtcbiAgICAgIGZpbGUuZmlsZV9wYXRoID0gZmlsZS5maWxlcGF0aDtcbiAgICAgIGZpbGUub3JnX25hbWUgPSBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xuICAgICAgZGVsZXRlIGZpbGUuZmlsZW5hbWU7XG4gICAgICBkZWxldGUgZmlsZS5maWxlcGF0aDtcbiAgICAgIGRlbGV0ZSBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xuICAgICAgZGVsZXRlIGZpbGUubGlua1NldDtcbiAgICAgIHJldHVybiBmaWxlO1xuICAgIH0pO1xuXG4gICAgbGV0IGF0dGVzdGF0aW9uRmlsZXNBcnJheSA9IGNsb25lRGVlcChcbiAgICAgIHBvbGljeS5hc3NvY2lhdGVkRG9jdW1lbnRzLmZvcm1hdEZpbGVzXG4gICAgKTtcbiAgICBjb25zdCBhdHRlc3RhdGlvbkZpbGVzID0gYXR0ZXN0YXRpb25GaWxlc0FycmF5Lm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgIGVsZS5uYW1lID0gZWxlLmZpbGVuYW1lO1xuICAgICAgZWxlLmZpbGVfcGF0aCA9IGVsZS5maWxlcGF0aDtcbiAgICAgIGVsZS5vcmlnaW5hbF9maWxlX25hbWUgPSBlbGUub3JpZ2luYWxfZmlsZW5hbWU7XG4gICAgICBlbGUuZm9sZGVyX2lkID0gZWxlPy5mb2xkZXJfaWQgPyBlbGUuZm9sZGVyX2lkIDogMDtcbiAgICAgIGVsZS5wYXRoID0gZWxlPy5wYXRoID8gZWxlLnBhdGggOiBlbGUuZmlsZXBhdGggKyBlbGUuZmlsZW5hbWU7XG4gICAgICBlbGUuaXNMaW5rU2V0ID0gZWxlLmxpbmtTZXQ7XG4gICAgICBlbGUub3RoZXJfdHlwZSA9IGVsZT8ub3RoZXJzO1xuICAgICAgZGVsZXRlIGVsZS5maWxlbmFtZTtcbiAgICAgIGRlbGV0ZSBlbGUuZmlsZXBhdGg7XG4gICAgICBkZWxldGUgZWxlLm9yaWdpbmFsX2ZpbGVuYW1lO1xuICAgICAgZGVsZXRlIGVsZS5saW5rU2V0O1xuICAgICAgZGVsZXRlIGVsZS5maWxlX25hbWU7XG4gICAgICBkZWxldGUgZWxlLm90aGVycztcbiAgICAgIHJldHVybiBlbGU7XG4gICAgfSk7XG4gICAgY29uc3QgcmV2aWV3ZXJJRCA9IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZFJldmlld2VycywgJ21lbWJlcl9pZCcpO1xuICAgIGNvbnN0IHBvbGljeUFjY2Vzc1VzZXJzSWRzID1cbiAgICAgIHRoaXMucmV0dXJuSWRzKHBvbGljeS5wb2xpY3lfYWNjZXNzX293bmVycywgJ21lbWJlcl9pZCcpID8/IFtdO1xuICAgIGNvbnN0IHBvbGljeUFjY2Vzc0dyb3Vwc0lkcyA9XG4gICAgICB0aGlzLnJldHVybklkcyhwb2xpY3kucG9saWN5X2FjY2Vzc19ncm91cHMsICdfaWQnKSA/PyBbXTtcbiAgICBjb25zdCBsaW5rUHJvZ3JhbSA9IHRoaXMuY29tbW9uU2VydmljZS50cmFuc2Zvcm1Qcm9ncmFtRGF0YShcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtcyxcbiAgICAgIHRoaXMubGlua1Byb2dyYW0/LnByb2dyYW0/LmxpbmtlZFxuICAgICk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIG5hbWU6IHBvbGljeS5wb2xpY3lOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHBvbGljeS5wb2xpY3lOb3RlcyxcbiAgICAgIGNhdGVnb3J5SWQ6IHRoaXMucmV0dXJuSWRzKHBvbGljeS5zZWxlY3RlZENhdGVnb3JpZXMsICdpZCcpWzBdLFxuICAgICAgZWZmZWN0aXZlRGF0ZTogbW9tZW50KHN0YXJ0RGF0ZSkuZm9ybWF0KCdkZGQgTU1NIEREIFlZWVknKSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyczogdGhpcy5wb2xpY3lGb3JtPy5hZGRSZXNwb25zaWJpbGl0eUNlbnRlcnNcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhwb2xpY3kuc2VsZWN0ZWRSQ3MsICdyY2lkJylcbiAgICAgICAgOiAnJyxcbiAgICB9O1xuICAgIC8vIHRoaXMubmF2aWdhdGVUb1dvcmtyb29tKHBheWxvYWQpO1xuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScpIHtcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5zdWJtaXRQb2xpY3kocGF5bG9hZCkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnBvbGljeUlkID0gcmVzLmRhdGEucG9saWN5LmlkO1xuICAgICAgICAgIGlmICh0aGlzLmNvbnZlcnRGaWxlRGF0YT8uZmlsZU5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubGlua0RvY3VtZW50V2l0aFBvbGljeSh0aGlzLmNvbnZlcnRGaWxlRGF0YSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMudGVtcGxhdGVJZCkge1xuICAgICAgICAgICAgdGhpcy5vblRlbXBsYXRlU2VsZWN0KFt7IF9pZDogdGhpcy50ZW1wbGF0ZUlkIH1dLCB0cnVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcy5kYXRhLnBvbGljeS5jYXRlZ29yeUlkID0gcGF5bG9hZC5jYXRlZ29yeUlkO1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1dvcmtyb29tKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxuICAgICAgICAgICAgJ2FsZXJ0J1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2UudXBkYXRlUG9saWN5KHBheWxvYWQsIHRoaXMucG9saWN5SWQpLnN1YnNjcmliZShcbiAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucG9saWN5SWQgPSByZXMuX2lkO1xuXG4gICAgICAgICAgaWYgKHRoaXMubmF2aWdhdGVUb0RvY3VtZW50c1NlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgICAgICAgICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VuZEZvckF0dGVzdGF0aW9uKSB7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgICAgICAgICAnVGhlIHBvbGljeSBoYXMgYmVlbiBzZW50IGZvciBhdHRlc3RhdGlvbicsXG4gICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ1RoZSBwb2xpY3kgaGFzIGJlZW4gdXBkYXRlZCcsICdzdWNjZXNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB1cmwgPVxuICAgICAgICAgICAgICB0aGlzLmJhc2VVUkwgKyAnL2FsbC9wb2xpY3kvd29ya3Jvb20/aWQ9JyArIHRoaXMucG9saWN5SWQ7XG4gICAgICAgICAgICB0aGlzLmlmcmFtZVNlcnZpY2UucmVkaXJlY3RJZkluSWZyYW1lKHVybCwgdHJ1ZSk7XG4gICAgICAgICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wb2xpY3kvd29ya3Jvb20nXSwgeyBxdWVyeVBhcmFtczogeyBpZDogdGhpcy5wb2xpY3lJZCB9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgICAgICAgICAgLy8gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXG4gICAgICAgICAgICAnYWxlcnQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvV29ya3Jvb20ocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuaWZyYW1lU2VydmljZS5nZXRDbG9zZVdlYnZpZXdNZXNzYWdlKFxuICAgICAgUG9zdE1lc3NhZ2VFdmVudC5QT0xJQ1lfQ1JFQVRFRCxcbiAgICAgIHBheWxvYWRcbiAgICApO1xuICAgIHRoaXMuaWZyYW1lU2VydmljZS5wb3N0TWVzc2FnZShtZXNzYWdlKTtcbiAgfVxuXG4gIGxpbmtEb2N1bWVudFdpdGhQb2xpY3koZG9jdW1lbnQ6IGFueSkge1xuICAgIGxldCB1cmw6IHN0cmluZyA9ICcnO1xuICAgIGlmIChcbiAgICAgIGRvY3VtZW50LmZpbGVOYW1lICYmXG4gICAgICAoZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ3BkZicgfHxcbiAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ1BERicgfHxcbiAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ2RvY3gnIHx8XG4gICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdET0NYJylcbiAgICApIHtcbiAgICAgIHRoaXMucG9saWN5U2VydmljZVxuICAgICAgICAuZXh0cmFjdEZpbGUoZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiwgZG9jdW1lbnQuZmlsZVBhdGgsIHRoaXMucG9saWN5SWQpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzICYmIHRoaXMucG9saWN5SWQpIHtcbiAgICAgICAgICAgICAgaWYgKHJlcy5tZXNzYWdlID09PSAnZG9uZScgfHwgcmVzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdkb2N4JyB8fFxuICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmlsZUV4dGVuc2lvbiA9PT0gJ0RPQ1gnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLmJhc2VVUkwgKyBBUEkuZWRpdFBvbGljeSArIHRoaXMucG9saWN5SWQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZpbGVFeHRlbnNpb24gPT09ICdwZGYnIHx8XG4gICAgICAgICAgICAgICAgICBkb2N1bWVudC5maWxlRXh0ZW5zaW9uID09PSAnUERGJ1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgdXJsID0gdGhpcy5iYXNlVVJMICsgQVBJLmdvVG9Qb2xpY3lXb3Jrcm9vbSArIHRoaXMucG9saWN5SWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0cnVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgICBcIk9vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB3ZSB3ZXJlIHVuYWJsZSB0byBjb21wbGV0ZSB0aGlzIGFjdGlvbi4gTGV0J3MgZ2l2ZSBpdCBhbm90aGVyIHRyeSwgc2hhbGwgd2U/XCIsXG4gICAgICAgICAgICAgICdhbGVydCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICBcIk9vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB3ZSB3ZXJlIHVuYWJsZSB0byBjb21wbGV0ZSB0aGlzIGFjdGlvbi4gTGV0J3MgZ2l2ZSBpdCBhbm90aGVyIHRyeSwgc2hhbGwgd2U/XCIsXG4gICAgICAgICdhbGVydCdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIG9wZW5zIHRoZSBkYXRlIHBpY2tlciBvbiBwb2xpY3kgZm9ybVxuICAgKi9cbiAgb3BlbkRhdGVQaWNrZXIoKSB7XG4gICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/Lm9wZW4oKTtcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcbiAgICAvLyB0aGlzLnNldEFjdGl2ZUZpZWxkU2VsZWN0b3IoJ0lTU1VFX0RBVEVfVElNRScsICdJU1NVRV9EQVRFX1RJTUUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjbG9zZXMgdGhlIGRhdGUgcGlja2VyIGZyb20gcG9saWN5IGZvcm1cbiAgICovXG4gIGNsb3NlRGF0ZVBpY2tlcihldnQ6IGFueSkge1xuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcblxuICAgIGlmICghZXZ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldnQ/LmRhdGU/LiRkKSB7XG4gICAgICBsZXQgbW9udGhBcnJheSA9IFtcbiAgICAgICAgJ0phbicsXG4gICAgICAgICdGZWInLFxuICAgICAgICAnTWFyJyxcbiAgICAgICAgJ0FwcicsXG4gICAgICAgICdKdW4nLFxuICAgICAgICAnSnVsJyxcbiAgICAgICAgJ0F1ZycsXG4gICAgICAgICdTZXAnLFxuICAgICAgICAnT2N0JyxcbiAgICAgICAgJ05vdicsXG4gICAgICAgICdEZWMnLFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldERhdGUoKTtcbiAgICAgIGNvbnN0IG1vbnRoVmFsdWUgPSBtb250aEFycmF5W25ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldE1vbnRoKCldO1xuICAgICAgY29uc3QgeWVhclZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy4kZCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHtkYXRlVmFsdWV9ICR7bW9udGhWYWx1ZX0gJHt5ZWFyVmFsdWV9YDtcbiAgICB9XG4gICAgaWYgKGV2dD8uZGF0ZT8uJGQpIHtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlID0gZXZ0Py5kYXRlPy4kZDtcbiAgICB9XG4gICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XG4gIH1cbiAgZWRpdFBvbGljeUZyb21Eb2N1bWVudHMoKSB7XG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xuICAgIHRoaXMuc2hpZnRUb0VkaXRNb2RlLmVtaXQoKTtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5zaG93Q3JlYXRlRG9jdW1lbnRzID0gZmFsc2U7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvRG9jdW1lbnRzU2VjdGlvbiA9IHRydWU7XG4gICAgdGhpcy5lZGl0UG9saWN5KCk7XG4gIH1cblxuICBjaGVja0ZvckNyZWF0ZURvY3VtZW50cygpIHtcbiAgICBjb25zdCBkYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Nob3dDcmVhdGVEb2N1bWVudHMnKTtcbiAgICB0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uID0gZGF0YSA9PT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGlmICh0aGlzLm5hdmlnYXRlVG9Eb2N1bWVudHNTZWN0aW9uKSB7XG4gICAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICAgIHRoaXMuc2hvd0NyZWF0ZURvY3VtZW50cyA9IHRydWU7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc2hvd0NyZWF0ZURvY3VtZW50cycpO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRQb2xpY3koKSB7XG4gICAgdGhpcy5tb2RlID0gJ0VESVQnO1xuXG4gICAgaWYgKHRoaXMucG9saWN5SWQpIHtcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5lZGl0UG9saWN5KHRoaXMucG9saWN5SWQpLnN1YnNjcmliZShcbiAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHJlc1swXTtcbiAgICAgICAgICBjb25zdCBjYXRlZ29yeUlkcyA9IGRhdGEuY2F0ZWdvcnlfZGV0YWlsc19hcnIubWFwKFxuICAgICAgICAgICAgKGlkOiBhbnkpID0+IGlkLmNhdE9iaklkXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnBvbGljeUFwcHJvdmFsRmxhZyA9IGRhdGEucG9saWN5QXBwcm92YWxGbGFnO1xuICAgICAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd0lkcyA9IGRhdGE/LmFwcHJvdmFsV29ya2Zsb3dEZXRhaWxzPy5tYXAoXG4gICAgICAgICAgICAod29ya2Zsb3c6IGFueSkgPT4gd29ya2Zsb3c/Ll9pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93ID0gW107XG4gICAgICAgICAgdGhpcy5kZWZhdWx0RWRpdEFwcHJvdmVycyA9IGRhdGE/LmFwcHJvdmVycztcbiAgICAgICAgICB0aGlzLmdldEFwcHJvdmVyV29ya0Zsb3coY2F0ZWdvcnlJZHMsIGRhdGEpO1xuICAgICAgICAgIHRoaXMuZ2V0TGlua2VkUG9saWNpZXMoZGF0YT8uX2lkKTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUG9saWN5Rm9ybShkYXRhLCBjYXRlZ29yeUlkcyk7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihkYXRhKTtcbiAgICAgICAgICB0aGlzLnJldmlld2VyRnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZGF0YSk7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVBvbGljeUFjY2Vzc0RldGFpbHMoZGF0YSk7XG4gICAgICAgICAgdGhpcy5nZXRMaW5rUHJvZ3JhbShyZXNbMF0/LnBvbGlkKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcG9wdWxhdGVQb2xpY3lGb3JtKGRhdGE6IGFueSwgY2F0ZWdvcnlJZHM6IGFueSkge1xuICAgIGNvbnN0IHJldmlld2VyRmlsZXMgPSBkYXRhLlJldmlld2VyQXR0YWNobWVudHMubWFwKChmaWxlOiBhbnkpID0+IHtcbiAgICAgIGZpbGUuZmlsZW5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICBmaWxlLmZpbGVwYXRoID0gZmlsZS5maWxlX3BhdGg7XG4gICAgICBmaWxlLm9yaWdpbmFsX2ZpbGVuYW1lID0gZmlsZS5vcmdfbmFtZTtcbiAgICAgIGZpbGUuZmlsZV9uYW1lID0gZmlsZS5vcmdfbmFtZTtcbiAgICAgIGZpbGUubGlua1NldCA9ICcnO1xuICAgICAgZGVsZXRlIGZpbGUubmFtZTtcbiAgICAgIGRlbGV0ZSBmaWxlLmZpbGVfcGF0aDtcbiAgICAgIGRlbGV0ZSBmaWxlLm9yZ19uYW1lO1xuXG4gICAgICByZXR1cm4gZmlsZTtcbiAgICB9KTtcbiAgICBjb25zdCBhdHRlc3RhdGlvbkZpbGVzID0gZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50cy5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICBlbGUuZmlsZW5hbWUgPSBlbGUubmFtZTtcbiAgICAgIGVsZS5maWxlcGF0aCA9IGVsZS5maWxlX3BhdGg7XG4gICAgICBlbGUub3JpZ2luYWxfZmlsZW5hbWUgPSBlbGUub3JpZ2luYWxfZmlsZV9uYW1lO1xuICAgICAgZWxlLmZpbGVfbmFtZSA9IGVsZS5vcmlnaW5hbF9maWxlX25hbWU7XG4gICAgICBlbGUubGlua1NldCA9IGVsZS5pc0xpbmtTZXQ7XG4gICAgICBlbGUub3RoZXJzID0gZWxlPy5vdGhlcl90eXBlO1xuXG4gICAgICBkZWxldGUgZWxlLm5hbWU7XG4gICAgICBkZWxldGUgZWxlLmZpbGVfcGF0aDtcbiAgICAgIGRlbGV0ZSBlbGUub3JpZ2luYWxfZmlsZV9uYW1lO1xuICAgICAgZGVsZXRlIGVsZS5pc0xpbmtTZXQ7XG4gICAgICBkZWxldGUgZWxlPy5vdGhlcl90eXBlO1xuICAgICAgcmV0dXJuIGVsZTtcbiAgICB9KTtcbiAgICBjb25zdCBncm91cF9lbXBsb3llZUlkcyA9IGRhdGEuZ3JvdXBfZW1wbG95ZWVOYW1lcy5tYXAoXG4gICAgICAoaWQ6IGFueSkgPT4gaWQ/LmVtcGxveWVlX2lkXG4gICAgKTtcbiAgICBjb25zdCBncm91cF9JZHMgPSBkYXRhPy51c2VyZ3JvdXBfaWRzPy5tYXAoKGlkOiBhbnkpID0+IGlkKSA/PyBbXTtcblxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMgPSB0aGlzLnNldExpc3QoXG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdCxcbiAgICAgIGNhdGVnb3J5SWRzLFxuICAgICAgJ19pZCdcbiAgICApO1xuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfaWQgPSBkYXRhPy5wb2xpY3lfaWQ7XG4gICAgKHRoaXMucG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gZGF0YS5wb2xpY3lfbmFtZSksXG4gICAgICAodGhpcy5wb2xpY3lGb3JtLnBvbGljeU5vdGVzID0gZGF0YS5ub3RlcyksXG4gICAgICAodGhpcy5wb2xpY3lGb3JtLmN1c3RvbVRhZ3MgPSBkYXRhLmN1c3RvbV90YWdzID8gZGF0YS5jdXN0b21fdGFncyA6IFtdKTtcblxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFzc2lnbmVlcyA9XG4gICAgICBncm91cF9lbXBsb3llZUlkcy5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMuYXNzaWduZWVzTGlzdCwgZ3JvdXBfZW1wbG95ZWVJZHMsICdteV9tZW1iZXJfaWQnKVxuICAgICAgICA6IFtdOyAvL2RvdWJ0IGluIG5hbWVcblxuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEdyb3VwQXNzaWduZWUgPVxuICAgICAgZ3JvdXBfSWRzPy5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LCBncm91cF9JZHMsICdfaWQnKVxuICAgICAgICA6IFtdO1xuXG4gICAgdGhpcy5wb2xpY3lGb3JtLnNlbGVjdGVkUkNzID0gZGF0YS5lbnRpdGllc1xuICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5yY0xpc3QsIGRhdGEuZW50aXRpZXMuc3BsaXQoJywnKSwgJ2l0ZW1faWQnKVxuICAgICAgOiBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uQ0NGYWlsRW1haWwgPSBkYXRhLkNDRmFpbEVtYWlsXG4gICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyc0xpc3QsIGRhdGEuQ0NGYWlsRW1haWwsICdlbXBsb3llZV9lbWFpbCcpXG4gICAgICA6IFtdO1xuICAgIHRoaXMucG9saWN5Rm9ybS5DQ0ZhaWxFbWFpbEdyb3VwID1cbiAgICAgIGRhdGE/LmNjX2ZhaWxfdXNlcmdyb3VwX2lkcz8ubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxuICAgICAgICAgICAgZGF0YT8uY2NfZmFpbF91c2VyZ3JvdXBfaWRzLFxuICAgICAgICAgICAgJ19pZCdcbiAgICAgICAgICApXG4gICAgICAgIDogW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDRW1haWwgPSBkYXRhLkNDRW1haWxcbiAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcbiAgICAgICAgICBkYXRhLkNDRW1haWwuc3BsaXQoJywnKSxcbiAgICAgICAgICAnZW1wbG95ZWVfZW1haWwnXG4gICAgICAgIClcbiAgICAgIDogW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLkNDR3JvdXBFbWFpbCA9XG4gICAgICBkYXRhPy5jY191c2VyZ3JvdXBfaWRzPy5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LCBkYXRhPy5jY191c2VyZ3JvdXBfaWRzLCAnX2lkJylcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYXZhaWxhYmxlT25Qb3J0YWwgPSBkYXRhLmVuYWJsZVBvcnRhbCA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWNjZXB0U3VnZ2VzdGlvbnMgPSBkYXRhLmVuYWJsZVN1Z2dlc3Rpb24gPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlcXVpcmVzU2lnbmF0dXJlRm9yQXR0ZXN0YXRpb24gPSBkYXRhLmlzX3NpZ25hdHVyZV9yZXF1aXJlZFxuICAgICAgPyB0cnVlXG4gICAgICA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5yaXNrUmF0aW5nID0gZGF0YS5yaXNrX2NsYXNzID8gTnVtYmVyKGRhdGEucmlza19jbGFzcykgOiAxO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hc3NvY2lhdGVkRG9jdW1lbnRzID0gZGF0YS5hc3NvY2lhdGVkX2RvY3VtZW50c1xuICAgICAgPyB7XG4gICAgICAgICAgZm9ybWF0RmlsZXM6IGF0dGVzdGF0aW9uRmlsZXMsXG4gICAgICAgIH1cbiAgICAgIDogeyBmb3JtYXRGaWxlczogW10gfTtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5RHVlRGF0ZSA9IGRhdGEuc3RhcnREYXRlXG4gICAgICA/IG1vbWVudChkYXRhLnN0YXJ0RGF0ZSlcbiAgICAgIDogbW9tZW50KCk7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmNoZWNrcG9pbnREZXRhaWxzID0gZGF0YS5jaGVja3BvaW50c1xuICAgICAgPyBkYXRhLmNoZWNrcG9pbnRzXG4gICAgICA6IFtdO1xuICAgIHRoaXMucG9saWN5Rm9ybS50b3RhbFF1ZXN0aW9uID0gZGF0YS50b3RhbF9tYXJrcyA/IGRhdGEudG90YWxfbWFya3MgOiAwO1xuICAgIHRoaXMucG9saWN5Rm9ybS5wYXNzaW5nTWFya3MgPSBkYXRhLnBhc3NfbWFya3MgPyBkYXRhLnBhc3NfbWFya3MgOiAwO1xuICAgIHRoaXMucG9saWN5Rm9ybS5kb2N1bWVudHNBbmRMaW5rcyA9IGRhdGEuUmV2aWV3ZXJBdHRhY2htZW50c1xuICAgICAgPyB7XG4gICAgICAgICAgZm9ybWF0RmlsZXM6IHJldmlld2VyRmlsZXMsXG4gICAgICAgICAgZm9ybWF0TGlua3M6IGRhdGEuUmV2aWV3ZXJMaW5rcyxcbiAgICAgICAgfVxuICAgICAgOiB7IGZvcm1hdEZpbGVzOiBbXSwgZm9ybWF0TGlua3M6IFtdIH07XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZFJlc3BvbnNpYmlsaXR5Q2VudGVycyA9XG4gICAgICB0aGlzLnBvbGljeUZvcm0uc2VsZWN0ZWRSQ3MubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkUmV2aWV3ZXJzID0gZGF0YS5SZXZpZXdlck1lbWJlcklkID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRDaGVja3BvaW50cyA9XG4gICAgICB0aGlzLnBvbGljeUZvcm0uY2hlY2twb2ludERldGFpbHMubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkT3ZlcnNlZXJzID1cbiAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NGYWlsRW1haWw/Lmxlbmd0aCA+IDAgfHxcbiAgICAgIHRoaXMucG9saWN5Rm9ybT8uQ0NFbWFpbD8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5wb2xpY3lGb3JtPy5DQ0ZhaWxFbWFpbEdyb3VwPy5sZW5ndGggPiAwIHx8XG4gICAgICB0aGlzLnBvbGljeUZvcm0/LkNDR3JvdXBFbWFpbD8ubGVuZ3RoID4gMFxuICAgICAgICA/IHRydWVcbiAgICAgICAgOiBmYWxzZTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYWRkQXNzb2NpYXRlZERvY3VtZW50cyA9XG4gICAgICBkYXRhLmFzc29jaWF0ZWRfZG9jdW1lbnRzLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5jY0VtYWlsT2JqSWRzID1cbiAgICAgIGRhdGE/LmNjX3VzZXJncm91cF9pZHM/Lmxlbmd0aCA+IDAgPyBkYXRhPy5jY191c2VyZ3JvdXBfaWRzIDogW107XG4gICAgdGhpcy5jY0ZhaWxHcm91cE9iaklkcyA9XG4gICAgICBkYXRhPy5jY19mYWlsX3VzZXJncm91cF9pZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyBkYXRhPy5jY19mYWlsX3VzZXJncm91cF9pZHNcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudCA9IGRhdGE/LmFzc2Vzc21lbnQgPz8gW107XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFkZExpbmtBc3Nlc3NtZW50ID0gZGF0YT8uYXNzZXNzbWVudD8ubGVuZ3RoO1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRWZXJzaW9uID0gZGF0YT8ucG9saWN5X3ZlcnNpb24gPyB0cnVlIDogZmFsc2U7XG4gICAgLy8gdGhpcy5jaGVja0ZvckNyZWF0ZURvY3VtZW50cygpO1xuICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfdmVyc2lvbiA9IGRhdGEucG9saWN5X3ZlcnNpb247XG4gICAgdGhpcy5wb2xpY3lGb3JtLnByb2dyYW1TZWxlY3RlZFZhbHVlcy5wcm9ncmFtID1cbiAgICAgIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzICYmIGRhdGE/LnByb2dyYW1DYXREZXRhaWxzPy5sZW5ndGhcbiAgICAgICAgPyBkYXRhPy5wcm9ncmFtQ2F0RGV0YWlsc1swXVxuICAgICAgICA6IHt9O1xuICAgIHRoaXMuc2VsZWN0ZWRMaW5rUHJvZ3JhbSA9XG4gICAgICBkYXRhPy5wcm9ncmFtQ2F0RGV0YWlscyAmJiBkYXRhPy5wcm9ncmFtQ2F0RGV0YWlscz8ubGVuZ3RoXG4gICAgICAgID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhPy5wcm9ncmFtQ2F0RGV0YWlsc1swXSkpXG4gICAgICAgIDoge307XG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgfVxuICBjaGFuZ2VOYW1lKGV2ZW50OiBzdHJpbmcpIHtcbiAgICBsZXQgdGV4dCA9IGV2ZW50O1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLzwoLio/KT4vZ2ksICcnKTtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIHR5cGVTZWxlY3RlZChldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMucG9saWN5Rm9ybS5hZGRSZXZpZXdlcnMgPSBldmVudDtcbiAgfVxuICBvblZlcnNpb24oZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHJlZ2V4TWF0Y2ggPSBuZXcgUmVnRXhwKCdeW0EtWmEtejAtOVxcXFwuLV0qJCcpO1xuICAgIHRoaXMuaXNWZXJzaW9uVmFsaWQgPSByZWdleE1hdGNoLnRlc3QodGhpcy5wb2xpY3lGb3JtLnBvbGljeV92ZXJzaW9uKTtcbiAgICBpZiAoIXRoaXMuaXNWZXJzaW9uVmFsaWQpIHtcbiAgICAgIGlmICh0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24/Lmxlbmd0aCA+IDIwKSB7XG4gICAgICAgIHRoaXMudmVyc2lvbkVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgJ1lvdXIgaW5wdXQgaXMgaW52YWxpZC4gVGhlIHZlcnNpb24gZmllbGQgY2FuIG9ubHkgaW5jbHVkZSBudW1iZXJzLCBhbHBoYWJldHMsIGh5cGhlbiBvciBkb3RzLiBUaGUgbWF4aW11bSBjaGFyYWN0ZXIgbGltaXQgaXMgMjAgY2hhcmFjdGVycy4nO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLmlzVmVyc2lvblZhbGlkICYmXG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X3ZlcnNpb24/Lmxlbmd0aCA+IDIwXG4gICAgKSB7XG4gICAgICB0aGlzLnZlcnNpb25FcnJvck1lc3NhZ2UgPVxuICAgICAgICAnWW91ciBpbnB1dCBpcyBpbnZhbGlkLiBUaGUgbWF4aW11bSBjaGFyYWN0ZXIgbGltaXQgaXMgMjAgY2hhcmFjdGVycy4nO1xuICAgIH1cbiAgfVxuXG4gIC8vdGhpcyBmdW5jdGlvbiByZXNwb25zaWJsZSB3aGVuIHdlIGNsaWNrIG9uIGRpdiBzZWxlY3RcbiAgY2xpY2tBcHByb3ZhbFdvcmtmbG93KGV2ZW50OiBib29sZWFuKSB7XG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gZXZlbnQ7XG4gICAgdGhpcy5jcmVhdGVBcHByb3ZhbENsaWNrID0gZmFsc2U7XG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcbiAgfVxuXG4gIGxpc3RDYW5jZWxDbGlja2VkKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IGZhbHNlO1xuICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0b3IoKTtcbiAgICAgIC8vIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RlZEFwcHJvdmFsV29ya2Zsb3coZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvdyA9IFtldmVudF07XG4gICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93SWRzID0gZXZlbnQ/Ll9pZCA/IFtldmVudD8uX2lkXSA6IFtdO1xuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IGZhbHNlO1xuICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZEFwcHJvdmVycyA9IFtldmVudF07XG4gICAgdGhpcy5kaXNhYmxlU2VsZWN0b3IoKTtcbiAgfVxuXG4gIHVwZGF0ZWRQcm9ncmFtRGV0YWlscyhldmVudDogYW55KSB7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmxpbmtQcm9ncmFtID0gZXZlbnQ/LmxpbmtQcm9ncmFtO1xuICAgIHRoaXMucG9saWN5Rm9ybS5wcm9ncmFtU2VsZWN0ZWRWYWx1ZXMgPSBldmVudD8uc2VsZWN0ZWRWYWx1ZXM7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmJ1c2luZXNzQ3ljbGUgPSBldmVudD8uYnVzaW5lc3NDeWNsZTtcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICB9XG5cbiAgb25Bc3Nlc3NtZW50U2VsZWN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0uYXNzZXNzbWVudCA9IFtldmVudF07XG4gIH1cbiAgZ2V0QXNzZXNzbWVudERldGFpbHMoYXNzZXNzbWVudERldGFpbHM6IGFueSwgdHlwZT86IHN0cmluZykge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAuZ2V0QXNzZXNzbWVudERldGFpbHNCeUlEKGFzc2Vzc21lbnREZXRhaWxzLmFzc2Vzc21lbnRfaWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgY2F0ZWdvcnlEZXRhaWxzID0gcmVzWzBdLmNhdGVnb3J5LmZpbmQoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5faWQgPT0gYXNzZXNzbWVudERldGFpbHMuY2F0ZWdvcnlfaWRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5wb2xpY3lGb3JtLmFzc2Vzc21lbnQgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeV9pZCxcbiAgICAgICAgICAgICAgYXNzZXNzbWVudF9pZDogYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZCxcbiAgICAgICAgICAgICAgYXNzZXNzbWVudERldGFpbHM6IHtcbiAgICAgICAgICAgICAgICBpZDogYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZCxcbiAgICAgICAgICAgICAgICBhc3Nlc3NtZW50X25hbWU6IHJlc1swXS5hc3Nlc3NtZW50X25hbWUsXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25zOiByZXNbMF0ucXVlc3Rpb25zQ291bnQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNhdGVnb3J5X2RldGFpbHM6IGNhdGVnb3J5RGV0YWlscyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBzZXRPd25lcnNPbkxvYWQoKSB7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9vd25lcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICB0aGlzLmFsbEFwcHJvdmVycyxcbiAgICAgIFt0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKCldLFxuICAgICAgJ21lbWJlcl9pZCdcbiAgICApO1xuICB9XG5cbiAgYXBwcm92YWxXb3JrZmxvd0FQSUNhbGwoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgY29uc3Qgb2JqZWN0SWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIHRoaXMucG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXMsXG4gICAgICAgICdfaWQnXG4gICAgICApO1xuICAgICAgdGhpcy5nZXRBcHByb3ZlcldvcmtGbG93KG9iamVjdElkcyk7XG4gICAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnRBcHByb3ZhbFdvcmtmbG93KGFwcHJvdmVyTGlzdDogYW55KSB7XG4gICAgbGV0IHJldHVybkpzb246IGFueSA9IHt9O1xuICAgIGNvbnN0IG1vZGlmaWVkRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYXBwcm92ZXJMaXN0KSk7XG4gICAgbW9kaWZpZWREYXRhPy5mb3JFYWNoKCh3b3JrZmxvdzogYW55KSA9PiB7XG4gICAgICB3b3JrZmxvdz8uYXBwcm92YWxfd29ya2Zsb3c/LmZvckVhY2goKGFwcHJvdmVyOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgbGV0IGkgPSBpbmRleCArIDE7XG4gICAgICAgIHJldHVybkpzb25bJ2xldmVsJyArIGldID0gYXBwcm92ZXI7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmV0dXJuSnNvbjtcbiAgfVxuXG4gIGRlbGV0ZUxldmVsKGluZGV4OiBhbnkpIHtcbiAgICAvLyBBcHByb3ZlciBMZXZlbCBkZWxldGVcbiAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0/LmFwcHJvdmFsX3dvcmtmbG93LnNwbGljZShpbmRleCwgMSk7XG4gICAgZm9yIChcbiAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICBpIDwgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdPy5hcHByb3ZhbF93b3JrZmxvdy5sZW5ndGg7XG4gICAgICBpKytcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93WzBdLmFwcHJvdmFsX3dvcmtmbG93W2luZGV4XVsnbGV2ZWwxJ10gPT09XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXT8uYXBwcm92YWxfd29ya2Zsb3dbaW5kZXhdWydhbGlhc19uYW1lJ11cbiAgICAgICkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkV29ya2Zsb3dbMF0uYXBwcm92YWxfd29ya2Zsb3dbaW5kZXhdW1xuICAgICAgICAgICdhbGlhc19uYW1lJ1xuICAgICAgICBdID0gYExldmVsICR7aSArIDF9YDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRXb3JrZmxvd1swXS5hcHByb3ZhbF93b3JrZmxvd1tpbmRleF1bJ2xldmVsMSddID0gYExldmVsICR7XG4gICAgICAgIGkgKyAxXG4gICAgICB9YDtcbiAgICB9XG4gIH1cblxuICBlZGl0V29ya2Zsb3coZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IHRydWU7XG4gICAgdGhpcy5lZGl0QXBwcm92YWxXb3JrZmxvdyA9IGV2ZW50O1xuICAgIHRoaXMuY3JlYXRlQXBwcm92YWxDbGljayA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignYXBwcm92ZXJzJywgdHJ1ZSk7XG4gIH1cblxuICAvL0Z1bmN0aW9uIHJlc3BvbnNpYmxlIHdoZW4gd2UgY2xpY2sgb24gQ1JFQVRFIEEgTkVXIEFQUFJPVkFMIFdPUktGTE9XXG4gIGNyZWF0ZUFwcHJvdmFsV29ya2Zsb3coKSB7XG4gICAgdGhpcy5lbmFibGVBcHByb3ZhbFdvcmtmbG93ID0gdHJ1ZTtcbiAgICB0aGlzLmNyZWF0ZUFwcHJvdmFsQ2xpY2sgPSB0cnVlO1xuICB9XG5cbiAgY2xvc2VDbGlja2VkQ3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsV29ya2Zsb3cgPSBmYWxzZTtcbiAgICB0aGlzLmRpc2FibGVTZWxlY3RvcigpO1xuICB9XG5cbiAgZWRpdExldmVsQ2xpY2tlZChlZGl0TGV2ZWw6IGFueSwgaW5kZXg6IGFueSkge1xuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxXb3JrZmxvdyA9IHRydWU7XG4gICAgdGhpcy5lZGl0V29ya2Zsb3dMZXZlbCA9IHtcbiAgICAgIGVkaXRMZXZlbDogZWRpdExldmVsLFxuICAgICAgaW5kZXg6IGluZGV4LFxuICAgIH07XG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdhcHByb3ZlcnMnLCB0cnVlKTtcbiAgfVxuXG4gIHNldEFjY2Vzc0ZpZWxkKGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc190eXBlID0gZXZlbnQ7XG4gICAgaWYgKGV2ZW50ID09IDApIHtcbiAgICAgIC8vIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IHRoaXMudXNlcnNBY2Nlc3NMaXN0O1xuICAgICAgdGhpcy5zYXZlU2VsZWN0ZWRMaXN0KCdwb2xpY3lBY2Nlc3MnLCB7XG4gICAgICAgIHVzZXJzOiB0aGlzLnVzZXJzQWNjZXNzTGlzdCxcbiAgICAgICAgZ3JvdXBzOiBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldFVzZXJzQWNjZXNzTGlzdEJ5Q2F0ZWdvcnkoY2F0ZWdvcnlEZXRhaWxzOiBhbnkpIHtcbiAgICBsZXQgdW5pcXVlVXNlcnM6IGFueSA9IFtdO1xuICAgIGxldCB1bmlxdWVHcm91cHNJZDogYW55ID0gW107XG4gICAgdW5pcXVlVXNlcnMgPSB1bmlxQnkoXG4gICAgICBjYXRlZ29yeURldGFpbHM/LmFsbF9tYW5hZ2Vycz8uY29uY2F0KFxuICAgICAgICBjYXRlZ29yeURldGFpbHM/LmFsbF9hcHByb3ZlcnMsXG4gICAgICAgIGNhdGVnb3J5RGV0YWlscz8uYWxsX2F1dGhvcnNcbiAgICAgICksXG4gICAgICAnbWVtYmVyX2lkJ1xuICAgICk7XG4gICAgdGhpcy51c2Vyc0FjY2Vzc0xpc3QgPSB1bmlxdWVVc2VycztcbiAgICB0aGlzLnVzZXJzQWNjZXNzTGlzdElkcyA9IHRoaXMucmV0dXJuSWRzKHRoaXMudXNlcnNBY2Nlc3NMaXN0LCAnbWVtYmVyX2lkJyk7XG5cbiAgICB1bmlxdWVHcm91cHNJZCA9IFtcbiAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgIGNhdGVnb3J5RGV0YWlscz8uYXV0aG9yX3VzZXJncm91cF9pZHM/LmNvbmNhdChcbiAgICAgICAgICBjYXRlZ29yeURldGFpbHM/Lm93bmVyX3VzZXJncm91cF9pZHNcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICBdO1xuICAgIHRoaXMuZ3JvdXBzQWNjZXNzTGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxuICAgICAgdW5pcXVlR3JvdXBzSWQsXG4gICAgICAnX2lkJ1xuICAgICk7XG4gICAgdGhpcy5ncm91cHNBY2Nlc3NMaXN0SWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICB0aGlzLmdyb3Vwc0FjY2Vzc0xpc3QsXG4gICAgICAnZ3JvdXBfaWQnXG4gICAgKTtcbiAgfVxuXG4gIHBvcHVsYXRlUG9saWN5QWNjZXNzRGV0YWlscyhwb2xpY3lEZXRhaWxzOiBhbnkpIHtcbiAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc190eXBlID0gcG9saWN5RGV0YWlscz8ucG9saWN5X2FjY2Vzc190eXBlO1xuICAgIGlmIChwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX293bmVycz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19vd25lcnMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgIHRoaXMudXNlcnNMaXN0LFxuICAgICAgICBwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX293bmVycyxcbiAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX2dyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc19ncm91cHMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgIHRoaXMub3ZlcnNlZXJHcm91cHNMaXN0LFxuICAgICAgICBwb2xpY3lEZXRhaWxzPy5wb2xpY3lfYWNjZXNzX2dyb3VwcyxcbiAgICAgICAgJ19pZCdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRQb2xpY3lBY2Nlc3NEZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLnBvbGljeUZvcm0ucG9saWN5X2FjY2Vzc190eXBlID09IDApIHtcbiAgICAgIHRoaXMucG9saWN5Rm9ybS5wb2xpY3lfYWNjZXNzX293bmVycyA9IFtdO1xuICAgICAgdGhpcy5wb2xpY3lGb3JtLnBvbGljeV9hY2Nlc3NfZ3JvdXBzID0gW107XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRnJlcXVlbmN5KCkge1xuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9ICcnO1xuICAgIHRoaXMucG9saWN5Rm9ybS5mcmVxdWVuY3lfdGV4dCA9ICcnO1xuICAgIHRoaXMucG9saWN5Rm9ybS5tYXJrX2ZhaWxlZF9hZnRlciA9IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZSA9IDA7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmZhaWxlZF90aW1lID0gJyc7XG4gICAgdGhpcy5wb2xpY3lGb3JtLmFzc2lnbmVlX3N0YXJ0X2RhdGUgPSAnJztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMucGF0dGVybiA9ICcnO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gJyc7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLndpbmRvdyA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmxpZmVjeWNsZSA9ICcnO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSAwO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydCA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmRhdGVPZk1vZGlmaWVkID0gMDtcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuY29udGludW91c19mYWlsZWRfZGF5cyA9IDA7XG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAnSG93IG9mdGVuIGRvZXMgdGhpcyBwb2xpY3kgbmVlZCB0byBiZSBhdHRlc3RlZD8nO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBkb2N1bWVudENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlUGlja2VyT2JqZWN0ID0ge1xuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgY2xhc3M6ICdlZmZlY3RpdmUtZGF0ZScsXG4gICAgICBwb3B1cDogdGhpcy5kYXRlUGlja2VyUG9wVXAsXG4gICAgICBjb21wb25lbnQ6IHRoaXMuZGF0ZVBpY2tlcixcbiAgICAgIG92ZXJsYXk6IHRoaXMuZGF0ZVBpY2tlck92ZXJsYXksXG4gICAgfTtcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuaGFuZGxlRG9jdW1lbnRDbGljayhkYXRlUGlja2VyT2JqZWN0KTtcbiAgfVxuXG4gIG9uVGVtcGxhdGVTZWxlY3QoZXZlbnQ6IGFueSwgaXNQcmVzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKGV2ZW50Py5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuaXNUZW1wbGF0ZUNsb3NlZCA9IGZhbHNlO1xuICAgICAgdGhpcy50ZW1wbGF0ZVZpZXcgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcblxuICAgIGNvbnN0IHVuYW1lID0gdGhpcy51c2VySW5mbyA/IHRoaXMudXNlckluZm8ubmFtZSA6ICcnO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMubWVtYmVyX29ial9pZDtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5wb2xpY3lGb3JtLnBvbGljeU5hbWUudHJpbSgpO1xuICAgIGNvbnN0IGlkID0gdGhpcy5wb2xpY3lJZDtcbiAgICB0aGlzLnRlbXBsYXRlSWQgPSBldmVudFswXT8uX2lkO1xuICAgIHRoaXMucG9saWN5U2VydmljZVxuICAgICAgLnNhdmVQb2xpY3lEZXRhaWxzKHVuYW1lLCB1aWQsIGlkLCBuYW1lLCAnJywgMClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnRlbXBsYXRlVmlldyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNldE5hdmlnYXRpb25VcmwoKTtcbiAgICAgICAgaWYgKGlzUHJlc2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9UZW1wbGF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldE5hdmlnYXRpb25VcmwoKSB7XG4gICAgY29uc3QgYmFzVXJsID1cbiAgICAgIHRoaXMuYmFzZVVSTCArXG4gICAgICAnL2FsbC9wb2xpY3kvZWRpdC1wb2xpY3k/aWQ9JyArXG4gICAgICB0aGlzLnBvbGljeUlkICtcbiAgICAgICcmdGVtcGxhdGVJZD0nICtcbiAgICAgIHRoaXMudGVtcGxhdGVJZDtcbiAgICB0aGlzLnRlbXBsYXRlVXJsID0gYmFzVXJsO1xuICB9XG5cbiAgbmF2aWdhdGVUb1RlbXBsYXRlKCkge1xuICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodGhpcy50ZW1wbGF0ZVVybCwgdHJ1ZSk7XG4gIH1cblxuICBvbkl0ZW1zU2VsZWN0ZWRDaGFuZ2UoaXRlbXM6IExpc3RJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXMgPSBpdGVtcztcbiAgICB0aGlzLmFsbFByb2dhbVNlbGVjdGVkID0gKFtdIGFzIGFueSkuY29uY2F0KC4uLk9iamVjdC52YWx1ZXMoaXRlbXMpKTtcbiAgfVxuXG4gIG9uUG9saWN5Q2F0ZWdvcnlTZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFBvbGljeUNhdGVnb3J5ID0gW107XG4gICAgdGhpcy5zZWxlY3RlZFBvbGljeUNhdGVnb3J5LnB1c2goZXZlbnQpO1xuICB9XG5cbiAgc2VsZWN0Q2F0ZWdvcnkoKTogdm9pZCB7XG4gICAgdGhpcy5hbGxQcm9nYW1TZWxlY3RlZCA9IChbXSBhcyBhbnkpLmNvbmNhdChcbiAgICAgIC4uLk9iamVjdC52YWx1ZXModGhpcy5zZWxlY3RlZFByb2dyYW1zKVxuICAgICk7XG4gIH1cblxuICByZW1vdmVQcm9ncmFtKHByb2dyYW06IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkUHJvZ3JhbXMpO1xuICAgIGtleXMuZm9yRWFjaCgoa2V5OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zW2tleV0uZmluZEluZGV4KFxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5waWQgPT09IHByb2dyYW0/LnBpZFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zW2tleV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldExpbmtQcm9ncmFtKHBvbGljeUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBvbGljeVNlcnZpY2UuZ2V0TGlua2VkUHJvZ3JhbXMocG9saWN5SWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMubGlua1Byb2dyYW0gPSByZXM7XG4gICAgfSk7XG4gIH1cblxuXG4gIGRlbGV0ZVNlbGVjdGVkKCl7XG4gICAgdGhpcy5zZWxlY3RlZFBvbGljeUNhdGVnb3J5ID0gW107XG4gIH1cbn1cbiIsIjwhLS0gPHA+d29ya2Zsb3ctcG9saWN5IHdvcmtzITwvcD4gLS0+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd0NyZWF0ZURvY3VtZW50c1wiPlxuICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctcG9saWN5XCI+XG4gICAgPCEtLSBQb2xpY3kgTmFtZSAtLT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cInBvbGljeUZvcm0/LnBvbGljeU5hbWVcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIFtzcmNdPVwiQVNTRVRTLndoYXRcIlxuICAgICAgICAgIGFsdD1cIm5hbWVcIlxuICAgICAgICAgICpuZ0lmPVwiIXBvbGljeUZvcm0/LnBvbGljeU5hbWUgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICduYW1lJ1wiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybT8ucG9saWN5TmFtZSAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cbiAgICAgICAgICAgIFBvbGljeSBOYW1lIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJhY3RpdmVTZWxlY3RvciA9ICduYW1lJ1wiXG4gICAgICAgICAgICAoZm9jdXNpbik9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJywgdHJ1ZSlcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLnBvbGljeU5hbWUgPT0gJycgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICduYW1lJ1wiXG4gICAgICAgICAgICAoZm9jdXNvdXQpPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsIGZhbHNlKVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJwb2xpY3lGb3JtLnBvbGljeU5hbWVcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicG9saWN5Rm9ybS5wb2xpY3lOYW1lID0gY2hhbmdlTmFtZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTmFtZSB0aGlzIHBvbGljeVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwicG9saWN5Rm9ybS5wb2xpY3lOYW1lLmxlbmd0aCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7IHBvbGljeUZvcm0ucG9saWN5TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsIHRydWUpXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgIXBvbGljeUZvcm0ucG9saWN5TmFtZS50cmltKClcIlxuICAgICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgUGxlYXNlIGVudGVyIGEgbmFtZSBmb3IgdGhpcyBwb2xpY3kuXG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDx2Y29tcGx5LWVkaXRvclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwb2xpY3lGb3JtLnBvbGljeU5vdGVzXCJcbiAgICAgICAgICAgIFtlZGl0b3JDb25maWddPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgID48L3Zjb21wbHktZWRpdG9yPlxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInRleHQtYXJlYVwiPlxuICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC01IHZ4LXAtMiB2eC1tLTBcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgaGVyZS4uLlwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicG9saWN5Rm9ybS5wb2xpY3lOb3Rlc1wiXG4gICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPCEtLSA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgWyhuZ1ZhbHVlKV09XCJwb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsXCJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cImF2YWlsYWJpbGl0eU9uUG9ydGFsKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIERvIHlvdSB3YW50IHRoaXMgcG9saWN5IHRvIGJlIGF2YWlsYWJsZSBvbiB0aGUgcG9ydGFsP1xuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdUaGUgcG9saWNpZXMgdGhhdCB5b3UgaW50ZW5kIHRvIG1ha2UgYWNjZXNzaWJsZSB0byB0aGUgZW50aXJlIG9yZ2FuaXphdGlvbiBjYW4gYmUgYWRkZWQgdG8gdGhlIHBvbGljeSBwb3J0YWwuIEl0IGlzIGxpa2UgYSBzaGFyZWQgY2F0YWxvZyBvZiBhbGwgYWN0aXZlICYgdXBkYXRlZCBwb2xpY2llcyB0aGF0IGFueSBsb2dnZWQgaW4gdXNlciBjYW4gcmVhZC9kb3dubG9hZCBmb3IgcmVmZXJlbmNlLidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID4mI3hlOTMyOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmF2YWlsYWJsZU9uUG9ydGFsXCJcbiAgICAgICAgICAgIFsobmdWYWx1ZSldPVwicG9saWN5Rm9ybS5hY2NlcHRTdWdnZXN0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQWNjZXB0IHN1Z2dlc3Rpb25zXG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0lmIGVuYWJsZWQsIHVzZXJzIGNhbiBwcm92aWRlIGltcHJvdmVtZW50IHN1Z2dlc3Rpb25zIHRvIHRoZSBwb2xpY2llcyB0aGF0IGFyZSBsaXN0ZWQgb24gdGhlIFBvbGljeSBQb3J0YWwuJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPiYjeGU5MzI7PC9pXG4gICAgICAgICAgICA+PC9hcHAtY3Mtc3dpdGNoPiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUG9saWN5IENhdGVnb3J5IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtLmFkZFBvbGljeUNhdGVnb3J5XCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5JyAmJlxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgICBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA+IDBcIlxuICAgICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnY2F0ZWdvcnknXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc3JjXT1cIkFTU0VUUy5jYXNlX2NhdGVnb3J5XCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NhdGVnb3J5J1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXG4gICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgcj1cIjI1XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UG9saWN5IENhdGVnb3J5IDwvbGFiZWw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICAgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2F0ZWdvcnknLCB0cnVlKVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGEgY2F0ZWdvcnkgZm9yIHRoaXMgcG9saWN5LlwiXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgY2F0ZWdvcnkgb2YgcG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzPy5zbGljZSgwLCAxKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnY2F0ZWdvcnknLCBjYXRlZ29yeSlcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjYXRlZ29yeS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7IGNhdGVnb3J5Lm5hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjYXRlZ29yeS5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgW2NsYXNzLm1vcmUtb25lXT1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoPjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucGx1c109XCJwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aD4yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBwb2xpY3lGb3JtPy5zZWxlY3RlZENhdGVnb3JpZXM/LnNsaWNlKDAsMilcIj48aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdjYXRlZ29yeScsY2F0ZWdvcnkpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NhdGVnb3J5Lml0ZW1fbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlciAoY2xpY2spPVwiY2F0ZWdvcnkucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3BvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcz8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdjYXRlZ29yeSdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NhdGVnb3J5JywgdHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxhcHAtcG9wb3ZlciAjY2F0ZWdvcnkgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNhdGVnb3J5IG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkQ2F0ZWdvcmllcyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdjYXRlZ29yeScsIGNhdGVnb3J5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgY2F0ZWdvcnkuaXRlbV9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiICpuZ0lmPVwicG9saWN5Rm9ybT8uY3VzdG9tVGFncz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhZyBvZiBwb2xpY3lGb3JtPy5jdXN0b21UYWdzXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LTJcIj57eyB0YWcudGFnbmFtZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhZy52YWx1ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgdGFnLnRhZ25hbWUgfX1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRWZmZWN0aXZlIERhdGUgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkRWZmZWN0aXZlRGF0ZVwiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJ0cnVlXCI+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cInRydWVcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgY3g9XCIyNlwiXG4gICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkVmZmVjdGl2ZSBEYXRlPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS10aW1lLXBpY2tlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1ncm91cFwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgZWZmZWN0aXZlIGRhdGUgb2YgdGhlIHBvbGljeS5cIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwb2xpY3lGb3JtLnBvbGljeUR1ZURhdGUgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIlxuICAgICAgICAgICAgICAgIGlkPVwiZWZmZWN0aXZlLWRhdGVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyZDs8L2k+XG4gICAgICAgICAgICAgIDxkcC1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cImRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7IGNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGVDb25maWdcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicG9saWN5Rm9ybS5wb2xpY3lEdWVEYXRlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2RwLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVBpY2tlck92ZXJsYXlcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gUmVzcG9uc2liaWxpdHkgQ2VudGVyIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICAqbmdJZj1cInBvbGljeUZvcm0uYWRkUmVzcG9uc2liaWxpdHlDZW50ZXJzXCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJyAmJlxuICAgICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5sZW5ndGggPT0gMCB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ3JjJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgW3NyY109XCJBU1NFVFMucmVzcG9uc2liaWxpdHlfY2VudGVyXCJcbiAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgY3k9XCIyNlwiXG4gICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5SZXNwb25zaWJpbGl0eSBDZW50ZXI8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIiAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5sZW5ndGggPT0gMFwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJywgdHJ1ZSlcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSZXNwb25zaWJpbGl0eSBDZW50ZXIocykgdGhhdCB0aGlzIHBvbGljeSByZWxhdGVzIHRvLlwiXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJjIG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5zbGljZSgwLCAxKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmMnLCByYylcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyYy5pdGVtX25hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3sgcmMuaXRlbV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyY1BvcG92ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInBvbGljeUZvcm0/LnNlbGVjdGVkUkNzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBwb2xpY3lGb3JtPy5zZWxlY3RlZFJDcz8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCB0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGFwcC1wb3BvdmVyICNyY1BvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJjIG9mIHBvbGljeUZvcm0/LnNlbGVjdGVkUkNzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmMpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAge3sgcmMuaXRlbV9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8YXBwLWxpc3QtY29udGFpbmVyXG4gICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NhdGVnb3J5J1wiXG4gICAgW2hlYWRpbmddPVwiJ1NlbGVjdCBhIFBvbGljeSBDYXRlZ29yeSdcIlxuICAgIChjbG9zZSk9XCJkaXNhYmxlU2VsZWN0b3IoKVwiXG4gID5cbiAgICA8YXBwLXBvbGljeS1jYXRlZ29yeS1saXN0XG4gICAgICBib2R5XG4gICAgICAoaXRlbXNTZWxlY3RlZENoYW5nZSk9XCJvblBvbGljeUNhdGVnb3J5U2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICBbc2VsZWN0ZWRJdGVtc109XCJzZWxlY3RlZFBvbGljeUNhdGVnb3J5XCJcbiAgICAgIFt1cmxdPVwicHJvZ3JhbUxpc3RVcmxcIlxuICAgID48L2FwcC1wb2xpY3ktY2F0ZWdvcnktbGlzdD5cbiAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtdy0xMDBcIiBmb290ZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdC1zaWRlIHZ4LWZzLTEyIHZ4LWQtZmxleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRQb2xpY3lDYXRlZ29yeT8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicG9saWN5Q2F0ZWdvcnlDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwic2VsZWN0ZWRQb2xpY3lDYXRlZ29yeVswXT8ubmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBzZWxlY3RlZFBvbGljeUNhdGVnb3J5WzBdPy5uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJuYW1lIHZ4LWZzLTExIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBQb2xpY3kgQ2F0ZWdvcnkgU2VsZWN0ZWRcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1zaWRlIHZ4LWQtZmxleFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsQnRuXCIgKGNsaWNrKT1cImRpc2FibGVTZWxlY3RvcigpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cIm5leHRCdG5cIlxuICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgIGRpc2FibGVTZWxlY3RvcigpO1xuICAgICAgICAgICAgc2VsZWN0Q2F0ZWdvcnkoKTtcbiAgICAgICAgICAgIHNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5Jywgc2VsZWN0ZWRQb2xpY3lDYXRlZ29yeSlcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgTmV4dCA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxZTs8L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvYXBwLWxpc3QtY29udGFpbmVyPlxuXG4gIDwhLS0gPGFwcC1jaGVja2JveC1saXN0XG4gICAgW2NvbmZpZ109XCJjYXRlZ29yeUNvbmZpZ1wiXG4gICAgW3R3b0NvbHVtbl09XCJ0cnVlXCJcbiAgICBbaXRlbXNMaXN0XT1cImNhdGVnb3J5TGlzdFwiXG4gICAgW3NlbGVjdGVkSXRlbXNdPVwicG9saWN5Rm9ybS5zZWxlY3RlZENhdGVnb3JpZXNcIlxuICAgIFtpZGVudGlmaWVyS2V5XT1cIidfaWQnXCJcbiAgICBbZGlzcGxheUtleV09XCInaXRlbV9uYW1lJ1wiXG4gICAgW3Rvb2x0aXBLZXldPVwiJ2l0ZW1fbmFtZSdcIlxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIlxuICAgIChzYXZlTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjYXRlZ29yeScsICRldmVudClcIlxuICAgIChjbG9zZUxpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICAgIFtsb2FkZWRdPVwiIWNhdGVnb3JpZXNMaXN0TG9hZGVkXCJcbiAgPlxuICA8L2FwcC1jaGVja2JveC1saXN0PiAtLT5cblxuICA8YXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdFxuICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIlxuICAgIFtyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XT1cInJjTGlzdFwiXG4gICAgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRSQ3NcIlxuICAgIFtyY0lkS2V5XT1cIidpdGVtX2lkJ1wiXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmMnLCAkZXZlbnQpXCJcbiAgICAoY2xvc2VSY0xpc3QpPVwiZGlzYWJsZVNlbGVjdG9yKClcIlxuICAgIFtsb2FkZWRdPVwicmNMaXN0TG9hZGVkXCJcbiAgPlxuICA8L2FwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3Q+XG48L25nLWNvbnRhaW5lcj5cblxuPGFwcC1zZWxlY3QtdGVtcGxhdGUtbGlzdFxuICAqbmdJZj1cInRlbXBsYXRlVmlld1wiXG4gIFtzZWxlY3RlZENhdGVnb3J5SWRdPVwicG9saWN5Rm9ybT8uc2VsZWN0ZWRDYXRlZ29yaWVzXCJcbiAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXG4gIChvblRlbXBsYXRlU2VsZWN0KT1cIm9uVGVtcGxhdGVTZWxlY3QoJGV2ZW50KVwiXG4+PC9hcHAtc2VsZWN0LXRlbXBsYXRlLWxpc3Q+XG4iXX0=
|