tango-app-ui-manage-users 3.7.1-alpha.0-test4 → 3.7.1-alpha.0-test5
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.
|
@@ -677,7 +677,7 @@ export class BrandUserComponent {
|
|
|
677
677
|
modalRef.result.then((result) => {
|
|
678
678
|
if (result) {
|
|
679
679
|
if (result === 'submit') {
|
|
680
|
-
this.userService.updateUser({ email:
|
|
680
|
+
this.userService.updateUser({ email: user?.email, isActive: user.isActive }).subscribe({
|
|
681
681
|
next: (res) => {
|
|
682
682
|
if (res && res.code == 200) {
|
|
683
683
|
if (user.isActive) {
|
|
@@ -833,4 +833,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
833
833
|
type: ViewChild,
|
|
834
834
|
args: ['afterValidation']
|
|
835
835
|
}] } });
|
|
836
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQtdXNlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdXNlcnMvc3JjL2xpYi9jb21wb25lbnRzL3RhbmdvLW1hbmFnZS11c2Vycy9icmFuZC11c2VyL2JyYW5kLXVzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXVzZXJzL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtdXNlcnMvYnJhbmQtdXNlci9icmFuZC11c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFxQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUsvRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBa0QsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUFZLElBQUksRUFBRSxLQUFLLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLDRGQUE0RjtBQUM1RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUV4RywrREFBK0Q7QUFDL0QsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7O0FBRXRDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENB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Z0JBQ0UsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNPLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgLEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBBZGRVc2VyUG9wdXBDb21wb25lbnQgfSBmcm9tIFwiLi4vYWRkLXVzZXItcG9wdXAvYWRkLXVzZXItcG9wdXAuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBc3NpZ25TdG9yZVBvcHVwQ29tcG9uZW50IH0gZnJvbSBcIi4uL2Fzc2lnbi1zdG9yZS1wb3B1cC9hc3NpZ24tc3RvcmUtcG9wdXAuY29tcG9uZW50XCI7XHJcbmltcG9ydCBTd2FsIGZyb20gXCJzd2VldGFsZXJ0MlwiO1xyXG5pbXBvcnQgeyBFeGNlbFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZXhjZWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFdvcmtCb29rLCByZWFkLCB1dGlscywgV29ya1NoZWV0IH0gZnJvbSBcInhsc3hcIjtcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuLy8gaW1wb3J0IHsgQWxlcnRQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3VzZXItdGFibGUvYWxlcnQtYnVscG9wdXAvYWxlcnQtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWxlcnRQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3VzZXItdGFibGUvYWxlcnQtcG9wdXAvYWxlcnQtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWRkVXNlcnNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzLXYyL2FkZC11c2Vycy9hZGQtdXNlcnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGVhbXNDcmVhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMtdjIvdGVhbXMtY3JlYXRpb24vdGVhbXMtY3JlYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbi8vIGltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgKiBhcyBDcnlwdG9KUyBmcm9tICdjcnlwdG8tanMnO1xyXG5cclxuY29uc3QgU0VDUkVUX0tFWSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxyXG4gIENyeXB0b0pTLlNIQTI1NihcInRAbmcwLXJldEBpbC1AcGktdjNcIilcclxuICAgIC50b1N0cmluZyhDcnlwdG9KUy5lbmMuQmFzZTY0KVxyXG4gICAgLnN1YnN0cmluZygwLCAzMilcclxuKTtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYnJhbmQtdXNlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JyYW5kLXVzZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9icmFuZC11c2VyLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQnJhbmRVc2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uRGVzdHJveSB7XHJcbiAgQE91dHB1dCgpIGRhdGFUb1BhcmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIC8vIEBPdXRwdXQoKSBkYXRhVG91c2VybGlzdDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAVmlld0NoaWxkKCdidWxrVXBsb2FkJykgYnVsa1VwbG9hZDogYW55O1xyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dEZpbGUxXCIpIGlucHV0RmlsZTE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYWZ0ZXJWYWxpZGF0aW9uJykgYWZ0ZXJWYWxpZGF0aW9uOiBhbnk7XHJcbiByZWNlaXZlZERhdGE6YW55PScnO1xyXG4gdXNlckRhdGE6IHN0cmluZztcclxuIHNlYXJjaFZhbHVlOiBhbnk7XHJcbiB1c2VyTGlzdDogYW55W10gPSBbXTtcclxuIHVzZXJMaXN0X3JlcTogYW55O1xyXG4gcGFnaW5hdGlvbjogYW55ID0ge1xyXG4gICBvZmZzZXQ6IDEsXHJcbiAgIGxpbWl0OiAxMCxcclxuICAgdG90YWxDb3VudDogMCxcclxuIH07XHJcbiBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuIG5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gcGFnaW5hdGlvblNpemVzOiBudW1iZXJbXSA9IFsxMCwgMjAsIDMwXTtcclxuIHN1cHBvcnRFbWFpbDogc3RyaW5nO1xyXG4gdXNlclR5cGU6IHN0cmluZztcclxuICRoZWFkZXJGaWx0ZXJzOiBhbnk7XHJcbiBzZWFyY2hJbnB1dCA9IG5ldyBGb3JtQ29udHJvbChcIlwiKTtcclxuIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHJvbGVzOiBhbnk7XHJcbiAgZmlsZUVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RvcmVzOiBhbnkgPVtdO1xyXG4gIHJvbGVzQ291bnQ6IGFueTtcclxuICBTZWxlY3RlZFRhYjogYW55O1xyXG4gICAgZGF0YU9iamVjdDogYW55ID0gW1xyXG4gICAgeyBEZXNjcmlwdGlvbjogJ1JvbGVzJywgSXNzdWVzOiBbeyB0ZXh0OiBcIlN1cGVyIEFkbWluXCIsIGlkOiAnc3VwZXJhZG1pbicgfSwgeyB0ZXh0OiBcIkFkbWluXCIsIGlkOiAnYWRtaW4nIH0sIHsgdGV4dDogXCJVc2VyXCIsIGlkOiBcInVzZXJcIiB9XSB9LFxyXG4gICAgeyBEZXNjcmlwdGlvbjogJ1N0YXR1cycsIElzc3VlczogW3sgdGV4dDogXCJBY3RpdmVcIiwgaWQ6ICdhY3RpdmUnIH0sIHsgdGV4dDogXCJEZWFjdGl2ZVwiLCBpZDogJ2RlYWN0aXZlJyB9XSB9XHJcbiAgXTtcclxuICBmaWx0ZXJCeVJvbGVzOiBhbnk7XHJcbiAgZmlsdGVyQnlTdGF0dXM6IGFueTtcclxuICB1c2VySW5mbzogYW55O1xyXG4gY29uc3RydWN0b3IoXHJcbiAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLHByaXZhdGUgcGFnZUluZm86IFBhZ2VJbmZvU2VydmljZSxcclxuICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgIHByaXZhdGUgZXhjZWxTZXJ2aWNlOiBFeGNlbFNlcnZpY2UsXHJcbiAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gIC8vICBwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsLFxyXG4gICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcclxuICkge1xyXG4gICB0aGlzLmdzLmVudmlyb25tZW50LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgIGlmIChlbnYpIHtcclxuICAgICAgIHRoaXMuc3VwcG9ydEVtYWlsID0gZW52LnN1cHBvcnRfZW1haWw7XHJcbiAgICAgfVxyXG4gICB9KTsgICAgXHJcbiB9XHJcblxyXG4gLy8gbXVzdCBtYXRjaCBiYWNrZW5kXHJcbiBcclxuZGVjcnlwdChlbmNyeXB0ZWRUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IFtpdkhleCwgZW5jcnlwdGVkXSA9IGVuY3J5cHRlZFRleHQuc3BsaXQoJzonKTtcclxuXHJcbiAgY29uc3QgaXYgPSBDcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGl2SGV4KTtcclxuICBjb25zdCBjaXBoZXJ0ZXh0ID0gQ3J5cHRvSlMuZW5jLkhleC5wYXJzZShlbmNyeXB0ZWQpO1xyXG5cclxuICBjb25zdCBjaXBoZXJQYXJhbXMgPSBDcnlwdG9KUy5saWIuQ2lwaGVyUGFyYW1zLmNyZWF0ZSh7IGNpcGhlcnRleHQgfSk7XHJcblxyXG4gIGNvbnN0IGRlY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KGNpcGhlclBhcmFtcywgU0VDUkVUX0tFWSwge1xyXG4gICAgaXY6IGl2LFxyXG4gICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXHJcbiAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGRlY3J5cHRlZC50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XHJcbn1cclxuIHNldFBhZ2VEYXRhKCkge1xyXG4gIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoXCJVc2Vyc1wiKTtcclxuICB0aGlzLnBhZ2VJbmZvLnNldERlc2NyaXB0aW9uKFwiT25ib2FyZCB5b3VyIHRlYW0gYW5kIGhlbHAgdGhlbSB2aXN1YWxpemUgdGhlaXIgc3RvcmVzIHBlcmZvcm1hbmNlXCIpO1xyXG4gIGxldCBicmVhZGNydW1icyA6IGFueVtdPVtdO1xyXG4gIGlmICh0aGlzLmdzLnVzZXJBY2Nlc3MudmFsdWU/LnVzZXJUeXBlID09PSBcInRhbmdvXCIpIHtcclxuICAgIGJyZWFkY3J1bWJzPSAgW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiTWFuYWdlXCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL2JyYW5kc1wiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCJNYW5hZ2VcIixcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2UvYnJhbmRzXCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9IGVsc2UgaWYgKHRoaXMuZ3MudXNlckFjY2Vzcy52YWx1ZT8udXNlclR5cGUgPT09IFwiY2xpZW50XCIpIHtcclxuICAgIGJyZWFkY3J1bWJzPSBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCJNYW5hZ2VcIixcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2Uvc3VtbWFyeVwiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCJNYW5hZ2VcIixcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2Uvc3VtbWFyeVwiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG4gIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoYnJlYWRjcnVtYnMpO1xyXG59XHJcbiBuZ09uSW5pdCgpIHtcclxuICB0aGlzLnVzZXJJbmZvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcInt9XCIpO1xyXG4gIFxyXG4gICB0aGlzLmdzPy5kYXRhUmFuZ2VWYWx1ZT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpPy5zdWJzY3JpYmUoe1xyXG4gICAgIG5leHQ6KGRhdGE6YW55KT0+e1xyXG4gICAgICAgaWYoZGF0YSA9PT0gbnVsbCApIHtcclxuICAgICAgICBjb25zdCB1c2VyRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcInt9XCIpO1xyXG4gICAgICAgIHRoaXMuJGhlYWRlckZpbHRlcnMgPSB1c2VyRGF0YTtcclxuICAgICAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCA9IHVzZXJEYXRhLmNsaWVudElkXHJcbiAgICAgICAgdGhpcy51c2VyRGF0YSA9IFwiY2xpZW50XCI7XHJcbiAgICAgICAgICAgdGhpcy51c2VyVHlwZSA9IFwiY2xpZW50XCI7XHJcbiAgICAgICAgICAgaWYodXNlckRhdGE/LmNsaWVudElkKXtcclxuICAgICAgICAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgICAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgICAgICAgIGxpbWl0OiAxMCxcclxuICAgICAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICAgICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUsXHJcbiAgICAgICAgICAgICBleHBvcnQ6ZmFsc2VcclxuICAgICAgICAgICB9O1xyXG4gICAgICAgICAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAgICAgICAgICAvLyAgdGhpcy5nZXRSb2xlcygpO1xyXG4gICAgICAgICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRoaXMuJGhlYWRlckZpbHRlcnMgPSBkYXRhO1xyXG4gICAgICAgICAgIHRoaXMudXNlckRhdGEgPSBcImNsaWVudFwiO1xyXG4gICAgICAgICAgIHRoaXMudXNlclR5cGUgPSBcImNsaWVudFwiO1xyXG4gICAgICAgICAgIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPSAxO1xyXG4gICAgICAgICAgIHRoaXMucGFnaW5hdGlvbi5saW1pdCA9IDEwO1xyXG4gICAgICAgICAgIHRoaXMudXNlckxpc3RfcmVxID0ge1xyXG4gICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICAgICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICAgICAgICAgb2Zmc2V0OiAxLFxyXG4gICAgICAgICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgICAgICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICAgICAgICAgIGV4cG9ydDpmYWxzZVxyXG4gICAgICAgICAgIH07XHJcbiAgICAgICAgICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICAgICAgICAgIC8vICB0aGlzLmdldFJvbGVzKCk7XHJcbiAgICAgICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgICAgfSBcclxuICAgICB9XHJcbiAgIH0pO1xyXG5cclxuIFxyXG4gIH1cclxuICBnZXRNYXNrZWRWYWx1ZSh2YWx1ZTogc3RyaW5nLCByb2xlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHJvbGUgPT09ICdzdXBlcmFkbWluJykgcmV0dXJuIHZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaW5jbHVkZXMoJ0AnKSkgcmV0dXJuICcnO1xyXG5cclxuICAgIGNvbnN0IFtsb2NhbCwgZG9tYWluXSA9IHZhbHVlLnNwbGl0KCdAJyk7XHJcbiAgICBjb25zdCB2aXNpYmxlTGVuZ3RoID0gTWF0aC5taW4oNSwgbG9jYWwubGVuZ3RoKTtcclxuICAgIGNvbnN0IHZpc2libGVQYXJ0ID0gbG9jYWwuc2xpY2UoMCwgdmlzaWJsZUxlbmd0aCk7XHJcbiAgICBjb25zdCBtYXNrZWRQYXJ0ID0gJyonLnJlcGVhdChsb2NhbC5sZW5ndGggLSB2aXNpYmxlTGVuZ3RoKTtcclxuXHJcbiAgICByZXR1cm4gYCR7dmlzaWJsZVBhcnR9JHttYXNrZWRQYXJ0fUAke2RvbWFpbn1gO1xyXG4gIH1cclxuICBnZXRNYXNrZWRNb2JpbGUodmFsdWU6IHN0cmluZywgcm9sZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChyb2xlID09PSAnc3VwZXJhZG1pbicpIHJldHVybiB2YWx1ZTtcclxuICAgIGlmICghdmFsdWUgfHwgdmFsdWUubGVuZ3RoIDw9IDQpIHJldHVybiAnKicucmVwZWF0KHZhbHVlLmxlbmd0aCk7XHJcbiAgXHJcbiAgICBjb25zdCBmaXJzdDIgPSB2YWx1ZS5zbGljZSgwLCAyKTtcclxuICAgIGNvbnN0IGxhc3QyID0gdmFsdWUuc2xpY2UoLTIpO1xyXG4gICAgY29uc3QgbWFza2VkTWlkZGxlID0gJyonLnJlcGVhdCh2YWx1ZS5sZW5ndGggLSA0KTtcclxuICBcclxuICAgIHJldHVybiBgJHtmaXJzdDJ9JHttYXNrZWRNaWRkbGV9JHtsYXN0Mn1gO1xyXG4gIH1cclxuIFxyXG4gc2VhcmNoRGF0YSgpIHtcclxuICB0aGlzLnBhZ2luYXRpb24ub2Zmc2V0ID0xO1xyXG4gIHRoaXMucGFnaW5hdGlvbi5saW1pdCA9MTA7XHJcbiAgaWYodGhpcy5zZWFyY2hWYWx1ZSA9PT0nJyl7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBsaW1pdDogMTAsXHJcbiAgICAgIG9mZnNldDogMSxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIGV4cG9ydDpmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5Um9sZXMgPSB0aGlzLmZpbHRlckJ5Um9sZXM7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVN0YXR1cyA9IHRoaXMuZmlsdGVyQnlTdGF0dXM7XHJcbiAgICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgIHRoaXMudXNlckxpc3RfcmVxID0ge1xyXG4gICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICBsaW1pdDogMTAsXHJcbiAgICAgb2Zmc2V0OiAxLFxyXG4gICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgIGV4cG9ydDpmYWxzZVxyXG4gICB9O1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVJvbGVzID0gdGhpcy5maWx0ZXJCeVJvbGVzO1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVN0YXR1cyA9IHRoaXMuZmlsdGVyQnlTdGF0dXM7XHJcbiAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAgfVxyXG4gfVxyXG4gdXNlcnModHlwZTogYW55LHVzZXI/OiBhbnkpIHtcclxuICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZFVzZXJQb3B1cENvbXBvbmVudCwge1xyXG4gICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgIHNpemU6IFwibGdcIixcclxuICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICB9KTtcclxuICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlciA9IHVzZXI7XHJcbiAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnR5cGUgPSB0eXBlO1xyXG4gICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS51c2VyVHlwZSA9J2NsaWVudCc7XHJcbiAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgIGlmKHJlc3VsdCA9PT0nc3VibWl0Jyl7XHJcbiAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPScnO1xyXG4gICAgICB0aGlzLnVzZXJMaXN0X3JlcS5saW1pdCA9IDEwO1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb24ubGltaXQgPSAxMDtcclxuICAgICAgdGhpcy51c2VyTGlzdF9yZXEub2Zmc2V0ID0gMTtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uLm9mZnNldCA9IDE7XHJcbiAgICAgdGhpcy51c2VyU2VydmljZS5kYXRhU3ViamVjdC5uZXh0KHRoaXMudXNlckRhdGEpO1xyXG4gICAgIHRoaXMudXNlckxpc3RfcmVxID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiAxMCxcclxuICAgICAgb2Zmc2V0OiAxLFxyXG4gICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICAgZXhwb3J0OmZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICAgIC8vICB0aGlzLmdldFJvbGVzKCk7XHJcbiAgICB9XHJcbiAgIH0pO1xyXG4gfVxyXG4gIFZpZXd1c2Vycyh0eXBlOiBhbnksIHVzZXI/OiBhbnkpIHtcclxuICAgIGxldCBtb2RhbE9wdGlvbnM6IGFueSA9IHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHNpemU6ICdsZydcclxuICAgIH07XHJcbiAgICBpZiAodXNlci5yb2xlID09PSAnYWRtaW4nICYmIHVzZXIuaXNBY3RpdmUgPT0gdHJ1ZSAmJiB0aGlzLmdzPy51c2VyQWNjZXNzPy52YWx1ZT8uR2xvYmFsX1VzZXJfaXNFZGl0ICkge1xyXG4gICAgICBtb2RhbE9wdGlvbnMuYmFja2Ryb3AgPSAnc3RhdGljJztcclxuICAgIH1cclxuICAgIFxyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZFVzZXJzQ29tcG9uZW50LCBtb2RhbE9wdGlvbnMpO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlciA9IHVzZXI7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gdHlwZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnVzZXJUeXBlID0nY2xpZW50JztcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAgfSlcclxuIH1cclxuIC8vIHNlYXJjaERhdGEoKSB7XHJcbiAvLyAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAvLyB9XHJcblxyXG4gb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IG51bWJlcikge1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQgPSBwYWdlT2Zmc2V0O1xyXG4gICB0aGlzLnBhZ2luYXRpb24ub2Zmc2V0ID0gcGFnZU9mZnNldDtcclxuICAgaWYodGhpcy5zZWFyY2hWYWx1ZSA9PT0nJyl7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBsaW1pdDogdGhpcy51c2VyTGlzdF9yZXEubGltaXQsXHJcbiAgICAgIG9mZnNldDogdGhpcy51c2VyTGlzdF9yZXEub2Zmc2V0LFxyXG4gICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSwgIFxyXG4gICAgICBleHBvcnQ6ZmFsc2UsXHJcbiAgICAgIHNvcnRDb2x1bU5hbWUgOnRoaXMudXNlckxpc3RfcmVxLnNvcnRDb2x1bU5hbWUsXHJcbiAgICBzb3J0QnkgOiB0aGlzLnVzZXJMaXN0X3JlcS5zb3J0QnlcclxuICAgIH07XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLnVzZXJMaXN0X3JlcS5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICAgZXhwb3J0OmZhbHNlLFxyXG4gICAgICBzb3J0Q29sdW1OYW1lIDp0aGlzLnVzZXJMaXN0X3JlcS5zb3J0Q29sdW1OYW1lLFxyXG4gICAgc29ydEJ5IDogdGhpcy51c2VyTGlzdF9yZXEuc29ydEJ5XHJcbiAgICB9O1xyXG4gIH1cclxuICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVJvbGVzID0gdGhpcy5maWx0ZXJCeVJvbGVzO1xyXG4gIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5U3RhdHVzID0gdGhpcy5maWx0ZXJCeVN0YXR1cztcclxuICB0aGlzLmNyZWF0ZVRlYW0gPSBmYWxzZTtcclxuICB0aGlzLnNlbGVjdGVkVXNlcnMgPSBbXTtcclxuICB0aGlzLnNlbGVjdEFsbENoZWNrZWQgPWZhbHNlO1xyXG4gICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gfVxyXG5cclxuIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IG51bWJlcikge1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcS5saW1pdCA9IE51bWJlcihwYWdlU2l6ZSk7XHJcbiAgIHRoaXMucGFnaW5hdGlvbi5saW1pdCA9IE51bWJlcihwYWdlU2l6ZSk7XHJcbiAgIHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCA9IDE7XHJcbiAgIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPSAxO1xyXG4gICBpZih0aGlzLnNlYXJjaFZhbHVlID09PScnKXtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLnVzZXJMaXN0X3JlcS5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLCAgXHJcbiAgICAgIGV4cG9ydDpmYWxzZSxcclxuICAgICAgc29ydENvbHVtTmFtZSA6dGhpcy51c2VyTGlzdF9yZXEuc29ydENvbHVtTmFtZSxcclxuICAgIHNvcnRCeSA6IHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeVxyXG4gICAgfTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IHRoaXMudXNlckxpc3RfcmVxLmxpbWl0LFxyXG4gICAgICBvZmZzZXQ6IHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgICBleHBvcnQ6ZmFsc2UsXHJcbiAgICAgIHNvcnRDb2x1bU5hbWUgOnRoaXMudXNlckxpc3RfcmVxLnNvcnRDb2x1bU5hbWUsXHJcbiAgICBzb3J0QnkgOiB0aGlzLnVzZXJMaXN0X3JlcS5zb3J0QnlcclxuICAgIH07XHJcbiAgfVxyXG4gIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5Um9sZXMgPSB0aGlzLmZpbHRlckJ5Um9sZXM7XHJcbiAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gIHRoaXMuY3JlYXRlVGVhbSA9IGZhbHNlO1xyXG4gIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xyXG4gIHRoaXMuc2VsZWN0QWxsQ2hlY2tlZCA9ZmFsc2U7XHJcbiAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiB9XHJcblxyXG4gYXNzaWduU3RvcmUodXNlcjogYW55KSB7XHJcbiAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBc3NpZ25TdG9yZVBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgYmFja2Ryb3A6J3N0YXRpYycsXHJcbiAgICAgc2l6ZTogXCJsZ1wiLFxyXG4gICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgIH0pO1xyXG4gICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS51c2VyID0gdXNlcjtcclxuICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgaWYocmVzdWx0ID09PSdzdWJtaXQnKXtcclxuICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9Jyc7XHJcbiAgICAgIHRoaXMudXNlckxpc3RfcmVxLmxpbWl0ID0gMTA7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5saW1pdCA9IDEwO1xyXG4gICAgICB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQgPSAxO1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb24ub2Zmc2V0ID0gMTtcclxuICAgICB0aGlzLnVzZXJTZXJ2aWNlLmRhdGFTdWJqZWN0Lm5leHQodGhpcy51c2VyRGF0YSk7XHJcbiAgICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICBleHBvcnQ6ZmFsc2VcclxuICAgIH07XHJcbiAgICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICAgIH1cclxuICAgfSk7XHJcbiB9XHJcblxyXG4gbG9hZFRhYmxlKCkge1xyXG4gICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gIC8vICB0aGlzLnBhZ2luYXRpb24ub2Zmc2V0PTE7XHJcbiAgLy8gIHRoaXMucGFnaW5hdGlvbi5saW1pdCA9MTA7XHJcbiAgIHRoaXMucGFnaW5hdGlvbi50b3RhbENvdW50ID0wO1xyXG4gICB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJMaXN0KHRoaXMudXNlckxpc3RfcmVxKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKFxyXG4gICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgIHRoaXMudXNlckxpc3QgPSByZXMuZGF0YS5yZXN1bHQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgIHRoaXMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICAgICBvZmZzZXQ6IHRoaXMucGFnaW5hdGlvbi5vZmZzZXQsXHJcbiAgICAgICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdGlvbi5saW1pdCxcclxuICAgICAgICAgICB0b3RhbENvdW50OiByZXMuZGF0YS5jb3VudCxcclxuICAgICAgICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICAgICAgfTtcclxuICAgICAgICAgdGhpcy5kYXRhVG9QYXJlbnQuZW1pdCh0aGlzLnBhZ2luYXRpb24udG90YWxDb3VudCk7XHJcbiAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuY2hhbmdlTWVzc2FnZSh0aGlzLnBhZ2luYXRpb24ubGltaXQpO1xyXG4gICAgICAgICBpZiAocmVzLmRhdGEuY291bnQgPCAxMCkge1xyXG4gICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3Jlcy5kYXRhLmNvdW50XTtcclxuICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgIH0gZWxzZSB7ICAgICAgXHJcblxyXG4gICAgICAgICB0aGlzLnVzZXJMaXN0ID0gW107XHJcbiAgICAgICAgIHRoaXMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICAgICAgIHRvdGFsQ291bnQ6IDAsXHJcbiAgICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kYXRhVG9QYXJlbnQuZW1pdCh0aGlzLnBhZ2luYXRpb24udG90YWxDb3VudCk7XHJcbiAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICB9XHJcbiAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICB9LFxyXG4gICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICB0aGlzLnVzZXJMaXN0ID0gW107XHJcbiAgICAgICB0aGlzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICAgICB0b3RhbENvdW50OiAwLFxyXG4gICAgICAgfTtcclxuICAgICAgIHRoaXMuZGF0YVRvUGFyZW50LmVtaXQodGhpcy5wYWdpbmF0aW9uLnRvdGFsQ291bnQpO1xyXG4gICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgfVxyXG4gICApO1xyXG4gfVxyXG5cclxuIHBhZ2luYXRpb25TaXplKCk6IG51bWJlciB7XHJcbiAgIGlmICh0aGlzLnBhZ2luYXRpb24udG90YWxDb3VudCA8IDEwKSB7XHJcbiAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbi50b3RhbENvdW50O1xyXG4gICB9IGVsc2Uge1xyXG4gICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb24ubGltaXQ7XHJcbiAgIH1cclxuIH1cclxuXHJcbiBleHBvcnRYTFNYKCkge1xyXG4gIGlmKHRoaXMuc2VhcmNoVmFsdWUgPT09Jycpe1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICBleHBvcnQ6dHJ1ZVxyXG4gICAgfTtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5Um9sZXMgPSB0aGlzLmZpbHRlckJ5Um9sZXM7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVN0YXR1cyA9IHRoaXMuZmlsdGVyQnlTdGF0dXM7XHJcbiAgdGhpcy51c2VyU2VydmljZVxyXG4gIC5nZXRVc2VyTGlzdEV4cG9ydCh0aGlzLnVzZXJMaXN0X3JlcSlcclxuICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5leGNlbFNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ1VzZXJzJylcclxuXHJcbiAgICB9LFxyXG4gICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgIGxpbWl0OiAxMDAwMCxcclxuICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUsXHJcbiAgICAgZXhwb3J0OnRydWVcclxuICAgfTtcclxuICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlSb2xlcyA9IHRoaXMuZmlsdGVyQnlSb2xlcztcclxuICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gdGhpcy51c2VyU2VydmljZVxyXG4gLmdldFVzZXJMaXN0RXhwb3J0KHRoaXMudXNlckxpc3RfcmVxKVxyXG4gLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gLnN1YnNjcmliZSh7XHJcbiAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgIHRoaXMuZXhjZWxTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsICdVc2VycycpXHJcblxyXG4gICB9LFxyXG4gICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICB9LFxyXG4gICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiB9KTtcclxuICB9XHJcblxyXG4gXHJcbiAgXHJcblxyXG4gIH1cclxuICBcclxuICBidWxrQXNzaWduYXN4bHN4KCkge1xyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmJ1bGtVcGxvYWQse2NlbnRlcmVkOiB0cnVlfSlcclxuICB9XHJcblxyXG4gIGFkZFNpbmdsZVVzZXIoKSB7XHJcbiAgICBcclxuICB9XHJcbiAgXHJcbiAgZXhjZWxFcnJvcjogYW55O1xyXG4gIGV4Y2VsRGF0YTogYW55ID0gW11cclxuICB2YWxpZGF0ZWRPdXRwdXQ6IGFueSA9IFtdO1xyXG5cclxuICBnZXRTdG9yZUNvdW50cyhkYXRhOiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCB1bmlxdWVVc2VyTmFtZXMgPSBuZXcgU2V0KGRhdGE/Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtWydTdG9yZSBOYW1lL1N0b3JlIElkJ10pKTtcclxuICAgIHJldHVybiB1bmlxdWVVc2VyTmFtZXMuc2l6ZTtcclxuXHJcbiAgfVxyXG5cclxuICAgIGdldEVtYWlsQ291bnRzKGRhdGE6IGFueSkge1xyXG5cclxuICAgIGNvbnN0IHVuaXF1ZVVzZXJOYW1lcyA9IG5ldyBTZXQoZGF0YT8ubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bJ0VtYWlsJ10pKTtcclxuICAgIHJldHVybiB1bmlxdWVVc2VyTmFtZXMuc2l6ZTtcclxuXHJcbiAgfVxyXG5cclxuICBvblVwbG9hZDEoZTogYW55KSB7XHJcbiAgICBsZXQgZGF0YTogYW55W107XHJcbiAgICBsZXQgZXJyb3I6IGFueSA9IFtdO1xyXG4gICAgbGV0IHN0b3JlTmFtZTogYW55ID0gJyc7XHJcblxyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGUudGFyZ2V0LmZpbGVzWzBdO1xyXG4gIGNvbnN0IGFsbG93ZWRFeHRlbnNpb25zID0gL1xcLih4bHN8eGxzeHxjc3YpJC9pO1xyXG4gIGNvbnN0IGFsbG93ZWRUeXBlcyA9IFtcclxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIiwgXHJcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJ0ZXh0L2NzdlwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJhcHBsaWNhdGlvbi9jc3ZcIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICBdO1xyXG5cclxuICBpZiAoIWFsbG93ZWRFeHRlbnNpb25zLnRlc3QoZmlsZS5uYW1lKSB8fCAhYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcclxuICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXCJPbmx5IC54bHN4LCBvciAuY3N2IGZpbGVzIGFyZSBhbGxvd2VkLlwiKTtcclxuICAgIHRoaXMuaW5wdXRGaWxlMS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSA8RGF0YVRyYW5zZmVyPmUudGFyZ2V0O1xyXG4gICAgaWYgKHRhcmdldC5maWxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRGaWxlMS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuICAgIGlmICghIXRhcmdldC5maWxlc1swXS5uYW1lLm1hdGNoKC8oLnhsc3wueGxzeCkvKSkge1xyXG4gICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICBjb25zdCB3YjogV29ya0Jvb2sgPSByZWFkKGJzdHIsIHsgdHlwZTogXCJiaW5hcnlcIiB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgICAgY29uc3Qgd3M6IFdvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xyXG4gICAgICAgIGRhdGEgPSB1dGlscy5zaGVldF90b19qc29uKHdzKTtcclxuICAgICAgICB0aGlzLmV4Y2VsRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgc3RvcmVOYW1lID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgfTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgICByZWFkZXIub25sb2FkZW5kID0gYXN5bmMgKGUpID0+IHtcclxuXHJcbiAgICAgICAgIGlmIChzdG9yZU5hbWUgIT09IFwiVXNlcnNcIikge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcIkNhbiB5b3UgY29uZmlybSB3aGV0aGVyIHRoZSBzaGVldCBuYW1lIGlzIFVzZXJzID9cIik7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWRhdGE/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIHVwbG9hZCBhIHZhbGlkIGZpbGUuXCIpO1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVxdWlyZWRLZXlzID0gWydTdG9yZSBOYW1lL1N0b3JlIElkJywnRW1haWwnXSAvLyBNdXN0IGFsd2F5cyBiZSBwcmVzZW50XHJcbiAgICAgICAgLy8gY29uc3Qgb3B0aW9uYWxLZXlzID0gWyd1c2VyUGhvbmUnLCAnY2l0eSddIDogWydjaXR5J107XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGRhdGEuc29tZSgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaXRlbSk7XHJcbiAgICAgICAgICBjb25zdCBoYXNSZXF1aXJlZEtleXMgPSByZXF1aXJlZEtleXMuZXZlcnkoa2V5ID0+IGtleXMuaW5jbHVkZXMoa2V5KSk7XHJcbiAgICAgICAgICBjb25zdCBhbGxLZXlzQXJlQWxsb3dlZCA9IGtleXMuZXZlcnkoa2V5ID0+IFxyXG4gICAgICAgICAgICByZXF1aXJlZEtleXMuaW5jbHVkZXMoa2V5KVxyXG4gICAgICAgICAgICAvLyB8fCBvcHRpb25hbEtleXMuaW5jbHVkZXMoa2V5KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiBoYXNSZXF1aXJlZEtleXMgJiYgYWxsS2V5c0FyZUFsbG93ZWQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICghaXNWYWxpZCkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIHVwbG9hZCBhIHZhbGlkIGZpbGUuJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkYXRhPy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlbGVtZW50Py5FbWFpbCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LkVtYWlsID0gZWxlbWVudD8uRW1haWwucmVwbGFjZSgvXFxzL2csICcnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICggIWVsZW1lbnQ/LlsnU3RvcmUgTmFtZS9TdG9yZSBJZCddIHx8IGVsZW1lbnQ/LlsnU3RvcmUgTmFtZS9TdG9yZSBJZCddID09ICcnIHx8IGVsZW1lbnQ/LlsnU3RvcmUgTmFtZS9TdG9yZSBJZCddID09IG51bGwpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBTdG9yZSBOYW1lL1N0b3JlIElkIC0gQiR7aW5kZXggKyAyfWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIWVsZW1lbnQ/LkVtYWlsIHx8IGVsZW1lbnQ/LkVtYWlsPy50cmltKCkgPT0gJycgfHwgZWxlbWVudC5FbWFpbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGVycm9yLnB1c2goYEludmFsaWQgRW1haWwgLSBBJHtpbmRleCArIDJ9YClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50Py5FbWFpbCAmJiAhZWxlbWVudC5FbWFpbC5tYXRjaCgvXlthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNn0kLykpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBFbWFpbCAtIEEke2luZGV4ICsgMn1gKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmIChlcnJvci5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgIHRpdGxlOiBgSW52YWxpZCBkZXRhaWxzIWAsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGBQbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBzdG9yZSBpbmZvcm1hdGlvbi5gLFxyXG4gICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyb3JcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKHBvcHVwY29udGVudClcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgYXBpRGF0YSA9IHRoaXMuZXhjZWxEYXRhLm1hcCgoZWw6IGFueSkgPT57XHJcbiAgICAgICAgICByZXR1cm4ge3N0b3JlIDogZWw/LlsnU3RvcmUgTmFtZS9TdG9yZSBJZCddLFxyXG4gICAgICAgICAgZW1haWwgOiBlbD8uRW1haWx9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAgICAgLmJ1bGtVc2VyQXNzaWduKHtcclxuICAgICAgICAgICAgZGF0YTogYXBpRGF0YVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICBpZiAocmVzLnN0YXR1cz09PSdlcnJvcicmJnJlcy5lcnJvci5lcnJvci5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgIHRpdGxlOiBgSW52YWxpZCBkZXRhaWxzIWAsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGBQbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBzdG9yZSBpbmZvcm1hdGlvbi5gLFxyXG4gICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICBlcnJvcjogcmVzLmVycm9yLmVycm9yXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFmdGVyVXBsbG9hZChwb3B1cGNvbnRlbnQpXHJcbiAgICAgICAgICB0aGlzLmlucHV0RmlsZTEubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmFmdGVyVXBsbG9hZCgpO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZWRPdXRwdXQgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuaW5wdXRGaWxlMS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjooZXJyOmFueSk9PiB7XHJcbiAgICAgICAgaWYgKGVyci5lcnJvci5jb2RlID09PSA0MDApIHtcclxuICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgIHRpdGxlOiBgSW52YWxpZCBkZXRhaWxzIWAsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGBQbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBzdG9yZSBpbmZvcm1hdGlvbi5gLFxyXG4gICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICBlcnJvcjplcnIuZXJyb3IuZXJyb3JcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKHBvcHVwY29udGVudClcclxuICAgICAgICAgIHRoaXMuaW5wdXRGaWxlMS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5pbnB1dEZpbGUxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgICB9O1xyXG4gICAgICAvLyAkKFwiI2t0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsXCIpPy52YWwoXCJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBSZXVwbG9hZCgpIHtcclxuXHJcbiAgfVxyXG5cclxuICAgcHJvY2VlZFN1Ym1pdCgpIHtcclxuICAgIGxldCBwYXlsb2FkID0ge2RhdGE6dGhpcy52YWxpZGF0ZWRPdXRwdXR9IFxyXG4gICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAuYXNzaWduRGF0YShwYXlsb2FkKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChgU3RvcmVzIEFzc2lnbmVkIHRvIFVzZXIgU3VjY2Vzc2Z1bGx5IWApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChgVW5hYmxlIHRvIEFzc2lnbiBTdG9yZXMgdG8gVXNlciFgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgnc3VibWl0Jyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byBBc3NpZ24gU3RvcmVzIHRvIFVzZXIhXCIpO1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBjbG9zZWFjdGl2ZXBvcHVwKCkge1xyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gIH1cclxuXHJcbiAgYWZ0ZXJVcGxsb2FkKGRhdGE/OiBhbnkpIHtcclxuICAgIHRoaXMuZXhjZWxFcnJvciA9IGRhdGE7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuYWZ0ZXJWYWxpZGF0aW9uLCB7IGNlbnRlcmVkOiB0cnVlLCBiYWNrZHJvcDogJ3N0YXRpYycsIHNpemU6ICdsZycsIHdpbmRvd0NsYXNzOiAnY3VzdG9tLW1vZGFsLXdpZHRoJyB9KVxyXG4gIH1cclxuXHJcbiAgdXNlclN0YXR1c0NoYW5nZSh1c2VyOiBhbnksIGk6IG51bWJlcikge1xyXG4gIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBbGVydFBvcHVwQ29tcG9uZW50LHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsYmFja2Ryb3A6XCJzdGF0aWNcIiB9KTsgICBcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnVzZXIgPSB1c2VyO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gIGlmIChyZXN1bHQpIHtcclxuICAgIGlmIChyZXN1bHQgPT09J3N1Ym1pdCcpIHtcclxuICAgdGhpcy51c2VyU2VydmljZS51cGRhdGVVc2VyKHsgZW1haWw6IHRoaXMuZGVjcnlwdCh1c2VyPy5lbmNyeXB0ZWRFbWFpbCksIGlzQWN0aXZlOiB1c2VyLmlzQWN0aXZlfSkuc3Vic2NyaWJlKHtcclxuICAgICBuZXh0OihyZXM6YW55KT0+IHtcclxuICAgICAgIGlmKHJlcyAmJiByZXMuY29kZT09MjAwKSB7XHJcbiAgICAgICAgIGlmKHVzZXIuaXNBY3RpdmUpIHtcclxuICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRTdWNjZXNzVG9hc3QoJ1VzZXIgU3RhdHVzIEFjdGl2YXRlZCEnKTtcclxuICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRTdWNjZXNzVG9hc3QoJ1VzZXIgU3RhdHVzIERlYWN0aXZhdGVkIScpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdVbmFibGUgdG8gQ2hhbmdlIFVzZXIgU3RhdHVzIScpO1xyXG4gICAgICAgICB0aGlzLnVzZXJMaXN0W2ldLmlzQWN0aXZlPSF1c2VyLmlzQWN0aXZlO1xyXG4gICAgICAgfVxyXG4gICAgIH0sXHJcbiAgICAgZXJyb3I6KCk9PntcclxuICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoJ1VuYWJsZSB0byBDaGFuZ2UgVXNlciBTdGF0dXMhJyk7XHJcbiAgICAgICB0aGlzLnVzZXJMaXN0W2ldLmlzQWN0aXZlPSF1c2VyLmlzQWN0aXZlO1xyXG4gICAgIH0sXHJcbiAgICAgY29tcGxldGU6KCk9Pnt9XHJcbiAgIH0pXHJcbiAgfSBlbHNlIGlmKHJlc3VsdCA9PT0nY2xvc2UnKSB7XHJcbiAgICB0aGlzLnVzZXJMaXN0W2ldLmlzQWN0aXZlPSF1c2VyLmlzQWN0aXZlO1xyXG4gIH1cclxufVxyXG59KVxyXG4gfVxyXG4gbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gfVxyXG4gZ2V0Um9sZXMoKSB7XHJcbiAgdmFyIGRhdGEgPSB7IFxyXG4gICAgICB1c2VyVHlwZTogJ2NsaWVudCcsXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzPy5jbGllbnRcclxuICAgIH1cclxuICB0aGlzLnVzZXJTZXJ2aWNlLmdldFJvbGVzKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5yb2xlcyA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICB0aGlzLnJvbGVzQ291bnQgPSByZXMuZGF0YS5jb3VudDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvbGVzID0gW107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgdGhpcy5yb2xlcyA9IFtdO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgfSk7XHJcbn1cclxudXNlckRldGlhbHMocm9sZTogYW55KSB7XHJcbiAgbGV0IG9iaiA9e1xyXG4gICAgcm9sZTpyb2xlLFxyXG4gICAgdXNlclR5cGUgOidCcmFuZCBVc2VyJyxcclxuICAgIHJlY2VpdmVkRGF0YTpcIlJvbGUgVmFsdWVcIlxyXG4gIH1cclxuICB0aGlzLnVzZXJTZXJ2aWNlLnJvbGVzQ29tbXMubmV4dChvYmopO1xyXG4gIHRoaXMucmVjZWl2ZWREYXRhID0nUm9sZSBWYWx1ZSc7XHJcbn1cclxucmVjZWl2ZURhdGEoZGF0YTogc3RyaW5nKSB7XHJcbiAgdGhpcy5yZWNlaXZlZERhdGEgPSBkYXRhO1xyXG4gIHRoaXMudXNlclNlcnZpY2UuZGF0YVN1YmplY3QubmV4dCh0aGlzLnVzZXJEYXRhKTtcclxufVxyXG5cclxub25Tb3J0KGNvbHVtbjogc3RyaW5nKSB7XHJcbiAgdGhpcy51c2VyTGlzdF9yZXEuZXhwb3J0ID0gZmFsc2U7XHJcbiAgaWYgKHRoaXMudXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSBjb2x1bW4pIHtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeSA9IHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeSA9PT0gMSA/IC0xIDogMTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuc29ydENvbHVtTmFtZSA9IGNvbHVtbjtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeSA9IDE7XHJcbiAgfVxyXG4gIHRoaXMubG9hZFRhYmxlKClcclxufVxyXG5cclxuYXBwbHlGaWx0ZXJzKGV2ZW50OmFueSl7XHJcbiAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcclxuICAgIGV2ZW50LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJSb2xlc1wiKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJCeVJvbGVzID0gZWxlbWVudC5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsPy5pZCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiU3RhdHVzXCIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlckJ5U3RhdHVzID0gZWxlbWVudC5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsPy5pZCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLmxpbWl0PTEwO1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuZXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVJvbGVzID0gdGhpcy5maWx0ZXJCeVJvbGVzO1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gICAgdGhpcy5sb2FkVGFibGUoKVxyXG59XHJcbnNlbGVjdEFsbENoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuc2VsZWN0ZWRVc2VyczogYW55W10gPSBbXTsgXHJcbmNyZWF0ZVRlYW06IGJvb2xlYW4gPSBmYWxzZTtcclxub25TZWxlY3RBbGwoKSB7XHJcbiAgdGhpcy5zZWxlY3RBbGxDaGVja2VkID0gIXRoaXMuc2VsZWN0QWxsQ2hlY2tlZDsgXHJcblxyXG4gIHRoaXMudXNlckxpc3QuZm9yRWFjaCh1c2VyID0+IHtcclxuICAgIHVzZXIuY2hlY2tlZCA9IHRoaXMuc2VsZWN0QWxsQ2hlY2tlZDsgXHJcbiAgfSk7XHJcbiAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tlZCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gWy4uLnRoaXMudXNlckxpc3RdO1xyXG4gICAgdGhpcy5jcmVhdGVUZWFtID0gdHJ1ZTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gW107XHJcbiAgICB0aGlzLmNyZWF0ZVRlYW0gPSBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5vblNlbGVjdGVkVGVhbXModXNlcjogYW55LGluZGV4OmFueSkge1xyXG4gICAgdXNlci5jaGVja2VkID0gIXVzZXIuY2hlY2tlZDtcclxuICAgIGlmICh1c2VyLmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzLnB1c2godXNlcik7XHJcbiAgICB9IGVsc2UgaWYodXNlci5jaGVja2VkID09PWZhbHNlKSB7XHJcbiAgICAgICBjb25zdCBzdG9yZUluZGV4ID0gdGhpcy5zZWxlY3RlZFVzZXJzLmZpbmRJbmRleChzZWxlY3RlZFVzZXIgPT4gc2VsZWN0ZWRVc2VyLl9pZCA9PT0gdXNlci5faWQpO1xyXG4gICAgICBpZiAoc3RvcmVJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnMuc3BsaWNlKHN0b3JlSW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdEFsbENoZWNrZWQgPSB0aGlzLnVzZXJMaXN0LmV2ZXJ5KHN0b3JlID0+IHN0b3JlLmNoZWNrZWQpO1xyXG4gICAgdGhpcy5jcmVhdGVUZWFtID0gdGhpcy5zZWxlY3RlZFVzZXJzLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUZWFtcygpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRlYW1zQ3JlYXRpb25Db21wb25lbnQseyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ2xnJyxiYWNrZHJvcDonc3RhdGljJyB9KTsgICAgXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50ZWFtc1VzZXJzID0gdGhpcy5zZWxlY3RlZFVzZXJzO1xyXG4gICAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tlZCA9ZmFsc2U7XHJcbiAgICAgICB0aGlzLmNyZWF0ZVRlYW0gPSBmYWxzZTtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdXHJcbiAgICAgIH0pXHJcbiAgfVxyXG59IiwiPGRpdiAqbmdJZj1cInJlY2VpdmVkRGF0YSAhPT0nUm9sZSBWYWx1ZSdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIHJpZ2h0Y29ybmVyIFwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNyZWF0ZVRlYW1cIiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIiB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2hhbmdlKT1cInNlYXJjaERhdGEoKVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgW2RhdGFPYmplY3RdPVwiZGF0YU9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPjwvbGliLWZpbHRlcnM+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhbG9hZGluZyAmJiAhbm9EYXRhXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcnRYTFNYKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIHAtNCBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cG9ydDwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8YXN5bmMpPy5HbG9iYWxfVXNlcl9pc0VkaXRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImJ1bGtBc3NpZ25hc3hsc3goKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIHAtNCBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+PHNwYW4gY2xhc3M9XCJtcy0yXCI+QnVsayBBc3NpZ248L3NwYW4+IDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfGFzeW5jKT8uR2xvYmFsX1VzZXJfaXNBZGRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInVzZXJzKCdhZGQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTIgcm91bmRlZC0zIHRleHQtbm93cmFwXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC4wMDAxIDQuMTY2NjNWMTUuODMzM000LjE2Njc1IDkuOTk5OTZIMTUuODMzNFwiIHN0cm9rZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yIHRleHQtd2hpdGVcIj5BZGQgVXNlcjwvc3Bhbj4gPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNyZWF0ZVRlYW1cIiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjcmVhdGVUZWFtcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXgtMiByb3VuZGVkLTMgdGV4dC1ub3dyYXBcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjAwMDEgNC4xNjY2M1YxNS44MzMzTTQuMTY2NzUgOS45OTk5NkgxNS44MzM0XCIgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTIgdGV4dC13aGl0ZVwiPkNyZWF0ZSBUZWFtPC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhbm9EYXRhXCIgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcCBcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIihncy51c2VyQWNjZXNzIHxhc3luYyk/Lkdsb2JhbF9Vc2VyX2lzQWRkXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dGNoZWNrXCI+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjbGljayk9XCJvblNlbGVjdEFsbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RBbGxDaGVja2VkXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgndXNlck5hbWUnKVwiPk5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwidXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSAndXNlck5hbWUnICYmIHVzZXJMaXN0X3JlcT8uc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJ1c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09ICd1c2VyTmFtZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2VtYWlsJylcIj5FbWFpbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJ1c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09ICdlbWFpbCcgJiYgdXNlckxpc3RfcmVxPy5zb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gJ2VtYWlsJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnbW9iaWxlTnVtYmVyJylcIj5Db250YWN0IE51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJ1c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09ICdtb2JpbGVOdW1iZXInICYmIHVzZXJMaXN0X3JlcT8uc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJ1c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09ICdtb2JpbGVOdW1iZXInID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoID5Sb2xlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgncm9sZScpXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzdmcgW25nQ2xhc3NdPVwidXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSAncm9sZScgJiYgdXNlckxpc3RfcmVxPy5zb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gJ3JvbGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgc3R5bGU9XCJsaW5lLWhlaWdodDogMjFweCAhaW1wb3J0YW50O1wiPkFzc2lnbmVkIFRvIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgc3R5bGU9XCJsaW5lLWhlaWdodDogMjFweCAhaW1wb3J0YW50O1wiPkFzIGEgTGVhZCBUbyA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJsaW5lLWhlaWdodDogMjFweCAhaW1wb3J0YW50O1wiPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJMaXN0O2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8YXN5bmMpPy5HbG9iYWxfVXNlcl9pc0FkZFwiPjxzcGFuIGNsYXNzPVwiaW5wdXRjaGVja1wiPjxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBtdC0yXCIgWyhuZ01vZGVsKV09XCJ1c2VyLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ZWRUZWFtcyh1c2VyLGkpXCI+PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t1c2VyPy51c2VyTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBnZXRNYXNrZWRWYWx1ZSh1c2VyPy5lbWFpbCwgdXNlckluZm8/LnJvbGUpIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBnZXRNYXNrZWRNb2JpbGUodXNlcj8ubW9iaWxlTnVtYmVyLCB1c2VySW5mbz8ucm9sZSkgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwidXNlcj8ucm9sZSA9PT0nc3VwZXJhZG1pbidcIj5TdXBlciBBZG1pbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ1c2VyPy5yb2xlICE9PSdzdXBlcmFkbWluJ1wiPnt7dXNlcj8ucm9sZSB8IHRpdGxlY2FzZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbWUtMVwiPnt7dXNlcj8uYXNzaWduZWRTdG9yZXN8fDB9fSBTdG9yZXM8L3NwYW4+IDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtaW5mb1wiPnt7dXNlcj8udGVhbUNvdW50fHwwfX0gVGVhbXM8L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXB1cnBsZSBtZS0xXCI+e3t1c2VyPy5jbHVzdGVyQ291bnR8fDB9fSBDbHVzdGVyczwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1pbmZvXCI+e3t1c2VyPy50ZWFtbGVhZHx8MH19IFRlYW1zPC9zcGFuPjwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0zIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIlZpZXd1c2VycygndmlldycsdXNlcilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xOTk1XzE2NDAwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjMzMzI1IDEwQzEuMzMzMjUgMTAgNC42NjY1OCAzLjMzMzM3IDEwLjQ5OTkgMy4zMzMzN0MxNi4zMzMzIDMuMzMzMzcgMTkuNjY2NiAxMCAxOS42NjY2IDEwQzE5LjY2NjYgMTAgMTYuMzMzMyAxNi42NjY3IDEwLjQ5OTkgMTYuNjY2N0M0LjY2NjU4IDE2LjY2NjcgMS4zMzMyNSAxMCAxLjMzMzI1IDEwWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC40OTk5IDEyLjVDMTEuODgwNiAxMi41IDEyLjk5OTkgMTEuMzgwOCAxMi45OTk5IDEwQzEyLjk5OTkgOC42MTkzMyAxMS44ODA2IDcuNTAwMDQgMTAuNDk5OSA3LjUwMDA0QzkuMTE5MjEgNy41MDAwNCA3Ljk5OTkyIDguNjE5MzMgNy45OTk5MiAxMEM3Ljk5OTkyIDExLjM4MDggOS4xMTkyMSAxMi41IDEwLjQ5OTkgMTIuNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE5OTVfMTY0MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICgoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uR2xvYmFsX1VzZXJfaXNFZGl0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMyBjdXJzb3ItcG9pbnRlclwiICpuZ0lmPVwidXNlckluZm8ucm9sZSE9PSd1c2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFzc2lnblN0b3JlKHVzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXVzZXI/LmlzQWN0aXZlIHx8IHVzZXI/LnJvbGUgPT09J3N1cGVyYWRtaW4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj5Bc3NpZ248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiICpuZ0lmPVwidXNlckluZm8ucm9sZSE9PSd1c2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtdC0zXCIgdHlwZT1cImNoZWNrYm94XCIgcm9sZT1cInN3aXRjaFwiIGlkPVwic3VwcG9ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/Lkdsb2JhbF9Vc2VyX2lzRWRpdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXNlclN0YXR1c0NoYW5nZSh1c2VyLGkpXCIgWyhuZ01vZGVsKV09XCJ1c2VyTGlzdFtpXS5pc0FjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh1c2VyTGlzdFtpXS5pc0FjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYWN0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFub0RhdGFcIiBjbGFzcz1cImNvbC14eGwtMTIgY29sLW1kLTEyIGNvbC14bC0xMiBjb2wtbGctMTIgbXktM1wiPlxyXG4gICAgICAgIDxsaWItcGFnaW5hdGlvbiAqbmdJZj1cInVzZXJMaXN0Lmxlbmd0aCE9PTBcIiBbaXRlbXNQZXJQYWdlXT1cInBhZ2luYXRpb24ubGltaXRcIiBbY3VycmVudFBhZ2VdPVwicGFnaW5hdGlvbi5vZmZzZXRcIlxyXG4gICAgICAgICAgICBbdG90YWxJdGVtc109XCJwYWdpbmF0aW9uLnRvdGFsQ291bnRcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uU2l6ZSgpXCJcclxuICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIiAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXIgbWItMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLWJlZ2luOjpSb3ctLT5cclxuPGRpdiAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0nUm9sZSBWYWx1ZSdcIiBjbGFzcz1cInJvdyBneC01IGd4LXhsLTEwXCI+XHJcbiAgICA8IS0tYmVnaW46OkNvbC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14eGwtMTIgY29sLW1kLTEyIGNvbC14bC0xMiBjb2wtbGctMTJcIj5cclxuICAgICAgICA8bGliLXJvbGVzLXBlcm1pc3Npb24tdGFibGUgKGRhdGFFdmVudCk9XCJyZWNlaXZlRGF0YSgkZXZlbnQpXCI+PC9saWItcm9sZXMtcGVybWlzc2lvbi10YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLWVuZDo6Q29sLS0+XHJcbjwvZGl2PlxyXG48IS0tZW5kOjpSb3ctLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnVsa1VwbG9hZCBsZXQtbW9kYWw+XHJcbiAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZmxleC1jb2x1bW4gcC05XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+QnVsayBBc3NpZ248L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS01MDAgbXQtNlwiPlxyXG4gICAgICAgIDxvbCBjbGFzcz1cImN1c3RvbS1vcmRlcmVkLWxpc3QgdGV4dC1ncmF5LTQwMCBmdy1ib2xkIHB4LTUgZnMtNlwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHRcIj5Vc2UgdGhlIHRlbXBsYXRlIGJlbG93IHRvIGFzc2lnbiBtdWx0aXBsZSB1c2VycyB0byBtdWx0aXBsZSBzdG9yZXMgYXQgb25jZS48L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktM1wiPjxzcGFuIGNsYXNzPVwidXNlci10ZXh0XCI+RG93bmxvYWQgdGhlIHRlbXBsYXRlIGhlcmUgLSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm1zLTFcIiBocmVmPVwiLi4vLi4vLi4vYXNzZXRzL2ZpbGVzL0J1bGtBc3NpZ25UZW1wbGF0ZS54bHN4XCIgZG93bmxvYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNNS44MzMzMyA4LjMzMzMzTDEwIDEyLjVNMTAgMTIuNUwxNC4xNjY3IDguMzMzMzNNMTAgMTIuNVYyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVtcGxhdGUgbXMtMlwiPkRvd25sb2FkIFRlbXBsYXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktM1wiPkFkZCB5b3VyIGRhdGEgdG8gdGhlIFRlbXBsYXRlIEZpbGU8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktM1wiPlVwbG9hZCBpdCBiZWxvdyBmb3IgcHJvY2Vzc2luZzwvbGk+ICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICA8L29sPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiIHctMTAwIHJpZ2h0LWJhciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIiA+XHJcbiAgICAgICAgPGlucHV0IG5hbWU9XCJhY2NvdW50VHlwZVwiIHR5cGU9XCJyYWRpb1wiIGlkPVwia3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWwxXCIgYWNjZXB0ID0gXCIuY3N2LCBhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCwgYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIgdmFsdWU9XCJwZXJzb25hbDFcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrXCJcclxuICAgICAgICAoY2hhbmdlKT1cIm9uVXBsb2FkMSgkZXZlbnQpXCJcclxuICAgICAgICBuZy1yZWZsZWN0LXZhbHVlPVwicGVyc29uYWxcIiB0eXBlPVwiZmlsZVwiICNpbnB1dEZpbGUxIC8+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cImt0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsMVwiIGNsYXNzPVwiIHctMS0wIHAtNFwiPjxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWNlbnRlciB3LTEwMCBmcy00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDZcIiBoZWlnaHQ9XCI0NlwiIHZpZXdCb3g9XCIwIDAgNDYgNDZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjRjJGNEY3XCIgLz5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgc3Ryb2tlPVwiI0Y5RkFGQlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiNlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzQwNDdfNDA1NjYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yNi4zMzMzIDI2LjMzMzRMMjMgMjNNMjMgMjNMMTkuNjY2NiAyNi4zMzM0TTIzIDIzVjMwLjVNMjkuOTkxNiAyOC4zMjVDMzAuODA0NCAyNy44ODE5IDMxLjQ0NjUgMjcuMTgwOCAzMS44MTY1IDI2LjMzMjJDMzIuMTg2NiAyNS40ODM3IDMyLjI2MzUgMjQuNTM2MSAzMi4wMzUxIDIzLjYzODlDMzEuODA2OCAyMi43NDE4IDMxLjI4NjIgMjEuOTQ2MyAzMC41NTU1IDIxLjM3NzlDMjkuODI0OCAyMC44MDk1IDI4LjkyNTcgMjAuNTAwNiAyOCAyMC41SDI2Ljk1QzI2LjY5NzcgMTkuNTI0NCAyNi4yMjc2IDE4LjYxODYgMjUuNTc0OSAxNy44NTA5QzI0LjkyMjIgMTcuMDgzMSAyNC4xMDQgMTYuNDczMiAyMy4xODE3IDE2LjA2NzJDMjIuMjU5NCAxNS42NjEyIDIxLjI1NzEgMTUuNDY5NSAyMC4yNTAxIDE1LjUwNjZDMTkuMjQzIDE1LjU0MzcgMTguMjU3NSAxNS44MDg2IDE3LjM2NzYgMTYuMjgxNEMxNi40Nzc3IDE2Ljc1NDIgMTUuNzA2NiAxNy40MjI2IDE1LjExMjIgMTguMjM2M0MxNC41MTc3IDE5LjA1MDEgMTQuMTE1NSAxOS45ODggMTMuOTM1OCAyMC45Nzk1QzEzLjc1NiAyMS45NzExIDEzLjgwMzQgMjIuOTkwNSAxNC4wNzQzIDIzLjk2MTFDMTQuMzQ1MiAyNC45MzE3IDE0LjgzMjcgMjUuODI4MiAxNS41IDI2LjU4MzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80MDQ3XzQwNTY2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTMgMTMpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZSBtYi0zXCI+PHNwYW4gY2xhc3M9XCJjbGljay11cGxvYWQgY3Vyc29yLXBvaW50ZXJcIj5DbGljayB0b1xyXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPnRoZSBkYXRhIGFkZGVkIHRlbXBsYXRlIGZpbGUgZm9yIHByb2Nlc3NpbmcuPC9kaXY+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FmdGVyVmFsaWRhdGlvbiBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBib3JkZXItMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBtdC0wXCI+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBtdC0zXCI+PHNwYW4gY2xhc3M9XCJjb25maWctaGVhZGluZyBmdy1zZW1pYm9sZCB3LWF1dG9cIj5CdWxrIEFzc2lnbjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB0LTAgcG9wdXAtc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTcwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7Z2V0RW1haWxDb3VudHMoZXhjZWxEYXRhKX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPlRvdGFsIFJlY29yZHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZCByb3VuZGVkLTMgcC0zIGZsZXgtY29sdW1uIGgtNzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2V4Y2VsRGF0YT8ubGVuZ3RofX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5Sb3dzIHByb2Nlc3NlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTcwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJleGNlbEVycm9yIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdmdy1zZW1pYm9sZCB0ZXh0LWVycm9yIHctMTAwIGVycm9yLWhlYWRpbmcnIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdmdy1zZW1pYm9sZCB3LTEwMCBjb25maWctaGVhZGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGV4Y2VsRXJyb3I/LmVycm9yPy5sZW5ndGggfHwgMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJleGNlbEVycm9yIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdmdy1zZW1pYm9sZCB0ZXh0LWVycm9yIG10LTEgZXhjZWwtZXJyb3InIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdmdy1zZW1pYm9sZCBzdWJ0aXRsZSBtdC0xJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWV4Y2VsRXJyb3JcIiBjbGFzcz1cInRhYmxlLWhlYWRlciBtdC01XCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiA+WW91J3JlIGFib3V0IHRvIGFzc2lnbiB7e2dldEVtYWlsQ291bnRzKGV4Y2VsRGF0YSl9fSB7e2dldEVtYWlsQ291bnRzKGV4Y2VsRGF0YSkgPiAxID8gJ1VzZXJzJyA6ICdVc2VyJ319LiBBcmUgeW91IHN1cmUgd2FudCB0byBwcm9jZWVkPzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJleGNlbEVycm9yXCIgY2xhc3M9XCJmbGV4LWNvbHVtbiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWhlYWRpbmcgZnctYm9sZFwiPkludmFsaWQgRGV0YWlscyAhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGUgbXQtNVwiPlBsZWFzZSBwcm92aWRlIGNvcnJlY3QgaW5mb3JtYXRpb24uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHctMTAwIHJvdW5kZWQtMyBib3JkZXItZXJyb3IgbXQtNSBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVycm9yIG9mIGV4Y2VsRXJyb3I/LmVycm9yOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIiBbbmdDbGFzc109XCIhbGFzdCA/ICdtYi0yJyA6ICcnXCIgY2xhc3M9XCJ0ZXh0LWVycm9yXCI+e3tpICsgMX19KSB7e2Vycm9yfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGZsZXgtd3JhcCBnYXAtMiBwdC0wXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlYWN0aXZlcG9wdXAoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWV4Y2VsRXJyb3JcIiBjbGFzcz1cImJ0biBidG4tbWQgcHktMyBidG4tZGVmYXVsdCBidG4tcHJpbWFyeVwiIChjbGljayk9XCJwcm9jZWVkU3VibWl0KClcIj5Qcm9jZWVkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJleGNlbEVycm9yXCIgY2xhc3M9XCJidG4gcHktMyBidG4tbWQgYnRuLWRlZmF1bHQgbXMtMyBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cImZpbGUxLmNsaWNrKCk7XCI+UmV1cGxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAjZmlsZTEgdHlwZT1cImZpbGVcIiBpZD1cImt0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8yXCIgYWNjZXB0ID0gXCIuY3N2LCBhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCwgYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVXBsb2FkMSgkZXZlbnQpXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
836
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQtdXNlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdXNlcnMvc3JjL2xpYi9jb21wb25lbnRzL3RhbmdvLW1hbmFnZS11c2Vycy9icmFuZC11c2VyL2JyYW5kLXVzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXVzZXJzL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtdXNlcnMvYnJhbmQtdXNlci9icmFuZC11c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFxQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUsvRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBa0QsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxFQUFZLElBQUksRUFBRSxLQUFLLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLDRGQUE0RjtBQUM1RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUV4RywrREFBK0Q7QUFDL0QsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7O0FBRXRDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENB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QUFDLFlBQVk7Z0JBQ08sZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCAsRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IEFkZFVzZXJQb3B1cENvbXBvbmVudCB9IGZyb20gXCIuLi9hZGQtdXNlci1wb3B1cC9hZGQtdXNlci1wb3B1cC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFzc2lnblN0b3JlUG9wdXBDb21wb25lbnQgfSBmcm9tIFwiLi4vYXNzaWduLXN0b3JlLXBvcHVwL2Fzc2lnbi1zdG9yZS1wb3B1cC5jb21wb25lbnRcIjtcclxuaW1wb3J0IFN3YWwgZnJvbSBcInN3ZWV0YWxlcnQyXCI7XHJcbmltcG9ydCB7IEV4Y2VsU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9leGNlbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgV29ya0Jvb2ssIHJlYWQsIHV0aWxzLCBXb3JrU2hlZXQgfSBmcm9tIFwieGxzeFwiO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG4vLyBpbXBvcnQgeyBBbGVydFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vdXNlci10YWJsZS9hbGVydC1idWxwb3B1cC9hbGVydC1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbGVydFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vdXNlci10YWJsZS9hbGVydC1wb3B1cC9hbGVydC1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBZGRVc2Vyc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMtdjIvYWRkLXVzZXJzL2FkZC11c2Vycy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZWFtc0NyZWF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy12Mi90ZWFtcy1jcmVhdGlvbi90ZWFtcy1jcmVhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuLy8gaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCAqIGFzIENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XHJcblxyXG5jb25zdCBTRUNSRVRfS0VZID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXHJcbiAgQ3J5cHRvSlMuU0hBMjU2KFwidEBuZzAtcmV0QGlsLUBwaS12M1wiKVxyXG4gICAgLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5CYXNlNjQpXHJcbiAgICAuc3Vic3RyaW5nKDAsIDMyKVxyXG4pO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1icmFuZC11c2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnJhbmQtdXNlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JyYW5kLXVzZXIuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCcmFuZFVzZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25EZXN0cm95IHtcclxuICBAT3V0cHV0KCkgZGF0YVRvUGFyZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgLy8gQE91dHB1dCgpIGRhdGFUb3VzZXJsaXN0OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2J1bGtVcGxvYWQnKSBidWxrVXBsb2FkOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChcImlucHV0RmlsZTFcIikgaW5wdXRGaWxlMTogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhZnRlclZhbGlkYXRpb24nKSBhZnRlclZhbGlkYXRpb246IGFueTtcclxuIHJlY2VpdmVkRGF0YTphbnk9Jyc7XHJcbiB1c2VyRGF0YTogc3RyaW5nO1xyXG4gc2VhcmNoVmFsdWU6IGFueTtcclxuIHVzZXJMaXN0OiBhbnlbXSA9IFtdO1xyXG4gdXNlckxpc3RfcmVxOiBhbnk7XHJcbiBwYWdpbmF0aW9uOiBhbnkgPSB7XHJcbiAgIG9mZnNldDogMSxcclxuICAgbGltaXQ6IDEwLFxyXG4gICB0b3RhbENvdW50OiAwLFxyXG4gfTtcclxuIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gbm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiBwYWdpbmF0aW9uU2l6ZXM6IG51bWJlcltdID0gWzEwLCAyMCwgMzBdO1xyXG4gc3VwcG9ydEVtYWlsOiBzdHJpbmc7XHJcbiB1c2VyVHlwZTogc3RyaW5nO1xyXG4gJGhlYWRlckZpbHRlcnM6IGFueTtcclxuIHNlYXJjaElucHV0ID0gbmV3IEZvcm1Db250cm9sKFwiXCIpO1xyXG4gcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcm9sZXM6IGFueTtcclxuICBmaWxlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdG9yZXM6IGFueSA9W107XHJcbiAgcm9sZXNDb3VudDogYW55O1xyXG4gIFNlbGVjdGVkVGFiOiBhbnk7XHJcbiAgICBkYXRhT2JqZWN0OiBhbnkgPSBbXHJcbiAgICB7IERlc2NyaXB0aW9uOiAnUm9sZXMnLCBJc3N1ZXM6IFt7IHRleHQ6IFwiU3VwZXIgQWRtaW5cIiwgaWQ6ICdzdXBlcmFkbWluJyB9LCB7IHRleHQ6IFwiQWRtaW5cIiwgaWQ6ICdhZG1pbicgfSwgeyB0ZXh0OiBcIlVzZXJcIiwgaWQ6IFwidXNlclwiIH1dIH0sXHJcbiAgICB7IERlc2NyaXB0aW9uOiAnU3RhdHVzJywgSXNzdWVzOiBbeyB0ZXh0OiBcIkFjdGl2ZVwiLCBpZDogJ2FjdGl2ZScgfSwgeyB0ZXh0OiBcIkRlYWN0aXZlXCIsIGlkOiAnZGVhY3RpdmUnIH1dIH1cclxuICBdO1xyXG4gIGZpbHRlckJ5Um9sZXM6IGFueTtcclxuICBmaWx0ZXJCeVN0YXR1czogYW55O1xyXG4gIHVzZXJJbmZvOiBhbnk7XHJcbiBjb25zdHJ1Y3RvcihcclxuICAgcHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwscHJpdmF0ZSBwYWdlSW5mbzogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgcHJpdmF0ZSBleGNlbFNlcnZpY2U6IEV4Y2VsU2VydmljZSxcclxuICAgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgLy8gIHB1YmxpYyBhY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsXHJcbiAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxyXG4gKSB7XHJcbiAgIHRoaXMuZ3MuZW52aXJvbm1lbnQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZW52KSA9PiB7XHJcbiAgICAgaWYgKGVudikge1xyXG4gICAgICAgdGhpcy5zdXBwb3J0RW1haWwgPSBlbnYuc3VwcG9ydF9lbWFpbDtcclxuICAgICB9XHJcbiAgIH0pOyAgICBcclxuIH1cclxuXHJcbiAvLyBtdXN0IG1hdGNoIGJhY2tlbmRcclxuIFxyXG5kZWNyeXB0KGVuY3J5cHRlZFRleHQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgY29uc3QgW2l2SGV4LCBlbmNyeXB0ZWRdID0gZW5jcnlwdGVkVGV4dC5zcGxpdCgnOicpO1xyXG5cclxuICBjb25zdCBpdiA9IENyeXB0b0pTLmVuYy5IZXgucGFyc2UoaXZIZXgpO1xyXG4gIGNvbnN0IGNpcGhlcnRleHQgPSBDcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGVuY3J5cHRlZCk7XHJcblxyXG4gIGNvbnN0IGNpcGhlclBhcmFtcyA9IENyeXB0b0pTLmxpYi5DaXBoZXJQYXJhbXMuY3JlYXRlKHsgY2lwaGVydGV4dCB9KTtcclxuXHJcbiAgY29uc3QgZGVjcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoY2lwaGVyUGFyYW1zLCBTRUNSRVRfS0VZLCB7XHJcbiAgICBpdjogaXYsXHJcbiAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcclxuICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZGVjcnlwdGVkLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcclxufVxyXG4gc2V0UGFnZURhdGEoKSB7XHJcbiAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIlVzZXJzXCIpO1xyXG4gIHRoaXMucGFnZUluZm8uc2V0RGVzY3JpcHRpb24oXCJPbmJvYXJkIHlvdXIgdGVhbSBhbmQgaGVscCB0aGVtIHZpc3VhbGl6ZSB0aGVpciBzdG9yZXMgcGVyZm9ybWFuY2VcIik7XHJcbiAgbGV0IGJyZWFkY3J1bWJzIDogYW55W109W107XHJcbiAgaWYgKHRoaXMuZ3MudXNlckFjY2Vzcy52YWx1ZT8udXNlclR5cGUgPT09IFwidGFuZ29cIikge1xyXG4gICAgYnJlYWRjcnVtYnM9ICBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCJNYW5hZ2VcIixcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2UvYnJhbmRzXCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiBcIk1hbmFnZVwiLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS9icmFuZHNcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH0gZWxzZSBpZiAodGhpcy5ncy51c2VyQWNjZXNzLnZhbHVlPy51c2VyVHlwZSA9PT0gXCJjbGllbnRcIikge1xyXG4gICAgYnJlYWRjcnVtYnM9IFtcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiBcIk1hbmFnZVwiLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS9zdW1tYXJ5XCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiBcIk1hbmFnZVwiLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS9zdW1tYXJ5XCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcbiAgdGhpcy5wYWdlSW5mby5zZXRCcmVhZGNydW1icyhicmVhZGNydW1icyk7XHJcbn1cclxuIG5nT25Jbml0KCkge1xyXG4gIHRoaXMudXNlckluZm8gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlci1pbmZvXCIpIHx8IFwie31cIik7XHJcbiAgXHJcbiAgIHRoaXMuZ3M/LmRhdGFSYW5nZVZhbHVlPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSk/LnN1YnNjcmliZSh7XHJcbiAgICAgbmV4dDooZGF0YTphbnkpPT57XHJcbiAgICAgICBpZihkYXRhID09PSBudWxsICkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJEYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlci1pbmZvXCIpIHx8IFwie31cIik7XHJcbiAgICAgICAgdGhpcy4kaGVhZGVyRmlsdGVycyA9IHVzZXJEYXRhO1xyXG4gICAgICAgIHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50ID0gdXNlckRhdGEuY2xpZW50SWRcclxuICAgICAgICB0aGlzLnVzZXJEYXRhID0gXCJjbGllbnRcIjtcclxuICAgICAgICAgICB0aGlzLnVzZXJUeXBlID0gXCJjbGllbnRcIjtcclxuICAgICAgICAgICBpZih1c2VyRGF0YT8uY2xpZW50SWQpe1xyXG4gICAgICAgICAgIHRoaXMudXNlckxpc3RfcmVxID0ge1xyXG4gICAgICAgICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICAgICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICAgICAgICAgb2Zmc2V0OiAxLFxyXG4gICAgICAgICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgICAgICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICAgICAgICAgIGV4cG9ydDpmYWxzZVxyXG4gICAgICAgICAgIH07XHJcbiAgICAgICAgICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICAgICAgICAgIC8vICB0aGlzLmdldFJvbGVzKCk7XHJcbiAgICAgICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy4kaGVhZGVyRmlsdGVycyA9IGRhdGE7XHJcbiAgICAgICAgICAgdGhpcy51c2VyRGF0YSA9IFwiY2xpZW50XCI7XHJcbiAgICAgICAgICAgdGhpcy51c2VyVHlwZSA9IFwiY2xpZW50XCI7XHJcbiAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLm9mZnNldCA9IDE7XHJcbiAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uLmxpbWl0ID0gMTA7XHJcbiAgICAgICAgICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgICAgICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgICAgICAgICBsaW1pdDogMTAsXHJcbiAgICAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgICAgICAgICAgZXhwb3J0OmZhbHNlXHJcbiAgICAgICAgICAgfTtcclxuICAgICAgICAgICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gICAgICAgICAgLy8gIHRoaXMuZ2V0Um9sZXMoKTtcclxuICAgICAgICAgICB0aGlzLnNldFBhZ2VEYXRhKCk7XHJcbiAgICAgICB9IFxyXG4gICAgIH1cclxuICAgfSk7XHJcblxyXG4gXHJcbiAgfVxyXG4gIGdldE1hc2tlZFZhbHVlKHZhbHVlOiBzdHJpbmcsIHJvbGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAocm9sZSA9PT0gJ3N1cGVyYWRtaW4nKSByZXR1cm4gdmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pbmNsdWRlcygnQCcpKSByZXR1cm4gJyc7XHJcblxyXG4gICAgY29uc3QgW2xvY2FsLCBkb21haW5dID0gdmFsdWUuc3BsaXQoJ0AnKTtcclxuICAgIGNvbnN0IHZpc2libGVMZW5ndGggPSBNYXRoLm1pbig1LCBsb2NhbC5sZW5ndGgpO1xyXG4gICAgY29uc3QgdmlzaWJsZVBhcnQgPSBsb2NhbC5zbGljZSgwLCB2aXNpYmxlTGVuZ3RoKTtcclxuICAgIGNvbnN0IG1hc2tlZFBhcnQgPSAnKicucmVwZWF0KGxvY2FsLmxlbmd0aCAtIHZpc2libGVMZW5ndGgpO1xyXG5cclxuICAgIHJldHVybiBgJHt2aXNpYmxlUGFydH0ke21hc2tlZFBhcnR9QCR7ZG9tYWlufWA7XHJcbiAgfVxyXG4gIGdldE1hc2tlZE1vYmlsZSh2YWx1ZTogc3RyaW5nLCByb2xlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHJvbGUgPT09ICdzdXBlcmFkbWluJykgcmV0dXJuIHZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPD0gNCkgcmV0dXJuICcqJy5yZXBlYXQodmFsdWUubGVuZ3RoKTtcclxuICBcclxuICAgIGNvbnN0IGZpcnN0MiA9IHZhbHVlLnNsaWNlKDAsIDIpO1xyXG4gICAgY29uc3QgbGFzdDIgPSB2YWx1ZS5zbGljZSgtMik7XHJcbiAgICBjb25zdCBtYXNrZWRNaWRkbGUgPSAnKicucmVwZWF0KHZhbHVlLmxlbmd0aCAtIDQpO1xyXG4gIFxyXG4gICAgcmV0dXJuIGAke2ZpcnN0Mn0ke21hc2tlZE1pZGRsZX0ke2xhc3QyfWA7XHJcbiAgfVxyXG4gXHJcbiBzZWFyY2hEYXRhKCkge1xyXG4gIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPTE7XHJcbiAgdGhpcy5wYWdpbmF0aW9uLmxpbWl0ID0xMDtcclxuICBpZih0aGlzLnNlYXJjaFZhbHVlID09PScnKXtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiAxMCxcclxuICAgICAgb2Zmc2V0OiAxLFxyXG4gICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICAgZXhwb3J0OmZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlSb2xlcyA9IHRoaXMuZmlsdGVyQnlSb2xlcztcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5U3RhdHVzID0gdGhpcy5maWx0ZXJCeVN0YXR1cztcclxuICAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiAgfSBlbHNlIHtcclxuICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgIGxpbWl0OiAxMCxcclxuICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUsXHJcbiAgICAgZXhwb3J0OmZhbHNlXHJcbiAgIH07XHJcbiAgIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5Um9sZXMgPSB0aGlzLmZpbHRlckJ5Um9sZXM7XHJcbiAgIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5U3RhdHVzID0gdGhpcy5maWx0ZXJCeVN0YXR1cztcclxuICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICB9XHJcbiB9XHJcbiB1c2Vycyh0eXBlOiBhbnksdXNlcj86IGFueSkge1xyXG4gICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkVXNlclBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgc2l6ZTogXCJsZ1wiLFxyXG4gICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgIH0pO1xyXG4gICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS51c2VyID0gdXNlcjtcclxuICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudHlwZSA9IHR5cGU7XHJcbiAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnVzZXJUeXBlID0nY2xpZW50JztcclxuICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgaWYocmVzdWx0ID09PSdzdWJtaXQnKXtcclxuICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9Jyc7XHJcbiAgICAgIHRoaXMudXNlckxpc3RfcmVxLmxpbWl0ID0gMTA7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5saW1pdCA9IDEwO1xyXG4gICAgICB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQgPSAxO1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb24ub2Zmc2V0ID0gMTtcclxuICAgICB0aGlzLnVzZXJTZXJ2aWNlLmRhdGFTdWJqZWN0Lm5leHQodGhpcy51c2VyRGF0YSk7XHJcbiAgICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IDEwLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICBleHBvcnQ6ZmFsc2VcclxuICAgIH07XHJcbiAgICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gICAgLy8gIHRoaXMuZ2V0Um9sZXMoKTtcclxuICAgIH1cclxuICAgfSk7XHJcbiB9XHJcbiAgVmlld3VzZXJzKHR5cGU6IGFueSwgdXNlcj86IGFueSkge1xyXG4gICAgbGV0IG1vZGFsT3B0aW9uczogYW55ID0ge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogJ2xnJ1xyXG4gICAgfTtcclxuICAgIGlmICh1c2VyLnJvbGUgPT09ICdhZG1pbicgJiYgdXNlci5pc0FjdGl2ZSA9PSB0cnVlICYmIHRoaXMuZ3M/LnVzZXJBY2Nlc3M/LnZhbHVlPy5HbG9iYWxfVXNlcl9pc0VkaXQgKSB7XHJcbiAgICAgIG1vZGFsT3B0aW9ucy5iYWNrZHJvcCA9ICdzdGF0aWMnO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkVXNlcnNDb21wb25lbnQsIG1vZGFsT3B0aW9ucyk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS51c2VyID0gdXNlcjtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnR5cGUgPSB0eXBlO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlclR5cGUgPSdjbGllbnQnO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICB9KVxyXG4gfVxyXG4gLy8gc2VhcmNoRGF0YSgpIHtcclxuIC8vICAgdGhpcy5sb2FkVGFibGUoKTtcclxuIC8vIH1cclxuXHJcbiBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogbnVtYmVyKSB7XHJcbiAgIHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCA9IHBhZ2VPZmZzZXQ7XHJcbiAgIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPSBwYWdlT2Zmc2V0O1xyXG4gICBpZih0aGlzLnNlYXJjaFZhbHVlID09PScnKXtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLnVzZXJMaXN0X3JlcS5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLnVzZXJMaXN0X3JlcS5vZmZzZXQsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLCAgXHJcbiAgICAgIGV4cG9ydDpmYWxzZSxcclxuICAgICAgc29ydENvbHVtTmFtZSA6dGhpcy51c2VyTGlzdF9yZXEuc29ydENvbHVtTmFtZSxcclxuICAgIHNvcnRCeSA6IHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeVxyXG4gICAgfTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IHRoaXMudXNlckxpc3RfcmVxLmxpbWl0LFxyXG4gICAgICBvZmZzZXQ6IHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgICBleHBvcnQ6ZmFsc2UsXHJcbiAgICAgIHNvcnRDb2x1bU5hbWUgOnRoaXMudXNlckxpc3RfcmVxLnNvcnRDb2x1bU5hbWUsXHJcbiAgICBzb3J0QnkgOiB0aGlzLnVzZXJMaXN0X3JlcS5zb3J0QnlcclxuICAgIH07XHJcbiAgfVxyXG4gIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5Um9sZXMgPSB0aGlzLmZpbHRlckJ5Um9sZXM7XHJcbiAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gIHRoaXMuY3JlYXRlVGVhbSA9IGZhbHNlO1xyXG4gIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xyXG4gIHRoaXMuc2VsZWN0QWxsQ2hlY2tlZCA9ZmFsc2U7XHJcbiAgIHRoaXMubG9hZFRhYmxlKCk7XHJcbiB9XHJcblxyXG4gb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgIHRoaXMudXNlckxpc3RfcmVxLmxpbWl0ID0gTnVtYmVyKHBhZ2VTaXplKTtcclxuICAgdGhpcy5wYWdpbmF0aW9uLmxpbWl0ID0gTnVtYmVyKHBhZ2VTaXplKTtcclxuICAgdGhpcy51c2VyTGlzdF9yZXEub2Zmc2V0ID0gMTtcclxuICAgdGhpcy5wYWdpbmF0aW9uLm9mZnNldCA9IDE7XHJcbiAgIGlmKHRoaXMuc2VhcmNoVmFsdWUgPT09Jycpe1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgbGltaXQ6IHRoaXMudXNlckxpc3RfcmVxLmxpbWl0LFxyXG4gICAgICBvZmZzZXQ6IHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsICBcclxuICAgICAgZXhwb3J0OmZhbHNlLFxyXG4gICAgICBzb3J0Q29sdW1OYW1lIDp0aGlzLnVzZXJMaXN0X3JlcS5zb3J0Q29sdW1OYW1lLFxyXG4gICAgc29ydEJ5IDogdGhpcy51c2VyTGlzdF9yZXEuc29ydEJ5XHJcbiAgICB9O1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBsaW1pdDogdGhpcy51c2VyTGlzdF9yZXEubGltaXQsXHJcbiAgICAgIG9mZnNldDogdGhpcy51c2VyTGlzdF9yZXEub2Zmc2V0LFxyXG4gICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUsXHJcbiAgICAgIGV4cG9ydDpmYWxzZSxcclxuICAgICAgc29ydENvbHVtTmFtZSA6dGhpcy51c2VyTGlzdF9yZXEuc29ydENvbHVtTmFtZSxcclxuICAgIHNvcnRCeSA6IHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeVxyXG4gICAgfTtcclxuICB9XHJcbiAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlSb2xlcyA9IHRoaXMuZmlsdGVyQnlSb2xlcztcclxuICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVN0YXR1cyA9IHRoaXMuZmlsdGVyQnlTdGF0dXM7XHJcbiAgdGhpcy5jcmVhdGVUZWFtID0gZmFsc2U7XHJcbiAgdGhpcy5zZWxlY3RlZFVzZXJzID0gW107XHJcbiAgdGhpcy5zZWxlY3RBbGxDaGVja2VkID1mYWxzZTtcclxuICAgdGhpcy5sb2FkVGFibGUoKTtcclxuIH1cclxuXHJcbiBhc3NpZ25TdG9yZSh1c2VyOiBhbnkpIHtcclxuICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFzc2lnblN0b3JlUG9wdXBDb21wb25lbnQsIHtcclxuICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICBiYWNrZHJvcDonc3RhdGljJyxcclxuICAgICBzaXplOiBcImxnXCIsXHJcbiAgICAgc2Nyb2xsYWJsZTogdHJ1ZSxcclxuICAgfSk7XHJcbiAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnVzZXIgPSB1c2VyO1xyXG4gICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICBpZihyZXN1bHQgPT09J3N1Ym1pdCcpe1xyXG4gICAgICB0aGlzLnNlYXJjaFZhbHVlID0nJztcclxuICAgICAgdGhpcy51c2VyTGlzdF9yZXEubGltaXQgPSAxMDtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uLmxpbWl0ID0gMTA7XHJcbiAgICAgIHRoaXMudXNlckxpc3RfcmVxLm9mZnNldCA9IDE7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQgPSAxO1xyXG4gICAgIHRoaXMudXNlclNlcnZpY2UuZGF0YVN1YmplY3QubmV4dCh0aGlzLnVzZXJEYXRhKTtcclxuICAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBsaW1pdDogMTAsXHJcbiAgICAgIG9mZnNldDogMSxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIGV4cG9ydDpmYWxzZVxyXG4gICAgfTtcclxuICAgICB0aGlzLmxvYWRUYWJsZSgpO1xyXG4gICAgfVxyXG4gICB9KTtcclxuIH1cclxuXHJcbiBsb2FkVGFibGUoKSB7XHJcbiAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgLy8gIHRoaXMucGFnaW5hdGlvbi5vZmZzZXQ9MTtcclxuICAvLyAgdGhpcy5wYWdpbmF0aW9uLmxpbWl0ID0xMDtcclxuICAgdGhpcy5wYWdpbmF0aW9uLnRvdGFsQ291bnQgPTA7XHJcbiAgIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckxpc3QodGhpcy51c2VyTGlzdF9yZXEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoXHJcbiAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgdGhpcy51c2VyTGlzdCA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICBcclxuICAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgICAgIG9mZnNldDogdGhpcy5wYWdpbmF0aW9uLm9mZnNldCxcclxuICAgICAgICAgICBsaW1pdDogdGhpcy5wYWdpbmF0aW9uLmxpbWl0LFxyXG4gICAgICAgICAgIHRvdGFsQ291bnQ6IHJlcy5kYXRhLmNvdW50LFxyXG4gICAgICAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgICAgICB9O1xyXG4gICAgICAgICB0aGlzLmRhdGFUb1BhcmVudC5lbWl0KHRoaXMucGFnaW5hdGlvbi50b3RhbENvdW50KTtcclxuICAgICAgICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VNZXNzYWdlKHRoaXMucGFnaW5hdGlvbi5saW1pdCk7XHJcbiAgICAgICAgIGlmIChyZXMuZGF0YS5jb3VudCA8IDEwKSB7XHJcbiAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbcmVzLmRhdGEuY291bnRdO1xyXG4gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgfSBlbHNlIHsgICAgICBcclxuXHJcbiAgICAgICAgIHRoaXMudXNlckxpc3QgPSBbXTtcclxuICAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgICBsaW1pdDogMTAsXHJcbiAgICAgICAgICAgdG90YWxDb3VudDogMCxcclxuICAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmRhdGFUb1BhcmVudC5lbWl0KHRoaXMucGFnaW5hdGlvbi50b3RhbENvdW50KTtcclxuICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgIH1cclxuICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgIH0sXHJcbiAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgIHRoaXMudXNlckxpc3QgPSBbXTtcclxuICAgICAgIHRoaXMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICAgb2Zmc2V0OiAxLFxyXG4gICAgICAgICBsaW1pdDogMTAsXHJcbiAgICAgICAgIHRvdGFsQ291bnQ6IDAsXHJcbiAgICAgICB9O1xyXG4gICAgICAgdGhpcy5kYXRhVG9QYXJlbnQuZW1pdCh0aGlzLnBhZ2luYXRpb24udG90YWxDb3VudCk7XHJcbiAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICB9XHJcbiAgICk7XHJcbiB9XHJcblxyXG4gcGFnaW5hdGlvblNpemUoKTogbnVtYmVyIHtcclxuICAgaWYgKHRoaXMucGFnaW5hdGlvbi50b3RhbENvdW50IDwgMTApIHtcclxuICAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uLnRvdGFsQ291bnQ7XHJcbiAgIH0gZWxzZSB7XHJcbiAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvbi5saW1pdDtcclxuICAgfVxyXG4gfVxyXG5cclxuIGV4cG9ydFhMU1goKSB7XHJcbiAgaWYodGhpcy5zZWFyY2hWYWx1ZSA9PT0nJyl7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICBsaW1pdDogMTAwMDAsXHJcbiAgICAgIG9mZnNldDogMSxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIGV4cG9ydDp0cnVlXHJcbiAgICB9O1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlSb2xlcyA9IHRoaXMuZmlsdGVyQnlSb2xlcztcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLmZpbHRlckJ5U3RhdHVzID0gdGhpcy5maWx0ZXJCeVN0YXR1cztcclxuICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgLmdldFVzZXJMaXN0RXhwb3J0KHRoaXMudXNlckxpc3RfcmVxKVxyXG4gIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmV4Y2VsU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCAnVXNlcnMnKVxyXG5cclxuICAgIH0sXHJcbiAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSxcclxuICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcSA9IHtcclxuICAgICBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgIG9mZnNldDogMSxcclxuICAgICB1c2VyVHlwZTogdGhpcy51c2VyVHlwZSxcclxuICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICBleHBvcnQ6dHJ1ZVxyXG4gICB9O1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVJvbGVzID0gdGhpcy5maWx0ZXJCeVJvbGVzO1xyXG4gICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVN0YXR1cyA9IHRoaXMuZmlsdGVyQnlTdGF0dXM7XHJcbiB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAuZ2V0VXNlckxpc3RFeHBvcnQodGhpcy51c2VyTGlzdF9yZXEpXHJcbiAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAuc3Vic2NyaWJlKHtcclxuICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgdGhpcy5leGNlbFNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ1VzZXJzJylcclxuXHJcbiAgIH0sXHJcbiAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgIH0sXHJcbiAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuIH0pO1xyXG4gIH1cclxuXHJcbiBcclxuICBcclxuXHJcbiAgfVxyXG4gIFxyXG4gIGJ1bGtBc3NpZ25hc3hsc3goKSB7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuYnVsa1VwbG9hZCx7Y2VudGVyZWQ6IHRydWV9KVxyXG4gIH1cclxuXHJcbiAgYWRkU2luZ2xlVXNlcigpIHtcclxuICAgIFxyXG4gIH1cclxuICBcclxuICBleGNlbEVycm9yOiBhbnk7XHJcbiAgZXhjZWxEYXRhOiBhbnkgPSBbXVxyXG4gIHZhbGlkYXRlZE91dHB1dDogYW55ID0gW107XHJcblxyXG4gIGdldFN0b3JlQ291bnRzKGRhdGE6IGFueSkge1xyXG5cclxuICAgIGNvbnN0IHVuaXF1ZVVzZXJOYW1lcyA9IG5ldyBTZXQoZGF0YT8ubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bJ1N0b3JlIE5hbWUvU3RvcmUgSWQnXSkpO1xyXG4gICAgcmV0dXJuIHVuaXF1ZVVzZXJOYW1lcy5zaXplO1xyXG5cclxuICB9XHJcblxyXG4gICAgZ2V0RW1haWxDb3VudHMoZGF0YTogYW55KSB7XHJcblxyXG4gICAgY29uc3QgdW5pcXVlVXNlck5hbWVzID0gbmV3IFNldChkYXRhPy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVsnRW1haWwnXSkpO1xyXG4gICAgcmV0dXJuIHVuaXF1ZVVzZXJOYW1lcy5zaXplO1xyXG5cclxuICB9XHJcblxyXG4gIG9uVXBsb2FkMShlOiBhbnkpIHtcclxuICAgIGxldCBkYXRhOiBhbnlbXTtcclxuICAgIGxldCBlcnJvcjogYW55ID0gW107XHJcbiAgICBsZXQgc3RvcmVOYW1lOiBhbnkgPSAnJztcclxuXHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZS50YXJnZXQuZmlsZXNbMF07XHJcbiAgY29uc3QgYWxsb3dlZEV4dGVuc2lvbnMgPSAvXFwuKHhsc3x4bHN4fGNzdikkL2k7XHJcbiAgY29uc3QgYWxsb3dlZFR5cGVzID0gW1xyXG4gICAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiLCBcclxuICAgIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBcInRleHQvY3N2XCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBcImFwcGxpY2F0aW9uL2NzdlwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gIF07XHJcblxyXG4gIGlmICghYWxsb3dlZEV4dGVuc2lvbnMudGVzdChmaWxlLm5hbWUpIHx8ICFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoZmlsZS50eXBlKSkge1xyXG4gICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChcIk9ubHkgLnhsc3gsIG9yIC5jc3YgZmlsZXMgYXJlIGFsbG93ZWQuXCIpO1xyXG4gICAgdGhpcy5pbnB1dEZpbGUxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgICBjb25zdCB0YXJnZXQ6IERhdGFUcmFuc2ZlciA9IDxEYXRhVHJhbnNmZXI+ZS50YXJnZXQ7XHJcbiAgICBpZiAodGFyZ2V0LmZpbGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5pbnB1dEZpbGUxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgfVxyXG4gICAgaWYgKCEhdGFyZ2V0LmZpbGVzWzBdLm5hbWUubWF0Y2goLygueGxzfC54bHN4KS8pKSB7XHJcbiAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgYnN0cjogc3RyaW5nID0gZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAgIGNvbnN0IHdiOiBXb3JrQm9vayA9IHJlYWQoYnN0ciwgeyB0eXBlOiBcImJpbmFyeVwiIH0pO1xyXG4gICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgICBjb25zdCB3czogV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XHJcbiAgICAgICAgZGF0YSA9IHV0aWxzLnNoZWV0X3RvX2pzb24od3MpO1xyXG4gICAgICAgIHRoaXMuZXhjZWxEYXRhID0gZGF0YTtcclxuICAgICAgICBzdG9yZU5hbWUgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICB9O1xyXG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSBhc3luYyAoZSkgPT4ge1xyXG5cclxuICAgICAgICAgaWYgKHN0b3JlTmFtZSAhPT0gXCJVc2Vyc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KFwiQ2FuIHlvdSBjb25maXJtIHdoZXRoZXIgdGhlIHNoZWV0IG5hbWUgaXMgVXNlcnMgP1wiKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghZGF0YT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXCJQbGVhc2UgdXBsb2FkIGEgdmFsaWQgZmlsZS5cIik7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXF1aXJlZEtleXMgPSBbJ1N0b3JlIE5hbWUvU3RvcmUgSWQnLCdFbWFpbCddIC8vIE11c3QgYWx3YXlzIGJlIHByZXNlbnRcclxuICAgICAgICAvLyBjb25zdCBvcHRpb25hbEtleXMgPSBbJ3VzZXJQaG9uZScsICdjaXR5J10gOiBbJ2NpdHknXTtcclxuICAgICAgICBcclxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gZGF0YS5zb21lKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpdGVtKTtcclxuICAgICAgICAgIGNvbnN0IGhhc1JlcXVpcmVkS2V5cyA9IHJlcXVpcmVkS2V5cy5ldmVyeShrZXkgPT4ga2V5cy5pbmNsdWRlcyhrZXkpKTtcclxuICAgICAgICAgIGNvbnN0IGFsbEtleXNBcmVBbGxvd2VkID0ga2V5cy5ldmVyeShrZXkgPT4gXHJcbiAgICAgICAgICAgIHJlcXVpcmVkS2V5cy5pbmNsdWRlcyhrZXkpXHJcbiAgICAgICAgICAgIC8vIHx8IG9wdGlvbmFsS2V5cy5pbmNsdWRlcyhrZXkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIGhhc1JlcXVpcmVkS2V5cyAmJiBhbGxLZXlzQXJlQWxsb3dlZDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdQbGVhc2UgdXBsb2FkIGEgdmFsaWQgZmlsZS4nKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRhdGE/LmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQ/LkVtYWlsKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuRW1haWwgPSBlbGVtZW50Py5FbWFpbC5yZXBsYWNlKC9cXHMvZywgJycpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCAhZWxlbWVudD8uWydTdG9yZSBOYW1lL1N0b3JlIElkJ10gfHwgZWxlbWVudD8uWydTdG9yZSBOYW1lL1N0b3JlIElkJ10gPT0gJycgfHwgZWxlbWVudD8uWydTdG9yZSBOYW1lL1N0b3JlIElkJ10gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIFN0b3JlIE5hbWUvU3RvcmUgSWQgLSBCJHtpbmRleCArIDJ9YClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghZWxlbWVudD8uRW1haWwgfHwgZWxlbWVudD8uRW1haWw/LnRyaW0oKSA9PSAnJyB8fCBlbGVtZW50LkVtYWlsID09IG51bGwpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBFbWFpbCAtIEEke2luZGV4ICsgMn1gKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGVsZW1lbnQ/LkVtYWlsICYmICFlbGVtZW50LkVtYWlsLm1hdGNoKC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvKSkge1xyXG4gICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIEVtYWlsIC0gQSR7aW5kZXggKyAyfWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgaWYgKGVycm9yLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIGVycm9yOiBlcnJvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hZnRlclVwbGxvYWQocG9wdXBjb250ZW50KVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBjb25zdCBhcGlEYXRhID0gdGhpcy5leGNlbERhdGEubWFwKChlbDogYW55KSA9PntcclxuICAgICAgICAgIHJldHVybiB7c3RvcmUgOiBlbD8uWydTdG9yZSBOYW1lL1N0b3JlIElkJ10sXHJcbiAgICAgICAgICBlbWFpbCA6IGVsPy5FbWFpbH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgICAgICAuYnVsa1VzZXJBc3NpZ24oe1xyXG4gICAgICAgICAgICBkYXRhOiBhcGlEYXRhXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgIGlmIChyZXMuc3RhdHVzPT09J2Vycm9yJyYmcmVzLmVycm9yLmVycm9yLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIGVycm9yOiByZXMuZXJyb3IuZXJyb3JcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKHBvcHVwY29udGVudClcclxuICAgICAgICAgIHRoaXMuaW5wdXRGaWxlMS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKCk7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlZE91dHB1dCA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5pbnB1dEZpbGUxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOihlcnI6YW55KT0+IHtcclxuICAgICAgICBpZiAoZXJyLmVycm9yLmNvZGUgPT09IDQwMCkge1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIGVycm9yOmVyci5lcnJvci5lcnJvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hZnRlclVwbGxvYWQocG9wdXBjb250ZW50KVxyXG4gICAgICAgICAgdGhpcy5pbnB1dEZpbGUxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XHJcbiAgICAgICAgICB0aGlzLmlucHV0RmlsZTEubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIC8vICQoXCIja3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIik/LnZhbChcIlwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFJldXBsb2FkKCkge1xyXG5cclxuICB9XHJcblxyXG4gICBwcm9jZWVkU3VibWl0KCkge1xyXG4gICAgbGV0IHBheWxvYWQgPSB7ZGF0YTp0aGlzLnZhbGlkYXRlZE91dHB1dH0gXHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC5hc3NpZ25EYXRhKHBheWxvYWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGBTdG9yZXMgQXNzaWduZWQgdG8gVXNlciBTdWNjZXNzZnVsbHkhYCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGBVbmFibGUgdG8gQXNzaWduIFN0b3JlcyB0byBVc2VyIWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCdzdWJtaXQnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIEFzc2lnbiBTdG9yZXMgdG8gVXNlciFcIik7XHJcbiAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlYWN0aXZlcG9wdXAoKSB7XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgfVxyXG5cclxuICBhZnRlclVwbGxvYWQoZGF0YT86IGFueSkge1xyXG4gICAgdGhpcy5leGNlbEVycm9yID0gZGF0YTtcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5hZnRlclZhbGlkYXRpb24sIHsgY2VudGVyZWQ6IHRydWUsIGJhY2tkcm9wOiAnc3RhdGljJywgc2l6ZTogJ2xnJywgd2luZG93Q2xhc3M6ICdjdXN0b20tbW9kYWwtd2lkdGgnIH0pXHJcbiAgfVxyXG5cclxuICB1c2VyU3RhdHVzQ2hhbmdlKHVzZXI6IGFueSwgaTogbnVtYmVyKSB7XHJcbiAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFsZXJ0UG9wdXBDb21wb25lbnQseyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyxiYWNrZHJvcDpcInN0YXRpY1wiIH0pOyAgIFxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlciA9IHVzZXI7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgaWYgKHJlc3VsdCkge1xyXG4gICAgaWYgKHJlc3VsdCA9PT0nc3VibWl0Jykge1xyXG4gICB0aGlzLnVzZXJTZXJ2aWNlLnVwZGF0ZVVzZXIoeyBlbWFpbDogdXNlcj8uZW1haWwsIGlzQWN0aXZlOiB1c2VyLmlzQWN0aXZlfSkuc3Vic2NyaWJlKHtcclxuICAgICBuZXh0OihyZXM6YW55KT0+IHtcclxuICAgICAgIGlmKHJlcyAmJiByZXMuY29kZT09MjAwKSB7XHJcbiAgICAgICAgIGlmKHVzZXIuaXNBY3RpdmUpIHtcclxuICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRTdWNjZXNzVG9hc3QoJ1VzZXIgU3RhdHVzIEFjdGl2YXRlZCEnKTtcclxuICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRTdWNjZXNzVG9hc3QoJ1VzZXIgU3RhdHVzIERlYWN0aXZhdGVkIScpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdVbmFibGUgdG8gQ2hhbmdlIFVzZXIgU3RhdHVzIScpO1xyXG4gICAgICAgICB0aGlzLnVzZXJMaXN0W2ldLmlzQWN0aXZlPSF1c2VyLmlzQWN0aXZlO1xyXG4gICAgICAgfVxyXG4gICAgIH0sXHJcbiAgICAgZXJyb3I6KCk9PntcclxuICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoJ1VuYWJsZSB0byBDaGFuZ2UgVXNlciBTdGF0dXMhJyk7XHJcbiAgICAgICB0aGlzLnVzZXJMaXN0W2ldLmlzQWN0aXZlPSF1c2VyLmlzQWN0aXZlO1xyXG4gICAgIH0sXHJcbiAgICAgY29tcGxldGU6KCk9Pnt9XHJcbiAgIH0pXHJcbiAgfSBlbHNlIGlmKHJlc3VsdCA9PT0nY2xvc2UnKSB7XHJcbiAgICB0aGlzLnVzZXJMaXN0W2ldLmlzQWN0aXZlPSF1c2VyLmlzQWN0aXZlO1xyXG4gIH1cclxufVxyXG59KVxyXG4gfVxyXG4gbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gfVxyXG4gZ2V0Um9sZXMoKSB7XHJcbiAgdmFyIGRhdGEgPSB7IFxyXG4gICAgICB1c2VyVHlwZTogJ2NsaWVudCcsXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzPy5jbGllbnRcclxuICAgIH1cclxuICB0aGlzLnVzZXJTZXJ2aWNlLmdldFJvbGVzKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5yb2xlcyA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICB0aGlzLnJvbGVzQ291bnQgPSByZXMuZGF0YS5jb3VudDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvbGVzID0gW107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgdGhpcy5yb2xlcyA9IFtdO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgfSk7XHJcbn1cclxudXNlckRldGlhbHMocm9sZTogYW55KSB7XHJcbiAgbGV0IG9iaiA9e1xyXG4gICAgcm9sZTpyb2xlLFxyXG4gICAgdXNlclR5cGUgOidCcmFuZCBVc2VyJyxcclxuICAgIHJlY2VpdmVkRGF0YTpcIlJvbGUgVmFsdWVcIlxyXG4gIH1cclxuICB0aGlzLnVzZXJTZXJ2aWNlLnJvbGVzQ29tbXMubmV4dChvYmopO1xyXG4gIHRoaXMucmVjZWl2ZWREYXRhID0nUm9sZSBWYWx1ZSc7XHJcbn1cclxucmVjZWl2ZURhdGEoZGF0YTogc3RyaW5nKSB7XHJcbiAgdGhpcy5yZWNlaXZlZERhdGEgPSBkYXRhO1xyXG4gIHRoaXMudXNlclNlcnZpY2UuZGF0YVN1YmplY3QubmV4dCh0aGlzLnVzZXJEYXRhKTtcclxufVxyXG5cclxub25Tb3J0KGNvbHVtbjogc3RyaW5nKSB7XHJcbiAgdGhpcy51c2VyTGlzdF9yZXEuZXhwb3J0ID0gZmFsc2U7XHJcbiAgaWYgKHRoaXMudXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSBjb2x1bW4pIHtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeSA9IHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeSA9PT0gMSA/IC0xIDogMTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuc29ydENvbHVtTmFtZSA9IGNvbHVtbjtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLnNvcnRCeSA9IDE7XHJcbiAgfVxyXG4gIHRoaXMubG9hZFRhYmxlKClcclxufVxyXG5cclxuYXBwbHlGaWx0ZXJzKGV2ZW50OmFueSl7XHJcbiAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcclxuICAgIGV2ZW50LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJSb2xlc1wiKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJCeVJvbGVzID0gZWxlbWVudC5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsPy5pZCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiU3RhdHVzXCIpIHtcclxuICAgICAgICB0aGlzLmZpbHRlckJ5U3RhdHVzID0gZWxlbWVudC5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsPy5pZCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMudXNlckxpc3RfcmVxLmxpbWl0PTEwO1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuZXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnVzZXJMaXN0X3JlcS5maWx0ZXJCeVJvbGVzID0gdGhpcy5maWx0ZXJCeVJvbGVzO1xyXG4gICAgdGhpcy51c2VyTGlzdF9yZXEuZmlsdGVyQnlTdGF0dXMgPSB0aGlzLmZpbHRlckJ5U3RhdHVzO1xyXG4gICAgdGhpcy5sb2FkVGFibGUoKVxyXG59XHJcbnNlbGVjdEFsbENoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuc2VsZWN0ZWRVc2VyczogYW55W10gPSBbXTsgXHJcbmNyZWF0ZVRlYW06IGJvb2xlYW4gPSBmYWxzZTtcclxub25TZWxlY3RBbGwoKSB7XHJcbiAgdGhpcy5zZWxlY3RBbGxDaGVja2VkID0gIXRoaXMuc2VsZWN0QWxsQ2hlY2tlZDsgXHJcblxyXG4gIHRoaXMudXNlckxpc3QuZm9yRWFjaCh1c2VyID0+IHtcclxuICAgIHVzZXIuY2hlY2tlZCA9IHRoaXMuc2VsZWN0QWxsQ2hlY2tlZDsgXHJcbiAgfSk7XHJcbiAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tlZCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gWy4uLnRoaXMudXNlckxpc3RdO1xyXG4gICAgdGhpcy5jcmVhdGVUZWFtID0gdHJ1ZTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gW107XHJcbiAgICB0aGlzLmNyZWF0ZVRlYW0gPSBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5vblNlbGVjdGVkVGVhbXModXNlcjogYW55LGluZGV4OmFueSkge1xyXG4gICAgdXNlci5jaGVja2VkID0gIXVzZXIuY2hlY2tlZDtcclxuICAgIGlmICh1c2VyLmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzLnB1c2godXNlcik7XHJcbiAgICB9IGVsc2UgaWYodXNlci5jaGVja2VkID09PWZhbHNlKSB7XHJcbiAgICAgICBjb25zdCBzdG9yZUluZGV4ID0gdGhpcy5zZWxlY3RlZFVzZXJzLmZpbmRJbmRleChzZWxlY3RlZFVzZXIgPT4gc2VsZWN0ZWRVc2VyLl9pZCA9PT0gdXNlci5faWQpO1xyXG4gICAgICBpZiAoc3RvcmVJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnMuc3BsaWNlKHN0b3JlSW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdEFsbENoZWNrZWQgPSB0aGlzLnVzZXJMaXN0LmV2ZXJ5KHN0b3JlID0+IHN0b3JlLmNoZWNrZWQpO1xyXG4gICAgdGhpcy5jcmVhdGVUZWFtID0gdGhpcy5zZWxlY3RlZFVzZXJzLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUZWFtcygpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRlYW1zQ3JlYXRpb25Db21wb25lbnQseyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ2xnJyxiYWNrZHJvcDonc3RhdGljJyB9KTsgICAgXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50ZWFtc1VzZXJzID0gdGhpcy5zZWxlY3RlZFVzZXJzO1xyXG4gICAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkVGFibGUoKTtcclxuICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tlZCA9ZmFsc2U7XHJcbiAgICAgICB0aGlzLmNyZWF0ZVRlYW0gPSBmYWxzZTtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdXHJcbiAgICAgIH0pXHJcbiAgfVxyXG59IiwiPGRpdiAqbmdJZj1cInJlY2VpdmVkRGF0YSAhPT0nUm9sZSBWYWx1ZSdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIHJpZ2h0Y29ybmVyIFwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNyZWF0ZVRlYW1cIiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIiB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2hhbmdlKT1cInNlYXJjaERhdGEoKVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgW2RhdGFPYmplY3RdPVwiZGF0YU9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPjwvbGliLWZpbHRlcnM+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhbG9hZGluZyAmJiAhbm9EYXRhXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcnRYTFNYKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIHAtNCBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cG9ydDwvc3Bhbj4gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8YXN5bmMpPy5HbG9iYWxfVXNlcl9pc0VkaXRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImJ1bGtBc3NpZ25hc3hsc3goKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIHAtNCBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+PHNwYW4gY2xhc3M9XCJtcy0yXCI+QnVsayBBc3NpZ248L3NwYW4+IDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfGFzeW5jKT8uR2xvYmFsX1VzZXJfaXNBZGRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInVzZXJzKCdhZGQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTIgcm91bmRlZC0zIHRleHQtbm93cmFwXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC4wMDAxIDQuMTY2NjNWMTUuODMzM000LjE2Njc1IDkuOTk5OTZIMTUuODMzNFwiIHN0cm9rZT1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yIHRleHQtd2hpdGVcIj5BZGQgVXNlcjwvc3Bhbj4gPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNyZWF0ZVRlYW1cIiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjcmVhdGVUZWFtcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXgtMiByb3VuZGVkLTMgdGV4dC1ub3dyYXBcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjAwMDEgNC4xNjY2M1YxNS44MzMzTTQuMTY2NzUgOS45OTk5NkgxNS44MzM0XCIgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTIgdGV4dC13aGl0ZVwiPkNyZWF0ZSBUZWFtPC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhbm9EYXRhXCIgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcCBcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIihncy51c2VyQWNjZXNzIHxhc3luYyk/Lkdsb2JhbF9Vc2VyX2lzQWRkXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dGNoZWNrXCI+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIChjbGljayk9XCJvblNlbGVjdEFsbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RBbGxDaGVja2VkXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgndXNlck5hbWUnKVwiPk5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwidXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSAndXNlck5hbWUnICYmIHVzZXJMaXN0X3JlcT8uc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJ1c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09ICd1c2VyTmFtZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ2VtYWlsJylcIj5FbWFpbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJ1c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09ICdlbWFpbCcgJiYgdXNlckxpc3RfcmVxPy5zb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gJ2VtYWlsJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnbW9iaWxlTnVtYmVyJylcIj5Db250YWN0IE51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJ1c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09ICdtb2JpbGVOdW1iZXInICYmIHVzZXJMaXN0X3JlcT8uc29ydEJ5ID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJ1c2VyTGlzdF9yZXE/LnNvcnRDb2x1bU5hbWUgPT09ICdtb2JpbGVOdW1iZXInID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoID5Sb2xlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgncm9sZScpXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzdmcgW25nQ2xhc3NdPVwidXNlckxpc3RfcmVxPy5zb3J0Q29sdW1OYW1lID09PSAncm9sZScgJiYgdXNlckxpc3RfcmVxPy5zb3J0QnkgPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInVzZXJMaXN0X3JlcT8uc29ydENvbHVtTmFtZSA9PT0gJ3JvbGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgc3R5bGU9XCJsaW5lLWhlaWdodDogMjFweCAhaW1wb3J0YW50O1wiPkFzc2lnbmVkIFRvIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAgc3R5bGU9XCJsaW5lLWhlaWdodDogMjFweCAhaW1wb3J0YW50O1wiPkFzIGEgTGVhZCBUbyA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJsaW5lLWhlaWdodDogMjFweCAhaW1wb3J0YW50O1wiPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJMaXN0O2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8YXN5bmMpPy5HbG9iYWxfVXNlcl9pc0FkZFwiPjxzcGFuIGNsYXNzPVwiaW5wdXRjaGVja1wiPjxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBtdC0yXCIgWyhuZ01vZGVsKV09XCJ1c2VyLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ZWRUZWFtcyh1c2VyLGkpXCI+PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3t1c2VyPy51c2VyTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBnZXRNYXNrZWRWYWx1ZSh1c2VyPy5lbWFpbCwgdXNlckluZm8/LnJvbGUpIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBnZXRNYXNrZWRNb2JpbGUodXNlcj8ubW9iaWxlTnVtYmVyLCB1c2VySW5mbz8ucm9sZSkgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwidXNlcj8ucm9sZSA9PT0nc3VwZXJhZG1pbidcIj5TdXBlciBBZG1pbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ1c2VyPy5yb2xlICE9PSdzdXBlcmFkbWluJ1wiPnt7dXNlcj8ucm9sZSB8IHRpdGxlY2FzZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbWUtMVwiPnt7dXNlcj8uYXNzaWduZWRTdG9yZXN8fDB9fSBTdG9yZXM8L3NwYW4+IDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtaW5mb1wiPnt7dXNlcj8udGVhbUNvdW50fHwwfX0gVGVhbXM8L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXB1cnBsZSBtZS0xXCI+e3t1c2VyPy5jbHVzdGVyQ291bnR8fDB9fSBDbHVzdGVyczwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1pbmZvXCI+e3t1c2VyPy50ZWFtbGVhZHx8MH19IFRlYW1zPC9zcGFuPjwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0zIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIlZpZXd1c2VycygndmlldycsdXNlcilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xOTk1XzE2NDAwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjMzMzI1IDEwQzEuMzMzMjUgMTAgNC42NjY1OCAzLjMzMzM3IDEwLjQ5OTkgMy4zMzMzN0MxNi4zMzMzIDMuMzMzMzcgMTkuNjY2NiAxMCAxOS42NjY2IDEwQzE5LjY2NjYgMTAgMTYuMzMzMyAxNi42NjY3IDEwLjQ5OTkgMTYuNjY2N0M0LjY2NjU4IDE2LjY2NjcgMS4zMzMyNSAxMCAxLjMzMzI1IDEwWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC40OTk5IDEyLjVDMTEuODgwNiAxMi41IDEyLjk5OTkgMTEuMzgwOCAxMi45OTk5IDEwQzEyLjk5OTkgOC42MTkzMyAxMS44ODA2IDcuNTAwMDQgMTAuNDk5OSA3LjUwMDA0QzkuMTE5MjEgNy41MDAwNCA3Ljk5OTkyIDguNjE5MzMgNy45OTk5MiAxMEM3Ljk5OTkyIDExLjM4MDggOS4xMTkyMSAxMi41IDEwLjQ5OTkgMTIuNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE5OTVfMTY0MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICgoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8uR2xvYmFsX1VzZXJfaXNFZGl0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMyBjdXJzb3ItcG9pbnRlclwiICpuZ0lmPVwidXNlckluZm8ucm9sZSE9PSd1c2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFzc2lnblN0b3JlKHVzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXVzZXI/LmlzQWN0aXZlIHx8IHVzZXI/LnJvbGUgPT09J3N1cGVyYWRtaW4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj5Bc3NpZ248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiICpuZ0lmPVwidXNlckluZm8ucm9sZSE9PSd1c2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtdC0zXCIgdHlwZT1cImNoZWNrYm94XCIgcm9sZT1cInN3aXRjaFwiIGlkPVwic3VwcG9ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/Lkdsb2JhbF9Vc2VyX2lzRWRpdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXNlclN0YXR1c0NoYW5nZSh1c2VyLGkpXCIgWyhuZ01vZGVsKV09XCJ1c2VyTGlzdFtpXS5pc0FjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh1c2VyTGlzdFtpXS5pc0FjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYWN0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFub0RhdGFcIiBjbGFzcz1cImNvbC14eGwtMTIgY29sLW1kLTEyIGNvbC14bC0xMiBjb2wtbGctMTIgbXktM1wiPlxyXG4gICAgICAgIDxsaWItcGFnaW5hdGlvbiAqbmdJZj1cInVzZXJMaXN0Lmxlbmd0aCE9PTBcIiBbaXRlbXNQZXJQYWdlXT1cInBhZ2luYXRpb24ubGltaXRcIiBbY3VycmVudFBhZ2VdPVwicGFnaW5hdGlvbi5vZmZzZXRcIlxyXG4gICAgICAgICAgICBbdG90YWxJdGVtc109XCJwYWdpbmF0aW9uLnRvdGFsQ291bnRcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uU2l6ZSgpXCJcclxuICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIiAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXIgbWItMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLWJlZ2luOjpSb3ctLT5cclxuPGRpdiAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0nUm9sZSBWYWx1ZSdcIiBjbGFzcz1cInJvdyBneC01IGd4LXhsLTEwXCI+XHJcbiAgICA8IS0tYmVnaW46OkNvbC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC14eGwtMTIgY29sLW1kLTEyIGNvbC14bC0xMiBjb2wtbGctMTJcIj5cclxuICAgICAgICA8bGliLXJvbGVzLXBlcm1pc3Npb24tdGFibGUgKGRhdGFFdmVudCk9XCJyZWNlaXZlRGF0YSgkZXZlbnQpXCI+PC9saWItcm9sZXMtcGVybWlzc2lvbi10YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLWVuZDo6Q29sLS0+XHJcbjwvZGl2PlxyXG48IS0tZW5kOjpSb3ctLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnVsa1VwbG9hZCBsZXQtbW9kYWw+XHJcbiAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZmxleC1jb2x1bW4gcC05XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+QnVsayBBc3NpZ248L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS01MDAgbXQtNlwiPlxyXG4gICAgICAgIDxvbCBjbGFzcz1cImN1c3RvbS1vcmRlcmVkLWxpc3QgdGV4dC1ncmF5LTQwMCBmdy1ib2xkIHB4LTUgZnMtNlwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHRcIj5Vc2UgdGhlIHRlbXBsYXRlIGJlbG93IHRvIGFzc2lnbiBtdWx0aXBsZSB1c2VycyB0byBtdWx0aXBsZSBzdG9yZXMgYXQgb25jZS48L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktM1wiPjxzcGFuIGNsYXNzPVwidXNlci10ZXh0XCI+RG93bmxvYWQgdGhlIHRlbXBsYXRlIGhlcmUgLSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm1zLTFcIiBocmVmPVwiLi4vLi4vLi4vYXNzZXRzL2ZpbGVzL0J1bGtBc3NpZ25UZW1wbGF0ZS54bHN4XCIgZG93bmxvYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNNS44MzMzMyA4LjMzMzMzTDEwIDEyLjVNMTAgMTIuNUwxNC4xNjY3IDguMzMzMzNNMTAgMTIuNVYyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVtcGxhdGUgbXMtMlwiPkRvd25sb2FkIFRlbXBsYXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktM1wiPkFkZCB5b3VyIGRhdGEgdG8gdGhlIFRlbXBsYXRlIEZpbGU8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktM1wiPlVwbG9hZCBpdCBiZWxvdyBmb3IgcHJvY2Vzc2luZzwvbGk+ICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICA8L29sPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiIHctMTAwIHJpZ2h0LWJhciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIiA+XHJcbiAgICAgICAgPGlucHV0IG5hbWU9XCJhY2NvdW50VHlwZVwiIHR5cGU9XCJyYWRpb1wiIGlkPVwia3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWwxXCIgYWNjZXB0ID0gXCIuY3N2LCBhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCwgYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIgdmFsdWU9XCJwZXJzb25hbDFcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrXCJcclxuICAgICAgICAoY2hhbmdlKT1cIm9uVXBsb2FkMSgkZXZlbnQpXCJcclxuICAgICAgICBuZy1yZWZsZWN0LXZhbHVlPVwicGVyc29uYWxcIiB0eXBlPVwiZmlsZVwiICNpbnB1dEZpbGUxIC8+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cImt0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsMVwiIGNsYXNzPVwiIHctMS0wIHAtNFwiPjxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWNlbnRlciB3LTEwMCBmcy00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDZcIiBoZWlnaHQ9XCI0NlwiIHZpZXdCb3g9XCIwIDAgNDYgNDZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjRjJGNEY3XCIgLz5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgc3Ryb2tlPVwiI0Y5RkFGQlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiNlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzQwNDdfNDA1NjYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yNi4zMzMzIDI2LjMzMzRMMjMgMjNNMjMgMjNMMTkuNjY2NiAyNi4zMzM0TTIzIDIzVjMwLjVNMjkuOTkxNiAyOC4zMjVDMzAuODA0NCAyNy44ODE5IDMxLjQ0NjUgMjcuMTgwOCAzMS44MTY1IDI2LjMzMjJDMzIuMTg2NiAyNS40ODM3IDMyLjI2MzUgMjQuNTM2MSAzMi4wMzUxIDIzLjYzODlDMzEuODA2OCAyMi43NDE4IDMxLjI4NjIgMjEuOTQ2MyAzMC41NTU1IDIxLjM3NzlDMjkuODI0OCAyMC44MDk1IDI4LjkyNTcgMjAuNTAwNiAyOCAyMC41SDI2Ljk1QzI2LjY5NzcgMTkuNTI0NCAyNi4yMjc2IDE4LjYxODYgMjUuNTc0OSAxNy44NTA5QzI0LjkyMjIgMTcuMDgzMSAyNC4xMDQgMTYuNDczMiAyMy4xODE3IDE2LjA2NzJDMjIuMjU5NCAxNS42NjEyIDIxLjI1NzEgMTUuNDY5NSAyMC4yNTAxIDE1LjUwNjZDMTkuMjQzIDE1LjU0MzcgMTguMjU3NSAxNS44MDg2IDE3LjM2NzYgMTYuMjgxNEMxNi40Nzc3IDE2Ljc1NDIgMTUuNzA2NiAxNy40MjI2IDE1LjExMjIgMTguMjM2M0MxNC41MTc3IDE5LjA1MDEgMTQuMTE1NSAxOS45ODggMTMuOTM1OCAyMC45Nzk1QzEzLjc1NiAyMS45NzExIDEzLjgwMzQgMjIuOTkwNSAxNC4wNzQzIDIzLjk2MTFDMTQuMzQ1MiAyNC45MzE3IDE0LjgzMjcgMjUuODI4MiAxNS41IDI2LjU4MzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80MDQ3XzQwNTY2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTMgMTMpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZSBtYi0zXCI+PHNwYW4gY2xhc3M9XCJjbGljay11cGxvYWQgY3Vyc29yLXBvaW50ZXJcIj5DbGljayB0b1xyXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPnRoZSBkYXRhIGFkZGVkIHRlbXBsYXRlIGZpbGUgZm9yIHByb2Nlc3NpbmcuPC9kaXY+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FmdGVyVmFsaWRhdGlvbiBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBib3JkZXItMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBtdC0wXCI+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBtdC0zXCI+PHNwYW4gY2xhc3M9XCJjb25maWctaGVhZGluZyBmdy1zZW1pYm9sZCB3LWF1dG9cIj5CdWxrIEFzc2lnbjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB0LTAgcG9wdXAtc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTcwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7Z2V0RW1haWxDb3VudHMoZXhjZWxEYXRhKX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPlRvdGFsIFJlY29yZHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZCByb3VuZGVkLTMgcC0zIGZsZXgtY29sdW1uIGgtNzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2V4Y2VsRGF0YT8ubGVuZ3RofX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5Sb3dzIHByb2Nlc3NlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTcwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJleGNlbEVycm9yIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdmdy1zZW1pYm9sZCB0ZXh0LWVycm9yIHctMTAwIGVycm9yLWhlYWRpbmcnIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdmdy1zZW1pYm9sZCB3LTEwMCBjb25maWctaGVhZGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGV4Y2VsRXJyb3I/LmVycm9yPy5sZW5ndGggfHwgMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJleGNlbEVycm9yIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdmdy1zZW1pYm9sZCB0ZXh0LWVycm9yIG10LTEgZXhjZWwtZXJyb3InIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdmdy1zZW1pYm9sZCBzdWJ0aXRsZSBtdC0xJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWV4Y2VsRXJyb3JcIiBjbGFzcz1cInRhYmxlLWhlYWRlciBtdC01XCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiA+WW91J3JlIGFib3V0IHRvIGFzc2lnbiB7e2dldEVtYWlsQ291bnRzKGV4Y2VsRGF0YSl9fSB7e2dldEVtYWlsQ291bnRzKGV4Y2VsRGF0YSkgPiAxID8gJ1VzZXJzJyA6ICdVc2VyJ319LiBBcmUgeW91IHN1cmUgd2FudCB0byBwcm9jZWVkPzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJleGNlbEVycm9yXCIgY2xhc3M9XCJmbGV4LWNvbHVtbiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWhlYWRpbmcgZnctYm9sZFwiPkludmFsaWQgRGV0YWlscyAhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGUgbXQtNVwiPlBsZWFzZSBwcm92aWRlIGNvcnJlY3QgaW5mb3JtYXRpb24uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHctMTAwIHJvdW5kZWQtMyBib3JkZXItZXJyb3IgbXQtNSBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVycm9yIG9mIGV4Y2VsRXJyb3I/LmVycm9yOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIiBbbmdDbGFzc109XCIhbGFzdCA/ICdtYi0yJyA6ICcnXCIgY2xhc3M9XCJ0ZXh0LWVycm9yXCI+e3tpICsgMX19KSB7e2Vycm9yfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGZsZXgtd3JhcCBnYXAtMiBwdC0wXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlYWN0aXZlcG9wdXAoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWV4Y2VsRXJyb3JcIiBjbGFzcz1cImJ0biBidG4tbWQgcHktMyBidG4tZGVmYXVsdCBidG4tcHJpbWFyeVwiIChjbGljayk9XCJwcm9jZWVkU3VibWl0KClcIj5Qcm9jZWVkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJleGNlbEVycm9yXCIgY2xhc3M9XCJidG4gcHktMyBidG4tbWQgYnRuLWRlZmF1bHQgbXMtMyBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cImZpbGUxLmNsaWNrKCk7XCI+UmV1cGxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAjZmlsZTEgdHlwZT1cImZpbGVcIiBpZD1cImt0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8yXCIgYWNjZXB0ID0gXCIuY3N2LCBhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCwgYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVXBsb2FkMSgkZXZlbnQpXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -4301,7 +4301,7 @@ class BrandUserComponent {
|
|
|
4301
4301
|
modalRef.result.then((result) => {
|
|
4302
4302
|
if (result) {
|
|
4303
4303
|
if (result === 'submit') {
|
|
4304
|
-
this.userService.updateUser({ email:
|
|
4304
|
+
this.userService.updateUser({ email: user?.email, isActive: user.isActive }).subscribe({
|
|
4305
4305
|
next: (res) => {
|
|
4306
4306
|
if (res && res.code == 200) {
|
|
4307
4307
|
if (user.isActive) {
|