keevo-components 1.8.96 → 1.8.98

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.
@@ -75,4 +75,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
75
75
  template: ''
76
76
  }]
77
77
  }], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.NotificationService }, { type: i3.Router }] });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtY3J1ZC1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtY3J1ZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBS25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7QUFLdkUsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxpQkFBaUI7SUFRbkUsWUFDRSxhQUE0QixFQUM1QixtQkFBd0MsRUFDakMsTUFBYztRQUNyQixLQUFLLENBRUQsYUFBYSxFQUNiLG1CQUFtQixDQUNwQixDQUFDO1FBTEcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQU52QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixvQkFBZSxHQUFpQixFQUFFLENBQUM7SUFXbkMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJO1lBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUE4QkQ7OztPQUdHO0lBQ08sVUFBVSxDQUFDLEtBQVU7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFFBQVEsQ0FBQyxHQUFvQjtRQUNyQyxHQUFHO2FBQ0EsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2YsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3ZCLDZDQUE2Qzt3QkFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO3dCQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtvQkFDdkIsQ0FBQzt5QkFDSSxDQUFDO3dCQUNKLDJEQUEyRDt3QkFDM0QsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO3dCQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7b0JBQzdCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxRQUFRLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNPLE9BQU87UUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDOzhHQXhHbUIscUJBQXFCO2tHQUFyQixxQkFBcUIsMkVBRi9CLEVBQUU7OzJGQUVRLHFCQUFxQjtrQkFIMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gXCJwcmltZW5nL2R5bmFtaWNkaWFsb2dcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudENydWQgfSBmcm9tIFwiLi9iYXNlLWNvbXBvbmVudC1jcnVkXCI7XHJcbmltcG9ydCB7IFRhYmxlUGFnaW5hdGUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy90YWJsZS90YWJsZS5wYWdpbmF0ZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUNvbmZpZyB9IGZyb20gXCIuLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBBY3Rpb25JdGVtIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdGFibGUvYWN0aW9uLWl0ZW1cIjtcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgbG9hZGluZyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2t2LWxvYWRlci9rdi1sb2FkZXIuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnXHJcbn0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50Q3J1ZExpc3QgZXh0ZW5kcyBCYXNlQ29tcG9uZW50Q3J1ZCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGRhdGFTb3VyY2U6IGFueTtcclxuICBzZWxlY3RlZEl0ZW06IGFueTtcclxuICB0YWJsZUNvbmZpZyE6IFRhYmxlQ29uZmlnO1xyXG4gIHRvdGFsUmVjb3JkczogbnVtYmVyID0gMDtcclxuICBhY3Rpb25zUGFnZUxpc3Q6IEFjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICBzdXBlclxyXG4gICAgICAoXHJcbiAgICAgICAgZGlhbG9nU2VydmljZSxcclxuICAgICAgICBub3RpZmljYXRpb25TZXJ2aWNlXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubG9hZEZpbHRlcnMoKTtcclxuICAgIHRoaXMuY29uZmlndXJlVGFibGUoKTtcclxuXHJcbiAgICAvLyBUYWJlbGEgbsOjbyBjb25maWd1cmFkYSBwYXJhIHBhZ2luYcOnw6NvXHJcbiAgICBpZiAoIXRoaXMudGFibGVDb25maWc/LmxhenkpXHJcbiAgICAgIHRoaXMubG9hZFRhYmxlKG5ldyBUYWJsZVBhZ2luYXRlKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBjb25maWd1cmHDp8OjbyBkYXMgdGFiZWxhcyBkbyBjb21wb25lbnRlIGRlIGxpc3RhXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgY29uZmlndXJlVGFibGUoKTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBlZGnDp8OjbyBkZSByZWdpc3Ryb3NcclxuICAgKiBAcGFyYW0gcmVnaXN0cnkgLSBSZWdpc3RybyBxdWUgZXN0w6Egc2VuZG8gZWRpdGFkb1xyXG4gICAqXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZWRpdChyZWdpc3RyeTogYW55KTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBjYXJyZWdhbWVudG8gZG9zIGZpbHRyb3MgZGEgdGVsYVxyXG4gICAqL1xyXG4gIGFic3RyYWN0IGxvYWRGaWx0ZXJzKCk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgY2FycmVnYXIgYSB0YWJlbGEgZG8gY29tcG9uZW50ZSBkZSBsaXN0YVxyXG4gICAqIEBwYXJhbSB0YWJsZVBhZ2luYXRlIC0gQ2xhc3NlIGRvcyBkYWRvcyBkYSBwYWdpbmHDp8OjbyBkYSB0YWJlbGFcclxuICAgKi9cclxuICBhYnN0cmFjdCBsb2FkVGFibGUodGFibGVQYWdpbmF0ZTogVGFibGVQYWdpbmF0ZSk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIGFvIGNsaWNhciBubyBib3TDo28gZGUgbm92byByZWdpc3Ryb1xyXG4gICAqL1xyXG4gIGFic3RyYWN0IG5ld1JlZ2lzdHJ5KCk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gcXVlIHNldGEgbyByZWdpc3RybyBzZWxlY2lvbmFkbyBuYSB0YWJlbGFcclxuICAgKiBAcGFyYW0gZXZlbnQgLSBSZWdpc3Ryb1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhY3RpdmVJdGVtKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHF1ZSBkaXNwYXJhIG8gY2FycmVnYW1lbnRvIGRhIHRhYmVsYVxyXG4gICAqIEBwYXJhbSBvYnMgLSBPYnNlcnZhYmxlIGRlIGNhcnJlZ2FtZW50byBkb3MgZGFkb3NcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbG9hZERhdGEob2JzOiBPYnNlcnZhYmxlPGFueT4pIHtcclxuICAgIG9ic1xyXG4gICAgICAucGlwZShsb2FkaW5nKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMpKSB7XHJcbiAgICAgICAgICAgICAgLy9UcmF0YW1lbnRvIHBhcmEgcmV0b3JubyBkbyB0aXBvIGxpc3RhciAoW10pXHJcbiAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSByZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IHJlc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vVHJhdGFtZW50byBwYXJhIHJldG9ybm8gZG8gdGlwbyBsaXN0YXJQYWdpbmFkbyAoPGludCxbXT4pXHJcbiAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSByZXMuaXRlbTE7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gcmVzLml0ZW0yXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdEVycm9yKGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBxdWUgZGlzcGFyYSBhIHBhZ2luYcOnw6NvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHBhZ2luYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMubG9hZFRhYmxlKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gcXVlIGRpc3BhcmEgYSBhdHVhbGl6YcOnw6NvIGRhIHDDoWdpbmEgaW50ZWlyYVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5sb2FkVGFibGUobmV3IFRhYmxlUGFnaW5hdGUoKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtY3J1ZC1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtY3J1ZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBS25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7QUFNdkUsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxpQkFBaUI7SUFRbkUsWUFDRSxhQUE0QixFQUM1QixtQkFBd0MsRUFDakMsTUFBYztRQUNyQixLQUFLLENBRUQsYUFBYSxFQUNiLG1CQUFtQixDQUNwQixDQUFDO1FBTEcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQU52QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixvQkFBZSxHQUFpQixFQUFFLENBQUM7SUFXbkMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJO1lBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUE4QkQ7OztPQUdHO0lBQ08sVUFBVSxDQUFDLEtBQVU7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFFBQVEsQ0FBQyxHQUFvQjtRQUNyQyxHQUFHO2FBQ0EsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2YsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3ZCLDZDQUE2Qzt3QkFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO3dCQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtvQkFDdkIsQ0FBQzt5QkFDSSxDQUFDO3dCQUNKLDJEQUEyRDt3QkFDM0QsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO3dCQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUE7b0JBQzdCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxRQUFRLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNPLE9BQU87UUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDOzhHQXhHbUIscUJBQXFCO2tHQUFyQixxQkFBcUIsMkVBRi9CLEVBQUU7OzJGQUVRLHFCQUFxQjtrQkFIMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gXCJwcmltZW5nL2R5bmFtaWNkaWFsb2dcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudENydWQgfSBmcm9tIFwiLi9iYXNlLWNvbXBvbmVudC1jcnVkXCI7XHJcbmltcG9ydCB7IFRhYmxlUGFnaW5hdGUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy90YWJsZS90YWJsZS5wYWdpbmF0ZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUNvbmZpZyB9IGZyb20gXCIuLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBBY3Rpb25JdGVtIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdGFibGUvYWN0aW9uLWl0ZW1cIjtcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgbG9hZGluZyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2t2LWxvYWRlci9rdi1sb2FkZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmVlVGFibGVDb25maWcgfSBmcm9tIFwiLi4vY29tcG9uZW50cy90cmVlLXRhYmxlL3RyZWUtdGFibGUuY29uZmlnXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogJydcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnRDcnVkTGlzdCBleHRlbmRzIEJhc2VDb21wb25lbnRDcnVkIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZGF0YVNvdXJjZTogYW55O1xyXG4gIHNlbGVjdGVkSXRlbTogYW55O1xyXG4gIHRhYmxlQ29uZmlnITogVGFibGVDb25maWcgfCBUcmVlVGFibGVDb25maWc7XHJcbiAgdG90YWxSZWNvcmRzOiBudW1iZXIgPSAwO1xyXG4gIGFjdGlvbnNQYWdlTGlzdDogQWN0aW9uSXRlbVtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIHN1cGVyXHJcbiAgICAgIChcclxuICAgICAgICBkaWFsb2dTZXJ2aWNlLFxyXG4gICAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2VcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5sb2FkRmlsdGVycygpO1xyXG4gICAgdGhpcy5jb25maWd1cmVUYWJsZSgpO1xyXG5cclxuICAgIC8vIFRhYmVsYSBuw6NvIGNvbmZpZ3VyYWRhIHBhcmEgcGFnaW5hw6fDo29cclxuICAgIGlmICghdGhpcy50YWJsZUNvbmZpZz8ubGF6eSlcclxuICAgICAgdGhpcy5sb2FkVGFibGUobmV3IFRhYmxlUGFnaW5hdGUoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBwYXJhIGNvbmZpZ3VyYcOnw6NvIGRhcyB0YWJlbGFzIGRvIGNvbXBvbmVudGUgZGUgbGlzdGFcclxuICAgKi9cclxuICBhYnN0cmFjdCBjb25maWd1cmVUYWJsZSgpOiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBwYXJhIGVkacOnw6NvIGRlIHJlZ2lzdHJvc1xyXG4gICAqIEBwYXJhbSByZWdpc3RyeSAtIFJlZ2lzdHJvIHF1ZSBlc3TDoSBzZW5kbyBlZGl0YWRvXHJcbiAgICpcclxuICAgKi9cclxuICBhYnN0cmFjdCBlZGl0KHJlZ2lzdHJ5OiBhbnkpOiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBwYXJhIGNhcnJlZ2FtZW50byBkb3MgZmlsdHJvcyBkYSB0ZWxhXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgbG9hZEZpbHRlcnMoKTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBjYXJyZWdhciBhIHRhYmVsYSBkbyBjb21wb25lbnRlIGRlIGxpc3RhXHJcbiAgICogQHBhcmFtIHRhYmxlUGFnaW5hdGUgLSBDbGFzc2UgZG9zIGRhZG9zIGRhIHBhZ2luYcOnw6NvIGRhIHRhYmVsYVxyXG4gICAqL1xyXG4gIGFic3RyYWN0IGxvYWRUYWJsZSh0YWJsZVBhZ2luYXRlOiBUYWJsZVBhZ2luYXRlKTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gYW8gY2xpY2FyIG5vIGJvdMOjbyBkZSBub3ZvIHJlZ2lzdHJvXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgbmV3UmVnaXN0cnkoKTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBxdWUgc2V0YSBvIHJlZ2lzdHJvIHNlbGVjaW9uYWRvIG5hIHRhYmVsYVxyXG4gICAqIEBwYXJhbSBldmVudCAtIFJlZ2lzdHJvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFjdGl2ZUl0ZW0oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBldmVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gcXVlIGRpc3BhcmEgbyBjYXJyZWdhbWVudG8gZGEgdGFiZWxhXHJcbiAgICogQHBhcmFtIG9icyAtIE9ic2VydmFibGUgZGUgY2FycmVnYW1lbnRvIGRvcyBkYWRvc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBsb2FkRGF0YShvYnM6IE9ic2VydmFibGU8YW55Pikge1xyXG4gICAgb2JzXHJcbiAgICAgIC5waXBlKGxvYWRpbmcoKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcclxuICAgICAgICAgICAgICAvL1RyYXRhbWVudG8gcGFyYSByZXRvcm5vIGRvIHRpcG8gbGlzdGFyIChbXSlcclxuICAgICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gcmVzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy9UcmF0YW1lbnRvIHBhcmEgcmV0b3JubyBkbyB0aXBvIGxpc3RhclBhZ2luYWRvICg8aW50LFtdPilcclxuICAgICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlcy5pdGVtMTtcclxuICAgICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSByZXMuaXRlbTJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0RXJyb3IoZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHF1ZSBkaXNwYXJhIGEgcGFnaW5hw6fDo29cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcGFnaW5hdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5sb2FkVGFibGUoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBxdWUgZGlzcGFyYSBhIGF0dWFsaXphw6fDo28gZGEgcMOhZ2luYSBpbnRlaXJhXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHJlZnJlc2goKSB7XHJcbiAgICB0aGlzLmxvYWRUYWJsZShuZXcgVGFibGVQYWdpbmF0ZSgpKTtcclxuICB9XHJcbn1cclxuIl19
@@ -76,7 +76,7 @@ export class KvTableComponent {
76
76
  }
77
77
  ngDoCheck() {
78
78
  if (this.dataSource !== this.currDataSource) {
79
- this.tableData = this.dataSource.map(x => ({ data: x, actions: this.config.actions ? this.config.actions.map(y => mapToMenuItem(y, x)) : undefined }));
79
+ this.tableData = this.dataSource?.map(x => ({ data: x, actions: this.config.actions ? this.config.actions.map(y => mapToMenuItem(y, x)) : undefined }));
80
80
  this.currDataSource = [...this.dataSource];
81
81
  }
82
82
  }
@@ -489,4 +489,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
489
489
  type: HostListener,
490
490
  args: ['window:resize', ['$event']]
491
491
  }] } });
492
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUva3YtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUva3YtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBR2YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQU12QixPQUFPLEVBQWMsWUFBWSxFQUFhLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBSzVHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRixNQUFNLFVBQVUsR0FDZCwwcVBBQTBxUCxDQUFDO0FBTzdxUCxNQUFNLE9BQU8sZ0JBQWdCO0lBOEIzQixJQUFxQixTQUFTLENBQUMsS0FBa0I7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUk7WUFDeEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSztZQUN6QyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQ3hDLEdBQUcsS0FBSztTQUNULENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxrQkFBa0Is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QUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR2hCLFNBQVM7c0JBQTdCLEtBQUs7dUJBQUMsUUFBUTtnQkFlTixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVxQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0EsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQTBDeEIsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGF0ZVBpcGUsXHJcbiAgRGVjaW1hbFBpcGVcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIERvQ2hlY2ssXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5cclxuaW1wb3J0IHsgQ3BmQ25walBpcGUgfSBmcm9tICcuLi8uLi9hcGkvcGlwZXMvY3BmY25wai5waXBlJztcclxuaW1wb3J0IHsgS3ZNZW51SXRlbSwgZ2V0T3JFeGVjdXRlLCBWYWx1ZU9yRm4sIG1hcFRvTWVudUl0ZW0gfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS9rdi1tZW51aXRlbSc7XHJcbmltcG9ydCB7IFRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vYXBpL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29uZmlnJztcclxuaW1wb3J0IHsgVGFibGVDb25maWdDb2x1bW4gfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb25maWcuY29sdW1uJztcclxuaW1wb3J0IHsgVGFibGVQYWdpbmF0ZSB9IGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLnBhZ2luYXRlJztcclxuaW1wb3J0IHsgVGVsZWZvbmVQaXBlIH0gZnJvbSAnLi4vLi4vYXBpL3BpcGVzL3RlbGVmb25lLnBpcGUnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2FwaS9kaXJlY3RpdmVzL3RlbXBsYXRlL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcblxyXG5jb25zdCBpbWdEZWZhdWx0ID1cclxuICAnLzlqLzRBQVFTa1pKUmdBQkFRSUFkZ0IyQUFELzRRQmlSWGhwWmdBQVRVMEFLZ0FBQUFnQUJRRVNBQU1BQUFBQkFBRUFBQUVhQUFVQUFBQUJBQUFBU2dFYkFBVUFBQUFCQUFBQVVnRW9BQU1BQUFBQkFBTUFBQUlUQUFNQUFBQUJBQUVBQUFBQUFBQUFBQUIyQUFBQUFRQUFBSFlBQUFBQi85c0FRd0FEQWdJQ0FnSURBZ0lDQXdNREF3UUdCQVFFQkFRSUJnWUZCZ2tJQ2dvSkNBa0pDZ3dQREFvTERnc0pDUTBSRFE0UEVCQVJFQW9NRWhNU0VCTVBFQkFRLzlzQVF3RURBd01FQXdRSUJBUUlFQXNKQ3hBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVEvOEFBRVFnQWtBQ1FBd0VSQUFJUkFRTVJBZi9FQUIwQUFRQUJCQU1CQUFBQUFBQUFBQUFBQUFBR0FRSUhDQU1FQ1FYL3hBQkJFQUFDQVFRQUJRSUNDQVFEQkFzQUFBQUJBZ01BQkFVUkJnY1NJVEVUUVFoUkNSUVZHU0pWbGRFeVlZR1JRbEppRmlNM09GTmpjWE4xZHBLVHNiTzAvOFFBR2dFQkFBSURBUUFBQUFBQUFBQUFBQUFBQUFFRkF3UUdBdi9FQURJUkFBSUFCQU1GQ0FFRkFRRUJBQUFBQUFBQkFnTUVFU0V4VVFVU1FaSHdFeFV5WVhHQm9iSFJJak5Dd2VFMDhTUC8yZ0FNQXdFQUFoRURFUUEvQVBLcWdGQUtBVUJkRERMY1NwQkJFOGtzakJFUkZKWm1KMEFBUEpKcVVuRTdJaHRRcTd5SjV3OXlkejJWaStzNWU0WEZSTXUwVjA5U1U3MFJ0QVIwalJQazlRSTBWOTZzNUd5cGt4WG1QZCtYL24zNUZiTzJwS2w0UWZxZnh6SjlqT1UvQm1PNldrc1piNlJKQklyM1VwT3RhMHBWZWxTTzNnZzcyZDdIYXJPWHMybmd6Vi9YcElxNDlwVk1mRzNvdnpka21zTVRpc1gxL1ptTXRMUDFkZGZvUUxIMWEzcmZTQnZXei9ldHVDWEJMdnVKSyttQnB4ekk1bHQ5dDIxeE8zV1E4Q2dPcGY0bkZaVG8rMDhaYVhucGI2UHJFQ3lkTzliMTFBNjNvZjJySEhMZ21lTkorcVBjRXlPWGZjYlY5TUNNNVBsUHdaa2VwbzdHV3hrZVF5TTlyS1J2ZTlxRmJxVUwzOEFEV2hyUTdWcVRObTA4ZVN0NlAvMUc1QnRLb2c0MzlWK0xNZ1BFUEozUFlxTDZ6aUxoY3JHcTdkRVQwNVJyWk9rSlBVTkFlRDFFblFYM3FzbjdLbVMxdlMzdmZELzM3OGkwazdVbFRIdXhyZGZ4ei93Z2MwTTF2TTl2Y1JQRkxFeFIwZFNyS3dPaUNENElQdFZZMDRYWmxrbW9sZFpGdFFTS0FVQW9CUUNnRkFTamcvbDltZUxaUktGZXlzT2tzYnVTSWxXN2thUWR1czdCQjBkRFIyZDZCM2FXaG1WT09VT3Y0MU5Lc3JZYVZZWXhhZFgvQU4rVm16aDdoSEFjTVJCTVRZSWtwWHBlNGY4QUZLL1liMng5ajBnOUkwdS9ZVjBNaW1sVTZ0QXNkZUp6czJwbXovM0lyL1hTeTExWjltczVnS2hUVWtYSzZGQmNhRkNMalFvTGpRb1Rjb1ZOQmNwVUVueHVJZUVjQnhSQ1V5MWdqU2hlbExoUHd5cDJPdE1PNUE2aWVrN1hmdFdDZlN5cWhmcldPdkV6eWFpYklmOEE4NHJlWERwNVh6MFpoUGpIbC9sK0VaZlVJYThzQ29JdTQ0eUZVN0EwNDc5QjJSclowZGpSM3NEbmFxaW1VcnU4VnIrZERvS1N2bDFLdEZhR0srVjg4OHNyNEs3MCtTTDFwbStLQVVBb0JRRTU1ZGN1NWVKcGx5dVdSNDhURzNZYkt0Y3NEM1ZUN0tEMkxmMEhmWld5b2FGMUQzNC9EOTljZXJWdGRYS25YWnkvRjlmN3AxZk9NTU1WdkVsdmJ4SkhGR29SRVJRRlZRTkFBRHdBUGF1aVNVS3Nzam5XM0U3dDRuSUI4NjlIaHNyUWdyVUFVQW9CUUNnRkFVcVFVSW9UYzQ1b1lwNG5nbmlTU09SU2pvNmhsWlNORUVIc1FSN1ZEU2lWbmtlazNDN3A0bURlWW5MdVhoaVZzcmlrZVRGU04zSGN0Yk1UMlZqN3FUNGIraDc2TGM1WFVMcDMya3Z3L1grZWZUNk9ocmxVTHM1bmkrLzkxNnRCNnJTeUZBS0FsSEwvQUlPbDR1eStwQ3EyRm15U1haSk8yVW50R05FSGJhSTM3QUUrZEE3bEZTdXFtV2VTei9IdWFGZlZxbWw3cXZ2Ulh0NWVlVFdGOG5ucGE1c0ZERkZCRWtFRVNSeHhxRVJFVUJWVURRQUE4QUQycnFVa2xaSE10dDRzNVFLazh0bGFnZ1VBb0NmY3B1UlBOTG5ia254L0x2aGE0eUVjREJibTljaUsxdHQvOUpLMmxCMTM2UnRpUEFOWVoxUkxwMWVZelBJcHB0UTdTMGJQNFQ2TGJqdTR0Rms0aDVxWUt3dVNObUt6c1pycEFmbDFzWS8vQUlxdWkydkFuK21GbGxEc2VOcjlVU0lyekIramI1MjhLMmN1UjRTeWVHNHRpaUJZMjlzN1cxMlFQY1J5ZmdQL0FHQ1RaOWdheVN0cXlZM2FLNk1VM1pNNkJYZ2FacXZsc1RsY0Rrcm5EWnZHM1dQdjdPUXhYRnJkUk5GTEU0OHF5TUFWUDhqVmttb2xkWkZaRkM0WGFMTTZsU1FLQVVCYVJVNWtwbkhOREZjUlBiM0VTU1JTS1VkSFVNcktSb2dnK1FhaHBOTk05d3hPRjd5ek5mZVlIQjB2Q09ZSWo2VFlYalBKYUVIdXFnamFIWkoydXdOKzQwZk93T1dyYVYwc3pEd3ZMOGV4MHRCVnFwbDdyOFVLVi9QenlTeHRrc3VSRjYwemZMb1laYmlWSUlJbmtsa1lJaUlwTE14T2dBQjVKTlNrNG5aRU5xRlhlUnNwd25nSXVHZUg3VERvSXpKRW5WTzZBZjd5VnU3SFlBTERmWUVqZlNGSHRYVzAwaFU4cFMxNyt2WHdjaFVUZTJteFRNY1hxL1RWMnl4U3d2ZDV0bjJBSzJEQXk2b0lGQUtBeXA4TlhJekpmRUJ6UXN1QzRKWkxYRndJYjNMM2lBYmd0RUlEZE8rM1d4S292bnUyeUNBYTE2cW9WTkxjZkhnYk5KVE9wbXFEaHhQWW5nemd2aGZsN3cxWThJY0hZYTN4bUp4OFlqZ3Q0VjBCODJZK1dZbnVXT3lTU1NTYTVXWk1pbXhPS04zWjFrdVhES2hVRUNzajdkZUQyS0ExeStNVDRXOE56ejROdXVJK0g4ZEZEeHpocmRwYkM0alVLMS9HZzJiV1EvNHRqZlFUL0MydTRCYmUvUTFqcDQ5Mkx3djQ4elFycU5WTUc5Q3YxTDU4anlWZEhqZG81RktzcElaU05FSDVHdW1PV0tVQW9CUUZwSHZVa28rTnhkdzlEeFJnTHJFeUJSSzY5ZHU3YUhSS1A0VHZSME45am9iNlNSNzFyMVVoVkVweTM3ZXBzVTAzc0pzTXpUNi92MzQyWnJaTkROYnpQYjNFVHhTeE1VZEhVcXlzRG9nZytDRDdWeVRUaGRtZGNtb2xkWkU4NU84UFJaWFB5NWE1Q3RGaWxWMVE2TzVYMkVPaUQyQVZqdllJWUthc3RseVZNbTc3L2o5OWZKV2JVcUhMbHFXdjVjZkpXKy9xNW0rdWpPZExxSGtyVUFVQW9EMGkraTc0VnM3VGxyeGR4cjZTL1c4bG0xeHBjanVJcmVCSkFCOGdXdVcvc1BsVkR0ZU51WkRCb3I5Y2pvTmp3SlM0bzlYOWYrbTYxVkJjQ2dGQUtBOFkvaTI0VnRPRFBpUDQ4d1ZoRXNWdjlwL1hrUlJvSUxtTkxqcEE5Z1BXMEI4cTZ5aWpjeVJERTlQckE1R3VnVXVvamhXdjNpWWpyWk5VVUFvQ2xTQzJvUFJoRG5GdzlGaXMvRmw3Ym9XUEtxenNnN2FsVFFjNkFBMFF5bmV5U3hZbjJybnRxU0ZMbUtZdjVmYS9QM2M2UFpjNXpKVzQ4NGZyaC9aUHVVK00renVETGFSa2xTUytra3VuV1FhMXM5S2xScitFb2lrZWQ3MzRJcXoyYkwzS2RQVzc2OWtWZTBvOStvZmxaZjM5c21RRmI1b011cUR5S0FVQW9EMGIraTY0eHM3bmdQakRnRnBWRjNqOHNtV1ZDZTdSVHdwRVNQbUExdU4vTHJIenFoMnZMYWpoajhySFFiSG1Kd1JRYU81dTdWUVhBb0JRQ2dQRno0cU9NYlBqejRodU91SmNmS3N0ckpsR3RJSkZPMWtqdDBXM1Z3ZmtSRUNQNUd1c281Ymx5SVlYcDk0bkkxc3hUS2lLSmEvV0JpcXRrMVJRQ2dGQVdrVkpLSWR6WXhuMmp3WGN5S2t6eVdVa2QwaXg5L0I2V0xEUjdCSGMrMnRiM29HcS9hVXR6S2QyNFk5Y3l3MmRNVXVvVitPSFh1a1NYRVdIMlZpckxHZXI2djFPM2pnNitucDZ1aFF1OWJPdDY4YnJjbHdkbkFvTkZZMDVrZmFSdVBWMzVuZEhpc2hqWldvSUZBS0FVQmtia0J6b3pmSVhtWmp1UGNSR2JpQ01HMnlWbjFkSXU3TnlQVWozN0hzcktmWmtVblkyRGdxWkNxWmJnWnNVMVJGVFRGR2oySjViY3pPQytiWENscnhsd0xtb2NqanJwUnZwSUVrRW10bUtWUEtPTjkxUDhpTmdnbmxac3FPVEZ1UnJFNnlWT2dudzc4RHVpVTFqTWdvRFZqNDB2aXp3M0tQaGUrNWU4RjVTTzQ0NHkwQmdQb1B2N0poY2FNemtmd3lsVCtCZklKRG5zQUdzcUNpYzZKVEkxK2xmSlcxOWFwRUxnZ2Y2bjhIbGQ1cm96bVJRQ2dGQUtBbzNpcEpSMHN0WURLNHE4eFptOUlYbHZKQjZuVDFkSFdwWGV0amV0K04xam1RZHBBNE5VMXpNa3VQczQxR2xlenVkdXNoNFJjUEZEeXl0UUJRQ2dGQUtBbFBMem1qekI1VVpyL2FEbDV4VmZZUzlJQ3lHQndZNWxCMkZrallGSkYzN01DS3h6Wk1FNWJzeFhNc3FkTWtQZWx1eHNuaFBwTnVlZVB0RnRzdncxd2psWkVHdnJEMnM4TWpINXNFbENmMlVWWHhiSmt0NE5vc0lkcnprc1VtUlRtRDlJRDhSUEhWbkxqYkxNNDdoYTFtQlZ4Zzdab3BtWC92cEdlUlQvTkNwckxMMmJJbHU3Vi9VeFRkcDFFeFdUdDZHdVZ6YzNGNWNTM2QzUEpQUE01a2tsa1lzN3NUc3N4UGNrbjNOYjZWc0VWN2JlTE9PZ0ZBS0FVQW9DaDhWSVJiUTlDZ1JjUEZEeXl0UUJRQ2dGQVNmZy9sZnpINWd5ZW53UHdMbmM0T3JwWjdHd2tsalEvNm5VZEsvMUlySEhPbHl2SEVrWkpjbVpOOEVMWm1EQS9BSjhUK2JSWlp1QnJYRlJ2M0RYK1V0MU92NXFqc3cvcUJXckZ0S25oL2xmMk51SFpsVEYvRzN1U3VINk0vNGhKVURTWmZndUUvNVh5VTVJLzhBVEFSV1B2V1JvK3ZjeXJaTS9WZGV4MWIvQU9qYitJMnpRdGJ0d3JmRUQrRzN5amduL3dCeU5SVXJhc2g2OGlIc21vV25NeDl4UjhHM3hMOEpJODJSNVQ1VzZpUWI2OFk4Vi9zZk1MQXp0L2NWbmdycWVQS0wrdnN3UjBGUkJuRHl4K2pFT1R4ZVR3dDdKanN4anJxeHU0VHFTQzVoYUtSRC9OV0FJclpUVVN1alVjTGhkbWRhcElGQUtBVUJRK0trSXRvZWpxWW0vd0R0VEZXV1Q5TDB2cmx2SFAwZFhWMDlhaHRiME42MzUxV09YSDJrQ2oxU1o3bVFkbkc0TDNzN2NqdWp4V1F4c3JVRUNnTWo4a09RUE1Qbjd4SWNEd1JqbEZ2YmRMWCtTdWRyYTJTSHdYWUE3WTZPa1VGam85dEFrWUtpcGwwME85R2JGUFRUS21MZGc1bm85eWIrQXZranl3Z2d2dUlzV3ZHbWNRQXZkNWFJTmJLMy9WMnV5Z0hqK1ByYjVFZUtvWiswWjA3Q0Y3cTh2eWRCSTJiSms0eExlZm4rRFk2MnRiYXl0NDdTenQ0b0lJbENSeFJJRlJGSGdBRHNCV2cyM2l5d1N0Z2pscUFLQVVBb0NPY2E4dU9BdVkrT09LNDc0UXhXY3R0RUt0N2JMSTBlL2RISTZrUDgxSU5aSmMyT1U3d094am1Tb0pxdEdybWsvUDc2TnUzanRMbmlia0hmVGVyR0drZmg2L202dXNmSzNuYnZ2NUxJVHY4QXpqc0RiMDIxY2QyZnovSlQxT3lWYmVrY3Z3YUZaSEhaREQ1QzV4V1dzcDdPOXM1V2d1TGVlTXBKRklwMHlNcDdnZ2dnZzFkSnFKWFJTTk9GMmVaMTZFQ2dLSHhVa282V1d2eGlzVmVaUXcrcUxPM2tuOVBxNmV2b1V0cmVqcmV2T3F4ekkremdjZWliNUdTWEE1a2FnVHRkMjVrYTVUNU1aSGd1MWpaNW5rc1pKTFYya08vQjZsQ25aL0NFZEFQR3RhOEFWcDdObU9aVHBQaGgxek56YU12czZoMjQ0OWU2Wk1RYXNDdlpkVUVIWnhtT3U4dmtyVEUyRWZxWE43UEhid3B2WFZJN0JWSDl5S2h0UXE3SlNjVHNqMjI1TDhwZUhPU25MdkZjQmNPVzhZV3ppRFhseUYwOTVkRUQxWjNQa2xqNDM0VUtvN0FWeU5ST2lxSmpqaU94cDVFTlBMVUVKT2F3bVlVQW9CUUNnRkFLQVVCb1Y5SmZ5Vnc4V014WFBIQzJrY0YrMTBtSnpQcHJyNndySXhnbWIvVXZRVUo4a01nOExWMXNxb2QzSmZxaWsydlRxeW5MUEpubjVWMlVRb0MwbXBKUkR1YkdUK3p1QzdxTlhtU1M5a2p0VWFNNjFzOVRCanNmaEtJNDk5NzFyUk5WKzBwamwwN3R4dzY1Ry9zNldwbFFyOE1ldmRvZ0hKM2lDTEZaK1hFM0pWWXNxcW9yblExTW15ZzJTT3hETVBCSllxS3JObHoxTG03anlpKytCWjdWa09aTFV5SCtQRHlmdHc1V3Y1R2I2Nkk1NHVxVHlTemxML3hWNE0vOHdZNy9BUFRIV0tkKzFGNk15eVAzWWZWSHViWEhIWmlnRkFLQVVBb0JRQ2dGQWF5L1NKLzhzK1MvOFZzUC9zcXcyWi8wTDBaWGJVLzVuNm84b2E2VTVnb2UxU0Myb1BSaERuRnhERGxjOUZpYmJvYVBGS3lNNDdreXZvdU5na2FIU284QWh1b0gycm50cXoxTW1LWEQvSDdmNCs3blI3TGt1WEtjY1djWDF3L3NnY00wdHZLazhFcnh5eHNIUjBZaGxZSFlJSThFR3F4Tnd1NkxKcFJLenlObE9Fcy9IeE53L1o1ZFRHSkpVNlowVWo4RXE5bUdnU1Y3OXdEMzZTcDk2NjJtbnFvbEtOZS9yMThISVZFdnNaMFVyVDF5elhESDFXRjdyTk0rd0Q3VnNHQm5md2VZdmVIczFqOC9qV1JidkdYVVY1YmwxNmxFa2JoMUpIdU5nZHE4eFFxSk9GOFJERTRXb2x3Tmp2dkZQaVgvQURuQmZwTWY3MW9kMlUrajVsaDNyVWFya1B2RlBpWC9BRG5CZnBNZjcwN3NwOUh6SGV0UnF1USs4VStKZjg1d1g2VEgrOU83S2ZSOHgzclVhcmtQdkZQaVgvT2NGK2t4L3ZUdXluMGZNZDYxR3E1RDd4VDRsL3puQmZwTWY3MDdzcDlIekhldFJxdVErOFUrSmY4QU9jRitreC92VHV5bjBmTWQ2MUdxNUQ3eFQ0bC96bkJmcE1mNzA3c3A5SHpIZXRScXVRKzhVK0pmODV3WDZUSCs5TzdLZlI4eDNyVWFya1B2RlBpWC9PY0Yra3gvdlR1eW4wZk1kNjFHcTVFUDVxZkdCenA1eWNJVGNEOGI1SEZ6WXVlYUs0ZGJmSHBFL1hHZHIrSWQvTlpaTkRKa1JiOEdaaW5WMDZvZzNJOGpDbGJacGxwUHRVa3BIeGVMdUlZdUY4QmRaWnlobFJlaTNSdjhjcDdLTmJHeDduUjMwZzFyMU05VThwekg3ZXZYd2JGUEs3ZWJETDErdjY5OEwyTmJacHBiaVY1NTVYa2xrWXU3dXhMTXhPeVNUNUpOY2syNG5kNW5YSktGV1JiVUVrbzVmOFl5OEk1Y0dUcE5oZU1rZDJDRHRWQk9wQm9FN1haT3ZjRWp6b2pjb3FwMHN6SHd2UDhBUHNhRmZTS3BsN3l2dlEzdDUrV09HTnMrR3RybXdVTTBWeEVseGJ5cEpGSW9kSFJneXNwR3dRUjVCcnFVN3E2T1phYXdaeUExT1o1YUxxZ2dVQW9CUUNnRkFLQVVBb0JRRnBOVGtTa2NjMDBWdkU5eGNTcEhGR3BkM2RncXFvR3lTVDRBcUcwazJ6M0RDNG51ck0xOTVnY1l5OFhaZ21QcEZoWnM4ZG9BTzdLU055SFlCMjNTRHIyR2g1MlR5MWJWT3FtWFdTeS9KMHRCU0ttbDd6OFVTVi9MeXphd3ZtcytSRjYwemZGQUtBbkhMdm1KTHd4S3VLeXJ2SmlwRzdIdXpXekU5MlVlNmsrVi9xTyt3MWxRMXpwMzJjencvWCtlWFRyYTZoVlF0K1g0dnZyaDFiT1VNMFZ4RWs4RXFTUlNLSFIwWUZXVWpZSUk4Z2l1alRUVjB6bkdtblpvNUFmblVubG9yVUVGYUFVQW9CUUNnRkFVM3FwQlFuNVVKU09PYWFLM2llNHVKVWppalV1N3V3Q3FvR3lTVDRBRlEybGl6MGxkMlJnM21KekVsNG1sYkZZcDNqeFViZHozRFhMQTltWWV5ajJYK3A3NkM4NVhWenFIdVFlSDc2Njh1am9hRlU2N1NQeGZYWFhuQjZyU3lGQUtBVUFvQ1U4SDh3ODF3bklzSmQ3N0hoQ2dzNVpTRlR1VzNHZS9RZXBpVG9hT3pzYjBSdVV0Yk1wbmJPSFQ4YUZmVmJPbDFGNG9MUXhOM2J0bmtzY3I0S3lmQ3k0WUdiY0J4WmdPSm9nMkl5TWNzZ1FPOERmaGxqN0tUdFQzSUJZQXNOcnZ3VFhSU2FtVlVLOHQrM0hyNE9mbTA4NlQrNURiRi9mbGZQTlh4dG1rOEQ2OVp6Q1ZER3BJc1Y2aFFXR3g4NkVXR3g4NkN3NmhRbXhRc2FDeFNvSlBrWi9pM2gvaG1NdGw4akhGSVVMcEF2NHBaT3pFYVVkeHNxUUdPbDM1SXJCUHFaVk9yekg3Y2V2Z3pTcWViUDhBMjRiNHBjTU9kc3MzeHRrbThEQ1BHUE1ETDhYUyttUzFuWUJRQmFSeWtxeDJEdHoyNnpzRFd4b2FHaHZaUE8xVmJNcW5aNExUODZuUlV0Qkxwa25GYUtMVzNybG5iQjJldndSZXRNM2hRQ2dGQUtBVUFvQzZHYVczbFNlQ1Y0NVkyRG82TVF5c0RzRUVlQ0RVcHVGM1JEU2lWbmtUemg3bkZuOFZFTGJMUUpsWWxYU003K25LT3dBMjRCNmgyUGtGaVRzbXJLVHRTYkxWbzF2TDU2K2ZNcTUreXBjeDNsdmQxNHJqeStySzFpZjR6bXh3WGtlbFpMNld5a2VUMDFTNmhLNzhhWXN2VXFqdjVMRFdqdlE3MVp5OXBVOHgydmIxNlpXek5uVkV0WHRmMDZUK0NTMkdXeFdWRWh4ZVN0YndSYTlUMEpsazZONzF2cEoxdlIvc2EzSUprRXp3TlAwZHpUamx4eTdLTk5YMU8zV1E4Q2dPcGY1ZkU0cm8rMDhuYVdmcTdLZXZNc2ZWcnpycUkzNUg5Nnh4eklKZmphWHF6SkJMam1lQk4raUkxaythL0JlTjZsUy9sdlpFbE1iSmF4RnZHOXNHYnBSbDdlUXgzc2EyTzlhY3phVlBMZHIzOU9sOEcxTDJkVVRGZTF2WHB0Y2lBY1FjNHMvbFlqYlltQk1WRXk2ZGtmMUpUc0VIVGtBS080OERxQkd3MVZrL2FrMlpoQitsZlBNdEpHeXBjdDcweDcybkJjT2ZIeXh5NGtEbW1tdUpudUxpVjVaWldMdTdzV1ptSjJTU2U1SlB2VmEyNG5kbG1rb1ZaWkZ0UVNLQVVBb0QvOWs9JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4va3YtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xyXG4gIGNvbmZpZyE6IFRhYmxlQ29uZmlnO1xyXG4gIGdsb2JhbEZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgc2VsZWN0ZWRTaXplOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgdGFtYW5ob1RlbGEhOiBudW1iZXI7XHJcblxyXG4gIC8vbWVudUNvbHVtbnM6IEt2TWVudUl0ZW1bXSA9IFtdO1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjb2x1bW5zOiBUYWJsZUNvbmZpZ0NvbHVtbltdID0gW107XHJcbiAgZGVsZXRlZENvbHVuczogVGFibGVDb25maWdDb2x1bW5bXSA9IFtdO1xyXG5cclxuICBtZW51RmlsdHJvOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2hlY2tib3hDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNob3dGaWx0cm9zQXZhbmNhZG9zOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB0YWJsZURhdGE6IHsgZGF0YTogYW55LCBhY3Rpb25zPzogTWVudUl0ZW1bXSB9W10gPSBbXTtcclxuICBjdXJyRGF0YVNvdXJjZTogYW55W10gPSBbXTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PGFueT47XHJcbiAgQElucHV0KCd0ZW1wbGF0ZXMnKSBfdGVtcGxhdGVzITogYW55O1xyXG5cclxuICBAVmlld0NoaWxkKCd0YWJsZScsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJsZSE6IFRhYmxlO1xyXG4gIGRlbGV0ZWRDb2x1bW5zSW5kZXghOiBhbnlbXTtcclxuXHJcbiAgQElucHV0KCdjb25maWcnKSBzZXQgc2V0Q29uZmlnKHZhbHVlOiBUYWJsZUNvbmZpZykge1xyXG4gICAgdGhpcy5jb25maWcgPSB7XHJcbiAgICAgIGVuYWJsZUNhdGlvbjogdmFsdWUuZW5hYmxlQ2F0aW9uIHx8IHRydWUsXHJcbiAgICAgIGVuYWJsZVNlbGVjdDogdmFsdWUuZW5hYmxlU2VsZWN0IHx8IGZhbHNlLFxyXG4gICAgICBlbmFibGVGaWx0ZXI6IHZhbHVlLmVuYWJsZUZpbHRlciB8fCB0cnVlLFxyXG4gICAgICAuLi52YWx1ZSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLmVuYWJsZUZpbHRlcikge1xyXG4gICAgICB0aGlzLmNvbmZpZy5jb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2xvYmFsRmlsdGVyRmllbGRzLnB1c2goY29sLmZpZWxkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBkZWZhdWx0U29ydEZpZWxkOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBkYXRhU291cmNlOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgdG90YWxSZWNvcmRzITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHBhZ2luYXRvcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcm93c1BlclBhZ2VPcHRpb25zITogbnVtYmVyW107XHJcbiAgQElucHV0KCkgcm93czogbnVtYmVyID0gNTtcclxuICBASW5wdXQoKSBwYWdlTGlua3NPcHRpb25zOiBudW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIHNob3dGaXJzdExhc3RJY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdGFibGVTaXplITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGFwcGx5U3R5bGU6IEZ1bmN0aW9uID0gKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbikgPT4gJyc7XHJcbiAgQElucHV0KCkgZmlsdGVyQ29sdW1uc0J0bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZpbHRyb3NBdmFuY2Fkb3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzY3JvbGxIZWlnaHQ6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGlzVGFibGVTY3JvbGxhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdGFibGVDYXB0YWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHJvd1RyYWNrQnk6IEZ1bmN0aW9uID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcclxuXHJcbiAgQElucHV0KCkgcmVzcG9uc2l2ZUxheW91dDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW1Mb3RlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25QYWdpbmF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG91YmxlQ2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpbHRlckZpZWxkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdHJvc0F2YW5jYWRvc0VtaXQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Td2l0Y2hUYWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21lbnVGaWx0cm9EaXYnKSBtZW51RmlsdHJvRGl2ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdib3Rhb0ZpbHRybycpIGJvdGFvRmlsdHJvITogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcGZDbnBqUGlwZTogQ3BmQ25walBpcGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbGVmb25lUGlwZTogVGVsZWZvbmVQaXBlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmlzUm93U2VsZWN0YWJsZSA9IHRoaXMuaXNSb3dTZWxlY3RhYmxlLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kYXRhU291cmNlICE9PSB0aGlzLmN1cnJEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5kYXRhU291cmNlLm1hcCh4ID0+ICh7IGRhdGE6IHgsIGFjdGlvbnM6IHRoaXMuY29uZmlnLmFjdGlvbnMgPyB0aGlzLmNvbmZpZy5hY3Rpb25zLm1hcCh5ID0+IG1hcFRvTWVudUl0ZW0oeSwgeCkpIDogdW5kZWZpbmVkIH0pKTtcclxuICAgICAgdGhpcy5jdXJyRGF0YVNvdXJjZSA9IFsuLi50aGlzLmRhdGFTb3VyY2VdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmFkanVzdFRhYmxlU2l6ZSgpO1xyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgLy8gdGhpcy5jcmlhck1lbnVDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNvbmZpZy5jb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuY29sdW1ucy5wdXNoKGNvbCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2hlY2tIaWRlQ29sdW1ucygpO1xyXG4gICAgaWYgKHRoaXMuZGVmYXVsdFNvcnRGaWVsZCAmJiB0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBhW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09ICdzdHJpbmcnICYmIHR5cGVvZiBiW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICByZXR1cm4gYVt0aGlzLmRlZmF1bHRTb3J0RmllbGRdLmxvY2FsZUNvbXBhcmUoYlt0aGlzLmRlZmF1bHRTb3J0RmllbGRdKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09ICdib29sZWFuJyAmJiB0eXBlb2YgYlt0aGlzLmRlZmF1bHRTb3J0RmllbGRdID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgICAgIHJldHVybiBhW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09IGJbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSA/IDAgOiAoYVt0aGlzLmRlZmF1bHRTb3J0RmllbGRdID8gMSA6IC0xKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09ICdudW1iZXInICYmIHR5cGVvZiBiW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICByZXR1cm4gYVt0aGlzLmRlZmF1bHRTb3J0RmllbGRdIC0gYlt0aGlzLmRlZmF1bHRTb3J0RmllbGRdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gMDsgLy8gT3Ugb3V0cmEgbMOzZ2ljYSBkZXBlbmRlbmRvIGRvIGNhc29cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICB0aGlzLmFkanVzdFRhYmxlU2l6ZSgpO1xyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFjdGl2ZUl0ZW0ocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLm9uQWN0aXZlSXRlbS5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFjdGl2ZUl0ZW1Mb3RlKHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5vbkFjdGl2ZUl0ZW1Mb3RlLmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRPckV4ZWN1dGU8VD4oYWN0aW9uOiBWYWx1ZU9yRm48VD4sIGRhdGE6IGFueSk6IFQge1xyXG4gICAgcmV0dXJuIGdldE9yRXhlY3V0ZShhY3Rpb24sIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgaXNCb29sZWFuRmllbGQocm93RGF0YTogYW55LCBjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHJvd0RhdGFbY29sLmZpZWxkXSA9PSAnYm9vbGVhbic7XHJcbiAgfVxyXG5cclxuICBpc0NoaXBGaWVsZChjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gY29sLmZpZWxkVHlwZSA9PSAnY2hpcCc7XHJcbiAgfVxyXG5cclxuICBpc0ltYWdlRmllbGQoY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJldG9ybm8gPSBjb2wuZmllbGRUeXBlICYmIGNvbC5maWVsZFR5cGUgPT09ICdpbWFnZScgPyB0cnVlIDogZmFsc2U7XHJcbiAgICByZXR1cm4gcmV0b3JubztcclxuICB9XHJcblxyXG4gIGlzU3dpdGNoRmllbGQoY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJldG9ybm8gPSBjb2wuZmllbGRUeXBlICYmIGNvbC5maWVsZFR5cGUgPT09ICdzd2l0Y2gnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgcmV0dXJuIHJldG9ybm87XHJcbiAgfVxyXG5cclxuICBpc1Jvd1NlbGVjdGFibGUoZXZlbnQ6IGFueSkge1xyXG4gICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWRDaGVja2JveChldmVudC5kYXRhKTtcclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZWRDaGVja2JveChyb3dEYXRhOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5kaXNhYmxlQ29udHJvbENoZWNrYm94RnVuY3Rpb25cclxuICAgICAgPyB0aGlzLmNvbmZpZy5kaXNhYmxlQ29udHJvbENoZWNrYm94RnVuY3Rpb24ocm93RGF0YSlcclxuICAgICAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGxvYWRJbWFnZShyb3dEYXRhOiBhbnksIGNvbDogVGFibGVDb25maWdDb2x1bW4pOiBzdHJpbmcge1xyXG4gICAgLypcclxuICAgICAgTm9zc2EgY29sdW5hIGRlIGltYWdlbSB0cmFiYWxoYSBjb20gc3RyaW5ncyBkbyB0aXBvOiBiYXNlNjQgb3UgdXJsXHJcbiAgICAqL1xyXG4gICAgbGV0IHJldG9ybm8gPSBgZGF0YTppbWFnZS9qcGc7YmFzZTY0LCAkeyBpbWdEZWZhdWx0IH1gO1xyXG4gICAgaWYgKHJvd0RhdGEgJiYgY29sICYmIHJvd0RhdGFbY29sLmZpZWxkXSAmJiByb3dEYXRhW2NvbC5maWVsZF0gIT09ICcnKSB7XHJcbiAgICAgIGlmIChyb3dEYXRhW2NvbC5maWVsZF0uaW5jbHVkZXMoJ2h0dHAnKSkgcmV0b3JubyA9IHJvd0RhdGFbY29sLmZpZWxkXTtcclxuICAgICAgZWxzZSByZXRvcm5vID0gYGRhdGE6aW1hZ2UvanBnO2Jhc2U2NCwgJHsgcm93RGF0YVtjb2wuZmllbGRdIH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXRvcm5vO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uR2xvYmFsRmlsdGVyKHRhYmxlOiBUYWJsZSwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmZpbHRlckZpZWxkLmVtaXQoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSk7XHJcbiAgICB0YWJsZS5maWx0ZXJHbG9iYWwoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSwgJ2NvbnRhaW5zJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFnaW5hdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGxldCBwYWdpbmFJbmljaWFsID0gKGV2ZW50Py5maXJzdCA+IDAgPyBldmVudC5maXJzdCAvIGV2ZW50LnJvd3MgOiBldmVudC5maXJzdCkgKyAxO1xyXG4gICAgICBsZXQgdGVybW9QZXNxdWlzYSA9ICcnO1xyXG4gICAgICBsZXQgb3JkZW5hY2FvID0gJyc7XHJcblxyXG4gICAgICBpZiAoZXZlbnQuZ2xvYmFsRmlsdGVyKSB0ZXJtb1Blc3F1aXNhID0gZXZlbnQuZ2xvYmFsRmlsdGVyO1xyXG5cclxuICAgICAgaWYgKGV2ZW50LnNvcnRGaWVsZClcclxuICAgICAgICBvcmRlbmFjYW8gPSBgJHsgZXZlbnQuc29ydEZpZWxkIH0gJHsgZXZlbnQuc29ydE9yZGVyID09PSAxID8gJ0FTQycgOiAnREVTQycgfWA7XHJcblxyXG4gICAgICBjb25zdCBvYmpldG86IFRhYmxlUGFnaW5hdGUgPSB7XHJcbiAgICAgICAgcGFnaW5hSW5pY2lhbDogcGFnaW5hSW5pY2lhbCxcclxuICAgICAgICB0YW1hbmhvUGFnaW5hOiBldmVudC5yb3dzLFxyXG4gICAgICAgIHRlcm1vUGVzcXVpc2E6IHRlcm1vUGVzcXVpc2EsXHJcbiAgICAgICAgb3JkZW5hY2FvOiBvcmRlbmFjYW8sXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLm9uUGFnaW5hdGUuZW1pdChvYmpldG8pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0aW9uQ2hhbmdlKHZhbHVlID0gW10pIHtcclxuICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm5Sb3dDbGFzcyhyb3dEYXRhOiBhbnksIGNvbDogVGFibGVDb25maWdDb2x1bW4pIHtcclxuICAgIGxldCB2YWx1ZSA9IHJvd0RhdGFbY29sLmZpZWxkXTtcclxuICAgIGxldCByb3dDbGFzczogc3RyaW5nO1xyXG5cclxuICAgIHRoaXMudGFibGVTaXplID4gODAwID8gKHJvd0NsYXNzID0gJ3RleHQtYmFzZScpIDogKHJvd0NsYXNzID0gJ3RleHQtc20nKTtcclxuXHJcbiAgICBpZiAoY29sLmV4cGlyZWREYXRlID09IHRydWUpIHtcclxuICAgICAgbmV3IERhdGUodmFsdWUpIDwgbmV3IERhdGUoKVxyXG4gICAgICAgID8gKHJvd0NsYXNzID0gcm93Q2xhc3MgKyAnIHRleHQtcmVkLTQwMCBmb250LXNlbWlib2xkJylcclxuICAgICAgICA6ICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvd0NsYXNzO1xyXG4gIH1cclxuXHJcbiAgZXhwaXJlZEZpbGUocm93RGF0YTogYW55LCBjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsdWUgPSByb3dEYXRhWydkYXRhdmVuY2ltZW50byddO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKSA8IG5ldyBEYXRlKCkgJiYgY29sLmZpZWxkID09ICdhcmVhJztcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybVZhbHVlKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbikge1xyXG4gICAgbGV0IHZhbHVlID0gcm93RGF0YVtjb2wuZmllbGRdO1xyXG5cclxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIGlmICghY29sLnBpcGUpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN3aXRjaCAoY29sLnBpcGUpIHtcclxuICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ2RkL01NL3l5eXknKTtcclxuICAgICAgICBjYXNlICdkYXRlTW9udGhZZWFyJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ01NL3l5eXknKTtcclxuICAgICAgICBjYXNlICdkZWNpbWFsJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJzEuMi0yJywgJ3B0LUJSJyk7XHJcbiAgICAgICAgY2FzZSAnY3BmY25waic6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcGZDbnBqUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xyXG4gICAgICAgIGNhc2UgJ3RlbGVmb25lJzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLnRlbGVmb25lUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xyXG4gICAgICAgIGNhc2UgJ21vbmV5JzpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdGFyVmFsb3IodmFsdWUpO1xyXG4gICAgICAgIGNhc2UgJ3BlcmNlbnRhZ2UnOlxyXG4gICAgICAgICAgcmV0dXJuIGAkeyB2YWx1ZSB9ICVgO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvcm1hdGFyVmFsb3IodmFsb3I6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoJ3B0LUJSJywge1xyXG4gICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcclxuICAgICAgY3VycmVuY3k6ICdCUkwnLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsb3IpO1xyXG4gIH1cclxuXHJcbiAgYWRqdXN0VGFibGVTaXplKCkge1xyXG4gICAgaWYgKHRoaXMudGFibGVTaXplIDwgODAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTaXplID0gJ3AtZGF0YXRhYmxlLXNtJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRTaXplID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3VibGVDbGljayhlOiBhbnksIHJvd0RhdGE6IGFueSkge1xyXG4gICAgbGV0IGV2ZW50RG91YmxlQ2xpY2sgPSB7IGV2ZW50OiBlLCByb3dEYXRhOiByb3dEYXRhIH07XHJcblxyXG4gICAgbGV0IGFycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZS50YXJnZXQuY2xhc3NMaXN0LmZvckVhY2goKHg6IGFueSkgPT4gYXJyYXkucHVzaCh4KSk7XHJcblxyXG4gICAgdGhpcy5kb3VibGVDbGlja0V2ZW50LmVtaXQoZXZlbnREb3VibGVDbGljayk7XHJcbiAgfVxyXG5cclxuICBjZW50cmFsaXphckNvbHVuYXMoY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbC5jZW50cmFsaXplKSB7XHJcbiAgICAgIHJldHVybiAndGV4dC1hbGlnbjogY2VudGVyJztcclxuICAgIH0gZWxzZSByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBhbGlnbkNvbHVuYXMoY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbC5hbGlnbikge1xyXG4gICAgICByZXR1cm4gYHRleHQtYWxpZ246ICR7IGNvbC5hbGlnbiB9YDtcclxuICAgIH0gZWxzZSByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBhbGlnbkNvbHVuYXNIZWFkZXIoY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbC5hbGlnbikge1xyXG4gICAgICBpZiAoY29sLmFsaWduID09ICdyaWdodCcpIHJldHVybiAnanVzdGlmeS1jb250ZW50OiBlbmQnO1xyXG4gICAgICBlbHNlIHJldHVybiAnJztcclxuICAgIH0gZWxzZSByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICByZXRvcm5hclJvdyhyb3dEYXRhOiBhbnksIGNvbDogYW55LCBmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IF9yb3dhY3Rpb24gPSB0aGlzLmNvbmZpZy5yb3dzID8gdGhpcy5jb25maWcucm93c1tjb2wuZmllbGRdIDogbnVsbDtcclxuICAgIGNvbnN0IF9maWVsZDogc3RyaW5nID1cclxuICAgICAgX3Jvd2FjdGlvbiAmJiBfcm93YWN0aW9uW2ZpZWxkXVxyXG4gICAgICAgID8gX3Jvd2FjdGlvbltmaWVsZF0uY29uc3RydWN0b3IgPT09IEZ1bmN0aW9uXHJcbiAgICAgICAgICA/IF9yb3dhY3Rpb25bZmllbGRdLmFwcGx5KHRoaXMsIFtyb3dEYXRhXSlcclxuICAgICAgICAgIDogX3Jvd2FjdGlvbltmaWVsZF1cclxuICAgICAgICA6IG51bGw7XHJcbiAgICByZXR1cm4gX2ZpZWxkO1xyXG4gIH1cclxuXHJcbiAgZXhpYmlyQ2FtcG8oZmllbGQ6IGFueSwgcm93RGF0YTogYW55KSB7XHJcbiAgICBsZXQgdmlzaWJsZSA9IGZpZWxkLnZpc2libGUgPyBmaWVsZC52aXNpYmxlKHJvd0RhdGEpIDogdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gdmlzaWJsZTtcclxuICB9XHJcblxyXG4gIHJldHVybkNsYXNzQ2hpcChyb3dEYXRhOiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgY2hpcC1zdHlsZSB3LWF1dG8gYm9yZGVyLXJvdW5kLTJ4bCBwLTIgdGV4dC0keyB0aGlzLnJldG9ybmFyUm93KFxyXG4gICAgICByb3dEYXRhLFxyXG4gICAgICBjb2wsXHJcbiAgICAgICdzdHlsZWNoaXAnXHJcbiAgICApIH0gYm9yZGVyLSR7IHRoaXMucmV0b3JuYXJSb3cocm93RGF0YSwgY29sLCAnc3R5bGVjaGlwJykgfWA7XHJcbiAgfVxyXG5cclxuICByZXR1cm5DbGFzc0ljb24ocm93RGF0YTogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXRvcm5hclJvdyhyb3dEYXRhLCBjb2wsICdpY29ucm93Jyk7XHJcbiAgfVxyXG5cclxuICByZXR1cm5Ub29sdGlwSWNvbihyb3dEYXRhOiBhbnksIGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJldG9ybmFyUm93KHJvd0RhdGEsIGNvbCwgJ3Rvb2x0aXBpY29ucm93Jyk7XHJcbiAgfVxyXG5cclxuICByZXR1cm5Ub29sdGlwUm93KHJvd0RhdGE6IGFueSwgY29sOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMucmV0b3JuYXJSb3cocm93RGF0YSwgY29sLCAndG9vbHRpcHJvdycpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQ29sdW1uKGZpZWxkOiBzdHJpbmcpIHtcclxuICAgIGxldCBpbmRleDogbnVtYmVyO1xyXG5cclxuICAgIGxldCBjb2x1bW46IFRhYmxlQ29uZmlnQ29sdW1uIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWcuY29sdW1ucy5maW5kKFxyXG4gICAgICB4ID0+IHguZmllbGQgPT0gZmllbGRcclxuICAgICk7XHJcbiAgICBpZiAoY29sdW1uKSB7XHJcbiAgICAgIGluZGV4ID0gdGhpcy5jb25maWcuY29sdW1ucy5pbmRleE9mKGNvbHVtbik7XHJcbiAgICAgIHRoaXMuY29uZmlnLmNvbHVtbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgdGhpcy5kZWxldGVkQ29sdW5zLnB1c2goY29sdW1uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZENvbHVtbihmaWVsZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaW5kZXg6IG51bWJlcjtcclxuXHJcbiAgICBsZXQgY29sdW1uOiBUYWJsZUNvbmZpZ0NvbHVtbiB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlnLmNvbHVtbnMuZmluZChcclxuICAgICAgeCA9PiB4LmZpZWxkID09IGZpZWxkXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghY29sdW1uKSB7XHJcbiAgICAgIGxldCBkZWxldGVkQ29sdW1uOiBUYWJsZUNvbmZpZ0NvbHVtbiB8IHVuZGVmaW5lZCA9XHJcbiAgICAgICAgdGhpcy5kZWxldGVkQ29sdW5zLmZpbmQoeCA9PiB4LmZpZWxkID09IGZpZWxkKTtcclxuXHJcbiAgICAgIGlmIChkZWxldGVkQ29sdW1uICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGluZGV4ID0gdGhpcy5kZWxldGVkQ29sdW5zLmluZGV4T2YoZGVsZXRlZENvbHVtbik7XHJcbiAgICAgICAgdGhpcy5kZWxldGVkQ29sdW5zLnNsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLmNvbmZpZy5jb2x1bW5zLnB1c2goZGVsZXRlZENvbHVtbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRpbmFtaWNDb2x1bW5TZXQoZTogYW55LCBjb2w6IGFueSkge1xyXG4gICAgY29sLmNoZWNrZWQgPSBlLmNoZWNrZWQ7XHJcbiAgICBpZiAoZS5jaGVja2VkKSB0aGlzLmFkZENvbHVtbihjb2wuZmllbGQpO1xyXG4gICAgZWxzZSB0aGlzLmRlbGV0ZUNvbHVtbihjb2wuZmllbGQpO1xyXG5cclxuICAgIGlmIChjb2wucG9zaXRpb24pIHRoaXMuY29uZmlnLmNvbHVtbnMuc29ydCh0aGlzLnNvcnRCeVBvc2l0aW9uKCkpO1xyXG4gIH1cclxuXHJcbiAgLy8gYWJyaXJNZW51RmlsdHJvKGU6IGFueSkge1xyXG4gIC8vICAgdGhpcy5tZW51RmlsdHJvID0gIXRoaXMubWVudUZpbHRybztcclxuICAvLyAgIHRoaXMuY2hlY2tib3hDbGlja2VkID0gZmFsc2U7XHJcblxyXG4gIC8vICAgaWYgKHRoaXMudGFtYW5ob1RlbGEgPCA3MDApXHJcbiAgLy8gICAgIHRoaXMuc3R5bGVTZXR0ZXIoJ2xlZnQnLCAodGhpcy5ib3Rhb0ZpbHRyby5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgLSAyODgpICsgJ3B4JylcclxuICAvLyAgIGVsc2VcclxuICAvLyAgICAgdGhpcy5zdHlsZVNldHRlcignbGVmdCcsICh0aGlzLmJvdGFvRmlsdHJvLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCArIDQwKSArICdweCcpXHJcblxyXG4gIC8vICAgdGhpcy5zdHlsZVNldHRlcigndG9wJywgdGhpcy5ib3Rhb0ZpbHRyby5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCArICdweCcpXHJcbiAgLy8gICB0aGlzLnN0eWxlU2V0dGVyKCd2aXNpYmlsaXR5JywgdGhpcy5tZW51RmlsdHJvID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpXHJcbiAgLy8gfVxyXG5cclxuICAvLyBmZWNoYXJNZW51RmlsdHJvKCkge1xyXG4gIC8vICAgdGhpcy5tZW51RmlsdHJvID0gZmFsc2U7XHJcbiAgLy8gICB0aGlzLmNoZWNrYm94Q2xpY2tlZCA9IGZhbHNlO1xyXG5cclxuICAvLyAgIHRoaXMuc3R5bGVTZXR0ZXIoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJylcclxuICAvLyB9XHJcblxyXG4gIC8vIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcclxuICAvLyBvbkVzY2FwZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gIC8vICAgaWYgKHRoaXMuZmlsdGVyQ29sdW1uc0J0biA9PSB0cnVlICYmIHRoaXMubWVudUZpbHRybyA9PSB0cnVlKSB7XHJcbiAgLy8gICAgIHRoaXMuZmVjaGFyTWVudUZpbHRybygpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIC8vIG9uQ2xpY2tFdmVudChldmVudDogYW55KSB7XHJcbiAgLy8gICBpZiAodGhpcy5maWx0ZXJDb2x1bW5zQnRuID09IHRydWUgJiYgdGhpcy5tZW51RmlsdHJvID09IHRydWUpIHtcclxuICAvLyAgICAgY29uc3QgY2xpY2tlZEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgLy8gICAgIGNvbnN0IG1lbnVGaWx0cm9EaXYgPVxyXG4gIC8vICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtZW51RmlsdHJvRGl2Jyk7XHJcbiAgLy8gICAgIGNvbnN0IGJvdGFvRmlsdHJvID1cclxuICAvLyAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjYm90YW9GaWx0cm8nKTtcclxuICAvLyAgICAgY29uc3QgaXNDaGVja2JveENsaWNrZWQgPVxyXG4gIC8vICAgICAgIGNsaWNrZWRFbGVtZW50LmNsYXNzTGlzdC50b1N0cmluZygpLmluY2x1ZGVzKCdwLWNoZWNrYm94JykgfHxcclxuICAvLyAgICAgICBldmVudC50YXJnZXQuY2xhc3NMaXN0LnRvU3RyaW5nKCkgPT0gJyc7XHJcbiAgLy8gICAgIGNvbnN0IGlzSW5zaWRlTWVudSA9XHJcbiAgLy8gICAgICAgbWVudUZpbHRyb0Rpdj8uY29udGFpbnMoY2xpY2tlZEVsZW1lbnQpIHx8XHJcbiAgLy8gICAgICAgYm90YW9GaWx0cm8/LmNvbnRhaW5zKGNsaWNrZWRFbGVtZW50KSB8fFxyXG4gIC8vICAgICAgIGlzQ2hlY2tib3hDbGlja2VkO1xyXG5cclxuICAvLyAgICAgaWYgKCFpc0luc2lkZU1lbnUpIHRoaXMuZmVjaGFyTWVudUZpbHRybygpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgY2hlY2tNZW51RmlsdHJvKGNvbDogYW55KSB7XHJcbiAgICBsZXQgZGVsZXRlZENvbHVtbjogVGFibGVDb25maWdDb2x1bW4gfCB1bmRlZmluZWQgPSB0aGlzLmRlbGV0ZWRDb2x1bnMuZmluZChcclxuICAgICAgKHg6IFRhYmxlQ29uZmlnQ29sdW1uKSA9PiB4LmZpZWxkID09IGNvbC5maWVsZFxyXG4gICAgKTtcclxuICAgIGlmIChkZWxldGVkQ29sdW1uKSBjb2wuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgZWxzZSBjb2wuY2hlY2tlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBzb3J0QnlQb3NpdGlvbigpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbihlbGVtMTogYW55LCBlbGVtMjogYW55KSB7XHJcbiAgICAgIGlmIChlbGVtMS5wb3NpdGlvbiA8IGVsZW0yLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW0xLnBvc2l0aW9uID4gZWxlbTIucG9zaXRpb24pIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGRpbmFtaWNEaXNhYmxlQ29sdW1uKGNvbDogVGFibGVDb25maWdDb2x1bW4pOiBib29sZWFuIHtcclxuICAgIGlmIChjb2wuZml4ZWRDb2x1bW4pIHJldHVybiBjb2wuZml4ZWRDb2x1bW47XHJcbiAgICBlbHNlIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNoZWNrSGlkZUNvbHVtbnMoKSB7XHJcbiAgICBsZXQgaGlkZUNvbHVtbnNDb25maWcgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKFxyXG4gICAgICAoY29sKSA9PiBjb2wuaGlkZUNvbHVtbiA9PSB0cnVlXHJcbiAgICApO1xyXG4gICAgaGlkZUNvbHVtbnNDb25maWcuZm9yRWFjaCgoY29sKSA9PiB0aGlzLmRlbGV0ZUNvbHVtbihjb2wuZmllbGQpKTtcclxuICB9XHJcblxyXG4gIGdldEN1c3RvbVRlbXBsYXRlKHRlbXBsYXRlbmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVzW3RlbXBsYXRlbmFtZV07XHJcbiAgfVxyXG5cclxuICAvLyBzdHlsZVNldHRlcihzdHlsZTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpIHtcclxuICAvLyAgIHRoaXMucmVuZGVyZXI/LnNldFN0eWxlKFxyXG4gIC8vICAgICB0aGlzLm1lbnVGaWx0cm9EaXYubmF0aXZlRWxlbWVudCxcclxuICAvLyAgICAgc3R5bGUsXHJcbiAgLy8gICAgIGRhdGFcclxuICAvLyAgICk7XHJcbiAgLy8gfVxyXG5cclxuICBmaWx0cm9zQXZhbmNhZG9zRXZlbnQoZTogYW55KSB7XHJcbiAgICB0aGlzLnNob3dGaWx0cm9zQXZhbmNhZG9zID0gIXRoaXMuc2hvd0ZpbHRyb3NBdmFuY2Fkb3M7XHJcbiAgICB0aGlzLmZpbHRyb3NBdmFuY2Fkb3NFbWl0LmVtaXQodGhpcy5zaG93RmlsdHJvc0F2YW5jYWRvcyk7XHJcbiAgfVxyXG5cclxuICBvblN3aXRjaENoYW5nZShlc3RhZG86IGFueSwgcm93RGF0YTogYm9vbGVhbiwgY29sOiBhbnkpIHtcclxuICAgIHRoaXMub25Td2l0Y2hUYWJsZUNoYW5nZS5lbWl0KHtcclxuICAgICAgZXN0YWRvOiBlc3RhZG8sXHJcbiAgICAgIHJvd0RhdGE6IHJvd0RhdGEsXHJcbiAgICAgIGNvbDogY29sXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2PlxyXG4gIEBpZiAoZmlsdHJvc0F2YW5jYWRvcykge1xyXG4gIDxwLXBhbmVsXHJcbiAgICBoZWFkZXI9XCJGaWx0cm9zIGF2YW7Dp2Fkb3NcIlxyXG4gICAgW3RvZ2dsZWFibGVdPVwidHJ1ZVwiXHJcbiAgICBbY29sbGFwc2VkXT1cInRydWVcIlxyXG4gICAgKGNvbGxhcHNlZENoYW5nZSk9XCJjb2xsYXBzZWQgPSAhY29sbGFwc2VkXCJcclxuICAgIFtzdHlsZV09XCJ7ICdtYXJnaW4tYm90dG9tJzogJzJweCcgfVwiXHJcbiAgPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlcmljb25zXCI+XHJcbiAgICAgIEBpZiAoIWNvbGxhcHNlZCkge1xyXG4gICAgICA8aSBjbGFzcz1cInBpIHBpLWZpbHRlclwiPjwvaT5cclxuICAgICAgfVxyXG4gICAgICA8IS0tIMONY29uZSBxdWFuZG8gbyBwYWluZWwgZXN0w6EgYWJlcnRvIC0tPlxyXG4gICAgICBAaWYgKGNvbGxhcHNlZCkge1xyXG4gICAgICA8aSBjbGFzcz1cInBpIHBpLW1pbnVzXCI+PC9pPlxyXG4gICAgICB9XHJcbiAgICAgIDwhLS0gw41jb25lIHF1YW5kbyBvIHBhaW5lbCBlc3TDoSBmZWNoYWRvIC0tPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICA8L3AtcGFuZWw+XHJcbiAgfVxyXG5cclxuICBAaWYgKGNvbmZpZykge1xyXG4gIDxwLXRhYmxlXHJcbiAgICAjZHRcclxuICAgIHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zbVwiXHJcbiAgICBbdmFsdWVdPVwidGFibGVEYXRhXCJcclxuICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgIFtyb3dTZWxlY3RhYmxlXT1cImlzUm93U2VsZWN0YWJsZVwiXHJcbiAgICBbY29sdW1uc109XCJjb25maWcuY29sdW1uc1wiXHJcbiAgICBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImdsb2JhbEZpbHRlckZpZWxkc1wiXHJcbiAgICBbcm93c109XCJyb3dzXCJcclxuICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yXCJcclxuICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwicm93c1BlclBhZ2VPcHRpb25zXCJcclxuICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcbiAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie2ZpcnN0fSAtIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfVwiXHJcbiAgICBbcm93SG92ZXJdPVwidHJ1ZVwiXHJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICBbbGF6eV09XCJjb25maWcubGF6eVwiXHJcbiAgICAob25MYXp5TG9hZCk9XCJwYWdpbmF0ZSgkZXZlbnQpXCJcclxuICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgcm93R3JvdXBNb2RlPVwicm93c3BhblwiXHJcbiAgICBbZ3JvdXBSb3dzQnldPVwiY29uZmlnLmZpZWxkR3JvdXBcIlxyXG4gICAgW3Nob3dGaXJzdExhc3RJY29uXT1cInNob3dGaXJzdExhc3RJY29uXCJcclxuICAgIFtwYWdlTGlua3NdPVwicGFnZUxpbmtzT3B0aW9uc1wiXHJcbiAgICBbcmVzcG9uc2l2ZV09XCJ0cnVlXCJcclxuICAgIFtyZXNwb25zaXZlTGF5b3V0XT1cInJlc3BvbnNpdmVMYXlvdXQgPyAnc3RhY2snIDogJydcIlxyXG4gICAgW3Njcm9sbGFibGVdPVwiaXNUYWJsZVNjcm9sbGFibGVcIlxyXG4gICAgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHRcIlxyXG4gICAgW3Jvd1RyYWNrQnldPVwicm93VHJhY2tCeSBcIlxyXG4gID5cclxuICAgIEBpZiAoY29uZmlnLmVuYWJsZUNhdGlvbikge1xyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBncmlkIGZvcm1ncmlkIHAtZmx1aWQgY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBmbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICBAaWYgKGNvbmZpZy50aXRsZSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgZm9udC1ib2xkIG15LTNcIj5cclxuICAgICAgICAgICAge3sgY29uZmlnLnRpdGxlIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoY29uZmlnLnN1YnRpdGxlKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBtYi00IGZvbnQtbWVkaXVtXCI+XHJcbiAgICAgICAgICAgIHt7IGNvbmZpZy5zdWJ0aXRsZSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBtZDpjb2wtNiBsZzpjb2wtNCB7e1xyXG4gICAgICAgICAgICB0YW1hbmhvVGVsYSA8IDc2OCA/ICdjb2wtMTAnIDogJ2NvbC0xMidcclxuICAgICAgICAgIH19IG10LTEgbWItMiBcIj5cclxuICAgICAgICAgIEBpZiAoY29uZmlnLmVuYWJsZUZpbHRlcikge1xyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgICBwQXV0b0ZvY3VzXHJcbiAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgKGlucHV0KT1cIm9uR2xvYmFsRmlsdGVyKGR0LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBlc3F1aXNhci4uLlwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTJyZW1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgI21lbnVGaWx0cm9EaXZcclxuICAgICAgICAgIGlkID0gXCJtZW51RmlsdHJvRGl2XCJcclxuICAgICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cIidoaWRkZW4nXCJcclxuICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgei00IGJnLWdyYXktMjAwXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgPiAtLT5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICNtZW51RmlsdHJvRGl2XHJcbiAgICAgICAgICAgIGlkPVwibWVudUZpbHRyb0RpdlwiXHJcbiAgICAgICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cIidoaWRkZW4nXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB6LTQgYmctZ3JheS0yMDAgbWVudS1jb2x1bW5zLWZpbHRyb1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxwLWNhcmQ+XHJcbiAgICAgICAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIHRleHQtbWVkaXVtIHctMTVyZW1cIj5cclxuICAgICAgICAgICAgICAgIHt7IGNoZWNrTWVudUZpbHRybyhjb2wpIH19XHJcbiAgICAgICAgICAgICAgICBAaWYgKCFkaW5hbWljRGlzYWJsZUNvbHVtbihjb2wpKSB7XHJcbiAgICAgICAgICAgICAgICA8cC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAjZmlsdGVyQ29sdW1uc1xyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sLmhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFtiaW5hcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImRpbmFtaWNDb2x1bW5TZXQoJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICA+PC9wLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9wLWNhcmQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgY29sLTEganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zTG90ZTsgdHJhY2sgaTsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJidG5zLW9wdGlvbnNcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwieyAnbWFyZ2luLXJpZ2h0JzogJzdweCcgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIEBpZiAoKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBhY3Rpb24uc2hvd0Fjb2VzTG90ZSkgJiZcclxuICAgICAgICAgICAgICAgIGV4aWJpckNhbXBvKGFjdGlvbiwgdGhpcy5hY3Rpb24pKSB7XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBpZD1cImFjdGlvbkxvdGVCdG5zXCJcclxuICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25Mb3RlQnRucyBwLWJ1dHRvbi1yYWlzZWQgcC1idXR0b24tdGV4dFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgYWN0aW9uPy5jb21tYW5kKCk7IGFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjMURBNzUwXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvbi50b29sdGlwLCBzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJnZXRPckV4ZWN1dGUoYWN0aW9uLnRvb2x0aXAsIHNlbGVjdGVkSXRlbXMpPy5sZW5ndGggPz8gMCA+IDcgJiYgY29uZmlnLmFjdGlvbnNMb3RlICYmIGkgPT0gY29uZmlnLmFjdGlvbnNMb3RlLmxlbmd0aCAtIDEgID8gJ2xlZnQnIDogJ2JvdHRvbSdcIiBcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvbi5kaXNhYmxlZCwgc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG1kLTIyXCIgc3R5bGU9XCJjb2xvcjogd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgIHt7IGdldE9yRXhlY3V0ZShhY3Rpb24uaWNvbiwgc2VsZWN0ZWRJdGVtcykgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgfVxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICBwVGVtcGxhdGU9XCJoZWFkZXJcIlxyXG4gICAgICBsZXQtY29sdW1uc1xyXG4gICAgPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgQGlmIChjb25maWcuZW5hYmxlU2VsZWN0KSB7XHJcbiAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDRyZW07IGJvcmRlci1sZWZ0OiBzb2xpZCA0cHggdHJhbnNwYXJlbnRcIj5cclxuICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3ggKGNsaWNrKT1cImFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCI+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICA8dGhcclxuICAgICAgICAgIFtwU29ydGFibGVDb2x1bW5dPSdcImRhdGEuXCIgKyBjb2wuZmllbGQnXHJcbiAgICAgICAgICBbcFNvcnRhYmxlQ29sdW1uRGlzYWJsZWRdPVwiY29sLnNvcnRhYmxlID09PSBmYWxzZVwiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCJcclxuICAgICAgICAgIGNsYXNzPVwidGV4dC1zbVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbCkgJiYgYWxpZ25Db2x1bmFzSGVhZGVyKGNvbCkgPT0gJydcclxuICAgICAgICAgICAgICAgID8gJ2ZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlcidcclxuICAgICAgICAgICAgICAgIDogJ2ZsZXggZmxleC1yb3cnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJhbGlnbkNvbHVuYXNIZWFkZXIoY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIEBpZiAoY29sLnNvcnRhYmxlKSB7XHJcbiAgICAgICAgICAgIDxwLXNvcnRJY29uXHJcbiAgICAgICAgICAgICAgW2ZpZWxkXT0nXCJkYXRhLlwiICsgY29sLmZpZWxkJ1xyXG4gICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4XCJcclxuICAgICAgICAgICAgPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAaWYgKGNvbC5oZWFkZXJUb29sdGlwKSB7XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiY29sLmhlYWRlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICA+aW5mbzwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjb25maWcuYWN0aW9ucyAmJiBjb25maWcuYWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGVcclxuICAgICAgcFRlbXBsYXRlPVwiYm9keVwiXHJcbiAgICAgIGxldC1yb3dEYXRhXHJcbiAgICAgIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgICAgIGxldC1yb3dncm91cD1cInJvd2dyb3VwXCJcclxuICAgICAgbGV0LXJvd3NwYW49XCJyb3dzcGFuXCJcclxuICAgID5cclxuICAgICAgPHRyIChkYmxjbGljayk9XCJkb3VibGVDbGljaygkZXZlbnQsIHJvd0RhdGEuZGF0YSlcIiBbbmdDbGFzc109XCJ7ICdjYXBpdGFsaXplJzogdGFibGVDYXB0YWxpemVkIH1cIj5cclxuICAgICAgICBAaWYgKGNvbmZpZy5lbmFibGVTZWxlY3QpIHtcclxuICAgICAgICA8dGQgW3N0eWxlXT1cImFwcGx5U3R5bGUocm93RGF0YS5kYXRhLCB7IGZpZWxkOiAnY2hlY2stYm94JywgaGVhZGVyOiAnJyB9KVwiPlxyXG4gICAgICAgICAgPCEtLTxwLXRhYmxlQ2hlY2tib3ggKm5nSWY9XCJpc1Zpc2libGVDaGVja2JveChyb3dEYXRhLmRhdGEpXCItLT5cclxuICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3hcclxuICAgICAgICAgICAgW3ZhbHVlXT1cInJvd0RhdGEuZGF0YVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkQ2hlY2tib3gocm93RGF0YS5kYXRhKVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICA+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgQGlmIChyb3dncm91cCAmJiAhY29sLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICA8dGQgXHJcbiAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwicm93Z3JvdXAgJiYgY29sLmdyb3VwZWQgPyByb3dzcGFuIDogbnVsbFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicm93VGFibGVcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiXHJcbiAgICAgICAgICAgICAgYXBwbHlTdHlsZShyb3dEYXRhLmRhdGEsIGNvbCkgK1xyXG4gICAgICAgICAgICAgIGNlbnRyYWxpemFyQ29sdW5hcyhjb2wpICtcclxuICAgICAgICAgICAgICBhbGlnbkNvbHVuYXMoY29sKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0dXJuVG9vbHRpcFJvdyhyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmhlYWRlciB9fTo8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWlzQm9vbGVhbkZpZWxkKHJvd0RhdGEuZGF0YSwgY29sKTsgZWxzZSBib29sZWFuRmllbGRcIlxyXG4gICAgICAgICAgICAgIFtjbGFzc109XCJyZXR1cm5Sb3dDbGFzcyhyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgQGlmICghaXNDaGlwRmllbGQoY29sKSAmJiAhY29sLmljb25GaWVsZCAmJiAhaXNJbWFnZUZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgIEBpZiAoY29sLmljb24pIHtcclxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJjb2wuaWNvbiArICcgbXItMidcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB7eyB0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLmRhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBAaWYgKGlzQ2hpcEZpZWxkKGNvbCkgJiYgIWNvbC5pY29uRmllbGQpIHtcclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInJldHVybkNsYXNzQ2hpcChyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0dXJuVG9vbHRpcEljb24ocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgID57eyB0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLmRhdGEsIGNvbCkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAaWYgKGlzSW1hZ2VGaWVsZChjb2wpKSB7XHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgW3NyY109XCJsb2FkSW1hZ2Uocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBpZiAoY29sLmljb25GaWVsZCkge1xyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICdtYXRlcmlhbC1pY29ucyc6IGNvbC5pbmRJY29uTWF0ZXJpYWwsXHJcbiAgICAgICAgICAgICAgICAnbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtci0yJzogIWNvbC5pbmRJY29uTWF0ZXJpYWxcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0dXJuVG9vbHRpcEljb24ocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IHJldHVybkNsYXNzSWNvbihyb3dEYXRhLmRhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Jvb2xlYW5GaWVsZD5cclxuICAgICAgICAgICAgICBAaWYgKCFjb2wuaWNvbkZpZWxkICYmICFpc1N3aXRjaEZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJyb3dEYXRhLmRhdGFbY29sLmZpZWxkXSA/ICd0ZXh0LWdyZWVuLTUwMCcgOiAndGV4dC1yZWQtNTAwJ1wiXHJcbiAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPlxyXG4gICAgICAgICAgICAgICAge3sgcm93RGF0YS5kYXRhW2NvbC5maWVsZF0gPyBcImNoZWNrXCIgOiBcImNsb3NlXCIgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgQGlmIChpc1N3aXRjaEZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwicmV0dXJuUm93Q2xhc3Mocm93RGF0YS5kYXRhLCBjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8a3Ytc3dpdGNoXHJcbiAgICAgICAgICAgICAgICAgIChvblN3aXRjaENoYW5nZSk9XCJvblN3aXRjaENoYW5nZSgkZXZlbnQsIHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2w/Lm9ubHlSZWFkRmllbGQgPz8gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzd2l0Y2hWYWx1ZV09XCJ0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9rdi1zd2l0Y2g+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBpZiAoIXJvd2dyb3VwICYmICFjb2wuZ3JvdXBlZCAmJiAhY29sLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgW3N0eWxlXT1cIlxyXG4gICAgICAgICAgICAgIGFwcGx5U3R5bGUocm93RGF0YS5kYXRhLCBjb2wpICtcclxuICAgICAgICAgICAgICBjZW50cmFsaXphckNvbHVuYXMoY29sKSArXHJcbiAgICAgICAgICAgICAgYWxpZ25Db2x1bmFzKGNvbClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJyb3dUYWJsZVwiXHJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwUm93KHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wuaGVhZGVyIH19Ojwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaXNCb29sZWFuRmllbGQocm93RGF0YS5kYXRhLCBjb2wpOyBlbHNlIGJvb2xlYW5GaWVsZFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cInJldHVyblJvd0NsYXNzKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBAaWYgKCFpc0NoaXBGaWVsZChjb2wpICYmICFjb2wuaWNvbkZpZWxkICYmICFpc0ltYWdlRmllbGQoY29sKSkge1xyXG4gICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgQGlmIChjb2wuaWNvbikge1xyXG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImNvbC5pY29uICsgJyBtci0yJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHt7IHRyYW5zZm9ybVZhbHVlKHJvd0RhdGEuZGF0YSwgY29sKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIEBpZiAoaXNDaGlwRmllbGQoY29sKSAmJiAhY29sLmljb25GaWVsZCkge1xyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwicmV0dXJuQ2xhc3NDaGlwKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwSWNvbihyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyB0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLmRhdGEsIGNvbCkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAaWYgKGlzSW1hZ2VGaWVsZChjb2wpKSB7XHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltYWdlXCIgW3NyY109XCJsb2FkSW1hZ2Uocm93RGF0YS5kYXRhLCBjb2wpXCIgLz5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGlmIChjb2wuaWNvbkZpZWxkKSB7XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgJ21hdGVyaWFsLWljb25zJzogY29sLmluZEljb25NYXRlcmlhbCxcclxuICAgICAgICAgICAgICAgICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG1yLTInOiAhY29sLmluZEljb25NYXRlcmlhbFxyXG4gICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyZXR1cm5Ub29sdGlwSWNvbihyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgcmV0dXJuQ2xhc3NJY29uKHJvd0RhdGEuZGF0YSwgY29sKSB9fVxyXG4gICAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYm9vbGVhbkZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICBAaWYgKCFjb2wuaWNvbkZpZWxkICYmICFpc1N3aXRjaEZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJyb3dEYXRhLmRhdGFbY29sLmZpZWxkXSA/ICd0ZXh0LWdyZWVuLTUwMCcgOiAndGV4dC1yZWQtNTAwJ1wiXHJcbiAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPlxyXG4gICAgICAgICAgICAgICAge3sgcm93RGF0YS5kYXRhW2NvbC5maWVsZF0gPyBcImNoZWNrXCIgOiBcImNsb3NlXCIgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgQGlmIChpc1N3aXRjaEZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwicmV0dXJuUm93Q2xhc3Mocm93RGF0YS5kYXRhLCBjb2wpXCI+XHJcbiAgICAgICAgICAgICAgICA8a3Ytc3dpdGNoXHJcbiAgICAgICAgICAgICAgICAgIChvblN3aXRjaENoYW5nZSk9XCJvblN3aXRjaENoYW5nZSgkZXZlbnQsIHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2w/Lm9ubHlSZWFkRmllbGQgPz8gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzd2l0Y2hWYWx1ZV09XCJ0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9rdi1zd2l0Y2g+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBpZiAoY29sLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgW3N0eWxlXT1cIlxyXG4gICAgICAgICAgICAgIGFwcGx5U3R5bGUocm93RGF0YS5kYXRhLCBjb2wpICtcclxuICAgICAgICAgICAgICBjZW50cmFsaXphckNvbHVuYXMoY29sKSArXHJcbiAgICAgICAgICAgICAgYWxpZ25Db2x1bmFzKGNvbClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJyb3dUYWJsZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wuaGVhZGVyIH19Ojwvc3Bhbj5cclxuICAgICAgICAgICAgQGlmIChnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSkpIHtcclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEN1c3RvbVRlbXBsYXRlKGNvbC50ZW1wbGF0ZS5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3dEYXRhLmRhdGEgfVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmIChjb25maWcuYWN0aW9ucyAmJiBjb25maWcuYWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgPHRkIFtzdHlsZV09XCJhcHBseVN0eWxlKHJvd0RhdGEuZGF0YSwgeyBmaWVsZDogJ2J0bnMtb3B0aW9ucycsIGhlYWRlcjogJycgfSlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1lbmQgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGlkPVwibW9yZVZlcnRCdG5cIlxyXG4gICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbkJ0bnMgcC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpOyBhY3RpdmVJdGVtKHJvd0RhdGEuZGF0YSlcIlxyXG4gICAgICAgICAgICA+IC0tPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBjdXJzb3ItcG9pbnRlciBpY29uLW1vcmUtaG9yaXpcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KTsgYWN0aXZlSXRlbShyb3dEYXRhLmRhdGEpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIG1vcmVfaG9yaXpcclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8IS0tIDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICAgICAgICAgIDxwLXRpZXJlZE1lbnVcclxuICAgICAgICAgICAgICAjbWVudVxyXG4gICAgICAgICAgICAgIFtwb3B1cF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbbW9kZWxdPVwicm93RGF0YS5hY3Rpb25zXCJcclxuICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICA+PC9wLXRpZXJlZE1lbnU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIH1cclxuICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiXHJcbiAgICAgIGxldC1jb2x1bW5zXHJcbiAgICA+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGggKyAyXCJcclxuICAgICAgICAgIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBib3JkZXItcmFkaXVzOiAxMHB4ICFpbXBvcnRhbnRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1tZWRpdW0gbS0wXCI+TmVuaHVtIHJlZ2lzdHJvIGVuY29udHJhZG88L3A+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9wLXRhYmxlPlxyXG4gIH1cclxuPC9kaXY+XHJcblxyXG48bGlua1xyXG4gIHJlbD1cInN0eWxlc2hlZXRcIlxyXG4gIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zXCJcclxuLz5cclxuXHJcbjxsaW5rXHJcbiAgcmVsPVwic3R5bGVzaGVldFwiXHJcbiAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9TWF0ZXJpYWwrU3ltYm9scytPdXRsaW5lZDpvcHN6LHdnaHQsRklMTCxHUkFEQDQ4LDQwMCwwLDBcIlxyXG4vPlxyXG4iXX0=
492
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUva3YtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdGFibGUva3YtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBR2YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQU12QixPQUFPLEVBQWMsWUFBWSxFQUFhLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBSzVHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRixNQUFNLFVBQVUsR0FDZCwwcVBBQTBxUCxDQUFDO0FBTzdxUCxNQUFNLE9BQU8sZ0JBQWdCO0lBOEIzQixJQUFxQixTQUFTLENBQUMsS0FBa0I7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUk7WUFDeEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSztZQUN6QyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQ3hDLEdBQUcsS0FBSztTQUNULENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxrQkFBa0Is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QUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR2hCLFNBQVM7c0JBQTdCLEtBQUs7dUJBQUMsUUFBUTtnQkFlTixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVxQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0EsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQTBDeEIsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGF0ZVBpcGUsXHJcbiAgRGVjaW1hbFBpcGVcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIERvQ2hlY2ssXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5cclxuaW1wb3J0IHsgQ3BmQ25walBpcGUgfSBmcm9tICcuLi8uLi9hcGkvcGlwZXMvY3BmY25wai5waXBlJztcclxuaW1wb3J0IHsgS3ZNZW51SXRlbSwgZ2V0T3JFeGVjdXRlLCBWYWx1ZU9yRm4sIG1hcFRvTWVudUl0ZW0gfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS9rdi1tZW51aXRlbSc7XHJcbmltcG9ydCB7IFRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vYXBpL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29uZmlnJztcclxuaW1wb3J0IHsgVGFibGVDb25maWdDb2x1bW4gfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb25maWcuY29sdW1uJztcclxuaW1wb3J0IHsgVGFibGVQYWdpbmF0ZSB9IGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLnBhZ2luYXRlJztcclxuaW1wb3J0IHsgVGVsZWZvbmVQaXBlIH0gZnJvbSAnLi4vLi4vYXBpL3BpcGVzL3RlbGVmb25lLnBpcGUnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2FwaS9kaXJlY3RpdmVzL3RlbXBsYXRlL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XHJcblxyXG5jb25zdCBpbWdEZWZhdWx0ID1cclxuICAnLzlqLzRBQVFTa1pKUmdBQkFRSUFkZ0IyQUFELzRRQmlSWGhwWmdBQVRVMEFLZ0FBQUFnQUJRRVNBQU1BQUFBQkFBRUFBQUVhQUFVQUFBQUJBQUFBU2dFYkFBVUFBQUFCQUFBQVVnRW9BQU1BQUFBQkFBTUFBQUlUQUFNQUFBQUJBQUVBQUFBQUFBQUFBQUIyQUFBQUFRQUFBSFlBQUFBQi85c0FRd0FEQWdJQ0FnSURBZ0lDQXdNREF3UUdCQVFFQkFRSUJnWUZCZ2tJQ2dvSkNBa0pDZ3dQREFvTERnc0pDUTBSRFE0UEVCQVJFQW9NRWhNU0VCTVBFQkFRLzlzQVF3RURBd01FQXdRSUJBUUlFQXNKQ3hBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVEvOEFBRVFnQWtBQ1FBd0VSQUFJUkFRTVJBZi9FQUIwQUFRQUJCQU1CQUFBQUFBQUFBQUFBQUFBR0FRSUhDQU1FQ1FYL3hBQkJFQUFDQVFRQUJRSUNDQVFEQkFzQUFBQUJBZ01BQkFVUkJnY1NJVEVUUVFoUkNSUVZHU0pWbGRFeVlZR1JRbEppRmlNM09GTmpjWE4xZHBLVHNiTzAvOFFBR2dFQkFBSURBUUFBQUFBQUFBQUFBQUFBQUFFRkF3UUdBdi9FQURJUkFBSUFCQU1GQ0FFRkFRRUJBQUFBQUFBQkFnTUVFU0V4VVFVU1FaSHdFeFV5WVhHQm9iSFJJak5Dd2VFMDhTUC8yZ0FNQXdFQUFoRURFUUEvQVBLcWdGQUtBVUJkRERMY1NwQkJFOGtzakJFUkZKWm1KMEFBUEpKcVVuRTdJaHRRcTd5SjV3OXlkejJWaStzNWU0WEZSTXUwVjA5U1U3MFJ0QVIwalJQazlRSTBWOTZzNUd5cGt4WG1QZCtYL24zNUZiTzJwS2w0UWZxZnh6SjlqT1UvQm1PNldrc1piNlJKQklyM1VwT3RhMHBWZWxTTzNnZzcyZDdIYXJPWHMybmd6Vi9YcElxNDlwVk1mRzNvdnpka21zTVRpc1gxL1ptTXRMUDFkZGZvUUxIMWEzcmZTQnZXei9ldHVDWEJMdnVKSyttQnB4ekk1bHQ5dDIxeE8zV1E4Q2dPcGY0bkZaVG8rMDhaYVhucGI2UHJFQ3lkTzliMTFBNjNvZjJySEhMZ21lTkorcVBjRXlPWGZjYlY5TUNNNVBsUHdaa2VwbzdHV3hrZVF5TTlyS1J2ZTlxRmJxVUwzOEFEV2hyUTdWcVRObTA4ZVN0NlAvMUc1QnRLb2c0MzlWK0xNZ1BFUEozUFlxTDZ6aUxoY3JHcTdkRVQwNVJyWk9rSlBVTkFlRDFFblFYM3FzbjdLbVMxdlMzdmZELzM3OGkwazdVbFRIdXhyZGZ4ei93Z2MwTTF2TTl2Y1JQRkxFeFIwZFNyS3dPaUNENElQdFZZMDRYWmxrbW9sZFpGdFFTS0FVQW9CUUNnRkFTamcvbDltZUxaUktGZXlzT2tzYnVTSWxXN2thUWR1czdCQjBkRFIyZDZCM2FXaG1WT09VT3Y0MU5Lc3JZYVZZWXhhZFgvQU4rVm16aDdoSEFjTVJCTVRZSWtwWHBlNGY4QUZLL1liMng5ajBnOUkwdS9ZVjBNaW1sVTZ0QXNkZUp6czJwbXovM0lyL1hTeTExWjltczVnS2hUVWtYSzZGQmNhRkNMalFvTGpRb1Rjb1ZOQmNwVUVueHVJZUVjQnhSQ1V5MWdqU2hlbExoUHd5cDJPdE1PNUE2aWVrN1hmdFdDZlN5cWhmcldPdkV6eWFpYklmOEE4NHJlWERwNVh6MFpoUGpIbC9sK0VaZlVJYThzQ29JdTQ0eUZVN0EwNDc5QjJSclowZGpSM3NEbmFxaW1VcnU4VnIrZERvS1N2bDFLdEZhR0srVjg4OHNyNEs3MCtTTDFwbStLQVVBb0JRRTU1ZGN1NWVKcGx5dVdSNDhURzNZYkt0Y3NEM1ZUN0tEMkxmMEhmWld5b2FGMUQzNC9EOTljZXJWdGRYS25YWnkvRjlmN3AxZk9NTU1WdkVsdmJ4SkhGR29SRVJRRlZRTkFBRHdBUGF1aVNVS3Nzam5XM0U3dDRuSUI4NjlIaHNyUWdyVUFVQW9CUUNnRkFVcVFVSW9UYzQ1b1lwNG5nbmlTU09SU2pvNmhsWlNORUVIc1FSN1ZEU2lWbmtlazNDN3A0bURlWW5MdVhoaVZzcmlrZVRGU04zSGN0Yk1UMlZqN3FUNGIraDc2TGM1WFVMcDMya3Z3L1grZWZUNk9ocmxVTHM1bmkrLzkxNnRCNnJTeUZBS0FsSEwvQUlPbDR1eStwQ3EyRm15U1haSk8yVW50R05FSGJhSTM3QUUrZEE3bEZTdXFtV2VTei9IdWFGZlZxbWw3cXZ2Ulh0NWVlVFdGOG5ucGE1c0ZERkZCRWtFRVNSeHhxRVJFVUJWVURRQUE4QUQycnFVa2xaSE10dDRzNVFLazh0bGFnZ1VBb0NmY3B1UlBOTG5ia254L0x2aGE0eUVjREJibTljaUsxdHQvOUpLMmxCMTM2UnRpUEFOWVoxUkxwMWVZelBJcHB0UTdTMGJQNFQ2TGJqdTR0Rms0aDVxWUt3dVNObUt6c1pycEFmbDFzWS8vQUlxdWkydkFuK21GbGxEc2VOcjlVU0lyekIramI1MjhLMmN1UjRTeWVHNHRpaUJZMjlzN1cxMlFQY1J5ZmdQL0FHQ1RaOWdheVN0cXlZM2FLNk1VM1pNNkJYZ2FacXZsc1RsY0Rrcm5EWnZHM1dQdjdPUXhYRnJkUk5GTEU0OHF5TUFWUDhqVmttb2xkWkZaRkM0WGFMTTZsU1FLQVVCYVJVNWtwbkhOREZjUlBiM0VTU1JTS1VkSFVNcktSb2dnK1FhaHBOTk05d3hPRjd5ek5mZVlIQjB2Q09ZSWo2VFlYalBKYUVIdXFnamFIWkoydXdOKzQwZk93T1dyYVYwc3pEd3ZMOGV4MHRCVnFwbDdyOFVLVi9QenlTeHRrc3VSRjYwemZMb1laYmlWSUlJbmtsa1lJaUlwTE14T2dBQjVKTlNrNG5aRU5xRlhlUnNwd25nSXVHZUg3VERvSXpKRW5WTzZBZjd5VnU3SFlBTERmWUVqZlNGSHRYVzAwaFU4cFMxNyt2WHdjaFVUZTJteFRNY1hxL1RWMnl4U3d2ZDV0bjJBSzJEQXk2b0lGQUtBeXA4TlhJekpmRUJ6UXN1QzRKWkxYRndJYjNMM2lBYmd0RUlEZE8rM1d4S292bnUyeUNBYTE2cW9WTkxjZkhnYk5KVE9wbXFEaHhQWW5nemd2aGZsN3cxWThJY0hZYTN4bUp4OFlqZ3Q0VjBCODJZK1dZbnVXT3lTU1NTYTVXWk1pbXhPS04zWjFrdVhES2hVRUNzajdkZUQyS0ExeStNVDRXOE56ejROdXVJK0g4ZEZEeHpocmRwYkM0alVLMS9HZzJiV1EvNHRqZlFUL0MydTRCYmUvUTFqcDQ5Mkx3djQ4elFycU5WTUc5Q3YxTDU4anlWZEhqZG81RktzcElaU05FSDVHdW1PV0tVQW9CUUZwSHZVa28rTnhkdzlEeFJnTHJFeUJSSzY5ZHU3YUhSS1A0VHZSME45am9iNlNSNzFyMVVoVkVweTM3ZXBzVTAzc0pzTXpUNi92MzQyWnJaTkROYnpQYjNFVHhTeE1VZEhVcXlzRG9nZytDRDdWeVRUaGRtZGNtb2xkWkU4NU84UFJaWFB5NWE1Q3RGaWxWMVE2TzVYMkVPaUQyQVZqdllJWUthc3RseVZNbTc3L2o5OWZKV2JVcUhMbHFXdjVjZkpXKy9xNW0rdWpPZExxSGtyVUFVQW9EMGkraTc0VnM3VGxyeGR4cjZTL1c4bG0xeHBjanVJcmVCSkFCOGdXdVcvc1BsVkR0ZU51WkRCb3I5Y2pvTmp3SlM0bzlYOWYrbTYxVkJjQ2dGQUtBOFkvaTI0VnRPRFBpUDQ4d1ZoRXNWdjlwL1hrUlJvSUxtTkxqcEE5Z1BXMEI4cTZ5aWpjeVJERTlQckE1R3VnVXVvamhXdjNpWWpyWk5VVUFvQ2xTQzJvUFJoRG5GdzlGaXMvRmw3Ym9XUEtxenNnN2FsVFFjNkFBMFF5bmV5U3hZbjJybnRxU0ZMbUtZdjVmYS9QM2M2UFpjNXpKVzQ4NGZyaC9aUHVVK00renVETGFSa2xTUytra3VuV1FhMXM5S2xScitFb2lrZWQ3MzRJcXoyYkwzS2RQVzc2OWtWZTBvOStvZmxaZjM5c21RRmI1b011cUR5S0FVQW9EMGIraTY0eHM3bmdQakRnRnBWRjNqOHNtV1ZDZTdSVHdwRVNQbUExdU4vTHJIenFoMnZMYWpoajhySFFiSG1Kd1JRYU81dTdWUVhBb0JRQ2dQRno0cU9NYlBqejRodU91SmNmS3N0ckpsR3RJSkZPMWtqdDBXM1Z3ZmtSRUNQNUd1c281Ymx5SVlYcDk0bkkxc3hUS2lLSmEvV0JpcXRrMVJRQ2dGQVdrVkpLSWR6WXhuMmp3WGN5S2t6eVdVa2QwaXg5L0I2V0xEUjdCSGMrMnRiM29HcS9hVXR6S2QyNFk5Y3l3MmRNVXVvVitPSFh1a1NYRVdIMlZpckxHZXI2djFPM2pnNitucDZ1aFF1OWJPdDY4YnJjbHdkbkFvTkZZMDVrZmFSdVBWMzVuZEhpc2hqWldvSUZBS0FVQmtia0J6b3pmSVhtWmp1UGNSR2JpQ01HMnlWbjFkSXU3TnlQVWozN0hzcktmWmtVblkyRGdxWkNxWmJnWnNVMVJGVFRGR2oySjViY3pPQytiWENscnhsd0xtb2NqanJwUnZwSUVrRW10bUtWUEtPTjkxUDhpTmdnbmxac3FPVEZ1UnJFNnlWT2dudzc4RHVpVTFqTWdvRFZqNDB2aXp3M0tQaGUrNWU4RjVTTzQ0NHkwQmdQb1B2N0poY2FNemtmd3lsVCtCZklKRG5zQUdzcUNpYzZKVEkxK2xmSlcxOWFwRUxnZ2Y2bjhIbGQ1cm96bVJRQ2dGQUtBbzNpcEpSMHN0WURLNHE4eFptOUlYbHZKQjZuVDFkSFdwWGV0amV0K04xam1RZHBBNE5VMXpNa3VQczQxR2xlenVkdXNoNFJjUEZEeXl0UUJRQ2dGQUtBbFBMem1qekI1VVpyL2FEbDV4VmZZUzlJQ3lHQndZNWxCMkZrallGSkYzN01DS3h6Wk1FNWJzeFhNc3FkTWtQZWx1eHNuaFBwTnVlZVB0RnRzdncxd2psWkVHdnJEMnM4TWpINXNFbENmMlVWWHhiSmt0NE5vc0lkcnprc1VtUlRtRDlJRDhSUEhWbkxqYkxNNDdoYTFtQlZ4Zzdab3BtWC92cEdlUlQvTkNwckxMMmJJbHU3Vi9VeFRkcDFFeFdUdDZHdVZ6YzNGNWNTM2QzUEpQUE01a2tsa1lzN3NUc3N4UGNrbjNOYjZWc0VWN2JlTE9PZ0ZBS0FVQW9DaDhWSVJiUTlDZ1JjUEZEeXl0UUJRQ2dGQVNmZy9sZnpINWd5ZW53UHdMbmM0T3JwWjdHd2tsalEvNm5VZEsvMUlySEhPbHl2SEVrWkpjbVpOOEVMWm1EQS9BSjhUK2JSWlp1QnJYRlJ2M0RYK1V0MU92NXFqc3cvcUJXckZ0S25oL2xmMk51SFpsVEYvRzN1U3VINk0vNGhKVURTWmZndUUvNVh5VTVJLzhBVEFSV1B2V1JvK3ZjeXJaTS9WZGV4MWIvQU9qYitJMnpRdGJ0d3JmRUQrRzN5amduL3dCeU5SVXJhc2g2OGlIc21vV25NeDl4UjhHM3hMOEpJODJSNVQ1VzZpUWI2OFk4Vi9zZk1MQXp0L2NWbmdycWVQS0wrdnN3UjBGUkJuRHl4K2pFT1R4ZVR3dDdKanN4anJxeHU0VHFTQzVoYUtSRC9OV0FJclpUVVN1alVjTGhkbWRhcElGQUtBVUJRK0trSXRvZWpxWW0vd0R0VEZXV1Q5TDB2cmx2SFAwZFhWMDlhaHRiME42MzUxV09YSDJrQ2oxU1o3bVFkbkc0TDNzN2NqdWp4V1F4c3JVRUNnTWo4a09RUE1Qbjd4SWNEd1JqbEZ2YmRMWCtTdWRyYTJTSHdYWUE3WTZPa1VGam85dEFrWUtpcGwwME85R2JGUFRUS21MZGc1bm85eWIrQXZranl3Z2d2dUlzV3ZHbWNRQXZkNWFJTmJLMy9WMnV5Z0hqK1ByYjVFZUtvWiswWjA3Q0Y3cTh2eWRCSTJiSms0eExlZm4rRFk2MnRiYXl0NDdTenQ0b0lJbENSeFJJRlJGSGdBRHNCV2cyM2l5d1N0Z2pscUFLQVVBb0NPY2E4dU9BdVkrT09LNDc0UXhXY3R0RUt0N2JMSTBlL2RISTZrUDgxSU5aSmMyT1U3d094am1Tb0pxdEdybWsvUDc2TnUzanRMbmlia0hmVGVyR0drZmg2L202dXNmSzNuYnZ2NUxJVHY4QXpqc0RiMDIxY2QyZnovSlQxT3lWYmVrY3Z3YUZaSEhaREQ1QzV4V1dzcDdPOXM1V2d1TGVlTXBKRklwMHlNcDdnZ2dnZzFkSnFKWFJTTk9GMmVaMTZFQ2dLSHhVa282V1d2eGlzVmVaUXcrcUxPM2tuOVBxNmV2b1V0cmVqcmV2T3F4ekkremdjZWliNUdTWEE1a2FnVHRkMjVrYTVUNU1aSGd1MWpaNW5rc1pKTFYya08vQjZsQ25aL0NFZEFQR3RhOEFWcDdObU9aVHBQaGgxek56YU12czZoMjQ0OWU2Wk1RYXNDdlpkVUVIWnhtT3U4dmtyVEUyRWZxWE43UEhid3B2WFZJN0JWSDl5S2h0UXE3SlNjVHNqMjI1TDhwZUhPU25MdkZjQmNPVzhZV3ppRFhseUYwOTVkRUQxWjNQa2xqNDM0VUtvN0FWeU5ST2lxSmpqaU94cDVFTlBMVUVKT2F3bVlVQW9CUUNnRkFLQVVCb1Y5SmZ5Vnc4V014WFBIQzJrY0YrMTBtSnpQcHJyNndySXhnbWIvVXZRVUo4a01nOExWMXNxb2QzSmZxaWsydlRxeW5MUEpubjVWMlVRb0MwbXBKUkR1YkdUK3p1QzdxTlhtU1M5a2p0VWFNNjFzOVRCanNmaEtJNDk5NzFyUk5WKzBwamwwN3R4dzY1Ry9zNldwbFFyOE1ldmRvZ0hKM2lDTEZaK1hFM0pWWXNxcW9yblExTW15ZzJTT3hETVBCSllxS3JObHoxTG03anlpKytCWjdWa09aTFV5SCtQRHlmdHc1V3Y1R2I2Nkk1NHVxVHlTemxML3hWNE0vOHdZNy9BUFRIV0tkKzFGNk15eVAzWWZWSHViWEhIWmlnRkFLQVVBb0JRQ2dGQWF5L1NKLzhzK1MvOFZzUC9zcXcyWi8wTDBaWGJVLzVuNm84b2E2VTVnb2UxU0Myb1BSaERuRnhERGxjOUZpYmJvYVBGS3lNNDdreXZvdU5na2FIU284QWh1b0gycm50cXoxTW1LWEQvSDdmNCs3blI3TGt1WEtjY1djWDF3L3NnY00wdHZLazhFcnh5eHNIUjBZaGxZSFlJSThFR3F4Tnd1NkxKcFJLenlObE9Fcy9IeE53L1o1ZFRHSkpVNlowVWo4RXE5bUdnU1Y3OXdEMzZTcDk2NjJtbnFvbEtOZS9yMThISVZFdnNaMFVyVDF5elhESDFXRjdyTk0rd0Q3VnNHQm5md2VZdmVIczFqOC9qV1JidkdYVVY1YmwxNmxFa2JoMUpIdU5nZHE4eFFxSk9GOFJERTRXb2x3Tmp2dkZQaVgvQURuQmZwTWY3MW9kMlUrajVsaDNyVWFya1B2RlBpWC9BRG5CZnBNZjcwN3NwOUh6SGV0UnF1USs4VStKZjg1d1g2VEgrOU83S2ZSOHgzclVhcmtQdkZQaVgvT2NGK2t4L3ZUdXluMGZNZDYxR3E1RDd4VDRsL3puQmZwTWY3MDdzcDlIekhldFJxdVErOFUrSmY4QU9jRitreC92VHV5bjBmTWQ2MUdxNUQ3eFQ0bC96bkJmcE1mNzA3c3A5SHpIZXRScXVRKzhVK0pmODV3WDZUSCs5TzdLZlI4eDNyVWFya1B2RlBpWC9PY0Yra3gvdlR1eW4wZk1kNjFHcTVFUDVxZkdCenA1eWNJVGNEOGI1SEZ6WXVlYUs0ZGJmSHBFL1hHZHIrSWQvTlpaTkRKa1JiOEdaaW5WMDZvZzNJOGpDbGJacGxwUHRVa3BIeGVMdUlZdUY4QmRaWnlobFJlaTNSdjhjcDdLTmJHeDduUjMwZzFyMU05VThwekg3ZXZYd2JGUEs3ZWJETDErdjY5OEwyTmJacHBiaVY1NTVYa2xrWXU3dXhMTXhPeVNUNUpOY2syNG5kNW5YSktGV1JiVUVrbzVmOFl5OEk1Y0dUcE5oZU1rZDJDRHRWQk9wQm9FN1haT3ZjRWp6b2pjb3FwMHN6SHd2UDhBUHNhRmZTS3BsN3l2dlEzdDUrV09HTnMrR3RybXdVTTBWeEVseGJ5cEpGSW9kSFJneXNwR3dRUjVCcnFVN3E2T1phYXdaeUExT1o1YUxxZ2dVQW9CUUNnRkFLQVVBb0JRRnBOVGtTa2NjMDBWdkU5eGNTcEhGR3BkM2RncXFvR3lTVDRBcUcwazJ6M0RDNG51ck0xOTVnY1l5OFhaZ21QcEZoWnM4ZG9BTzdLU055SFlCMjNTRHIyR2g1MlR5MWJWT3FtWFdTeS9KMHRCU0ttbDd6OFVTVi9MeXphd3ZtcytSRjYwemZGQUtBbkhMdm1KTHd4S3VLeXJ2SmlwRzdIdXpXekU5MlVlNmsrVi9xTyt3MWxRMXpwMzJjencvWCtlWFRyYTZoVlF0K1g0dnZyaDFiT1VNMFZ4RWs4RXFTUlNLSFIwWUZXVWpZSUk4Z2l1alRUVjB6bkdtblpvNUFmblVubG9yVUVGYUFVQW9CUUNnRkFVM3FwQlFuNVVKU09PYWFLM2llNHVKVWppalV1N3V3Q3FvR3lTVDRBRlEybGl6MGxkMlJnM21KekVsNG1sYkZZcDNqeFViZHozRFhMQTltWWV5ajJYK3A3NkM4NVhWenFIdVFlSDc2Njh1am9hRlU2N1NQeGZYWFhuQjZyU3lGQUtBVUFvQ1U4SDh3ODF3bklzSmQ3N0hoQ2dzNVpTRlR1VzNHZS9RZXBpVG9hT3pzYjBSdVV0Yk1wbmJPSFQ4YUZmVmJPbDFGNG9MUXhOM2J0bmtzY3I0S3lmQ3k0WUdiY0J4WmdPSm9nMkl5TWNzZ1FPOERmaGxqN0tUdFQzSUJZQXNOcnZ3VFhSU2FtVlVLOHQrM0hyNE9mbTA4NlQrNURiRi9mbGZQTlh4dG1rOEQ2OVp6Q1ZER3BJc1Y2aFFXR3g4NkVXR3g4NkN3NmhRbXhRc2FDeFNvSlBrWi9pM2gvaG1NdGw4akhGSVVMcEF2NHBaT3pFYVVkeHNxUUdPbDM1SXJCUHFaVk9yekg3Y2V2Z3pTcWViUDhBMjRiNHBjTU9kc3MzeHRrbThEQ1BHUE1ETDhYUyttUzFuWUJRQmFSeWtxeDJEdHoyNnpzRFd4b2FHaHZaUE8xVmJNcW5aNExUODZuUlV0Qkxwa25GYUtMVzNybG5iQjJldndSZXRNM2hRQ2dGQUtBVUFvQzZHYVczbFNlQ1Y0NVkyRG82TVF5c0RzRUVlQ0RVcHVGM1JEU2lWbmtUemg3bkZuOFZFTGJMUUpsWWxYU003K25LT3dBMjRCNmgyUGtGaVRzbXJLVHRTYkxWbzF2TDU2K2ZNcTUreXBjeDNsdmQxNHJqeStySzFpZjR6bXh3WGtlbFpMNld5a2VUMDFTNmhLNzhhWXN2VXFqdjVMRFdqdlE3MVp5OXBVOHgydmIxNlpXek5uVkV0WHRmMDZUK0NTMkdXeFdWRWh4ZVN0YndSYTlUMEpsazZONzF2cEoxdlIvc2EzSUprRXp3TlAwZHpUamx4eTdLTk5YMU8zV1E4Q2dPcGY1ZkU0cm8rMDhuYVdmcTdLZXZNc2ZWcnpycUkzNUg5Nnh4eklKZmphWHF6SkJMam1lQk4raUkxaythL0JlTjZsUy9sdlpFbE1iSmF4RnZHOXNHYnBSbDdlUXgzc2EyTzlhY3phVlBMZHIzOU9sOEcxTDJkVVRGZTF2WHB0Y2lBY1FjNHMvbFlqYlltQk1WRXk2ZGtmMUpUc0VIVGtBS080OERxQkd3MVZrL2FrMlpoQitsZlBNdEpHeXBjdDcweDcybkJjT2ZIeXh5NGtEbW1tdUpudUxpVjVaWldMdTdzV1ptSjJTU2U1SlB2VmEyNG5kbG1rb1ZaWkZ0UVNLQVVBb0QvOWs9JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4va3YtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xyXG4gIGNvbmZpZyE6IFRhYmxlQ29uZmlnO1xyXG4gIGdsb2JhbEZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgc2VsZWN0ZWRTaXplOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgdGFtYW5ob1RlbGEhOiBudW1iZXI7XHJcblxyXG4gIC8vbWVudUNvbHVtbnM6IEt2TWVudUl0ZW1bXSA9IFtdO1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjb2x1bW5zOiBUYWJsZUNvbmZpZ0NvbHVtbltdID0gW107XHJcbiAgZGVsZXRlZENvbHVuczogVGFibGVDb25maWdDb2x1bW5bXSA9IFtdO1xyXG5cclxuICBtZW51RmlsdHJvOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2hlY2tib3hDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNob3dGaWx0cm9zQXZhbmNhZG9zOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB0YWJsZURhdGE6IHsgZGF0YTogYW55LCBhY3Rpb25zPzogTWVudUl0ZW1bXSB9W10gPSBbXTtcclxuICBjdXJyRGF0YVNvdXJjZTogYW55W10gPSBbXTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PGFueT47XHJcbiAgQElucHV0KCd0ZW1wbGF0ZXMnKSBfdGVtcGxhdGVzITogYW55O1xyXG5cclxuICBAVmlld0NoaWxkKCd0YWJsZScsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJsZSE6IFRhYmxlO1xyXG4gIGRlbGV0ZWRDb2x1bW5zSW5kZXghOiBhbnlbXTtcclxuXHJcbiAgQElucHV0KCdjb25maWcnKSBzZXQgc2V0Q29uZmlnKHZhbHVlOiBUYWJsZUNvbmZpZykge1xyXG4gICAgdGhpcy5jb25maWcgPSB7XHJcbiAgICAgIGVuYWJsZUNhdGlvbjogdmFsdWUuZW5hYmxlQ2F0aW9uIHx8IHRydWUsXHJcbiAgICAgIGVuYWJsZVNlbGVjdDogdmFsdWUuZW5hYmxlU2VsZWN0IHx8IGZhbHNlLFxyXG4gICAgICBlbmFibGVGaWx0ZXI6IHZhbHVlLmVuYWJsZUZpbHRlciB8fCB0cnVlLFxyXG4gICAgICAuLi52YWx1ZSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLmVuYWJsZUZpbHRlcikge1xyXG4gICAgICB0aGlzLmNvbmZpZy5jb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2xvYmFsRmlsdGVyRmllbGRzLnB1c2goY29sLmZpZWxkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBkZWZhdWx0U29ydEZpZWxkOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBkYXRhU291cmNlOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgdG90YWxSZWNvcmRzITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHBhZ2luYXRvcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcm93c1BlclBhZ2VPcHRpb25zITogbnVtYmVyW107XHJcbiAgQElucHV0KCkgcm93czogbnVtYmVyID0gNTtcclxuICBASW5wdXQoKSBwYWdlTGlua3NPcHRpb25zOiBudW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIHNob3dGaXJzdExhc3RJY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdGFibGVTaXplITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGFwcGx5U3R5bGU6IEZ1bmN0aW9uID0gKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbikgPT4gJyc7XHJcbiAgQElucHV0KCkgZmlsdGVyQ29sdW1uc0J0bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZpbHRyb3NBdmFuY2Fkb3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzY3JvbGxIZWlnaHQ6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGlzVGFibGVTY3JvbGxhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdGFibGVDYXB0YWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHJvd1RyYWNrQnk6IEZ1bmN0aW9uID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcclxuXHJcbiAgQElucHV0KCkgcmVzcG9uc2l2ZUxheW91dDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW1Mb3RlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25QYWdpbmF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG91YmxlQ2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpbHRlckZpZWxkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdHJvc0F2YW5jYWRvc0VtaXQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Td2l0Y2hUYWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21lbnVGaWx0cm9EaXYnKSBtZW51RmlsdHJvRGl2ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdib3Rhb0ZpbHRybycpIGJvdGFvRmlsdHJvITogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcGZDbnBqUGlwZTogQ3BmQ25walBpcGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbGVmb25lUGlwZTogVGVsZWZvbmVQaXBlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmlzUm93U2VsZWN0YWJsZSA9IHRoaXMuaXNSb3dTZWxlY3RhYmxlLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kYXRhU291cmNlICE9PSB0aGlzLmN1cnJEYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5kYXRhU291cmNlPy5tYXAoeCA9PiAoeyBkYXRhOiB4LCBhY3Rpb25zOiB0aGlzLmNvbmZpZy5hY3Rpb25zID8gdGhpcy5jb25maWcuYWN0aW9ucy5tYXAoeSA9PiBtYXBUb01lbnVJdGVtKHksIHgpKSA6IHVuZGVmaW5lZCB9KSk7XHJcbiAgICAgIHRoaXMuY3VyckRhdGFTb3VyY2UgPSBbLi4udGhpcy5kYXRhU291cmNlXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hZGp1c3RUYWJsZVNpemUoKTtcclxuICAgIHRoaXMudGFtYW5ob1RlbGEgPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgIC8vIHRoaXMuY3JpYXJNZW51Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jb25maWcuY29sdW1ucy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmNvbHVtbnMucHVzaChjb2wpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNoZWNrSGlkZUNvbHVtbnMoKTtcclxuICAgIGlmICh0aGlzLmRlZmF1bHRTb3J0RmllbGQgJiYgdGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YgYVt0aGlzLmRlZmF1bHRTb3J0RmllbGRdID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYlt0aGlzLmRlZmF1bHRTb3J0RmllbGRdID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgcmV0dXJuIGFbdGhpcy5kZWZhdWx0U29ydEZpZWxkXS5sb2NhbGVDb21wYXJlKGJbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYVt0aGlzLmRlZmF1bHRTb3J0RmllbGRdID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIGJbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICByZXR1cm4gYVt0aGlzLmRlZmF1bHRTb3J0RmllbGRdID09PSBiW3RoaXMuZGVmYXVsdFNvcnRGaWVsZF0gPyAwIDogKGFbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSA/IDEgOiAtMSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYVt0aGlzLmRlZmF1bHRTb3J0RmllbGRdID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYlt0aGlzLmRlZmF1bHRTb3J0RmllbGRdID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgcmV0dXJuIGFbdGhpcy5kZWZhdWx0U29ydEZpZWxkXSAtIGJbdGhpcy5kZWZhdWx0U29ydEZpZWxkXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIDA7IC8vIE91IG91dHJhIGzDs2dpY2EgZGVwZW5kZW5kbyBkbyBjYXNvXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uV2luZG93UmVzaXplKCkge1xyXG4gICAgdGhpcy5hZGp1c3RUYWJsZVNpemUoKTtcclxuICAgIHRoaXMudGFtYW5ob1RlbGEgPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhY3RpdmVJdGVtKHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5vbkFjdGl2ZUl0ZW0uZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhY3RpdmVJdGVtTG90ZShyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMub25BY3RpdmVJdGVtTG90ZS5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3JFeGVjdXRlPFQ+KGFjdGlvbjogVmFsdWVPckZuPFQ+LCBkYXRhOiBhbnkpOiBUIHtcclxuICAgIHJldHVybiBnZXRPckV4ZWN1dGUoYWN0aW9uLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGlzQm9vbGVhbkZpZWxkKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiByb3dEYXRhW2NvbC5maWVsZF0gPT0gJ2Jvb2xlYW4nO1xyXG4gIH1cclxuXHJcbiAgaXNDaGlwRmllbGQoY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbC5maWVsZFR5cGUgPT0gJ2NoaXAnO1xyXG4gIH1cclxuXHJcbiAgaXNJbWFnZUZpZWxkKGNvbDogVGFibGVDb25maWdDb2x1bW4pOiBib29sZWFuIHtcclxuICAgIGxldCByZXRvcm5vID0gY29sLmZpZWxkVHlwZSAmJiBjb2wuZmllbGRUeXBlID09PSAnaW1hZ2UnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgcmV0dXJuIHJldG9ybm87XHJcbiAgfVxyXG5cclxuICBpc1N3aXRjaEZpZWxkKGNvbDogVGFibGVDb25maWdDb2x1bW4pOiBib29sZWFuIHtcclxuICAgIGxldCByZXRvcm5vID0gY29sLmZpZWxkVHlwZSAmJiBjb2wuZmllbGRUeXBlID09PSAnc3dpdGNoJyA/IHRydWUgOiBmYWxzZTtcclxuICAgIHJldHVybiByZXRvcm5vO1xyXG4gIH1cclxuXHJcbiAgaXNSb3dTZWxlY3RhYmxlKGV2ZW50OiBhbnkpIHtcclxuICAgIHJldHVybiAhdGhpcy5pc0Rpc2FibGVkQ2hlY2tib3goZXZlbnQuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBpc0Rpc2FibGVkQ2hlY2tib3gocm93RGF0YTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGlzYWJsZUNvbnRyb2xDaGVja2JveEZ1bmN0aW9uXHJcbiAgICAgID8gdGhpcy5jb25maWcuZGlzYWJsZUNvbnRyb2xDaGVja2JveEZ1bmN0aW9uKHJvd0RhdGEpXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBsb2FkSW1hZ2Uocm93RGF0YTogYW55LCBjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKTogc3RyaW5nIHtcclxuICAgIC8qXHJcbiAgICAgIE5vc3NhIGNvbHVuYSBkZSBpbWFnZW0gdHJhYmFsaGEgY29tIHN0cmluZ3MgZG8gdGlwbzogYmFzZTY0IG91IHVybFxyXG4gICAgKi9cclxuICAgIGxldCByZXRvcm5vID0gYGRhdGE6aW1hZ2UvanBnO2Jhc2U2NCwgJHsgaW1nRGVmYXVsdCB9YDtcclxuICAgIGlmIChyb3dEYXRhICYmIGNvbCAmJiByb3dEYXRhW2NvbC5maWVsZF0gJiYgcm93RGF0YVtjb2wuZmllbGRdICE9PSAnJykge1xyXG4gICAgICBpZiAocm93RGF0YVtjb2wuZmllbGRdLmluY2x1ZGVzKCdodHRwJykpIHJldG9ybm8gPSByb3dEYXRhW2NvbC5maWVsZF07XHJcbiAgICAgIGVsc2UgcmV0b3JubyA9IGBkYXRhOmltYWdlL2pwZztiYXNlNjQsICR7IHJvd0RhdGFbY29sLmZpZWxkXSB9YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0b3JubztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkdsb2JhbEZpbHRlcih0YWJsZTogVGFibGUsIGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5maWx0ZXJGaWVsZC5lbWl0KChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xyXG4gICAgdGFibGUuZmlsdGVyR2xvYmFsKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsICdjb250YWlucycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhZ2luYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICBsZXQgcGFnaW5hSW5pY2lhbCA9IChldmVudD8uZmlyc3QgPiAwID8gZXZlbnQuZmlyc3QgLyBldmVudC5yb3dzIDogZXZlbnQuZmlyc3QpICsgMTtcclxuICAgICAgbGV0IHRlcm1vUGVzcXVpc2EgPSAnJztcclxuICAgICAgbGV0IG9yZGVuYWNhbyA9ICcnO1xyXG5cclxuICAgICAgaWYgKGV2ZW50Lmdsb2JhbEZpbHRlcikgdGVybW9QZXNxdWlzYSA9IGV2ZW50Lmdsb2JhbEZpbHRlcjtcclxuXHJcbiAgICAgIGlmIChldmVudC5zb3J0RmllbGQpXHJcbiAgICAgICAgb3JkZW5hY2FvID0gYCR7IGV2ZW50LnNvcnRGaWVsZCB9ICR7IGV2ZW50LnNvcnRPcmRlciA9PT0gMSA/ICdBU0MnIDogJ0RFU0MnIH1gO1xyXG5cclxuICAgICAgY29uc3Qgb2JqZXRvOiBUYWJsZVBhZ2luYXRlID0ge1xyXG4gICAgICAgIHBhZ2luYUluaWNpYWw6IHBhZ2luYUluaWNpYWwsXHJcbiAgICAgICAgdGFtYW5ob1BhZ2luYTogZXZlbnQucm93cyxcclxuICAgICAgICB0ZXJtb1Blc3F1aXNhOiB0ZXJtb1Blc3F1aXNhLFxyXG4gICAgICAgIG9yZGVuYWNhbzogb3JkZW5hY2FvLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5vblBhZ2luYXRlLmVtaXQob2JqZXRvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdGlvbkNoYW5nZSh2YWx1ZSA9IFtdKSB7XHJcbiAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuUm93Q2xhc3Mocm93RGF0YTogYW55LCBjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKSB7XHJcbiAgICBsZXQgdmFsdWUgPSByb3dEYXRhW2NvbC5maWVsZF07XHJcbiAgICBsZXQgcm93Q2xhc3M6IHN0cmluZztcclxuXHJcbiAgICB0aGlzLnRhYmxlU2l6ZSA+IDgwMCA/IChyb3dDbGFzcyA9ICd0ZXh0LWJhc2UnKSA6IChyb3dDbGFzcyA9ICd0ZXh0LXNtJyk7XHJcblxyXG4gICAgaWYgKGNvbC5leHBpcmVkRGF0ZSA9PSB0cnVlKSB7XHJcbiAgICAgIG5ldyBEYXRlKHZhbHVlKSA8IG5ldyBEYXRlKClcclxuICAgICAgICA/IChyb3dDbGFzcyA9IHJvd0NsYXNzICsgJyB0ZXh0LXJlZC00MDAgZm9udC1zZW1pYm9sZCcpXHJcbiAgICAgICAgOiAnJztcclxuICAgIH1cclxuICAgIHJldHVybiByb3dDbGFzcztcclxuICB9XHJcblxyXG4gIGV4cGlyZWRGaWxlKHJvd0RhdGE6IGFueSwgY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbHVlID0gcm93RGF0YVsnZGF0YXZlbmNpbWVudG8nXTtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSkgPCBuZXcgRGF0ZSgpICYmIGNvbC5maWVsZCA9PSAnYXJlYSc7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhOiBhbnksIGNvbDogVGFibGVDb25maWdDb2x1bW4pIHtcclxuICAgIGxldCB2YWx1ZSA9IHJvd0RhdGFbY29sLmZpZWxkXTtcclxuXHJcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICBpZiAoIWNvbC5waXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzd2l0Y2ggKGNvbC5waXBlKSB7XHJcbiAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdkZC9NTS95eXl5Jyk7XHJcbiAgICAgICAgY2FzZSAnZGF0ZU1vbnRoWWVhcic6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdNTS95eXl5Jyk7XHJcbiAgICAgICAgY2FzZSAnZGVjaW1hbCc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0odmFsdWUsICcxLjItMicsICdwdC1CUicpO1xyXG4gICAgICAgIGNhc2UgJ2NwZmNucGonOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3BmQ25walBpcGUudHJhbnNmb3JtKHZhbHVlKTtcclxuICAgICAgICBjYXNlICd0ZWxlZm9uZSc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy50ZWxlZm9uZVBpcGUudHJhbnNmb3JtKHZhbHVlKTtcclxuICAgICAgICBjYXNlICdtb25leSc6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRhclZhbG9yKHZhbHVlKTtcclxuICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcclxuICAgICAgICAgIHJldHVybiBgJHsgdmFsdWUgfSAlYDtcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRhclZhbG9yKHZhbG9yOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCdwdC1CUicsIHtcclxuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXHJcbiAgICAgIGN1cnJlbmN5OiAnQlJMJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbG9yKTtcclxuICB9XHJcblxyXG4gIGFkanVzdFRhYmxlU2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLnRhYmxlU2l6ZSA8IDgwMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU2l6ZSA9ICdwLWRhdGF0YWJsZS1zbSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU2l6ZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG91YmxlQ2xpY2soZTogYW55LCByb3dEYXRhOiBhbnkpIHtcclxuICAgIGxldCBldmVudERvdWJsZUNsaWNrID0geyBldmVudDogZSwgcm93RGF0YTogcm93RGF0YSB9O1xyXG5cclxuICAgIGxldCBhcnJheTogc3RyaW5nW10gPSBbXTtcclxuICAgIGUudGFyZ2V0LmNsYXNzTGlzdC5mb3JFYWNoKCh4OiBhbnkpID0+IGFycmF5LnB1c2goeCkpO1xyXG5cclxuICAgIHRoaXMuZG91YmxlQ2xpY2tFdmVudC5lbWl0KGV2ZW50RG91YmxlQ2xpY2spO1xyXG4gIH1cclxuXHJcbiAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wuY2VudHJhbGl6ZSkge1xyXG4gICAgICByZXR1cm4gJ3RleHQtYWxpZ246IGNlbnRlcic7XHJcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgYWxpZ25Db2x1bmFzKGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wuYWxpZ24pIHtcclxuICAgICAgcmV0dXJuIGB0ZXh0LWFsaWduOiAkeyBjb2wuYWxpZ24gfWA7XHJcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgYWxpZ25Db2x1bmFzSGVhZGVyKGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wuYWxpZ24pIHtcclxuICAgICAgaWYgKGNvbC5hbGlnbiA9PSAncmlnaHQnKSByZXR1cm4gJ2p1c3RpZnktY29udGVudDogZW5kJztcclxuICAgICAgZWxzZSByZXR1cm4gJyc7XHJcbiAgICB9IGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgcmV0b3JuYXJSb3cocm93RGF0YTogYW55LCBjb2w6IGFueSwgZmllbGQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBfcm93YWN0aW9uID0gdGhpcy5jb25maWcucm93cyA/IHRoaXMuY29uZmlnLnJvd3NbY29sLmZpZWxkXSA6IG51bGw7XHJcbiAgICBjb25zdCBfZmllbGQ6IHN0cmluZyA9XHJcbiAgICAgIF9yb3dhY3Rpb24gJiYgX3Jvd2FjdGlvbltmaWVsZF1cclxuICAgICAgICA/IF9yb3dhY3Rpb25bZmllbGRdLmNvbnN0cnVjdG9yID09PSBGdW5jdGlvblxyXG4gICAgICAgICAgPyBfcm93YWN0aW9uW2ZpZWxkXS5hcHBseSh0aGlzLCBbcm93RGF0YV0pXHJcbiAgICAgICAgICA6IF9yb3dhY3Rpb25bZmllbGRdXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgcmV0dXJuIF9maWVsZDtcclxuICB9XHJcblxyXG4gIGV4aWJpckNhbXBvKGZpZWxkOiBhbnksIHJvd0RhdGE6IGFueSkge1xyXG4gICAgbGV0IHZpc2libGUgPSBmaWVsZC52aXNpYmxlID8gZmllbGQudmlzaWJsZShyb3dEYXRhKSA6IHRydWU7XHJcblxyXG4gICAgcmV0dXJuIHZpc2libGU7XHJcbiAgfVxyXG5cclxuICByZXR1cm5DbGFzc0NoaXAocm93RGF0YTogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYGNoaXAtc3R5bGUgdy1hdXRvIGJvcmRlci1yb3VuZC0yeGwgcC0yIHRleHQtJHsgdGhpcy5yZXRvcm5hclJvdyhcclxuICAgICAgcm93RGF0YSxcclxuICAgICAgY29sLFxyXG4gICAgICAnc3R5bGVjaGlwJ1xyXG4gICAgKSB9IGJvcmRlci0keyB0aGlzLnJldG9ybmFyUm93KHJvd0RhdGEsIGNvbCwgJ3N0eWxlY2hpcCcpIH1gO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuQ2xhc3NJY29uKHJvd0RhdGE6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucmV0b3JuYXJSb3cocm93RGF0YSwgY29sLCAnaWNvbnJvdycpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuVG9vbHRpcEljb24ocm93RGF0YTogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXRvcm5hclJvdyhyb3dEYXRhLCBjb2wsICd0b29sdGlwaWNvbnJvdycpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuVG9vbHRpcFJvdyhyb3dEYXRhOiBhbnksIGNvbDogYW55KTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnJldG9ybmFyUm93KHJvd0RhdGEsIGNvbCwgJ3Rvb2x0aXByb3cnKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUNvbHVtbihmaWVsZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaW5kZXg6IG51bWJlcjtcclxuXHJcbiAgICBsZXQgY29sdW1uOiBUYWJsZUNvbmZpZ0NvbHVtbiB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlnLmNvbHVtbnMuZmluZChcclxuICAgICAgeCA9PiB4LmZpZWxkID09IGZpZWxkXHJcbiAgICApO1xyXG4gICAgaWYgKGNvbHVtbikge1xyXG4gICAgICBpbmRleCA9IHRoaXMuY29uZmlnLmNvbHVtbnMuaW5kZXhPZihjb2x1bW4pO1xyXG4gICAgICB0aGlzLmNvbmZpZy5jb2x1bW5zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuZGVsZXRlZENvbHVucy5wdXNoKGNvbHVtbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRDb2x1bW4oZmllbGQ6IHN0cmluZykge1xyXG4gICAgbGV0IGluZGV4OiBudW1iZXI7XHJcblxyXG4gICAgbGV0IGNvbHVtbjogVGFibGVDb25maWdDb2x1bW4gfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgIHggPT4geC5maWVsZCA9PSBmaWVsZFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIWNvbHVtbikge1xyXG4gICAgICBsZXQgZGVsZXRlZENvbHVtbjogVGFibGVDb25maWdDb2x1bW4gfCB1bmRlZmluZWQgPVxyXG4gICAgICAgIHRoaXMuZGVsZXRlZENvbHVucy5maW5kKHggPT4geC5maWVsZCA9PSBmaWVsZCk7XHJcblxyXG4gICAgICBpZiAoZGVsZXRlZENvbHVtbiAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpbmRleCA9IHRoaXMuZGVsZXRlZENvbHVucy5pbmRleE9mKGRlbGV0ZWRDb2x1bW4pO1xyXG4gICAgICAgIHRoaXMuZGVsZXRlZENvbHVucy5zbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgdGhpcy5jb25maWcuY29sdW1ucy5wdXNoKGRlbGV0ZWRDb2x1bW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaW5hbWljQ29sdW1uU2V0KGU6IGFueSwgY29sOiBhbnkpIHtcclxuICAgIGNvbC5jaGVja2VkID0gZS5jaGVja2VkO1xyXG4gICAgaWYgKGUuY2hlY2tlZCkgdGhpcy5hZGRDb2x1bW4oY29sLmZpZWxkKTtcclxuICAgIGVsc2UgdGhpcy5kZWxldGVDb2x1bW4oY29sLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoY29sLnBvc2l0aW9uKSB0aGlzLmNvbmZpZy5jb2x1bW5zLnNvcnQodGhpcy5zb3J0QnlQb3NpdGlvbigpKTtcclxuICB9XHJcblxyXG4gIC8vIGFicmlyTWVudUZpbHRybyhlOiBhbnkpIHtcclxuICAvLyAgIHRoaXMubWVudUZpbHRybyA9ICF0aGlzLm1lbnVGaWx0cm87XHJcbiAgLy8gICB0aGlzLmNoZWNrYm94Q2xpY2tlZCA9IGZhbHNlO1xyXG5cclxuICAvLyAgIGlmICh0aGlzLnRhbWFuaG9UZWxhIDwgNzAwKVxyXG4gIC8vICAgICB0aGlzLnN0eWxlU2V0dGVyKCdsZWZ0JywgKHRoaXMuYm90YW9GaWx0cm8ubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0IC0gMjg4KSArICdweCcpXHJcbiAgLy8gICBlbHNlXHJcbiAgLy8gICAgIHRoaXMuc3R5bGVTZXR0ZXIoJ2xlZnQnLCAodGhpcy5ib3Rhb0ZpbHRyby5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgKyA0MCkgKyAncHgnKVxyXG5cclxuICAvLyAgIHRoaXMuc3R5bGVTZXR0ZXIoJ3RvcCcsIHRoaXMuYm90YW9GaWx0cm8ubmF0aXZlRWxlbWVudC5vZmZzZXRUb3AgKyAncHgnKVxyXG4gIC8vICAgdGhpcy5zdHlsZVNldHRlcigndmlzaWJpbGl0eScsIHRoaXMubWVudUZpbHRybyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nKVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gZmVjaGFyTWVudUZpbHRybygpIHtcclxuICAvLyAgIHRoaXMubWVudUZpbHRybyA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5jaGVja2JveENsaWNrZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8gICB0aGlzLnN0eWxlU2V0dGVyKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpXHJcbiAgLy8gfVxyXG5cclxuICAvLyBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXHJcbiAgLy8gb25Fc2NhcGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAvLyAgIGlmICh0aGlzLmZpbHRlckNvbHVtbnNCdG4gPT0gdHJ1ZSAmJiB0aGlzLm1lbnVGaWx0cm8gPT0gdHJ1ZSkge1xyXG4gIC8vICAgICB0aGlzLmZlY2hhck1lbnVGaWx0cm8oKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICAvLyBvbkNsaWNrRXZlbnQoZXZlbnQ6IGFueSkge1xyXG4gIC8vICAgaWYgKHRoaXMuZmlsdGVyQ29sdW1uc0J0biA9PSB0cnVlICYmIHRoaXMubWVudUZpbHRybyA9PSB0cnVlKSB7XHJcbiAgLy8gICAgIGNvbnN0IGNsaWNrZWRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gIC8vICAgICBjb25zdCBtZW51RmlsdHJvRGl2ID1cclxuICAvLyAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjbWVudUZpbHRyb0RpdicpO1xyXG4gIC8vICAgICBjb25zdCBib3Rhb0ZpbHRybyA9XHJcbiAgLy8gICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI2JvdGFvRmlsdHJvJyk7XHJcbiAgLy8gICAgIGNvbnN0IGlzQ2hlY2tib3hDbGlja2VkID1cclxuICAvLyAgICAgICBjbGlja2VkRWxlbWVudC5jbGFzc0xpc3QudG9TdHJpbmcoKS5pbmNsdWRlcygncC1jaGVja2JveCcpIHx8XHJcbiAgLy8gICAgICAgZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC50b1N0cmluZygpID09ICcnO1xyXG4gIC8vICAgICBjb25zdCBpc0luc2lkZU1lbnUgPVxyXG4gIC8vICAgICAgIG1lbnVGaWx0cm9EaXY/LmNvbnRhaW5zKGNsaWNrZWRFbGVtZW50KSB8fFxyXG4gIC8vICAgICAgIGJvdGFvRmlsdHJvPy5jb250YWlucyhjbGlja2VkRWxlbWVudCkgfHxcclxuICAvLyAgICAgICBpc0NoZWNrYm94Q2xpY2tlZDtcclxuXHJcbiAgLy8gICAgIGlmICghaXNJbnNpZGVNZW51KSB0aGlzLmZlY2hhck1lbnVGaWx0cm8oKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGNoZWNrTWVudUZpbHRybyhjb2w6IGFueSkge1xyXG4gICAgbGV0IGRlbGV0ZWRDb2x1bW46IFRhYmxlQ29uZmlnQ29sdW1uIHwgdW5kZWZpbmVkID0gdGhpcy5kZWxldGVkQ29sdW5zLmZpbmQoXHJcbiAgICAgICh4OiBUYWJsZUNvbmZpZ0NvbHVtbikgPT4geC5maWVsZCA9PSBjb2wuZmllbGRcclxuICAgICk7XHJcbiAgICBpZiAoZGVsZXRlZENvbHVtbikgY29sLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgIGVsc2UgY29sLmNoZWNrZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc29ydEJ5UG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24oZWxlbTE6IGFueSwgZWxlbTI6IGFueSkge1xyXG4gICAgICBpZiAoZWxlbTEucG9zaXRpb24gPCBlbGVtMi5wb3NpdGlvbikge1xyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtMS5wb3NpdGlvbiA+IGVsZW0yLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBkaW5hbWljRGlzYWJsZUNvbHVtbihjb2w6IFRhYmxlQ29uZmlnQ29sdW1uKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoY29sLmZpeGVkQ29sdW1uKSByZXR1cm4gY29sLmZpeGVkQ29sdW1uO1xyXG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjaGVja0hpZGVDb2x1bW5zKCkge1xyXG4gICAgbGV0IGhpZGVDb2x1bW5zQ29uZmlnID0gdGhpcy5jb2x1bW5zLmZpbHRlcihcclxuICAgICAgKGNvbCkgPT4gY29sLmhpZGVDb2x1bW4gPT0gdHJ1ZVxyXG4gICAgKTtcclxuICAgIGhpZGVDb2x1bW5zQ29uZmlnLmZvckVhY2goKGNvbCkgPT4gdGhpcy5kZWxldGVDb2x1bW4oY29sLmZpZWxkKSk7XHJcbiAgfVxyXG5cclxuICBnZXRDdXN0b21UZW1wbGF0ZSh0ZW1wbGF0ZW5hbWU6IHN0cmluZyk6IFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlc1t0ZW1wbGF0ZW5hbWVdO1xyXG4gIH1cclxuXHJcbiAgLy8gc3R5bGVTZXR0ZXIoc3R5bGU6IHN0cmluZywgZGF0YTogc3RyaW5nKSB7XHJcbiAgLy8gICB0aGlzLnJlbmRlcmVyPy5zZXRTdHlsZShcclxuICAvLyAgICAgdGhpcy5tZW51RmlsdHJvRGl2Lm5hdGl2ZUVsZW1lbnQsXHJcbiAgLy8gICAgIHN0eWxlLFxyXG4gIC8vICAgICBkYXRhXHJcbiAgLy8gICApO1xyXG4gIC8vIH1cclxuXHJcbiAgZmlsdHJvc0F2YW5jYWRvc0V2ZW50KGU6IGFueSkge1xyXG4gICAgdGhpcy5zaG93RmlsdHJvc0F2YW5jYWRvcyA9ICF0aGlzLnNob3dGaWx0cm9zQXZhbmNhZG9zO1xyXG4gICAgdGhpcy5maWx0cm9zQXZhbmNhZG9zRW1pdC5lbWl0KHRoaXMuc2hvd0ZpbHRyb3NBdmFuY2Fkb3MpO1xyXG4gIH1cclxuXHJcbiAgb25Td2l0Y2hDaGFuZ2UoZXN0YWRvOiBhbnksIHJvd0RhdGE6IGJvb2xlYW4sIGNvbDogYW55KSB7XHJcbiAgICB0aGlzLm9uU3dpdGNoVGFibGVDaGFuZ2UuZW1pdCh7XHJcbiAgICAgIGVzdGFkbzogZXN0YWRvLFxyXG4gICAgICByb3dEYXRhOiByb3dEYXRhLFxyXG4gICAgICBjb2w6IGNvbFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICBAaWYgKGZpbHRyb3NBdmFuY2Fkb3MpIHtcclxuICA8cC1wYW5lbFxyXG4gICAgaGVhZGVyPVwiRmlsdHJvcyBhdmFuw6dhZG9zXCJcclxuICAgIFt0b2dnbGVhYmxlXT1cInRydWVcIlxyXG4gICAgW2NvbGxhcHNlZF09XCJ0cnVlXCJcclxuICAgIChjb2xsYXBzZWRDaGFuZ2UpPVwiY29sbGFwc2VkID0gIWNvbGxhcHNlZFwiXHJcbiAgICBbc3R5bGVdPVwieyAnbWFyZ2luLWJvdHRvbSc6ICcycHgnIH1cIlxyXG4gID5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJpY29uc1wiPlxyXG4gICAgICBAaWYgKCFjb2xsYXBzZWQpIHtcclxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1maWx0ZXJcIj48L2k+XHJcbiAgICAgIH1cclxuICAgICAgPCEtLSDDjWNvbmUgcXVhbmRvIG8gcGFpbmVsIGVzdMOhIGFiZXJ0byAtLT5cclxuICAgICAgQGlmIChjb2xsYXBzZWQpIHtcclxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1taW51c1wiPjwvaT5cclxuICAgICAgfVxyXG4gICAgICA8IS0tIMONY29uZSBxdWFuZG8gbyBwYWluZWwgZXN0w6EgZmVjaGFkbyAtLT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgPC9wLXBhbmVsPlxyXG4gIH1cclxuXHJcbiAgQGlmIChjb25maWcpIHtcclxuICA8cC10YWJsZVxyXG4gICAgI2R0XHJcbiAgICBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc21cIlxyXG4gICAgW3ZhbHVlXT1cInRhYmxlRGF0YVwiXHJcbiAgICBbKHNlbGVjdGlvbildPVwic2VsZWN0ZWRJdGVtc1wiXHJcbiAgICBbcm93U2VsZWN0YWJsZV09XCJpc1Jvd1NlbGVjdGFibGVcIlxyXG4gICAgW2NvbHVtbnNdPVwiY29uZmlnLmNvbHVtbnNcIlxyXG4gICAgW2dsb2JhbEZpbHRlckZpZWxkc109XCJnbG9iYWxGaWx0ZXJGaWVsZHNcIlxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvclwiXHJcbiAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cInJvd3NQZXJQYWdlT3B0aW9uc1wiXHJcbiAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxyXG4gICAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIntmaXJzdH0gLSB7bGFzdH0gZGUge3RvdGFsUmVjb3Jkc31cIlxyXG4gICAgW3Jvd0hvdmVyXT1cInRydWVcIlxyXG4gICAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG4gICAgW2xhenldPVwiY29uZmlnLmxhenlcIlxyXG4gICAgKG9uTGF6eUxvYWQpPVwicGFnaW5hdGUoJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgIHJvd0dyb3VwTW9kZT1cInJvd3NwYW5cIlxyXG4gICAgW2dyb3VwUm93c0J5XT1cImNvbmZpZy5maWVsZEdyb3VwXCJcclxuICAgIFtzaG93Rmlyc3RMYXN0SWNvbl09XCJzaG93Rmlyc3RMYXN0SWNvblwiXHJcbiAgICBbcGFnZUxpbmtzXT1cInBhZ2VMaW5rc09wdGlvbnNcIlxyXG4gICAgW3Jlc3BvbnNpdmVdPVwidHJ1ZVwiXHJcbiAgICBbcmVzcG9uc2l2ZUxheW91dF09XCJyZXNwb25zaXZlTGF5b3V0ID8gJ3N0YWNrJyA6ICcnXCJcclxuICAgIFtzY3JvbGxhYmxlXT1cImlzVGFibGVTY3JvbGxhYmxlXCJcclxuICAgIFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0XCJcclxuICAgIFtyb3dUcmFja0J5XT1cInJvd1RyYWNrQnkgXCJcclxuICA+XHJcbiAgICBAaWYgKGNvbmZpZy5lbmFibGVDYXRpb24pIHtcclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ3JpZCBmb3JtZ3JpZCBwLWZsdWlkIGNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgQGlmIChjb25maWcudGl0bGUpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIGZvbnQtYm9sZCBteS0zXCI+XHJcbiAgICAgICAgICAgIHt7IGNvbmZpZy50aXRsZSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGNvbmZpZy5zdWJ0aXRsZSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbWItNCBmb250LW1lZGl1bVwiPlxyXG4gICAgICAgICAgICB7eyBjb25maWcuc3VidGl0bGUgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgbWQ6Y29sLTYgbGc6Y29sLTQge3tcclxuICAgICAgICAgICAgdGFtYW5ob1RlbGEgPCA3NjggPyAnY29sLTEwJyA6ICdjb2wtMTInXHJcbiAgICAgICAgICB9fSBtdC0xIG1iLTIgXCI+XHJcbiAgICAgICAgICBAaWYgKGNvbmZpZy5lbmFibGVGaWx0ZXIpIHtcclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcblxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgcEF1dG9Gb2N1c1xyXG4gICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJvbkdsb2JhbEZpbHRlcihkdCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQZXNxdWlzYXIuLi5cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaC0ycmVtXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICNtZW51RmlsdHJvRGl2XHJcbiAgICAgICAgICBpZCA9IFwibWVudUZpbHRyb0RpdlwiXHJcbiAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCInaGlkZGVuJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHotNCBiZy1ncmF5LTIwMFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGlja0V2ZW50KCRldmVudClcIlxyXG4gICAgICAgID4gLS0+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAjbWVudUZpbHRyb0RpdlxyXG4gICAgICAgICAgICBpZD1cIm1lbnVGaWx0cm9EaXZcIlxyXG4gICAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCInaGlkZGVuJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgei00IGJnLWdyYXktMjAwIG1lbnUtY29sdW1ucy1maWx0cm9cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8cC1jYXJkPlxyXG4gICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayBjb2wpIHtcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiB0ZXh0LW1lZGl1bSB3LTE1cmVtXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBjaGVja01lbnVGaWx0cm8oY29sKSB9fVxyXG4gICAgICAgICAgICAgICAgQGlmICghZGluYW1pY0Rpc2FibGVDb2x1bW4oY29sKSkge1xyXG4gICAgICAgICAgICAgICAgPHAtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgI2ZpbHRlckNvbHVtbnNcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbC5oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbYmluYXJ5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJkaW5hbWljQ29sdW1uU2V0KCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgPjwvcC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvcC1jYXJkPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGNvbC0xIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc0xvdGU7IHRyYWNrIGk7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRucy1vcHRpb25zXCJcclxuICAgICAgICAgICAgW3N0eWxlXT1cInsgJ21hcmdpbi1yaWdodCc6ICc3cHgnIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBAaWYgKChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgfHwgYWN0aW9uLnNob3dBY29lc0xvdGUpICYmXHJcbiAgICAgICAgICAgICAgICBleGliaXJDYW1wbyhhY3Rpb24sIHRoaXMuYWN0aW9uKSkge1xyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgaWQ9XCJhY3Rpb25Mb3RlQnRuc1wiXHJcbiAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uTG90ZUJ0bnMgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXRleHRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgIGFjdGlvbj8uY29tbWFuZCgpOyBhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogIzFEQTc1MFwiXHJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImdldE9yRXhlY3V0ZShhY3Rpb24udG9vbHRpcCwgc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiZ2V0T3JFeGVjdXRlKGFjdGlvbi50b29sdGlwLCBzZWxlY3RlZEl0ZW1zKT8ubGVuZ3RoID8/IDAgPiA3ICYmIGNvbmZpZy5hY3Rpb25zTG90ZSAmJiBpID09IGNvbmZpZy5hY3Rpb25zTG90ZS5sZW5ndGggLSAxICA/ICdsZWZ0JyA6ICdib3R0b20nXCIgXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdldE9yRXhlY3V0ZShhY3Rpb24uZGlzYWJsZWQsIHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtZC0yMlwiIHN0eWxlPVwiY29sb3I6IHdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRPckV4ZWN1dGUoYWN0aW9uLmljb24sIHNlbGVjdGVkSXRlbXMpIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIH1cclxuXHJcbiAgICA8bmctdGVtcGxhdGVcclxuICAgICAgcFRlbXBsYXRlPVwiaGVhZGVyXCJcclxuICAgICAgbGV0LWNvbHVtbnNcclxuICAgID5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIEBpZiAoY29uZmlnLmVuYWJsZVNlbGVjdCkge1xyXG4gICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiA0cmVtOyBib3JkZXItbGVmdDogc29saWQgNHB4IHRyYW5zcGFyZW50XCI+XHJcbiAgICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94IChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiPjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBbcFNvcnRhYmxlQ29sdW1uXT0nXCJkYXRhLlwiICsgY29sLmZpZWxkJ1xyXG4gICAgICAgICAgW3BTb3J0YWJsZUNvbHVtbkRpc2FibGVkXT1cImNvbC5zb3J0YWJsZSA9PT0gZmFsc2VcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICBjbGFzcz1cInRleHQtc21cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgIGNlbnRyYWxpemFyQ29sdW5hcyhjb2wpICYmIGFsaWduQ29sdW5hc0hlYWRlcihjb2wpID09ICcnXHJcbiAgICAgICAgICAgICAgICA/ICdmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXInXHJcbiAgICAgICAgICAgICAgICA6ICdmbGV4IGZsZXgtcm93J1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiYWxpZ25Db2x1bmFzSGVhZGVyKGNvbClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3Bhbj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICBAaWYgKGNvbC5zb3J0YWJsZSkge1xyXG4gICAgICAgICAgICA8cC1zb3J0SWNvblxyXG4gICAgICAgICAgICAgIFtmaWVsZF09J1wiZGF0YS5cIiArIGNvbC5maWVsZCdcclxuICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTBweFwiXHJcbiAgICAgICAgICAgID48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGlmIChjb2wuaGVhZGVyVG9vbHRpcCkge1xyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImNvbC5oZWFkZXJUb29sdGlwXCJcclxuICAgICAgICAgICAgPmluZm88L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoY29uZmlnLmFjdGlvbnMgJiYgY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgIH1cclxuICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgIHBUZW1wbGF0ZT1cImJvZHlcIlxyXG4gICAgICBsZXQtcm93RGF0YVxyXG4gICAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxyXG4gICAgICBsZXQtcm93Z3JvdXA9XCJyb3dncm91cFwiXHJcbiAgICAgIGxldC1yb3dzcGFuPVwicm93c3BhblwiXHJcbiAgICA+XHJcbiAgICAgIDx0ciAoZGJsY2xpY2spPVwiZG91YmxlQ2xpY2soJGV2ZW50LCByb3dEYXRhLmRhdGEpXCIgW25nQ2xhc3NdPVwieyAnY2FwaXRhbGl6ZSc6IHRhYmxlQ2FwdGFsaXplZCB9XCI+XHJcbiAgICAgICAgQGlmIChjb25maWcuZW5hYmxlU2VsZWN0KSB7XHJcbiAgICAgICAgPHRkIFtzdHlsZV09XCJhcHBseVN0eWxlKHJvd0RhdGEuZGF0YSwgeyBmaWVsZDogJ2NoZWNrLWJveCcsIGhlYWRlcjogJycgfSlcIj5cclxuICAgICAgICAgIDwhLS08cC10YWJsZUNoZWNrYm94ICpuZ0lmPVwiaXNWaXNpYmxlQ2hlY2tib3gocm93RGF0YS5kYXRhKVwiLS0+XHJcbiAgICAgICAgICA8cC10YWJsZUNoZWNrYm94XHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dEYXRhLmRhdGFcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZENoZWNrYm94KHJvd0RhdGEuZGF0YSlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgPjwvcC10YWJsZUNoZWNrYm94PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIEBpZiAocm93Z3JvdXAgJiYgIWNvbC50ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgPHRkIFxyXG4gICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cInJvd2dyb3VwICYmIGNvbC5ncm91cGVkID8gcm93c3BhbiA6IG51bGxcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInJvd1RhYmxlXCJcclxuICAgICAgICAgICAgW3N0eWxlXT1cIlxyXG4gICAgICAgICAgICAgIGFwcGx5U3R5bGUocm93RGF0YS5kYXRhLCBjb2wpICtcclxuICAgICAgICAgICAgICBjZW50cmFsaXphckNvbHVuYXMoY29sKSArXHJcbiAgICAgICAgICAgICAgYWxpZ25Db2x1bmFzKGNvbClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW3BUb29sdGlwXT1cInJldHVyblRvb2x0aXBSb3cocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5oZWFkZXIgfX06PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cIiFpc0Jvb2xlYW5GaWVsZChyb3dEYXRhLmRhdGEsIGNvbCk7IGVsc2UgYm9vbGVhbkZpZWxkXCJcclxuICAgICAgICAgICAgICBbY2xhc3NdPVwicmV0dXJuUm93Q2xhc3Mocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIEBpZiAoIWlzQ2hpcEZpZWxkKGNvbCkgJiYgIWNvbC5pY29uRmllbGQgJiYgIWlzSW1hZ2VGaWVsZChjb2wpKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGNvbC5pY29uKSB7XHJcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiY29sLmljb24gKyAnIG1yLTInXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAge3sgdHJhbnNmb3JtVmFsdWUocm93RGF0YS5kYXRhLCBjb2wpIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgQGlmIChpc0NoaXBGaWVsZChjb2wpICYmICFjb2wuaWNvbkZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJyZXR1cm5DbGFzc0NoaXAocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJldHVyblRvb2x0aXBJY29uKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgdHJhbnNmb3JtVmFsdWUocm93RGF0YS5kYXRhLCBjb2wpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgQGlmIChpc0ltYWdlRmllbGQoY29sKSkge1xyXG4gICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwibG9hZEltYWdlKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBAaWYgKGNvbC5pY29uRmllbGQpIHtcclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAnbWF0ZXJpYWwtaWNvbnMnOiBjb2wuaW5kSWNvbk1hdGVyaWFsLFxyXG4gICAgICAgICAgICAgICAgJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbXItMic6ICFjb2wuaW5kSWNvbk1hdGVyaWFsXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJldHVyblRvb2x0aXBJY29uKHJvd0RhdGEuZGF0YSwgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyByZXR1cm5DbGFzc0ljb24ocm93RGF0YS5kYXRhLCBjb2wpIH19XHJcbiAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNib29sZWFuRmllbGQ+XHJcbiAgICAgICAgICAgICAgQGlmICghY29sLmljb25GaWVsZCAmJiAhaXNTd2l0Y2hGaWVsZChjb2wpKSB7XHJcbiAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwicm93RGF0YS5kYXRhW2NvbC5maWVsZF0gPyAndGV4dC1ncmVlbi01MDAnIDogJ3RleHQtcmVkLTUwMCdcIlxyXG4gICAgICAgICAgICAgID48c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5cclxuICAgICAgICAgICAgICAgIHt7IHJvd0RhdGEuZGF0YVtjb2wuZmllbGRdID8gXCJjaGVja1wiIDogXCJjbG9zZVwiIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIEBpZiAoaXNTd2l0Y2hGaWVsZChjb2wpKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cInJldHVyblJvd0NsYXNzKHJvd0RhdGEuZGF0YSwgY29sKVwiPlxyXG4gICAgICAgICAgICAgICAgPGt2LXN3aXRjaFxyXG4gICAgICAgICAgICAgICAgICAob25Td2l0Y2hDaGFuZ2UpPVwib25Td2l0Y2hDaGFuZ2UoJGV2ZW50LCByb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sPy5vbmx5UmVhZEZpZWxkID8/IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbc3dpdGNoVmFsdWVdPVwidHJhbnNmb3JtVmFsdWUocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwva3Ytc3dpdGNoPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBAaWYgKCFyb3dncm91cCAmJiAhY29sLmdyb3VwZWQgJiYgIWNvbC50ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJcclxuICAgICAgICAgICAgICBhcHBseVN0eWxlKHJvd0RhdGEuZGF0YSwgY29sKSArXHJcbiAgICAgICAgICAgICAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbCkgK1xyXG4gICAgICAgICAgICAgIGFsaWduQ29sdW5hcyhjb2wpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicm93VGFibGVcIlxyXG4gICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0dXJuVG9vbHRpcFJvdyhyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmhlYWRlciB9fTo8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWlzQm9vbGVhbkZpZWxkKHJvd0RhdGEuZGF0YSwgY29sKTsgZWxzZSBib29sZWFuRmllbGRcIlxyXG4gICAgICAgICAgICAgIFtjbGFzc109XCJyZXR1cm5Sb3dDbGFzcyhyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgQGlmICghaXNDaGlwRmllbGQoY29sKSAmJiAhY29sLmljb25GaWVsZCAmJiAhaXNJbWFnZUZpZWxkKGNvbCkpIHtcclxuICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgIEBpZiAoY29sLmljb24pIHtcclxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJjb2wuaWNvbiArICcgbXItMidcIj48L2k+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB7eyB0cmFuc2Zvcm1WYWx1ZShyb3dEYXRhLmRhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBAaWYgKGlzQ2hpcEZpZWxkKGNvbCkgJiYgIWNvbC5pY29uRmllbGQpIHtcclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInJldHVybkNsYXNzQ2hpcChyb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0dXJuVG9vbHRpcEljb24ocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgdHJhbnNmb3JtVmFsdWUocm93RGF0YS5kYXRhLCBjb2wpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgQGlmIChpc0ltYWdlRmllbGQoY29sKSkge1xyXG4gICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWFnZVwiIFtzcmNdPVwibG9hZEltYWdlKHJvd0RhdGEuZGF0YSwgY29sKVwiIC8+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBpZiAoY29sLmljb25GaWVsZCkge1xyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICdtYXRlcmlhbC1pY29ucyc6IGNvbC5pbmRJY29uTWF0ZXJpYWwsXHJcbiAgICAgICAgICAgICAgICAnbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtci0yJzogIWNvbC5pbmRJY29uTWF0ZXJpYWxcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0dXJuVG9vbHRpcEljb24ocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IHJldHVybkNsYXNzSWNvbihyb3dEYXRhLmRhdGEsIGNvbCkgfX1cclxuICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Jvb2xlYW5GaWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgQGlmICghY29sLmljb25GaWVsZCAmJiAhaXNTd2l0Y2hGaWVsZChjb2wpKSB7XHJcbiAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwicm93RGF0YS5kYXRhW2NvbC5maWVsZF0gPyAndGV4dC1ncmVlbi01MDAnIDogJ3RleHQtcmVkLTUwMCdcIlxyXG4gICAgICAgICAgICAgID48c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5cclxuICAgICAgICAgICAgICAgIHt7IHJvd0RhdGEuZGF0YVtjb2wuZmllbGRdID8gXCJjaGVja1wiIDogXCJjbG9zZVwiIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIEBpZiAoaXNTd2l0Y2hGaWVsZChjb2wpKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cInJldHVyblJvd0NsYXNzKHJvd0RhdGEuZGF0YSwgY29sKVwiPlxyXG4gICAgICAgICAgICAgICAgPGt2LXN3aXRjaFxyXG4gICAgICAgICAgICAgICAgICAob25Td2l0Y2hDaGFuZ2UpPVwib25Td2l0Y2hDaGFuZ2UoJGV2ZW50LCByb3dEYXRhLmRhdGEsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sPy5vbmx5UmVhZEZpZWxkID8/IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbc3dpdGNoVmFsdWVdPVwidHJhbnNmb3JtVmFsdWUocm93RGF0YS5kYXRhLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwva3Ytc3dpdGNoPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBAaWYgKGNvbC50ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJcclxuICAgICAgICAgICAgICBhcHBseVN0eWxlKHJvd0RhdGEuZGF0YSwgY29sKSArXHJcbiAgICAgICAgICAgICAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbCkgK1xyXG4gICAgICAgICAgICAgIGFsaWduQ29sdW5hcyhjb2wpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicm93VGFibGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmhlYWRlciB9fTo8L3NwYW4+XHJcbiAgICAgICAgICAgIEBpZiAoZ2V0Q3VzdG9tVGVtcGxhdGUoY29sLnRlbXBsYXRlLm5hbWUpKSB7XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSlcIlxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93RGF0YS5kYXRhIH1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoY29uZmlnLmFjdGlvbnMgJiYgY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIDx0ZCBbc3R5bGVdPVwiYXBwbHlTdHlsZShyb3dEYXRhLmRhdGEsIHsgZmllbGQ6ICdidG5zLW9wdGlvbnMnLCBoZWFkZXI6ICcnIH0pXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIHctZnVsbFwiPlxyXG4gICAgICAgICAgICA8IS0tIDxidXR0b25cclxuICAgICAgICAgICAgICBpZD1cIm1vcmVWZXJ0QnRuXCJcclxuICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25CdG5zIHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KTsgYWN0aXZlSXRlbShyb3dEYXRhLmRhdGEpXCJcclxuICAgICAgICAgICAgPiAtLT5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgY3Vyc29yLXBvaW50ZXIgaWNvbi1tb3JlLWhvcml6XCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMjBweFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudCk7IGFjdGl2ZUl0ZW0ocm93RGF0YS5kYXRhKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBtb3JlX2hvcml6XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPCEtLSA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgICA8cC10aWVyZWRNZW51XHJcbiAgICAgICAgICAgICAgI21lbnVcclxuICAgICAgICAgICAgICBbcG9wdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW21vZGVsXT1cInJvd0RhdGEuYWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgPjwvcC10aWVyZWRNZW51PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICB9XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIlxyXG4gICAgICBsZXQtY29sdW1uc1xyXG4gICAgPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoICsgMlwiXHJcbiAgICAgICAgICBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgYm9yZGVyLXJhZGl1czogMTBweCAhaW1wb3J0YW50XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtbWVkaXVtIG0tMFwiPk5lbmh1bSByZWdpc3RybyBlbmNvbnRyYWRvPC9wPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10YWJsZT5cclxuICB9XHJcbjwvZGl2PlxyXG5cclxuPGxpbmtcclxuICByZWw9XCJzdHlsZXNoZWV0XCJcclxuICBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9pY29uP2ZhbWlseT1NYXRlcmlhbCtJY29uc1wiXHJcbi8+XHJcblxyXG48bGlua1xyXG4gIHJlbD1cInN0eWxlc2hlZXRcIlxyXG4gIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU1hdGVyaWFsK1N5bWJvbHMrT3V0bGluZWQ6b3Bzeix3Z2h0LEZJTEwsR1JBREA0OCw0MDAsMCwwXCJcclxuLz5cclxuIl19
@@ -4862,7 +4862,7 @@ class KvTableComponent {
4862
4862
  }
4863
4863
  ngDoCheck() {
4864
4864
  if (this.dataSource !== this.currDataSource) {
4865
- this.tableData = this.dataSource.map(x => ({ data: x, actions: this.config.actions ? this.config.actions.map(y => mapToMenuItem(y, x)) : undefined }));
4865
+ this.tableData = this.dataSource?.map(x => ({ data: x, actions: this.config.actions ? this.config.actions.map(y => mapToMenuItem(y, x)) : undefined }));
4866
4866
  this.currDataSource = [...this.dataSource];
4867
4867
  }
4868
4868
  }