@sumaris-net/ngx-components 2.4.149 → 2.4.151
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/src/app/core/form/buttons/form-buttons-bar.component.mjs +1 -1
- package/esm2020/src/app/core/menu/menu.component.mjs +10 -6
- package/esm2020/src/app/core/menu/menu.service.mjs +7 -1
- package/esm2020/src/app/social/message/message.service.mjs +8 -6
- package/esm2020/src/app/social/user-event/user-event.module.mjs +6 -23
- package/fesm2015/sumaris-net.ngx-components.mjs +31 -32
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +27 -32
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +1 -1
- package/src/app/core/menu/menu.component.d.ts +6 -2
- package/src/app/core/menu/menu.service.d.ts +2 -0
- package/src/app/social/user-event/user-event.module.d.ts +1 -1
- package/src/assets/manifest.json +1 -1
|
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
104
104
|
}], onSaveAndNext: [{
|
|
105
105
|
type: Output
|
|
106
106
|
}] } });
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idXR0b25zLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9idXR0b25zL2Zvcm0tYnV0dG9ucy1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vYnV0dG9ucy9mb3JtLWJ1dHRvbnMtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUMsTUFBTSxFQUFNLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQUkzQyxNQUFNLE9BQWdCLG1CQUFtQjtDQUt4QztBQVVELE1BQU0sT0FBTyx1QkFBdUI7SUE0QmxDLFlBQVksT0FBZ0IsRUFDbkIsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQTNCbEIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWxDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsb0JBQWUsR0FBcUIsUUFBUSxDQUFDO1FBRTdDLGFBQVEsR0FBRyxrQkFBa0IsQ0FBQztRQUM5QixlQUFVLEdBQUcsa0JBQWtCLENBQUM7UUFDaEMsYUFBUSxHQUFHLGlCQUFpQixDQUFDO1FBRTdCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXZC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QUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SG90a2V5c30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2hvdGtleXMvaG90a2V5cy5zZXJ2aWNlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TWVudVNlcnZpY2V9IGZyb20gJy4uLy4uL21lbnUvbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7UHJlZGVmaW5lZENvbG9yc30gZnJvbSAnQGlvbmljL2NvcmUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRm9ybUJ1dHRvbnNCYXJUb2tlbiB7XG4gIGFic3RyYWN0IG9uQ2FuY2VsOiBFdmVudEVtaXR0ZXI8RXZlbnQ+O1xuICBhYnN0cmFjdCBvblNhdmU6IEV2ZW50RW1pdHRlcjxFdmVudD47XG4gIGFic3RyYWN0IG9uTmV4dDogRXZlbnRFbWl0dGVyPEV2ZW50PjtcbiAgYWJzdHJhY3Qgb25CYWNrOiBFdmVudEVtaXR0ZXI8RXZlbnQ+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybS1idXR0b25zLWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWJ1dHRvbnMtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1idXR0b25zLWJhci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogRm9ybUJ1dHRvbnNCYXJUb2tlbiwgdXNlRXhpc3Rpbmc6IEZvcm1CdXR0b25zQmFyQ29tcG9uZW50fVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtQnV0dG9uc0JhckNvbXBvbmVudCBpbXBsZW1lbnRzIEZvcm1CdXR0b25zQmFyVG9rZW4sIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkQ2FuY2VsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsYXNzTGlzdDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNhdmVCdXR0b25Db2xvcjogUHJlZGVmaW5lZENvbG9ycyA9ICdkYW5nZXInO1xuXG4gIEBJbnB1dCgpIGJhY2tUZXh0ID0gJ0NPTU1PTi5CVE5fQ0xPU0UnO1xuICBASW5wdXQoKSBjYW5jZWxUZXh0ID0gJ0NPTU1PTi5CVE5fUkVTRVQnO1xuICBASW5wdXQoKSBuZXh0VGV4dCA9ICdDT01NT04uQlROX05FWFQnO1xuXG4gIEBJbnB1dCgpIHNob3dCYWNrID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0NhbmNlbCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dOZXh0ID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1NhdmUgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93U2F2ZUFuZENsb3NlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dTYXZlQW5kTmV4dCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25OZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uQmFjayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblNhdmVBbmRDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvblNhdmVBbmROZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBjb25zdHJ1Y3Rvcihob3RrZXlzOiBIb3RrZXlzLFxuICAgIHB1YmxpYyBtZW51OiBNZW51U2VydmljZVxuICAgICkge1xuXG4gICAgLy8gQ3RybCtTXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIGhvdGtleXMuYWRkU2hvcnRjdXQoe2tleXM6ICdjb250cm9sLnMnLCBkZXNjcmlwdGlvbjogJ0NPTU1PTi5CVE5fU0FWRSd9KVxuICAgICAgICAucGlwZShmaWx0ZXIoZSA9PiAhdGhpcy5kaXNhYmxlZCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB0aGlzLm9uU2F2ZS5lbWl0KGV2ZW50KSkpO1xuXG4gICAgLy8gQ3RybCtaXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIGhvdGtleXMuYWRkU2hvcnRjdXQoe2tleXM6ICdjb250cm9sLnonLCBkZXNjcmlwdGlvbjogJ0NPTU1PTi5CVE5fUkVTRVQnfSlcbiAgICAgICAgLnBpcGUoZmlsdGVyKGUgPT4gIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZGlzYWJsZWRDYW5jZWwpKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbkNhbmNlbC5lbWl0KGV2ZW50KSlcbiAgICApO1xuXG4gICAgLy8gRXNjYXBlXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIGhvdGtleXMuYWRkU2hvcnRjdXQoe2tleXM6ICdlc2NhcGUnLCBkZXNjcmlwdGlvbjogJ0NPTU1PTi5CVE5fQ0xPU0UnLCBwcmV2ZW50RGVmYXVsdDogZmFsc2V9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoZSA9PiAhZS5kZWZhdWx0UHJldmVudGVkKSxcbiAgICAgICAgICAvL3RhcCgoKSA9PiBjb25zb2xlLmRlYnVnKCdbZm9ybS1idXR0b25zLWJhcl0gRW1pdCBiYWNrIGV2ZW50IChrZXlkb3duLmVzY2FwZSknKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbkJhY2suZW1pdChldmVudCkpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25DYW5jZWwuY29tcGxldGUoKTtcbiAgICB0aGlzLm9uU2F2ZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25OZXh0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vbkJhY2suY29tcGxldGUoKTtcbiAgICB0aGlzLm9uU2F2ZUFuZE5leHQuY29tcGxldGUoKTtcbiAgICB0aGlzLm9uU2F2ZUFuZENsb3NlLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIlxuPGlvbi10b29sYmFyIFtjbGFzc109XCJjbGFzc0xpc3RcIj5cbiAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiIG5vd3JhcD5cbiAgICA8IS0tIHNob3cgbWVudSBidXR0b24gLS0+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIiBjbGFzcz1cImhpZGRlbi14cyBoaWRkZW4tc21cIj5cbiAgICAgIDxpb24tbWVudS10b2dnbGU+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgW3RpdGxlXT1cIidDT01NT04uQlROX1NIT1dfTUVOVScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZVNwbGl0UGFuZVdoZW4oKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj48c3Bhbj4mI3hiYjs8L3NwYW4+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2lvbi1tZW51LXRvZ2dsZT5cbiAgICA8L2lvbi1jb2w+XG5cbiAgICA8aW9uLWNvbCBjbGFzcz1cImFwcC1mb3JtLWJ1dHRvbnMtYmFyLWNvbnRlbnRcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2lvbi1jb2w+XG5cbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiIGNsYXNzPVwiYXBwLWZvcm0tYnV0dG9ucy1iYXItYnV0dG9uc1wiPlxuXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1lbmRdXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICA8IS0tIGJhY2sgLS0+XG4gICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQmFjay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uQmFjay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93QmFjayAmJiBvbkJhY2sub2JzZXJ2ZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWNrXCI+XG4gICAgICAgIDxpb24tbGFiZWw+e3tiYWNrVGV4dHx0cmFuc2xhdGV9fTwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8IS0tIGNhbmNlbCAtLT5cbiAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dDYW5jZWxcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25DYW5jZWwuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZENhbmNlbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNhbmNlbFwiPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cInJlZnJlc2hcIj48L2lvbi1pY29uPlxuICAgICAgICA8aW9uLWxhYmVsPnt7Y2FuY2VsVGV4dHx0cmFuc2xhdGV9fTwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8IS0tIG5leHQgLS0+XG4gICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwic29saWRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93TmV4dCAmJiBvbk5leHQub2JzZXJ2ZWRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmV4dC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uTmV4dC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXh0XCI+XG4gICAgICAgIDxpb24tbGFiZWw+e3tuZXh0VGV4dHx0cmFuc2xhdGV9fTwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJhcnJvdy1mb3J3YXJkXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPCEtLSBzYXZlIC0tPlxuICAgICAgPGlvbi1idXR0b24gW2ZpbGxdPVwiZGlzYWJsZWQgPyAnY2xlYXInIDogJ3NvbGlkJ1wiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dTYXZlICYmIG9uU2F2ZS5vYnNlcnZlZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TYXZlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25TYXZlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwic2F2ZUJ1dHRvbkNvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNhdmVcIj5cbiAgICAgICAgPGlvbi1sYWJlbCBbaW5uZXJIVE1MXT1cIidDT01NT04uQlROX1NBVkVfV0lUSF9TSE9SVENVVCd8dHJhbnNsYXRlXCIgW3RpdGxlXT1cIidDT01NT04uQlROX1NBVkVfV0lUSF9TSE9SVENVVF9IRUxQJ3x0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPCEtLSBzYXZlIGFuZCBuZXh0IC0tPlxuICAgICAgPGlvbi1idXR0b24gW2ZpbGxdPVwiZGlzYWJsZWQgPyAnY2xlYXInIDogJ3NvbGlkJ1wiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dTYXZlQW5kTmV4dCAmJiBvblNhdmVBbmROZXh0Lm9ic2VydmVkXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNhdmVBbmROZXh0LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25TYXZlQW5kTmV4dC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInNhdmVCdXR0b25Db2xvclwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXZlXCI+XG4gICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fU0FWRV9BTkRfTkVYVDwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8IS0tIHNhdmUgYW5kIGNsb3NlIC0tPlxuICAgICAgPGlvbi1idXR0b24gW2ZpbGxdPVwiZGlzYWJsZWQgPyAnY2xlYXInIDogJ3NvbGlkJ1wiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dTYXZlQW5kQ2xvc2UgJiYgb25TYXZlQW5kQ2xvc2Uub2JzZXJ2ZWRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZUFuZENsb3NlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25TYXZlQW5kQ2xvc2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJzYXZlQnV0dG9uQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2F2ZVwiPlxuICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX1NBVkVfQU5EX0NMT1NFPC9pb24tbGFiZWw+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG48L2lvbi10b29sYmFyPlxuIl19
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idXR0b25zLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9idXR0b25zL2Zvcm0tYnV0dG9ucy1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vYnV0dG9ucy9mb3JtLWJ1dHRvbnMtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQUl4QyxNQUFNLE9BQWdCLG1CQUFtQjtDQUt4QztBQVVELE1BQU0sT0FBTyx1QkFBdUI7SUE0QmxDLFlBQVksT0FBZ0IsRUFDaEIsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQTNCckIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWxDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsb0JBQWUsR0FBcUIsUUFBUSxDQUFDO1FBRTdDLGFBQVEsR0FBRyxrQkFBa0IsQ0FBQztRQUM5QixlQUFVLEdBQUcsa0JBQWtCLENBQUM7UUFDaEMsYUFBUSxHQUFHLGlCQUFpQixDQUFDO1FBRTdCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXZC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QUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSG90a2V5cyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9ob3RrZXlzL2hvdGtleXMuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbWVudS9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlZGVmaW5lZENvbG9ycyB9IGZyb20gJ0Bpb25pYy9jb3JlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvcm1CdXR0b25zQmFyVG9rZW4ge1xuICBhYnN0cmFjdCBvbkNhbmNlbDogRXZlbnRFbWl0dGVyPEV2ZW50PjtcbiAgYWJzdHJhY3Qgb25TYXZlOiBFdmVudEVtaXR0ZXI8RXZlbnQ+O1xuICBhYnN0cmFjdCBvbk5leHQ6IEV2ZW50RW1pdHRlcjxFdmVudD47XG4gIGFic3RyYWN0IG9uQmFjazogRXZlbnRFbWl0dGVyPEV2ZW50Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZvcm0tYnV0dG9ucy1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1idXR0b25zLWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tYnV0dG9ucy1iYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge3Byb3ZpZGU6IEZvcm1CdXR0b25zQmFyVG9rZW4sIHVzZUV4aXN0aW5nOiBGb3JtQnV0dG9uc0JhckNvbXBvbmVudH1cbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUJ1dHRvbnNCYXJDb21wb25lbnQgaW1wbGVtZW50cyBGb3JtQnV0dG9uc0JhclRva2VuLCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZENhbmNlbCA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGFzc0xpc3Q6IHN0cmluZztcblxuICBASW5wdXQoKSBzYXZlQnV0dG9uQ29sb3I6IFByZWRlZmluZWRDb2xvcnMgPSAnZGFuZ2VyJztcblxuICBASW5wdXQoKSBiYWNrVGV4dCA9ICdDT01NT04uQlROX0NMT1NFJztcbiAgQElucHV0KCkgY2FuY2VsVGV4dCA9ICdDT01NT04uQlROX1JFU0VUJztcbiAgQElucHV0KCkgbmV4dFRleHQgPSAnQ09NTU9OLkJUTl9ORVhUJztcblxuICBASW5wdXQoKSBzaG93QmFjayA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dDYW5jZWwgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93TmV4dCA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dTYXZlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1NhdmVBbmRDbG9zZSA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93U2F2ZUFuZE5leHQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIG9uTmV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvbkJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25TYXZlQW5kQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgb25TYXZlQW5kTmV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoaG90a2V5czogSG90a2V5cyxcbiAgICBwcm90ZWN0ZWQgbWVudTogTWVudVNlcnZpY2VcbiAgICApIHtcblxuICAgIC8vIEN0cmwrU1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICBob3RrZXlzLmFkZFNob3J0Y3V0KHtrZXlzOiAnY29udHJvbC5zJywgZGVzY3JpcHRpb246ICdDT01NT04uQlROX1NBVkUnfSlcbiAgICAgICAgLnBpcGUoZmlsdGVyKGUgPT4gIXRoaXMuZGlzYWJsZWQpKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vblNhdmUuZW1pdChldmVudCkpKTtcblxuICAgIC8vIEN0cmwrWlxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICBob3RrZXlzLmFkZFNob3J0Y3V0KHtrZXlzOiAnY29udHJvbC56JywgZGVzY3JpcHRpb246ICdDT01NT04uQlROX1JFU0VUJ30pXG4gICAgICAgIC5waXBlKGZpbHRlcihlID0+ICF0aGlzLmRpc2FibGVkICYmICF0aGlzLmRpc2FibGVkQ2FuY2VsKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMub25DYW5jZWwuZW1pdChldmVudCkpXG4gICAgKTtcblxuICAgIC8vIEVzY2FwZVxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICBob3RrZXlzLmFkZFNob3J0Y3V0KHtrZXlzOiAnZXNjYXBlJywgZGVzY3JpcHRpb246ICdDT01NT04uQlROX0NMT1NFJywgcHJldmVudERlZmF1bHQ6IGZhbHNlfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKGUgPT4gIWUuZGVmYXVsdFByZXZlbnRlZCksXG4gICAgICAgICAgLy90YXAoKCkgPT4gY29uc29sZS5kZWJ1ZygnW2Zvcm0tYnV0dG9ucy1iYXJdIEVtaXQgYmFjayBldmVudCAoa2V5ZG93bi5lc2NhcGUpJykpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMub25CYWNrLmVtaXQoZXZlbnQpKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uQ2FuY2VsLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNhdmUuY29tcGxldGUoKTtcbiAgICB0aGlzLm9uTmV4dC5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25CYWNrLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNhdmVBbmROZXh0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNhdmVBbmRDbG9zZS5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCJcbjxpb24tdG9vbGJhciBbY2xhc3NdPVwiY2xhc3NMaXN0XCI+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiBub3dyYXA+XG4gICAgPCEtLSBzaG93IG1lbnUgYnV0dG9uIC0tPlxuICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCIgY2xhc3M9XCJoaWRkZW4teHMgaGlkZGVuLXNtXCI+XG4gICAgICA8aW9uLW1lbnUtdG9nZ2xlPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgIFt0aXRsZV09XCInQ09NTU9OLkJUTl9TSE9XX01FTlUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwibWVudS50b2dnbGVTcGxpdFBhbmVXaGVuKClcIj5cbiAgICAgICAgICA8bWF0LWljb24+PHNwYW4+JiN4YmI7PC9zcGFuPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9pb24tbWVudS10b2dnbGU+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPGlvbi1jb2wgY2xhc3M9XCJhcHAtZm9ybS1idXR0b25zLWJhci1jb250ZW50XCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIiBjbGFzcz1cImFwcC1mb3JtLWJ1dHRvbnMtYmFyLWJ1dHRvbnNcIj5cblxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9ZW5kXVwiPjwvbmctY29udGVudD5cblxuICAgICAgPCEtLSBiYWNrIC0tPlxuICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJhY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvbkJhY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0JhY2sgJiYgb25CYWNrLm9ic2VydmVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFja1wiPlxuICAgICAgICA8aW9uLWxhYmVsPnt7YmFja1RleHR8dHJhbnNsYXRlfX08L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPCEtLSBjYW5jZWwgLS0+XG4gICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93Q2FuY2VsXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNhbmNlbC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uQ2FuY2VsLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRDYW5jZWxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYW5jZWxcIj5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJyZWZyZXNoXCI+PC9pb24taWNvbj5cbiAgICAgICAgPGlvbi1sYWJlbD57e2NhbmNlbFRleHR8dHJhbnNsYXRlfX08L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPCEtLSBuZXh0IC0tPlxuICAgICAgPGlvbi1idXR0b24gZmlsbD1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd05leHQgJiYgb25OZXh0Lm9ic2VydmVkXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5leHQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJvbk5leHQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmV4dFwiPlxuICAgICAgICA8aW9uLWxhYmVsPnt7bmV4dFRleHR8dHJhbnNsYXRlfX08L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwiYXJyb3ctZm9yd2FyZFwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgIDwhLS0gc2F2ZSAtLT5cbiAgICAgIDxpb24tYnV0dG9uIFtmaWxsXT1cImRpc2FibGVkID8gJ2NsZWFyJyA6ICdzb2xpZCdcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93U2F2ZSAmJiBvblNhdmUub2JzZXJ2ZWRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uU2F2ZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInNhdmVCdXR0b25Db2xvclwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYXZlXCI+XG4gICAgICAgIDxpb24tbGFiZWwgW2lubmVySFRNTF09XCInQ09NTU9OLkJUTl9TQVZFX1dJVEhfU0hPUlRDVVQnfHRyYW5zbGF0ZVwiIFt0aXRsZV09XCInQ09NTU9OLkJUTl9TQVZFX1dJVEhfU0hPUlRDVVRfSEVMUCd8dHJhbnNsYXRlXCI+PC9pb24tbGFiZWw+XG4gICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgIDwhLS0gc2F2ZSBhbmQgbmV4dCAtLT5cbiAgICAgIDxpb24tYnV0dG9uIFtmaWxsXT1cImRpc2FibGVkID8gJ2NsZWFyJyA6ICdzb2xpZCdcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93U2F2ZUFuZE5leHQgJiYgb25TYXZlQW5kTmV4dC5vYnNlcnZlZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TYXZlQW5kTmV4dC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uU2F2ZUFuZE5leHQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJzYXZlQnV0dG9uQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2F2ZVwiPlxuICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX1NBVkVfQU5EX05FWFQ8L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPCEtLSBzYXZlIGFuZCBjbG9zZSAtLT5cbiAgICAgIDxpb24tYnV0dG9uIFtmaWxsXT1cImRpc2FibGVkID8gJ2NsZWFyJyA6ICdzb2xpZCdcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93U2F2ZUFuZENsb3NlICYmIG9uU2F2ZUFuZENsb3NlLm9ic2VydmVkXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNhdmVBbmRDbG9zZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9uU2F2ZUFuZENsb3NlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwic2F2ZUJ1dHRvbkNvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNhdmVcIj5cbiAgICAgICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+Q09NTU9OLkJUTl9TQVZFX0FORF9DTE9TRTwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuPC9pb24tdG9vbGJhcj5cbiJdfQ==
|
|
@@ -60,7 +60,7 @@ export class MenuComponent {
|
|
|
60
60
|
this._subscription.add(this.menuService.opened
|
|
61
61
|
// Avoid duplicated events
|
|
62
62
|
.pipe(distinctUntilChanged())
|
|
63
|
-
.subscribe((value) => (value ? this.open() : this.close())));
|
|
63
|
+
.subscribe((value) => (value ? this.open({ emitEvent: false }) : this.close({ emitEvent: false }))));
|
|
64
64
|
// TODO : Find a more reliable way to do this :
|
|
65
65
|
// Must be donne after menuService subscription :
|
|
66
66
|
// - In MenuService.ngOnStart accountChanges change will be emitted before the service is ready
|
|
@@ -110,25 +110,29 @@ export class MenuComponent {
|
|
|
110
110
|
await this.close();
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
-
async open() {
|
|
113
|
+
async open(opts) {
|
|
114
114
|
console.debug('[menu] Checking open event...');
|
|
115
115
|
const opened = await this.menu.isOpen(this.menuId);
|
|
116
116
|
if (!opened) {
|
|
117
117
|
console.debug('[menu] Opening menu');
|
|
118
118
|
await this.menu.open(this.menuId);
|
|
119
119
|
// Propagate to service
|
|
120
|
-
|
|
120
|
+
if (!opts || opts.emitEvent !== false) {
|
|
121
|
+
this.menuService._markAsOpened();
|
|
122
|
+
}
|
|
121
123
|
}
|
|
122
124
|
return true;
|
|
123
125
|
}
|
|
124
|
-
async close() {
|
|
126
|
+
async close(opts) {
|
|
125
127
|
console.debug('[menu] Checking close event...');
|
|
126
128
|
const opened = await this.menu.isOpen(this.menuId);
|
|
127
129
|
if (opened) {
|
|
128
130
|
console.debug('[menu] Closing menu');
|
|
129
131
|
await this.menu.close(this.menuId);
|
|
130
132
|
// Propagate to service
|
|
131
|
-
|
|
133
|
+
if (!opts || opts.emitEvent !== false) {
|
|
134
|
+
this.menuService._markAsClosed();
|
|
135
|
+
}
|
|
132
136
|
}
|
|
133
137
|
return true;
|
|
134
138
|
}
|
|
@@ -235,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
235
239
|
type: ViewChild,
|
|
236
240
|
args: ['splitPane', { static: true }]
|
|
237
241
|
}] } });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWxJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxzQkFBc0IsRUFBa0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVc5RCxNQUFNLE9BQU8sYUFBYTtJQXFCeEIsWUFDWSxlQUFnQyxFQUNoQyxjQUE4QixFQUM5QixhQUE0QixFQUM1QixJQUFvQixFQUNwQixTQUEwQixFQUMxQixlQUFnQyxFQUNoQyxTQUEyQixFQUMzQixFQUFxQixFQUNyQixXQUF3QixFQUN4QixNQUFjLEVBQ08sV0FBd0IsRUFDakMsS0FBcUIsQ0FBQywyQkFBMkI7O1FBWDdELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFD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QUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7MEdBM05VLGFBQWEsMFRBZ0NkLFdBQVc7OEZBaENWLGFBQWEsMFVDekIxQiwwMVBBOExBLDJuV0R4S2MsQ0FBQyxtQkFBbUIsQ0FBQzsyRkFHdEIsYUFBYTtrQkFQekIsU0FBUzsrQkFDRSxVQUFVLGNBR1IsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFDaEIsdUJBQXVCLENBQUMsTUFBTTs7MEJBa0M1QyxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzRDQWhDRixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVvQyxTQUFTO3NCQUFsRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIElvblNwbGl0UGFuZSwgTWVudUNvbnRyb2xsZXIsIE1vZGFsQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuaW1wb3J0IHsgQWNjb3VudCB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2FjY291bnQubW9kZWwnO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBmYWRlSW5TbG93QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21hdGVyaWFsL21hdGVyaWFsLmFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IERFRkFVTFRfTUVOVV9TSE9XX1dIRU4sIE1lbnVTZXJ2aWNlLCBTcGxpdFBhbmVTaG93V2hlbiB9IGZyb20gJy4vbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IElNZW51SXRlbSwgTWVudUl0ZW0gfSBmcm9tICcuL21lbnUubW9kZWwnO1xuaW1wb3J0IHsgZmlyc3ROb3ROaWxQcm9taXNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL29ic2VydmFibGVzJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUnhTdHJhdGVneU5hbWVzIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvY2RrL3JlbmRlci1zdHJhdGVnaWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJ21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZW51LmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtmYWRlSW5TbG93QW5pbWF0aW9uXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBpZCA9ICdtZW51JztcbiAgQElucHV0KCkgbWVudUlkID0gJ2xlZnQnO1xuICBASW5wdXQoKSBzaWRlID0gJ2xlZnQnO1xuICBASW5wdXQoKSBjb250ZW50SWQgPSAnbWVudS1jb250ZW50JztcbiAgQElucHV0KCkgbG9nbzogc3RyaW5nO1xuICBASW5wdXQoKSBhcHBOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwcFZlcnNpb246IHN0cmluZyA9IHRoaXMuZW52aXJvbm1lbnQudmVyc2lvbjtcbiAgQElucHV0KCkgcnhTdHJhdGVneTogUnhTdHJhdGVneU5hbWVzID0gJ25vcm1hbCc7XG5cbiAgQFZpZXdDaGlsZCgnc3BsaXRQYW5lJywgeyBzdGF0aWM6IHRydWUgfSkgc3BsaXRQYW5lOiBJb25TcGxpdFBhbmU7XG5cbiAgbG9hZGluZyA9IHRydWU7XG4gIGlzTG9naW4gPSBmYWxzZTtcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgYWNjb3VudEF2YXRhcjogc3RyaW5nO1xuICBhY2NvdW50RW1haWw6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZWJ1ZzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBwbGF0Zm9ybVNlcnZpY2U6IFBsYXRmb3JtU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBtZW51OiBNZW51Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUgLy8gTW9kYWwgZWRpdG9yIGdpdmUgJ251bGwnXG4gICkge1xuICAgIHRoaXMuX2RlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNwbGl0UGFuZS53aGVuID0gYXdhaXQgZmlyc3ROb3ROaWxQcm9taXNlKHRoaXMubWVudVNlcnZpY2Uuc3BsaXRQYW5lV2hlbik7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5tZW51U2VydmljZS5hY2NvdW50Q2hhbmdlcy5zdWJzY3JpYmUoKGFjY291bnQpID0+IHtcbiAgICAgICAgaWYgKGFjY291bnQpIHRoaXMub25Mb2dpbihhY2NvdW50KTtcbiAgICAgICAgZWxzZSB0aGlzLm9uTG9nb3V0KHRydWUpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIHRvIG1lbnUgc2VydmljZSBldmVudFxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQodGhpcy5tZW51U2VydmljZS5zcGxpdFBhbmVXaGVuLnN1YnNjcmliZSgodmFsdWUpID0+IHRoaXMuc2V0U3BsaXRQYW5lV2hlbih2YWx1ZSkpKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHRoaXMubWVudVNlcnZpY2UuZW5hYmxlZC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLmVuYWJsZSh2YWx1ZSkpKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5tZW51U2VydmljZS5vcGVuZWRcbiAgICAgICAgLy8gQXZvaWQgZHVwbGljYXRlZCBldmVudHNcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+ICh2YWx1ZSA/IHRoaXMub3BlbigpIDogdGhpcy5jbG9zZSgpKSlcbiAgICApO1xuXG4gICAgLy8gVE9ETyA6IEZpbmQgYSBtb3JlIHJlbGlhYmxlIHdheSB0byBkbyB0aGlzIDpcbiAgICAvLyAgICBNdXN0IGJlIGRvbm5lIGFmdGVyIG1lbnVTZXJ2aWNlIHN1YnNjcmlwdGlvbiA6XG4gICAgLy8gICAgLSBJbiBNZW51U2VydmljZS5uZ09uU3RhcnQgYWNjb3VudENoYW5nZXMgY2hhbmdlIHdpbGwgYmUgZW1pdHRlZCBiZWZvcmUgdGhlIHNlcnZpY2UgaXMgcmVhZHlcbiAgICAvLyAgICAtIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBzdWJqZWN0RGF0YSBiZSBmaWxsZWQgYWZ0ZXIgZ2V0IGFjY291bnQgY2hhbmdlXG4gICAgLy8gICAgICBhbmQgTWVudVNlcnZpY2UgYXdhaXQgZm9yIHN1YmplY3REYXRhIGJlIGZpbGxlZCB0byBiZSByZWFkeVxuICAgIGF3YWl0IHRoaXMubWVudVNlcnZpY2UucmVhZHkoKTtcbiAgfVxuXG4gIGFzeW5jIG9uTG9naW4oYWNjb3VudDogQWNjb3VudCkge1xuICAgIGNvbnNvbGUuaW5mbygnW21lbnVdIFVwZGF0ZSAob24gbG9naW4pJyk7XG4gICAgdGhpcy5hY2NvdW50QXZhdGFyID0gYWNjb3VudC5hdmF0YXI7XG4gICAgdGhpcy5hY2NvdW50TmFtZSA9IGFjY291bnQuZGlzcGxheU5hbWU7XG4gICAgdGhpcy5hY2NvdW50RW1haWwgPSBhY2NvdW50LmVtYWlsO1xuICAgIHRoaXMuaXNMb2dpbiA9IHRydWU7XG4gICAgdGhpcy5tYXJrQXNMb2FkZWQoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBhc3luYyBvbkxvZ291dChza2lwUmVkaXJlY3Q/OiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmlzTG9naW4pIHtcbiAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgICByZXR1cm47IC8vIFNraXAgaWYgYWxyZWFkeSBsb2dvdXRcbiAgICB9XG5cbiAgICBpZiAoIXNraXBSZWRpcmVjdCkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW21lbnVdIExvZ291dCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbbWVudV0gVXBkYXRlIChvbiBsb2dvdXQpJyk7XG4gICAgfVxuICAgIHRoaXMuYWNjb3VudEF2YXRhciA9IG51bGw7XG4gICAgdGhpcy5hY2NvdW50RW1haWwgPSBudWxsO1xuICAgIHRoaXMuYWNjb3VudE5hbWUgPSBudWxsO1xuXG4gICAgLy8gV2FpdCB0aGUgZW5kIG9mIGZhZGVvdXQsIHRvIHJlc2V0IHRoZSBhY2NvdW50XG4gICAgaWYgKCFza2lwUmVkaXJlY3QpIHtcbiAgICAgIGF3YWl0IHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoJy8nKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzTG9naW4gPSBmYWxzZTtcbiAgICB0aGlzLm1hcmtBc0xvYWRlZCh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiBJTWVudUl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS5pZC50b1N0cmluZygpO1xuICB9XG5cbiAgYXN5bmMgZW5hYmxlKHZhbHVlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZW5hYmxlZCA9IGF3YWl0IHRoaXMubWVudS5pc0VuYWJsZWQodGhpcy5tZW51SWQpO1xuICAgIGlmIChlbmFibGVkICE9PSB2YWx1ZSkge1xuICAgICAgYXdhaXQgdGhpcy5tZW51LmVuYWJsZSh2YWx1ZSwgdGhpcy5tZW51SWQpO1xuICAgICAgaWYgKCF2YWx1ZSkgYXdhaXQgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9wZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc29sZS5kZWJ1ZygnW21lbnVdIENoZWNraW5nIG9wZW4gZXZlbnQuLi4nKTtcbiAgICBjb25zdCBvcGVuZWQgPSBhd2FpdCB0aGlzLm1lbnUuaXNPcGVuKHRoaXMubWVudUlkKTtcbiAgICBpZiAoIW9wZW5lZCkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW21lbnVdIE9wZW5pbmcgbWVudScpO1xuICAgICAgYXdhaXQgdGhpcy5tZW51Lm9wZW4odGhpcy5tZW51SWQpO1xuICAgICAgLy8gUHJvcGFnYXRlIHRvIHNlcnZpY2VcbiAgICAgIHRoaXMubWVudVNlcnZpY2UuX21hcmtBc09wZW5lZCgpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ1ttZW51XSBDaGVja2luZyBjbG9zZSBldmVudC4uLicpO1xuICAgIGNvbnN0IG9wZW5lZCA9IGF3YWl0IHRoaXMubWVudS5pc09wZW4odGhpcy5tZW51SWQpO1xuICAgIGlmIChvcGVuZWQpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1ttZW51XSBDbG9zaW5nIG1lbnUnKTtcbiAgICAgIGF3YWl0IHRoaXMubWVudS5jbG9zZSh0aGlzLm1lbnVJZCk7XG4gICAgICAvLyBQcm9wYWdhdGUgdG8gc2VydmljZVxuICAgICAgdGhpcy5tZW51U2VydmljZS5fbWFya0FzQ2xvc2VkKCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgc2V0U3BsaXRQYW5lV2hlbih2YWx1ZTogU3BsaXRQYW5lU2hvd1doZW4pIHtcbiAgICBjb25zb2xlLmRlYnVnKCdbbWVudV0gQ2hlY2tpbmcgc3BsaXRQYW5lIHdoZW4uLi4nKTtcbiAgICBpZiAodGhpcy5zcGxpdFBhbmUud2hlbiAhPT0gdmFsdWUpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1ttZW51XSBTZXQgc3BsaXRQYW5lIHdoZW4gdG8gJyArIHZhbHVlKTtcbiAgICAgIHRoaXMuc3BsaXRQYW5lLndoZW4gPSB2YWx1ZTtcbiAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAvLyBQcm9wYWdhdGUgdG8gdGhlIG1lbnUgc2VydmljZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm1lbnVTZXJ2aWNlLnNldFNwbGl0UGFuZVNob3dXaGVuKHZhbHVlKSwgMjAwKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTcGxpdFBhbmVTaG93KGV2ZW50PzogRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuO1xuICAgIGlmIChldmVudCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmICh0aGlzLnNwbGl0UGFuZS53aGVuID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0U3BsaXRQYW5lV2hlbihERUZBVUxUX01FTlVfU0hPV19XSEVOKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0U3BsaXRQYW5lV2hlbihmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgZXhlY3V0ZUFjdGlvbihldmVudDogRXZlbnQsIGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuXG4gICAgLy8gRGVsZWdhdGUgZXhlY3V0aW9uIHRvIHNlcnZpY2VcbiAgICByZXR1cm4gdGhpcy5tZW51U2VydmljZS5leGVjdXRlQWN0aW9uKGV2ZW50LCBpdGVtKTtcbiAgfVxuXG4gIG9uU3dpcGVSaWdodChldmVudCkge1xuICAgIC8vIFNraXAsIGlmIG5vdCBhIHZhbGlkIHN3aXBlIGV2ZW50XG4gICAgaWYgKCFldmVudCB8fCBldmVudC5wb2ludGVyVHlwZSAhPT0gJ3RvdWNoJyB8fCBldmVudC52ZWxvY2l0eSA8IDAuNCkge1xuICAgICAgLy9ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFdpbGwgb3BlbiB0aGUgbGVmdCBtZW51LCBzbyBjYW5jZWxsZWQgdGhpcyBzd2lwZSBldmVudFxuICAgIGNvbnN0IHN0YXJ0WCA9IGV2ZW50LmNlbnRlci54IC0gZXZlbnQuZGlzdGFuY2U7XG4gICAgaWYgKHN0YXJ0WCA8PSA1MCkge1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlttZW51XSBDYW5jZWwgc3dpcGUgcmlnaHQsIGJlY2F1c2UgbmVhciB0aGUgbGVmdCBtZW51IHt4OiBcIiArIHN0YXJ0WCArIFwiLCB2ZWxvY2l0eTogXCIgKyBldmVudC52ZWxvY2l0eSArIFwifVwiKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT0s6IGNvbnRpbnVlXG5cbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhcIlttZW51XSBSZWNlaXZlZCBzd2lwZSByaWdodCB7eDogXCIgKyBzdGFydFggKyBcIiwgdmVsb2NpdHk6IFwiICsgZXZlbnQudmVsb2NpdHkgKyBcIn1cIik7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0FzTG9hZGVkKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSwgNDUwKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0FzTG9hZGluZyhvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAoIXRoaXMubG9hZGluZykge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZGV0ZWN0Q2hhbmdlcygpIHtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVQaW5uZWQoZXZlbnQ6IEV2ZW50LCBpdGVtOiBJTWVudUl0ZW0pIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMubWVudVNlcnZpY2UudG9nZ2xlUGlubmVkKGl0ZW0pO1xuICB9XG59XG4iLCI8aW9uLXNwbGl0LXBhbmUgI3NwbGl0UGFuZSBbY29udGVudElkXT1cImNvbnRlbnRJZFwiIChzd2lwZXJpZ2h0KT1cIm9uU3dpcGVSaWdodCgkZXZlbnQpXCI+XG5cbiAgPGlvbi1tZW51IFtpZF09XCJpZFwiIFttZW51SWRdPVwibWVudUlkXCIgW2NvbnRlbnRJZF09XCJjb250ZW50SWRcIj5cbiAgICA8aW9uLWhlYWRlcj5cblxuICAgICAgPGlvbi10b29sYmFyICpuZ0lmPVwiIWxvYWRpbmcgJiYgaXNMb2dpbjsgZWxzZSBub3RMb2dpblwiXG4gICAgICAgICAgICAgICAgICAgQGZhZGVJblNsb3dBbmltYXRpb25cbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cInVzZXItdG9vbGJhclwiPlxuICAgICAgICA8aW9uLWdyaWQ+XG4gICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiNFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInVzZXItYXZhdGFyXCIgW2NsYXNzLnByaW1hcnldPVwiIWFjY291bnRBdmF0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIid1cmwoJysoYWNjb3VudEF2YXRhcnx8Jy4vYXNzZXRzL2ltZy9wZXJzb24ucG5nJykrJyknXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9hY2NvdW50J11cIlxuICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckRpcmVjdGlvbj1cInJvb3RcIlxuICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJpb24tY29sb3ItcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInTUVOVS5CVE5fTVlfQUNDT1VOVCd8dHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjhcIiBjbGFzcz1cInVzZXItbG9nb1wiPlxuICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwibG9nbzsgZWxzZSBub0xvZ29cIiBzcmM9XCJ7e2xvZ299fVwiIFt0aXRsZV09XCInQVBQX05BTUUnfHRyYW5zbGF0ZToge2FwcE5hbWU6IGFwcE5hbWV9XCIgd2lkdGg9XCIxMDhweFwiLz5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0xvZ28+XG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJ3aWR0aDogMTA4cHg7XCI+e3thcHBOYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvYWNjb3VudCddXCJcbiAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJEaXJlY3Rpb249XCJyb290XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiaW9uLWNvbG9yLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ01FTlUuQlROX01ZX0FDQ09VTlQnfHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJpb24tdGV4dC13cmFwIGlvbi10ZXh0LXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJuby1tYXJnaW4gdXNlcm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGI+e3thY2NvdW50TmFtZX19PC9iPlxuICAgICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICAgIDxoND57e2FjY291bnRFbWFpbH19PC9oND5cbiAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICAgIDwhLS0gSW5zZXJ0aW9uIGhlYWRlckJvdHRvbVJpZ2h0IC0tPlxuICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlckJvdHRvbVJpZ2h0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICA8L2lvbi1ncmlkPlxuXG4gICAgICA8L2lvbi10b29sYmFyPlxuXG4gICAgICA8IS0tIFVzZXIgbm90IGxvZ2dlZCAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm90TG9naW4+XG4gICAgICAgIDxtYXQtdG9vbGJhciBjbGFzcz1cImlvbi1wYWRkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IHVuc2V0OyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiBhdXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgPGltZyAqbmdJZj1cImxvZ29cIiBzcmM9XCJ7e2xvZ299fVwiIFt0aXRsZV09XCInQVBQX05BTUUnfHRyYW5zbGF0ZToge2FwcE5hbWU6IGFwcE5hbWV9XCIgd2lkdGg9XCIxNTBweDtcIiBhbHQ9XCJsb2dvXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbG9nb1wiIHN0eWxlPVwid2lkdGg6IDE1MHB4XCI+e3thcHBOYW1lfX08L3NwYW4+XG4gICAgICAgIDwvbWF0LXRvb2xiYXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLWhlYWRlcj5cblxuICAgIDxpb24tY29udGVudCBbY2xhc3MuaGFzLXVzZXItaGVhZGVyXT1cImlzTG9naW5cIj5cbiAgICAgIDwhLS0gd2lsbCBjbG9zZSB0aGUgbWVudSwgYWZ0ZXIgYSBjbGljaywgaW4gbW9iaWxlIC0tPlxuICAgICAgPGlvbi1tZW51LXRvZ2dsZSBhdXRvLWhpZGU9XCJmYWxzZVwiPlxuICAgICAgICA8aW9uLWxpc3QgbGluZXM9XCJub25lXCIgKm5nSWY9XCIhbG9hZGluZ1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnJ4Rm9yPVwibGV0IGl0ZW0gb2YgbWVudVNlcnZpY2UuZGF0YVN1YmplY3Q7IHN0cmF0ZWd5OiByeFN0cmF0ZWd5OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbTsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgbGV2ZWw6IDB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaW9uLWxpc3Q+XG4gICAgICA8L2lvbi1tZW51LXRvZ2dsZT5cbiAgICA8L2lvbi1jb250ZW50PlxuXG4gICAgPGlvbi1mb290ZXIgY2xhc3M9XCJoaWRkZW4teHMgaGlkZGVuLXNtXCI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJtZW51U2VydmljZS5vcGVuQWJvdXRNb2RhbCgpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gc2xvdD1cImljb24tb25seVwiPmhlbHBfb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuXG4gICAgICAgIDxpb24tdGl0bGUgKGNsaWNrKT1cIm1lbnVTZXJ2aWNlLm9wZW5BYm91dE1vZGFsKClcIiBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgIHt7J01FTlUuRk9PVEVSX1ZFUlNJT05fQUJPVVQnfCB0cmFuc2xhdGU6IHt2ZXJzaW9uOiBhcHBWZXJzaW9ufSB9fVxuICAgICAgICA8L2lvbi10aXRsZT5cblxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgKGNsaWNrKT1cInRvZ2dsZVNwbGl0UGFuZVNob3coJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1kXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIoc3BsaXRQYW5lLndoZW4gPyAnQ09NTU9OLkJUTl9ISURFX01FTlUnIDogJ0NPTU1PTi5CVE5fU0hPV19NRU5VJykgfHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPjxzcGFuPnt7c3BsaXRQYW5lLndoZW4gPyAnJiN4YWI7JyA6ICcmI3hiYjsnfX08L3NwYW4+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24tZm9vdGVyPlxuXG4gIDwvaW9uLW1lbnU+XG5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG48L2lvbi1zcGxpdC1wYW5lPlxuXG48bmctdGVtcGxhdGUgI2hlYWRlckJvdHRvbVJpZ2h0PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGVhZGVyQm90dG9tUmlnaHRdXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtZW51SXRlbSBsZXQtaXRlbSBsZXQtbGV2ZWw9XCJsZXZlbFwiPlxuXG4gIDwhLS0gZGl2aWRlciAtLT5cbiAgPGlvbi1pdGVtLWRpdmlkZXIgKm5nSWY9XCJpdGVtLmRpdmlkZXI7IGVsc2UgdGFwcGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7aXRlbS5jc3NDbGFzc319IHt7aXRlbS5jb2xvcn19XCJcbiAgICAgICAgICAgICAgICAgICAgQGZhZGVJblNsb3dBbmltYXRpb24+XG4gICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiICpuZ0lmPVwiaXRlbS5pY29uXCIgW25hbWVdPVwiaXRlbS5pY29uXCI+PC9pb24taWNvbj5cbiAgICA8bWF0LWljb24gc2xvdD1cInN0YXJ0XCIgKm5nSWY9XCJpdGVtLm1hdEljb25cIj57e2l0ZW0ubWF0SWNvbn19PC9tYXQtaWNvbj5cbiAgICA8aW9uLWxhYmVsPlxuICAgICAgPHNwYW4gKnJ4SWY9XCJpdGVtLiR0aXRsZTsgbGV0IHRpdGxlOyBlbHNlIHNrZWxldG9uVGV4dFwiIFtpbm5lckhUTUxdPVwidGl0bGV8dHJhbnNsYXRlXCI+PC9zcGFuPlxuICAgIDwvaW9uLWxhYmVsPlxuICA8L2lvbi1pdGVtLWRpdmlkZXI+XG5cbiAgPG5nLXRlbXBsYXRlICN0YXBwYWJsZT5cblxuICAgIDwhLS0gbGluayAtLT5cbiAgICA8aW9uLWl0ZW0gKm5nSWY9XCJpdGVtLnBhdGggJiYgIWl0ZW0uYWN0aW9uXCJcbiAgICAgICAgICAgICAgQGZhZGVJblNsb3dBbmltYXRpb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJ7e2l0ZW0uY3NzQ2xhc3N9fSB7e2l0ZW0uY29sb3J9fVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5tZW51LWl0ZW0tc3ViXT1cImxldmVsIT09MFwiXG4gICAgICAgICAgICAgIHRhcHBhYmxlXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucGF0aFwiXG4gICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJpdGVtLnBhdGhQYXJhbXNcIlxuICAgICAgICAgICAgICByb3V0ZXJEaXJlY3Rpb249XCJyb290XCJcbiAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDogKGl0ZW0ucGF0aCA9PT0gJy8nIHx8IGxldmVsICE9PSAwKX1cIj5cbiAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiAqbmdJZj1cIml0ZW0uaWNvblwiIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+XG4gICAgICA8bWF0LWljb24gc2xvdD1cInN0YXJ0XCIgKm5nSWY9XCJpdGVtLm1hdEljb25cIj57e2l0ZW0ubWF0SWNvbn19PC9tYXQtaWNvbj5cbiAgICAgIDxpb24tbGFiZWwgKnJ4TGV0PVwiaXRlbS4kdGl0bGU7IGxldCB0aXRsZVwiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInRpdGxlOyBlbHNlIHNrZWxldG9uVGV4dFwiIFtpbm5lckhUTUxdPVwidGl0bGV8dHJhbnNsYXRlXCI+PC9zcGFuPlxuICAgICAgICA8IS0tPHNwYW4gKm5nSWY9XCJfZGVidWdcIj4ge3tpdGVtLmlkfX08L3NwYW4+LS0+XG4gICAgICA8L2lvbi1sYWJlbD5cblxuICAgICAgPCEtLSBwaW4gYnV0dG9uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBpbkJ1dHRvbjsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgbGV2ZWw6IGxldmVsfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPC9pb24taXRlbT5cblxuICAgIDwhLS0gYWN0aW9uIC0tPlxuICAgIDxpb24taXRlbSAqbmdJZj1cIml0ZW0uYWN0aW9uXCJcbiAgICAgICAgICAgICAgQGZhZGVJblNsb3dBbmltYXRpb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJ7e2l0ZW0uY3NzQ2xhc3N9fSB7e2l0ZW0uY29sb3J9fSB0ZXh0LTF4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLm1lbnUtaXRlbS1zdWJdPVwibGV2ZWwhPT0wXCJcbiAgICAgICAgICAgICAgdGFwcGFibGVcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGVBY3Rpb24oJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiICpuZ0lmPVwiaXRlbS5pY29uXCIgW25hbWVdPVwiaXRlbS5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgIDxtYXQtaWNvbiBzbG90PVwic3RhcnRcIiAqbmdJZj1cIml0ZW0ubWF0SWNvblwiPnt7aXRlbS5tYXRJY29ufX08L21hdC1pY29uPlxuICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgPHNwYW4gKnJ4SWY9XCJpdGVtLiR0aXRsZTsgbGV0IHRpdGxlOyBlbHNlIHNrZWxldG9uVGV4dFwiIFtpbm5lckhUTUxdPVwidGl0bGV8dHJhbnNsYXRlXCI+PC9zcGFuPlxuICAgICAgICA8IS0tPHNwYW4gKm5nSWY9XCJfZGVidWdcIj4ge3tpdGVtLmlkfX08L3NwYW4+LS0+XG4gICAgICA8L2lvbi1sYWJlbD5cblxuICAgICAgPCEtLSBwaW4gYnV0dG9uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBpbkJ1dHRvbjsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgbGV2ZWw6IGxldmVsfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvaW9uLWl0ZW0+XG4gIDwvbmctdGVtcGxhdGU+XG5cblxuXG4gIDwhLS0gY2hpbGRyZW4gLS0+XG4gIDxkaXYgKm5nSWY9XCJpdGVtPy4kY2hpbGRyZW5cIiBjbGFzcz1cInN1Yi1tZW51LWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKnJ4Rm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uJGNoaWxkcmVuIDsgc3RyYXRlZ3k6IHJ4U3RyYXRlZ3k7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVJdGVtOyBjb250ZXh0OiB7JGltcGxpY2l0OiBjaGlsZCwgbGV2ZWw6IGxldmVsKzF9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwaW5CdXR0b24gbGV0LWl0ZW0gbGV0LWxldmVsPVwibGV2ZWxcIj5cbiAgPCEtLSBwaW4gYnV0dG9uIC0tPlxuICA8aW9uLWJ1dHRvbiAqbmdJZj1cImxldmVsICYmIGl0ZW0ucGlubmFibGVcIlxuICAgICAgICAgICAgICBzbG90PVwiZW5kXCJcbiAgICAgICAgICAgICAgc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy52aXNpYmxlLWhvdmVyXT1cIiFpdGVtLnBpbm5lZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQaW5uZWQoJGV2ZW50LCBpdGVtKVwiPlxuICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgW25hbWVdPVwiaXRlbS5waW5uZWQgPyAncGluJyA6ICdwaW4tb3V0bGluZSdcIj48L2lvbi1pY29uPlxuICA8L2lvbi1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NrZWxldG9uVGV4dCBsZXQtd2lkdGggbGV0LWFuaW1hdGVkPlxuICA8aW9uLXNrZWxldG9uLXRleHQgW2FuaW1hdGVkXT1cImFuaW1hdGVkXCIgW3N0eWxlLndpZHRoLiVdPVwid2lkdGggfHwgNjBcIj48L2lvbi1za2VsZXRvbi10ZXh0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9tZW51L21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTWxJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxzQkFBc0IsRUFBa0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVc5RCxNQUFNLE9BQU8sYUFBYTtJQXFCeEIsWUFDWSxlQUFnQyxFQUNoQyxjQUE4QixFQUM5QixhQUE0QixFQUM1QixJQUFvQixFQUNwQixTQUEwQixFQUMxQixlQUFnQyxFQUNoQyxTQUEyQixFQUMzQixFQUFxQixFQUNyQixXQUF3QixFQUN4QixNQUFjLEVBQ08sV0FBd0IsRUFDakMsS0FBcUIsQ0FBQywyQkFBMkI7O1FBWDdELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFD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WUFBWSxFQUFFLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRVMsYUFBYTtRQUNyQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVTLFlBQVksQ0FBQyxLQUFZLEVBQUUsSUFBZTtRQUNsRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OzBHQWpPVSxhQUFhLDBUQWdDZCxXQUFXOzhGQWhDVixhQUFhLDBVQ3pCMUIsMDFQQThMQSwybldEeEtjLENBQUMsbUJBQW1CLENBQUM7MkZBR3RCLGFBQWE7a0JBUHpCLFNBQVM7K0JBQ0UsVUFBVSxjQUdSLENBQUMsbUJBQW1CLENBQUMsbUJBQ2hCLHVCQUF1QixDQUFDLE1BQU07OzBCQWtDNUMsTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsUUFBUTs0Q0FoQ0YsRUFBRTtzQkFBVixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFb0MsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyLCBJb25TcGxpdFBhbmUsIE1lbnVDb250cm9sbGVyLCBNb2RhbENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5cbmltcG9ydCB7IEFjY291bnQgfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9hY2NvdW50Lm1vZGVsJztcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgZmFkZUluU2xvd0FuaW1hdGlvbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC5hbmltYXRpb25zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBERUZBVUxUX01FTlVfU0hPV19XSEVOLCBNZW51U2VydmljZSwgU3BsaXRQYW5lU2hvd1doZW4gfSBmcm9tICcuL21lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBJTWVudUl0ZW0sIE1lbnVJdGVtIH0gZnJvbSAnLi9tZW51Lm1vZGVsJztcbmltcG9ydCB7IGZpcnN0Tm90TmlsUHJvbWlzZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJ4U3RyYXRlZ3lOYW1lcyB9IGZyb20gJ0ByeC1hbmd1bGFyL2Nkay9yZW5kZXItc3RyYXRlZ2llcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICdtZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbZmFkZUluU2xvd0FuaW1hdGlvbl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgaWQgPSAnbWVudSc7XG4gIEBJbnB1dCgpIG1lbnVJZCA9ICdsZWZ0JztcbiAgQElucHV0KCkgc2lkZSA9ICdsZWZ0JztcbiAgQElucHV0KCkgY29udGVudElkID0gJ21lbnUtY29udGVudCc7XG4gIEBJbnB1dCgpIGxvZ286IHN0cmluZztcbiAgQElucHV0KCkgYXBwTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBhcHBWZXJzaW9uOiBzdHJpbmcgPSB0aGlzLmVudmlyb25tZW50LnZlcnNpb247XG4gIEBJbnB1dCgpIHJ4U3RyYXRlZ3k6IFJ4U3RyYXRlZ3lOYW1lcyA9ICdub3JtYWwnO1xuXG4gIEBWaWV3Q2hpbGQoJ3NwbGl0UGFuZScsIHsgc3RhdGljOiB0cnVlIH0pIHNwbGl0UGFuZTogSW9uU3BsaXRQYW5lO1xuXG4gIGxvYWRpbmcgPSB0cnVlO1xuICBpc0xvZ2luID0gZmFsc2U7XG4gIGFjY291bnROYW1lOiBzdHJpbmc7XG4gIGFjY291bnRBdmF0YXI6IHN0cmluZztcbiAgYWNjb3VudEVtYWlsOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVidWc6IGJvb2xlYW47XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm1TZXJ2aWNlOiBQbGF0Zm9ybVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgbWVudTogTWVudUNvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBhbGVydENvbnRyb2xsZXI6IEFsZXJ0Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlIC8vIE1vZGFsIGVkaXRvciBnaXZlICdudWxsJ1xuICApIHtcbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zcGxpdFBhbmUud2hlbiA9IGF3YWl0IGZpcnN0Tm90TmlsUHJvbWlzZSh0aGlzLm1lbnVTZXJ2aWNlLnNwbGl0UGFuZVdoZW4pO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMubWVudVNlcnZpY2UuYWNjb3VudENoYW5nZXMuc3Vic2NyaWJlKChhY2NvdW50KSA9PiB7XG4gICAgICAgIGlmIChhY2NvdW50KSB0aGlzLm9uTG9naW4oYWNjb3VudCk7XG4gICAgICAgIGVsc2UgdGhpcy5vbkxvZ291dCh0cnVlKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIExpc3RlbiB0byBtZW51IHNlcnZpY2UgZXZlbnRcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHRoaXMubWVudVNlcnZpY2Uuc3BsaXRQYW5lV2hlbi5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLnNldFNwbGl0UGFuZVdoZW4odmFsdWUpKSk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZCh0aGlzLm1lbnVTZXJ2aWNlLmVuYWJsZWQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5lbmFibGUodmFsdWUpKSk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMubWVudVNlcnZpY2Uub3BlbmVkXG4gICAgICAgIC8vIEF2b2lkIGR1cGxpY2F0ZWQgZXZlbnRzXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiAodmFsdWUgPyB0aGlzLm9wZW4oeyBlbWl0RXZlbnQ6IGZhbHNlIH0pIDogdGhpcy5jbG9zZSh7IGVtaXRFdmVudDogZmFsc2UgfSkpKVxuICAgICk7XG5cbiAgICAvLyBUT0RPIDogRmluZCBhIG1vcmUgcmVsaWFibGUgd2F5IHRvIGRvIHRoaXMgOlxuICAgIC8vICAgIE11c3QgYmUgZG9ubmUgYWZ0ZXIgbWVudVNlcnZpY2Ugc3Vic2NyaXB0aW9uIDpcbiAgICAvLyAgICAtIEluIE1lbnVTZXJ2aWNlLm5nT25TdGFydCBhY2NvdW50Q2hhbmdlcyBjaGFuZ2Ugd2lsbCBiZSBlbWl0dGVkIGJlZm9yZSB0aGUgc2VydmljZSBpcyByZWFkeVxuICAgIC8vICAgIC0gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIHN1YmplY3REYXRhIGJlIGZpbGxlZCBhZnRlciBnZXQgYWNjb3VudCBjaGFuZ2VcbiAgICAvLyAgICAgIGFuZCBNZW51U2VydmljZSBhd2FpdCBmb3Igc3ViamVjdERhdGEgYmUgZmlsbGVkIHRvIGJlIHJlYWR5XG4gICAgYXdhaXQgdGhpcy5tZW51U2VydmljZS5yZWFkeSgpO1xuICB9XG5cbiAgYXN5bmMgb25Mb2dpbihhY2NvdW50OiBBY2NvdW50KSB7XG4gICAgY29uc29sZS5pbmZvKCdbbWVudV0gVXBkYXRlIChvbiBsb2dpbiknKTtcbiAgICB0aGlzLmFjY291bnRBdmF0YXIgPSBhY2NvdW50LmF2YXRhcjtcbiAgICB0aGlzLmFjY291bnROYW1lID0gYWNjb3VudC5kaXNwbGF5TmFtZTtcbiAgICB0aGlzLmFjY291bnRFbWFpbCA9IGFjY291bnQuZW1haWw7XG4gICAgdGhpcy5pc0xvZ2luID0gdHJ1ZTtcbiAgICB0aGlzLm1hcmtBc0xvYWRlZCh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGFzeW5jIG9uTG9nb3V0KHNraXBSZWRpcmVjdD86IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuaXNMb2dpbikge1xuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICAgIHJldHVybjsgLy8gU2tpcCBpZiBhbHJlYWR5IGxvZ291dFxuICAgIH1cblxuICAgIGlmICghc2tpcFJlZGlyZWN0KSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbbWVudV0gTG9nb3V0Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1ttZW51XSBVcGRhdGUgKG9uIGxvZ291dCknKTtcbiAgICB9XG4gICAgdGhpcy5hY2NvdW50QXZhdGFyID0gbnVsbDtcbiAgICB0aGlzLmFjY291bnRFbWFpbCA9IG51bGw7XG4gICAgdGhpcy5hY2NvdW50TmFtZSA9IG51bGw7XG5cbiAgICAvLyBXYWl0IHRoZSBlbmQgb2YgZmFkZW91dCwgdG8gcmVzZXQgdGhlIGFjY291bnRcbiAgICBpZiAoIXNraXBSZWRpcmVjdCkge1xuICAgICAgYXdhaXQgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdCgnLycpO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2dpbiA9IGZhbHNlO1xuICAgIHRoaXMubWFya0FzTG9hZGVkKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IElNZW51SXRlbSkge1xuICAgIHJldHVybiBpdGVtLmlkLnRvU3RyaW5nKCk7XG4gIH1cblxuICBhc3luYyBlbmFibGUodmFsdWU6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBlbmFibGVkID0gYXdhaXQgdGhpcy5tZW51LmlzRW5hYmxlZCh0aGlzLm1lbnVJZCk7XG4gICAgaWYgKGVuYWJsZWQgIT09IHZhbHVlKSB7XG4gICAgICBhd2FpdCB0aGlzLm1lbnUuZW5hYmxlKHZhbHVlLCB0aGlzLm1lbnVJZCk7XG4gICAgICBpZiAoIXZhbHVlKSBhd2FpdCB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb3BlbihvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbbWVudV0gQ2hlY2tpbmcgb3BlbiBldmVudC4uLicpO1xuICAgIGNvbnN0IG9wZW5lZCA9IGF3YWl0IHRoaXMubWVudS5pc09wZW4odGhpcy5tZW51SWQpO1xuICAgIGlmICghb3BlbmVkKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbbWVudV0gT3BlbmluZyBtZW51Jyk7XG4gICAgICBhd2FpdCB0aGlzLm1lbnUub3Blbih0aGlzLm1lbnVJZCk7XG5cbiAgICAgIC8vIFByb3BhZ2F0ZSB0byBzZXJ2aWNlXG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubWVudVNlcnZpY2UuX21hcmtBc09wZW5lZCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ1ttZW51XSBDaGVja2luZyBjbG9zZSBldmVudC4uLicpO1xuICAgIGNvbnN0IG9wZW5lZCA9IGF3YWl0IHRoaXMubWVudS5pc09wZW4odGhpcy5tZW51SWQpO1xuICAgIGlmIChvcGVuZWQpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1ttZW51XSBDbG9zaW5nIG1lbnUnKTtcbiAgICAgIGF3YWl0IHRoaXMubWVudS5jbG9zZSh0aGlzLm1lbnVJZCk7XG5cbiAgICAgIC8vIFByb3BhZ2F0ZSB0byBzZXJ2aWNlXG4gICAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubWVudVNlcnZpY2UuX21hcmtBc0Nsb3NlZCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHNldFNwbGl0UGFuZVdoZW4odmFsdWU6IFNwbGl0UGFuZVNob3dXaGVuKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnW21lbnVdIENoZWNraW5nIHNwbGl0UGFuZSB3aGVuLi4uJyk7XG4gICAgaWYgKHRoaXMuc3BsaXRQYW5lLndoZW4gIT09IHZhbHVlKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbbWVudV0gU2V0IHNwbGl0UGFuZSB3aGVuIHRvICcgKyB2YWx1ZSk7XG4gICAgICB0aGlzLnNwbGl0UGFuZS53aGVuID0gdmFsdWU7XG4gICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgLy8gUHJvcGFnYXRlIHRvIHRoZSBtZW51IHNlcnZpY2VcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5tZW51U2VydmljZS5zZXRTcGxpdFBhbmVTaG93V2hlbih2YWx1ZSksIDIwMCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU3BsaXRQYW5lU2hvdyhldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjtcbiAgICBpZiAoZXZlbnQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAodGhpcy5zcGxpdFBhbmUud2hlbiA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFNwbGl0UGFuZVdoZW4oREVGQVVMVF9NRU5VX1NIT1dfV0hFTik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFNwbGl0UGFuZVdoZW4oZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGV4ZWN1dGVBY3Rpb24oZXZlbnQ6IEV2ZW50LCBpdGVtOiBNZW51SXRlbSkge1xuICAgIHRoaXMuY2xvc2UoKTtcblxuICAgIC8vIERlbGVnYXRlIGV4ZWN1dGlvbiB0byBzZXJ2aWNlXG4gICAgcmV0dXJuIHRoaXMubWVudVNlcnZpY2UuZXhlY3V0ZUFjdGlvbihldmVudCwgaXRlbSk7XG4gIH1cblxuICBvblN3aXBlUmlnaHQoZXZlbnQpIHtcbiAgICAvLyBTa2lwLCBpZiBub3QgYSB2YWxpZCBzd2lwZSBldmVudFxuICAgIGlmICghZXZlbnQgfHwgZXZlbnQucG9pbnRlclR5cGUgIT09ICd0b3VjaCcgfHwgZXZlbnQudmVsb2NpdHkgPCAwLjQpIHtcbiAgICAgIC8vZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBXaWxsIG9wZW4gdGhlIGxlZnQgbWVudSwgc28gY2FuY2VsbGVkIHRoaXMgc3dpcGUgZXZlbnRcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jZW50ZXIueCAtIGV2ZW50LmRpc3RhbmNlO1xuICAgIGlmIChzdGFydFggPD0gNTApIHtcbiAgICAgIC8vIERFQlVHXG4gICAgICAvL2NvbnNvbGUuZGVidWcoXCJbbWVudV0gQ2FuY2VsIHN3aXBlIHJpZ2h0LCBiZWNhdXNlIG5lYXIgdGhlIGxlZnQgbWVudSB7eDogXCIgKyBzdGFydFggKyBcIiwgdmVsb2NpdHk6IFwiICsgZXZlbnQudmVsb2NpdHkgKyBcIn1cIik7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE9LOiBjb250aW51ZVxuXG4gICAgLy8gREVCVUdcbiAgICAvL2NvbnNvbGUuZGVidWcoXCJbbWVudV0gUmVjZWl2ZWQgc3dpcGUgcmlnaHQge3g6IFwiICsgc3RhcnRYICsgXCIsIHZlbG9jaXR5OiBcIiArIGV2ZW50LnZlbG9jaXR5ICsgXCJ9XCIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtBc0xvYWRlZChvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sIDQ1MCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtBc0xvYWRpbmcob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICAgIGlmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGRldGVjdENoYW5nZXMoKSB7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlUGlubmVkKGV2ZW50OiBFdmVudCwgaXRlbTogSU1lbnVJdGVtKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLnRvZ2dsZVBpbm5lZChpdGVtKTtcbiAgfVxufVxuIiwiPGlvbi1zcGxpdC1wYW5lICNzcGxpdFBhbmUgW2NvbnRlbnRJZF09XCJjb250ZW50SWRcIiAoc3dpcGVyaWdodCk9XCJvblN3aXBlUmlnaHQoJGV2ZW50KVwiPlxuXG4gIDxpb24tbWVudSBbaWRdPVwiaWRcIiBbbWVudUlkXT1cIm1lbnVJZFwiIFtjb250ZW50SWRdPVwiY29udGVudElkXCI+XG4gICAgPGlvbi1oZWFkZXI+XG5cbiAgICAgIDxpb24tdG9vbGJhciAqbmdJZj1cIiFsb2FkaW5nICYmIGlzTG9naW47IGVsc2Ugbm90TG9naW5cIlxuICAgICAgICAgICAgICAgICAgIEBmYWRlSW5TbG93QW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLXRvb2xiYXJcIj5cbiAgICAgICAgPGlvbi1ncmlkPlxuICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLWF2YXRhclwiIFtjbGFzcy5wcmltYXJ5XT1cIiFhY2NvdW50QXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCIndXJsKCcrKGFjY291bnRBdmF0YXJ8fCcuL2Fzc2V0cy9pbWcvcGVyc29uLnBuZycpKycpJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvYWNjb3VudCddXCJcbiAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJEaXJlY3Rpb249XCJyb290XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiaW9uLWNvbG9yLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ01FTlUuQlROX01ZX0FDQ09VTlQnfHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCI4XCIgY2xhc3M9XCJ1c2VyLWxvZ29cIj5cbiAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImxvZ287IGVsc2Ugbm9Mb2dvXCIgc3JjPVwie3tsb2dvfX1cIiBbdGl0bGVdPVwiJ0FQUF9OQU1FJ3x0cmFuc2xhdGU6IHthcHBOYW1lOiBhcHBOYW1lfVwiIHdpZHRoPVwiMTA4cHhcIi8+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9Mb2dvPlxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwid2lkdGg6IDEwOHB4O1wiPnt7YXBwTmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2FjY291bnQnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm91dGVyRGlyZWN0aW9uPVwicm9vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImlvbi1jb2xvci1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidNRU5VLkJUTl9NWV9BQ0NPVU5UJ3x0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiaW9uLXRleHQtd3JhcCBpb24tdGV4dC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibm8tbWFyZ2luIHVzZXJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxiPnt7YWNjb3VudE5hbWV9fTwvYj5cbiAgICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgICAgICA8aDQ+e3thY2NvdW50RW1haWx9fTwvaDQ+XG4gICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgICAgICA8IS0tIEluc2VydGlvbiBoZWFkZXJCb3R0b21SaWdodCAtLT5cbiAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJCb3R0b21SaWdodFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgPC9pb24tZ3JpZD5cblxuICAgICAgPC9pb24tdG9vbGJhcj5cblxuICAgICAgPCEtLSBVc2VyIG5vdCBsb2dnZWQgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgI25vdExvZ2luPlxuICAgICAgICA8bWF0LXRvb2xiYXIgY2xhc3M9XCJpb24tcGFkZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiB1bnNldDsgZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsgdGV4dC1hbGlnbjogY2VudGVyO1wiPlxuICAgICAgICAgIDxpbWcgKm5nSWY9XCJsb2dvXCIgc3JjPVwie3tsb2dvfX1cIiBbdGl0bGVdPVwiJ0FQUF9OQU1FJ3x0cmFuc2xhdGU6IHthcHBOYW1lOiBhcHBOYW1lfVwiIHdpZHRoPVwiMTUwcHg7XCIgYWx0PVwibG9nb1wiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWxvZ29cIiBzdHlsZT1cIndpZHRoOiAxNTBweFwiPnt7YXBwTmFtZX19PC9zcGFuPlxuICAgICAgICA8L21hdC10b29sYmFyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1oZWFkZXI+XG5cbiAgICA8aW9uLWNvbnRlbnQgW2NsYXNzLmhhcy11c2VyLWhlYWRlcl09XCJpc0xvZ2luXCI+XG4gICAgICA8IS0tIHdpbGwgY2xvc2UgdGhlIG1lbnUsIGFmdGVyIGEgY2xpY2ssIGluIG1vYmlsZSAtLT5cbiAgICAgIDxpb24tbWVudS10b2dnbGUgYXV0by1oaWRlPVwiZmFsc2VcIj5cbiAgICAgICAgPGlvbi1saXN0IGxpbmVzPVwibm9uZVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpyeEZvcj1cImxldCBpdGVtIG9mIG1lbnVTZXJ2aWNlLmRhdGFTdWJqZWN0OyBzdHJhdGVneTogcnhTdHJhdGVneTsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUl0ZW07IGNvbnRleHQ6IHskaW1wbGljaXQ6IGl0ZW0sIGxldmVsOiAwfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgPC9pb24tbWVudS10b2dnbGU+XG4gICAgPC9pb24tY29udGVudD5cblxuICAgIDxpb24tZm9vdGVyIGNsYXNzPVwiaGlkZGVuLXhzIGhpZGRlbi1zbVwiPlxuICAgICAgPGlvbi10b29sYmFyPlxuXG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJhY2NlbnRcIiAoY2xpY2spPVwibWVudVNlcnZpY2Uub3BlbkFib3V0TW9kYWwoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIj5oZWxwX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cblxuICAgICAgICA8aW9uLXRpdGxlIChjbGljayk9XCJtZW51U2VydmljZS5vcGVuQWJvdXRNb2RhbCgpXCIgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICB7eydNRU5VLkZPT1RFUl9WRVJTSU9OX0FCT1VUJ3wgdHJhbnNsYXRlOiB7dmVyc2lvbjogYXBwVmVyc2lvbn0gfX1cbiAgICAgICAgPC9pb24tdGl0bGU+XG5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJ0b2dnbGVTcGxpdFBhbmVTaG93KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW4teHMgaGlkZGVuLXNtIGhpZGRlbi1tZFwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiKHNwbGl0UGFuZS53aGVuID8gJ0NPTU1PTi5CVE5fSElERV9NRU5VJyA6ICdDT01NT04uQlROX1NIT1dfTUVOVScpIHx0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj48c3Bhbj57e3NwbGl0UGFuZS53aGVuID8gJyYjeGFiOycgOiAnJiN4YmI7J319PC9zcGFuPjwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWZvb3Rlcj5cblxuICA8L2lvbi1tZW51PlxuXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuPC9pb24tc3BsaXQtcGFuZT5cblxuPG5nLXRlbXBsYXRlICNoZWFkZXJCb3R0b21SaWdodD5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2hlYWRlckJvdHRvbVJpZ2h0XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVudUl0ZW0gbGV0LWl0ZW0gbGV0LWxldmVsPVwibGV2ZWxcIj5cblxuICA8IS0tIGRpdmlkZXIgLS0+XG4gIDxpb24taXRlbS1kaXZpZGVyICpuZ0lmPVwiaXRlbS5kaXZpZGVyOyBlbHNlIHRhcHBhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2l0ZW0uY3NzQ2xhc3N9fSB7e2l0ZW0uY29sb3J9fVwiXG4gICAgICAgICAgICAgICAgICAgIEBmYWRlSW5TbG93QW5pbWF0aW9uPlxuICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiAqbmdJZj1cIml0ZW0uaWNvblwiIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+XG4gICAgPG1hdC1pY29uIHNsb3Q9XCJzdGFydFwiICpuZ0lmPVwiaXRlbS5tYXRJY29uXCI+e3tpdGVtLm1hdEljb259fTwvbWF0LWljb24+XG4gICAgPGlvbi1sYWJlbD5cbiAgICAgIDxzcGFuICpyeElmPVwiaXRlbS4kdGl0bGU7IGxldCB0aXRsZTsgZWxzZSBza2VsZXRvblRleHRcIiBbaW5uZXJIVE1MXT1cInRpdGxlfHRyYW5zbGF0ZVwiPjwvc3Bhbj5cbiAgICA8L2lvbi1sYWJlbD5cbiAgPC9pb24taXRlbS1kaXZpZGVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjdGFwcGFibGU+XG5cbiAgICA8IS0tIGxpbmsgLS0+XG4gICAgPGlvbi1pdGVtICpuZ0lmPVwiaXRlbS5wYXRoICYmICFpdGVtLmFjdGlvblwiXG4gICAgICAgICAgICAgIEBmYWRlSW5TbG93QW5pbWF0aW9uXG4gICAgICAgICAgICAgIGNsYXNzPVwie3tpdGVtLmNzc0NsYXNzfX0ge3tpdGVtLmNvbG9yfX1cIlxuICAgICAgICAgICAgICBbY2xhc3MubWVudS1pdGVtLXN1Yl09XCJsZXZlbCE9PTBcIlxuICAgICAgICAgICAgICB0YXBwYWJsZVxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnBhdGhcIlxuICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiaXRlbS5wYXRoUGFyYW1zXCJcbiAgICAgICAgICAgICAgcm91dGVyRGlyZWN0aW9uPVwicm9vdFwiXG4gICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7ZXhhY3Q6IChpdGVtLnBhdGggPT09ICcvJyB8fCBsZXZlbCAhPT0gMCl9XCI+XG4gICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgKm5nSWY9XCJpdGVtLmljb25cIiBbbmFtZV09XCJpdGVtLmljb25cIj48L2lvbi1pY29uPlxuICAgICAgPG1hdC1pY29uIHNsb3Q9XCJzdGFydFwiICpuZ0lmPVwiaXRlbS5tYXRJY29uXCI+e3tpdGVtLm1hdEljb259fTwvbWF0LWljb24+XG4gICAgICA8aW9uLWxhYmVsICpyeExldD1cIml0ZW0uJHRpdGxlOyBsZXQgdGl0bGVcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ0aXRsZTsgZWxzZSBza2VsZXRvblRleHRcIiBbaW5uZXJIVE1MXT1cInRpdGxlfHRyYW5zbGF0ZVwiPjwvc3Bhbj5cbiAgICAgICAgPCEtLTxzcGFuICpuZ0lmPVwiX2RlYnVnXCI+IHt7aXRlbS5pZH19PC9zcGFuPi0tPlxuICAgICAgPC9pb24tbGFiZWw+XG5cbiAgICAgIDwhLS0gcGluIGJ1dHRvbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwaW5CdXR0b247IGNvbnRleHQ6IHskaW1wbGljaXQ6IGl0ZW0sIGxldmVsOiBsZXZlbH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDwvaW9uLWl0ZW0+XG5cbiAgICA8IS0tIGFjdGlvbiAtLT5cbiAgICA8aW9uLWl0ZW0gKm5nSWY9XCJpdGVtLmFjdGlvblwiXG4gICAgICAgICAgICAgIEBmYWRlSW5TbG93QW5pbWF0aW9uXG4gICAgICAgICAgICAgIGNsYXNzPVwie3tpdGVtLmNzc0NsYXNzfX0ge3tpdGVtLmNvbG9yfX0gdGV4dC0xeFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5tZW51LWl0ZW0tc3ViXT1cImxldmVsIT09MFwiXG4gICAgICAgICAgICAgIHRhcHBhYmxlXG4gICAgICAgICAgICAgIChjbGljayk9XCJleGVjdXRlQWN0aW9uKCRldmVudCwgaXRlbSlcIj5cbiAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiAqbmdJZj1cIml0ZW0uaWNvblwiIFtuYW1lXT1cIml0ZW0uaWNvblwiPjwvaW9uLWljb24+XG4gICAgICA8bWF0LWljb24gc2xvdD1cInN0YXJ0XCIgKm5nSWY9XCJpdGVtLm1hdEljb25cIj57e2l0ZW0ubWF0SWNvbn19PC9tYXQtaWNvbj5cbiAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgIDxzcGFuICpyeElmPVwiaXRlbS4kdGl0bGU7IGxldCB0aXRsZTsgZWxzZSBza2VsZXRvblRleHRcIiBbaW5uZXJIVE1MXT1cInRpdGxlfHRyYW5zbGF0ZVwiPjwvc3Bhbj5cbiAgICAgICAgPCEtLTxzcGFuICpuZ0lmPVwiX2RlYnVnXCI+IHt7aXRlbS5pZH19PC9zcGFuPi0tPlxuICAgICAgPC9pb24tbGFiZWw+XG5cbiAgICAgIDwhLS0gcGluIGJ1dHRvbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwaW5CdXR0b247IGNvbnRleHQ6IHskaW1wbGljaXQ6IGl0ZW0sIGxldmVsOiBsZXZlbH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1pdGVtPlxuICA8L25nLXRlbXBsYXRlPlxuXG5cblxuICA8IS0tIGNoaWxkcmVuIC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXRlbT8uJGNoaWxkcmVuXCIgY2xhc3M9XCJzdWItbWVudS1jb250YWluZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpyeEZvcj1cImxldCBjaGlsZCBvZiBpdGVtLiRjaGlsZHJlbiA7IHN0cmF0ZWd5OiByeFN0cmF0ZWd5OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbTsgY29udGV4dDogeyRpbXBsaWNpdDogY2hpbGQsIGxldmVsOiBsZXZlbCsxfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcGluQnV0dG9uIGxldC1pdGVtIGxldC1sZXZlbD1cImxldmVsXCI+XG4gIDwhLS0gcGluIGJ1dHRvbiAtLT5cbiAgPGlvbi1idXR0b24gKm5nSWY9XCJsZXZlbCAmJiBpdGVtLnBpbm5hYmxlXCJcbiAgICAgICAgICAgICAgc2xvdD1cImVuZFwiXG4gICAgICAgICAgICAgIHNoYXBlPVwicm91bmRcIiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbY2xhc3MudmlzaWJsZS1ob3Zlcl09XCIhaXRlbS5waW5uZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUGlubmVkKCRldmVudCwgaXRlbSlcIj5cbiAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIFtuYW1lXT1cIml0ZW0ucGlubmVkID8gJ3BpbicgOiAncGluLW91dGxpbmUnXCI+PC9pb24taWNvbj5cbiAgPC9pb24tYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNza2VsZXRvblRleHQgbGV0LXdpZHRoIGxldC1hbmltYXRlZD5cbiAgPGlvbi1za2VsZXRvbi10ZXh0IFthbmltYXRlZF09XCJhbmltYXRlZFwiIFtzdHlsZS53aWR0aC4lXT1cIndpZHRoIHx8IDYwXCI+PC9pb24tc2tlbGV0b24tdGV4dD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -296,6 +296,12 @@ export class MenuService extends StartableObservableService {
|
|
|
296
296
|
_markAsClosed() {
|
|
297
297
|
this._$opened.next(false);
|
|
298
298
|
}
|
|
299
|
+
async close() {
|
|
300
|
+
this._$opened.next(false);
|
|
301
|
+
}
|
|
302
|
+
async open() {
|
|
303
|
+
this._$opened.next(true);
|
|
304
|
+
}
|
|
299
305
|
async ngOnStart() {
|
|
300
306
|
console.info(`${this._logPrefix}Starting...`);
|
|
301
307
|
// Restore sub items from settings
|
|
@@ -651,4 +657,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
651
657
|
type: Inject,
|
|
652
658
|
args: [APP_MENU_ITEMS]
|
|
653
659
|
}] }]; } });
|
|
654
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRyxPQUFPLEVBQWEsUUFBUSxFQUFFLFNBQVMsRUFBZSxNQUFNLGNBQWMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUcvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFHbEQs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R0FydEJVLFdBQVcsa1FBeUJaLFdBQVcsYUFDQyxnQkFBZ0IsNkJBQ2hCLGNBQWM7NEdBM0J6QixXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUN4Qzs7MEJBMEJJLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDbkMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCBtZXJnZSwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElNZW51SXRlbSwgTWVudUl0ZW0sIE1lbnVJdGVtcywgTWVudU9wdGlvbnMgfSBmcm9tICcuL21lbnUubW9kZWwnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBEYXRlVXRpbHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGF0ZXMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2NvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBDT1JFX0NPTkZJR19PUFRJT05TIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7IGlzRW1wdHlBcnJheSwgaXNOaWwsIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvYWNjb3VudC5tb2RlbCc7XG5pbXBvcnQgeyBTdGFydGFibGVPYnNlcnZhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtb2JzZXJ2YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IGZpcnN0Tm90TmlsUHJvbWlzZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBJY29uUmVmIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBUcmVlSXRlbUVudGl0eVV0aWxzIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvdHJlZS1pdGVtLWVudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIE1vZGFsQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFib3V0TW9kYWwgfSBmcm9tICcuLi9hYm91dC9hYm91dC5tb2RhbCc7XG5cbmV4cG9ydCB0eXBlIFNwbGl0UGFuZVNob3dXaGVuID0gYm9vbGVhbiB8ICdsZyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NRU5VX1NIT1dfV0hFTjogU3BsaXRQYW5lU2hvd1doZW4gPSAnbGcnO1xuZXhwb3J0IGNvbnN0IEFQUF9NRU5VX0lURU1TID0gbmV3IEluamVjdGlvblRva2VuPElNZW51SXRlbVtdPignbWVudUl0ZW1zJyk7XG5leHBvcnQgY29uc3QgQVBQX01FTlVfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNZW51T3B0aW9ucz4oJ21lbnVPcHRpb25zJyk7XG5cblxuZXhwb3J0IGludGVyZmFjZSBNZW51UGF0aFBhcmFtIHtcbiAgcGF0aDogc3RyaW5nO1xuICBwYXJhbXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290JywgZGVwczogW0VOVklST05NRU5UXVxufSlcbmV4cG9ydCBjbGFzcyBNZW51U2VydmljZSBleHRlbmRzIFN0YXJ0YWJsZU9ic2VydmFibGVTZXJ2aWNlPE1lbnVJdGVtW10+IHtcblxuICByZWFkb25seSBhY2NvdW50Q2hhbmdlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWNjb3VudD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25QaW5uZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1lbnVJdGVtPih0cnVlKTtcblxuICBwcml2YXRlIF9zdGF0aWNJdGVtczogTWVudUl0ZW1bXTtcbiAgcHJpdmF0ZSBfZGV0YWNoZWRTdWJJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICBwcml2YXRlIF9pdGVtQ291bnRlciA9IDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IE1lbnVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dQcmVmaXggPSAnW21lbnUtc2VydmljZV0gJztcbiAgcHJpdmF0ZSByZWFkb25seSBfJG9wZW5lZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgXyRzcGxpdFBhbmVXaGVuID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTcGxpdFBhbmVTaG93V2hlbj4oREVGQVVMVF9NRU5VX1NIT1dfV0hFTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgXyRlbmFibGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfJGVuYWJsZVN1Yk1lbnU6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfJGxpc3RlblJvdXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9NRU5VX09QVElPTlMpIG9wdGlvbnM/OiBNZW51T3B0aW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9NRU5VX0lURU1TKSBzdGF0aWNJdGVtcz86IElNZW51SXRlbVtdXG4gICkge1xuICAgIHN1cGVyKHNldHRpbmdzKTtcbiAgICB0aGlzLl9vcHRpb25zID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHN1Yk1lbnU6IHtcbiAgICAgICAgZGlzYWJsZUljb246IGZhbHNlLFxuICAgICAgICBzYXZlUGlubmVkOiB0cnVlLFxuICAgICAgICAuLi4ob3B0aW9ucz8uc3ViTWVudSB8fCB7fSksXG4gICAgICAgIC8vIEZvcmNlIGRpc2FibGUgb24gbW9iaWxlXG4gICAgICAgIGVuYWJsZTogb3B0aW9ucz8uc3ViTWVudT8uZW5hYmxlICE9PSBmYWxzZSAmJiAhdGhpcy5zZXR0aW5ncy5tb2JpbGUsXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl8kZW5hYmxlU3ViTWVudSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fb3B0aW9ucy5zdWJNZW51LmVuYWJsZSk7XG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcblxuICAgIHRoaXMuX2RldGFjaGVkU3ViSXRlbXMgPSBbXTtcbiAgICB0aGlzLl9zdGF0aWNJdGVtcyA9IChzdGF0aWNJdGVtcyB8fCBbXSkubWFwKHNvdXJjZSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmZyb21PYmplY3Qoe3N0YXRpYzogdHJ1ZSwgLi4uc291cmNlfSwge2NvbXB1dGVJZDogdHJ1ZSwgZmlsbFBhcmVudDogdHJ1ZSwgZmlsbERlZmF1bHRGcm9tUGFyZW50OiB0cnVlfSk7XG5cbiAgICAgIGNvbnN0IGRldGFjaGVkSXRlbXMgPSBUcmVlSXRlbUVudGl0eVV0aWxzLmRlbGV0ZVJlY3Vyc2l2ZWx5KHRhcmdldCwgKGl0ZW0pID0+IGl0ZW0uc3RhdGljICE9PSB0cnVlKTtcbiAgICAgIGlmIChkZXRhY2hlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyAnRGV0YWNoZWQgaW5pdCBpdGVtcycsIGRldGFjaGVkSXRlbXMpO1xuICAgICAgICBkZXRhY2hlZEl0ZW1zLmZvckVhY2goaXRlbSA9PiB0aGlzLl9kZXRhY2hUb1BhcmVudChpdGVtKSk7XG5cbiAgICAgICAgdGhpcy5fZGV0YWNoZWRTdWJJdGVtcy5wdXNoKC4uLmRldGFjaGVkSXRlbXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBvcGVuZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuXyRvcGVuZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3BsaXRQYW5lV2hlbigpOiBPYnNlcnZhYmxlPFNwbGl0UGFuZVNob3dXaGVuPiB7XG4gICAgcmV0dXJuIHRoaXMuXyRzcGxpdFBhbmVXaGVuLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuXyRlbmFibGVkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHN1Yk1lbnVFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl8kZW5hYmxlU3ViTWVudS52YWx1ZTtcbiAgfVxuXG4gIGdldCBzdWJJdGVtcygpOiBNZW51SXRlbVtdIHtcbiAgICByZXR1cm4gKHRoaXMuZGF0YSB8fCBbXSkucmVkdWNlKChyZXMsIHJvb3RFbGVtZW50KSA9PiByZXMuY29uY2F0KHJvb3RFbGVtZW50LmNoaWxkcmVuKSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX3N0YXRpY1N1Ykl0ZW1zKCk6IE1lbnVJdGVtW10ge1xuICAgIHJldHVybiAodGhpcy5fc3RhdGljSXRlbXMgfHwgW10pLnJlZHVjZSgocmVzLCByb290RWxlbWVudCkgPT4gcmVzLmNvbmNhdChyb290RWxlbWVudC5jaGlsZHJlbiksIFtdKTtcbiAgfVxuXG4gIGVuYWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuXyRlbmFibGVkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZW5hYmxlU3ViTWVudSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuXyRlbmFibGVTdWJNZW51Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgc2V0U3BsaXRQYW5lU2hvd1doZW4odmFsdWU6IFNwbGl0UGFuZVNob3dXaGVuKSB7XG4gICAgaWYgKHRoaXMuXyRzcGxpdFBhbmVXaGVuLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fJHNwbGl0UGFuZVdoZW4ubmV4dCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU3BsaXRQYW5lV2hlbigpIHtcbiAgICBpZiAodGhpcy5fJHNwbGl0UGFuZVdoZW4udmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl8kc3BsaXRQYW5lV2hlbi5uZXh0KGZhbHNlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl8kc3BsaXRQYW5lV2hlbi5uZXh0KERFRkFVTFRfTUVOVV9TSE9XX1dIRU4pO1xuICAgIH1cbiAgfVxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiB7d2l0aENoaWxkcmVuPzogYm9vbGVhbjsgY29tcHV0ZUlkPzogYm9vbGVhbjsgZmlsbFBhcmVudD86IGJvb2xlYW47IGZpbGxEZWZhdWx0RnJvbVBhcmVudD86IGJvb2xlYW59KTogTWVudUl0ZW0ge1xuICAgIGNvbnN0IHRhcmdldCA9IE1lbnVJdGVtLmZyb21PYmplY3Qoc291cmNlLCB7d2l0aENoaWxkcmVuOiBmYWxzZX0pO1xuICAgIC8vIENvbXB1dGUgaWQgaWYgbmVlZFxuICAgIGlmIChvcHRzPy5jb21wdXRlSWQgJiYgaXNOaWwodGFyZ2V0LmlkKSkgdGFyZ2V0LmlkID0gdGhpcy5fY29tcHV0ZU5ld0lkKCk7XG5cbiAgICAvLyBSZW1vdmUgaWNvbiBpZiBkaXNhYmxlZFxuICAgIGlmICh0aGlzLl9vcHRpb25zLnN1Yk1lbnUuZGlzYWJsZUljb24pIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odGFyZ2V0LCA8SWNvblJlZj57aWNvbjogdW5kZWZpbmVkLCBtYXRJY29uOiB1bmRlZmluZWQsIG1hdFN2Z0ljb246IHVuZGVmaW5lZH0pO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZVxuICAgIHRhcmdldC5jaGlsZHJlbiA9IChzb3VyY2UuY2hpbGRyZW4gfHwgW10pLm1hcCgoanNvbjogYW55KSA9PiB0aGlzLmZyb21PYmplY3QoanNvbiwgey4uLm9wdHMsIGZpbGxQYXJlbnQ6IGZhbHNlfSkpO1xuXG4gICAgLy8gRmlsbCBwYXJlbnQgKG9uY2UsIHdoZW4gdGhlIGZ1bGwgdHJlZSBpcyByZWFkeSlcbiAgICBpZiAob3B0cz8uZmlsbFBhcmVudCkge1xuICAgICAgVHJlZUl0ZW1FbnRpdHlVdGlscy50cmVlRmlsbFBhcmVudCh0YXJnZXQpO1xuXG4gICAgICAvLyBGaWxsIGRlZmF1bHRzIGZyb20gdGhlIHBhcmVudCAob25jZSBmaWxsZWQpXG4gICAgICBpZiAob3B0cz8uZmlsbERlZmF1bHRGcm9tUGFyZW50KSB7XG4gICAgICAgIFRyZWVJdGVtRW50aXR5VXRpbHMudmlzaXQodGFyZ2V0LCAoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmICghaXRlbS5wYXJlbnQpIHJldHVybjsgLy8gU2tpcCBpZiBubyBwYXJlbnRcbiAgICAgICAgICBpdGVtLnBhcmVudFBhdGggPSBpdGVtLnBhcmVudFBhdGggfHwgaXRlbS5wYXJlbnQucGF0aDtcbiAgICAgICAgICBpdGVtLnBhcmVudFBhdGhQYXJhbXMgPSBpdGVtLnBhcmVudFBhdGhQYXJhbXMgfHwgaXRlbS5wYXJlbnQucGF0aFBhcmFtcztcbiAgICAgICAgICBpdGVtLnN0YXRpYyA9IHRvQm9vbGVhbihpdGVtLnN0YXRpYywgaXRlbS5wYXJlbnQuc3RhdGljKTtcbiAgICAgICAgICAvLyBDb21wdXRlIHBhdGgsIGZyb20gcGFyZW50IHBhdGggKyBhY3Rpb25cbiAgICAgICAgICBpZiAoIWl0ZW0ucGF0aCAmJiAhIWl0ZW0uYWN0aW9uKSB7XG4gICAgICAgICAgICBpdGVtLnBhdGggPSBpdGVtLnBhcmVudC5wYXRoO1xuICAgICAgICAgICAgaXRlbS5wYXRoUGFyYW1zID0gKHR5cGVvZiBpdGVtLmFjdGlvbiA9PT0gJ3N0cmluZycpID8ge2FjdGlvbjogaXRlbS5hY3Rpb259IDoge2FjdGlvbklkOiBpdGVtLmlkLnRvU3RyaW5nKCksIGFjdGlvblRpdGxlOiBpdGVtLnRpdGxlfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuXG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgY3JlYXRlU3ViTWVudShzb3VyY2U6IFBhcnRpYWw8SU1lbnVJdGVtPik6IE1lbnVJdGVtIHtcbiAgICBpZiAoIXRoaXMuc3ViTWVudUVuYWJsZWQpIHJldHVybiBudWxsOyAvLyBTa2lwIGlmIGRpc2FibGVkXG5cbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmZyb21PYmplY3Qoc291cmNlKTtcblxuICAgIC8vIENoZWNrIGlmIGV4aXN0c1xuICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nSXRlbSA9IHRoaXMuX2ZpbmRFeGlzdGluZ0l0ZW0odGFyZ2V0KTtcbiAgICAgIGlmIChleGlzdGluZ0l0ZW0pIHJldHVybiBleGlzdGluZ0l0ZW07XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlXG4gICAgaWYgKGlzTmlsKHRhcmdldC5pZCkpIHRhcmdldC5pZCA9IHRoaXMuX2NvbXB1dGVOZXdJZCgpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGFzeW5jIGFkZFN1Yk1lbnVJdGVtcyhzb3VyY2VzOiBJTWVudUl0ZW1bXSwgb3B0cz86IHtza2lwSWZFeGlzdHM/OiBib29sZWFufSkge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgaWYgKCF0aGlzLnN1Yk1lbnVFbmFibGVkKSByZXR1cm47IC8vIFNraXBcbiAgICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+IHRoaXMuX2FkZFN1Yk1lbnVJdGVtKHRoaXMuZnJvbU9iamVjdChzb3VyY2UpLCBvcHRzKSk7XG4gIH1cblxuICBhc3luYyBhZGRTdWJNZW51SXRlbShpdGVtOiBJTWVudUl0ZW0sIG9wdHM/OiB7c2tpcElmRXhpc3RzPzogYm9vbGVhbn0pIHtcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIGlmICghdGhpcy5zdWJNZW51RW5hYmxlZCkgcmV0dXJuOyAvLyBTa2lwXG4gICAgcmV0dXJuIHRoaXMuX2FkZFN1Yk1lbnVJdGVtKHRoaXMuZnJvbU9iamVjdChpdGVtKSwgb3B0cyk7XG4gIH1cblxuICBhc3luYyByZW1vdmVTdWJNZW51SXRlbXMoaXRlbXM6IElNZW51SXRlbVtdKSB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcbiAgICByZXR1cm4gKGl0ZW1zIHx8IFtdKS5tYXAoaXRlbSA9PiB0aGlzLl9yZW1vdmVTdWJNZW51SXRlbSh0aGlzLmZyb21PYmplY3QoaXRlbSkpKTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVN1Yk1lbnVJdGVtKGl0ZW06IElNZW51SXRlbSkge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgcmV0dXJuIHRoaXMuX3JlbW92ZVN1Yk1lbnVJdGVtKHRoaXMuZnJvbU9iamVjdChpdGVtKSk7XG4gIH1cblxuICB0b2dnbGVQaW5uZWQoc291cmNlOiBJTWVudUl0ZW0pIHtcbiAgICBjb25zdCBpdGVtID0gKHNvdXJjZSBpbnN0YW5jZW9mIE1lbnVJdGVtKSA/IHNvdXJjZSA6IHRoaXMuX2ZpbmRFeGlzdGluZ0l0ZW0odGhpcy5mcm9tT2JqZWN0KHNvdXJjZSkpO1xuXG4gICAgLy8gU2tpcCBpZiBub3QgZm91bmRcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArIGBTdWIgbWVudSB7JHtzb3VyY2UucGF0aH19IGNhbm5vdCBiZSBmb3VuZCAtIHVuYWJsZSB0byB0b2dnbGUgcGlubmVkIWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNraXAgaWYgc3RhdGljXG4gICAgaWYgKGl0ZW0uc3RhdGljKSByZXR1cm47XG5cbiAgICAvLyBVbnBpbm5lZFxuICAgIGlmIChpdGVtLnBpbm5lZCkge1xuICAgICAgaXRlbS5waW5uZWQgPSBmYWxzZTtcbiAgICAgIGlmICghaXRlbS5kZXRhY2hlZCkge1xuXG4gICAgICAgIHRoaXMuX2RldGFjaGVkU3ViSXRlbXMgPSBbXG4gICAgICAgICAgLi4udGhpcy5fZGV0YWNoZWRTdWJJdGVtcyxcbiAgICAgICAgICAuLi50aGlzLl9kZXRhY2hTdWJNZW51SXRlbXMoKVxuICAgICAgICBdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFBpbm5lZFxuICAgIGVsc2Uge1xuICAgICAgaXRlbS5waW5uZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMub25QaW5uZWQuZW1pdChpdGVtKTtcbiAgfVxuXG5cbiAgYXN5bmMgZXhlY3V0ZUFjdGlvbihldmVudDogRXZlbnQsIGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgY29uc3QgYWN0aW9uID0gaXRlbT8uYWN0aW9uO1xuICAgIGlmICghYWN0aW9uKSByZXR1cm47IC8vIHNraXBcbiAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHN3aXRjaCAoYWN0aW9uIGFzIHN0cmluZykge1xuICAgICAgICBjYXNlICdsb2dvdXQnOlxuICAgICAgICAgIGF3YWl0IHRoaXMubG9nb3V0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Fib3V0JzpcbiAgICAgICAgICBhd2FpdCB0aGlzLm9wZW5BYm91dE1vZGFsKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2V4cGFuZCc6XG4gICAgICAgICAgYXdhaXQgdGhpcy50b2dnbGVFeHBhbmRhYmxlSXRlbShpdGVtKTtcbiAgICAgICAgICBpZiAoaXRlbS5wYXRoKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KGl0ZW0ucGF0aCwge1xuICAgICAgICAgICAgICBxdWVyeVBhcmFtczogaXRlbS5wYXRoUGFyYW1zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBpZiAoaXRlbS5wYXRoKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KGl0ZW0ucGF0aCwge1xuICAgICAgICAgICAgICBxdWVyeVBhcmFtczogaXRlbS5wYXRoUGFyYW1zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gYWN0aW9uOiAnICsgYWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgKGFjdGlvbiBhcyB1bmtub3duIGFzIGFueSkoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvZ291dCgpIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSBhd2FpdCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFtcbiAgICAgICdBVVRILkxPR09VVC5DT05GSVJNX1RJVExFJyxcbiAgICAgICdBVVRILkxPR09VVC5DT05GSVJNX01FU1NBR0UnLFxuICAgICAgJ0NPTU1PTi5CVE5fQ0FOQ0VMJyxcbiAgICAgICdBVVRILkxPR09VVC5CVE5fQ09ORklSTScsXG4gICAgXSk7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLmFsZXJ0Q29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiB0cmFuc2xhdGlvbnNbJ0FVVEguTE9HT1VULkNPTkZJUk1fVElUTEUnXSxcbiAgICAgIG1lc3NhZ2U6IHRyYW5zbGF0aW9uc1snQVVUSC5MT0dPVVQuQ09ORklSTV9NRVNTQUdFJ10sXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQ0FOQ0VMJ10sXG4gICAgICAgICAgcm9sZTogJ2NhbmNlbCcsXG4gICAgICAgICAgY3NzQ2xhc3M6ICdzZWNvbmRhcnknLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydBVVRILkxPR09VVC5CVE5fQ09ORklSTSddLFxuICAgICAgICAgIGNzc0NsYXNzOiAnaW9uLWNvbG9yLXByaW1hcnknLFxuICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2UubG9nb3V0KCk7XG5cbiAgICAgICAgICAgIC8vIEJhY2sgdG8gaG9tZVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KCcvJyksIDEwMCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBhd2FpdCBhbGVydC5wcmVzZW50KCk7XG4gIH1cblxuICBhc3luYyBvcGVuQWJvdXRNb2RhbCgpIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMubW9kYWxDdHJsLmNyZWF0ZSh7IGNvbXBvbmVudDogQWJvdXRNb2RhbCB9KTtcbiAgICByZXR1cm4gbW9kYWwucHJlc2VudCgpO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlRXhwYW5kYWJsZUl0ZW0oaXRlbTogTWVudUl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0uZXhwYW5kZWQpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyAnRXhwYW5kIGl0ZW0nLCBpdGVtKTtcblxuICAgICAgaXRlbS5tYXRJY29uID0gJ2V4cGFuZF9sZXNzJztcblxuICAgICAgLy8gVHJ5IHRvIGF0dGFjaCBzb21lIGl0ZW1cbiAgICAgIHRoaXMuX2RldGFjaGVkU3ViSXRlbXNcbiAgICAgICAgLmZpbHRlcihjaGlsZEl0ZW0gPT4gISF0aGlzLl9maW5kUGFyZW50KGNoaWxkSXRlbSwgW2l0ZW1dKSlcbiAgICAgICAgLmZvckVhY2goY2hpbGRJdGVtID0+IHRoaXMuX2F0dGFjaE1lbnVUb1BhcmVudChpdGVtLCBjaGlsZEl0ZW0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpdGVtLm1hdEljb24gPSAnZXhwYW5kX21vcmUnO1xuXG4gICAgICB0aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zID0gW1xuICAgICAgICAuLi50aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zLFxuICAgICAgICAuLi50aGlzLl9kZXRhY2hTdWJNZW51SXRlbXMoe3BhdGg6ICcvJywgcGFyYW1zOiB7fX0sIGl0ZW0uY2hpbGRyZW4pXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIF9tYXJrQXNPcGVuZWQoKSB7XG4gICAgdGhpcy5fJG9wZW5lZC5uZXh0KHRydWUpO1xuICB9XG5cbiAgX21hcmtBc0Nsb3NlZCgpIHtcbiAgICB0aGlzLl8kb3BlbmVkLm5leHQoZmFsc2UpO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdPblN0YXJ0KCkge1xuICAgIGNvbnNvbGUuaW5mbyhgJHt0aGlzLl9sb2dQcmVmaXh9U3RhcnRpbmcuLi5gKTtcblxuICAgIC8vIFJlc3RvcmUgc3ViIGl0ZW1zIGZyb20gc2V0dGluZ3NcbiAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnJlYWR5KCk7XG4gICAgY29uc3Qgc2V0dGluZ3NTdWJJdGVtczogSU1lbnVJdGVtW10gPSB0aGlzLnNldHRpbmdzLmdldFBhZ2VTZXR0aW5ncygnbWVudScsICdzdWItaXRlbXMnKTtcbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHNldHRpbmdzU3ViSXRlbXMpKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArICdSZXN0b3JpbmcgcGlubmVkIGl0ZW1zIGZyb20gc2V0dGluZ3MuLi4nLCBzZXR0aW5nc1N1Ykl0ZW1zKTtcbiAgICAgIHRoaXMuX2RldGFjaGVkU3ViSXRlbXMgPSBzZXR0aW5nc1N1Ykl0ZW1zLm1hcChzb3VyY2UgPT4gdGhpcy5mcm9tT2JqZWN0KHNvdXJjZSwge2NvbXB1dGVJZDogdHJ1ZSwgZmlsbFBhcmVudDogdHJ1ZX0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50RXZlbnQkID0gbWVyZ2UoXG4gICAgICBmcm9tKHRoaXMuYWNjb3VudFNlcnZpY2UucmVhZHkoKSksXG4gICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9naW4sXG4gICAgICB0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9nb3V0LnBpcGUoXG4gICAgICAgIG1hcChfID0+IG51bGwpXG4gICAgICApXG4gICAgKS5waXBlKFxuICAgICAgbWFwKGFjY291bnQgPT4gaXNOb3ROaWwoYWNjb3VudD8uaWQpID8gYWNjb3VudCA6IG51bGwpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGExLCBhMikgPT4gRGF0ZVV0aWxzLmlzU2FtZShhMT8udXBkYXRlRGF0ZSwgYTI/LnVwZGF0ZURhdGUpKVxuICAgICk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgLy8gQ29tYmluZSBjb25maWcgYW5kIGFjY291bnQgZXZlbnRzXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyxcbiAgICAgICAgYWNjb3VudEV2ZW50JFxuICAgICAgXSkuc3Vic2NyaWJlKChbY29uZmlnLCBhY2NvdW50XSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVJlY2VpdmVkIGNvbmZpZyBvciBhY2NvdW50IGV2ZW50LiBSZWZyZXNoaW5nIGl0ZW1zLi4uYCwgYWNjb3VudCk7XG5cbiAgICAgICAgLy8gTG9hZCBhbGwgaXRlbXNcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLl9sb2FkTWVudUl0ZW1zKGNvbmZpZywgYWNjb3VudCk7XG5cbiAgICAgICAgLy8gRW1pdCBuZXcgcm9vdCBpdGVtc1xuICAgICAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQoaXRlbXMpO1xuXG4gICAgICAgIC8vIEVtaXQgYWNjb3VudCBjaGFuZ2VzIGV2ZW50XG4gICAgICAgIHRoaXMuYWNjb3VudENoYW5nZXMubmV4dChhY2NvdW50KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICBtZXJnZShcbiAgICAgICAgdGhpcy5hY2NvdW50Q2hhbmdlcy5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCkpXG4gICAgICAgICksXG4gICAgICAgIHRoaXMuXyRsaXN0ZW5Sb3V0ZS5waXBlKFxuICAgICAgICAgIGZpbHRlcihsaXN0ZW4gPT4gbGlzdGVuID09PSB0cnVlICYmIHRoaXMuc3RhcnRlZCksXG4gICAgICAgICAgbWVyZ2VNYXAoXyA9PiB0aGlzLnJvdXRlci5ldmVudHMpLFxuICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICAgIG1hcCgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IE1lbnVJdGVtcy5wYXJzZVBhdGhXaXRoUXVlcnkoZXZlbnQudXJsKSksXG4gICAgICAgIClcbiAgICAgICkucGlwZShcbiAgICAgICAgdGhyb3R0bGVUaW1lKDI1MClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUocGF0aFBhcmFtID0+IHtcbiAgICAgICAgY29uc3QgZGV0YWNoZWRTdWJJdGVtcyA9IHRoaXMuX2RldGFjaFN1Yk1lbnVJdGVtcyhwYXRoUGFyYW0pO1xuICAgICAgICBpZiAoZGV0YWNoZWRTdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5fZGV0YWNoZWRTdWJJdGVtcyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RldGFjaGVkU3ViSXRlbXMsXG4gICAgICAgICAgICAuLi5kZXRhY2hlZFN1Ykl0ZW1zXG4gICAgICAgICAgXTtcblxuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9TmV3bHkgZGV0YWNoZWQgaXRlbXM6IGAsIGRldGFjaGVkU3ViSXRlbXMpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cblxuICAgIC8vIFNhdmUgcGlubmVkIGl0ZW1zXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMub25QaW5uZWRcbiAgICAgICAgLnN1YnNjcmliZShpdGVtID0+IHtcblxuICAgICAgICAgIC8vIENvbGxlY3QgcGlubmVkIGVsZW1lbnRzLCB0aGVuIHNlcmlhbGl6ZSBpdCAod2l0aG91dCBpZClcbiAgICAgICAgICBjb25zdCBwaW5uZWRTdWJJdGVtcyA9IHRoaXMuc3ViSXRlbXMuZmlsdGVyKGkgPT4gaS5pc1Bpbm5lZCgpKVxuICAgICAgICAgICAgLm1hcChpdGVtID0+IGl0ZW0uYXNPYmplY3Qoe3dpdGhDaGlsZHJlbjogdHJ1ZSwga2VlcExvY2FsSWQ6IGZhbHNlfSkpO1xuXG4gICAgICAgICAgaWYgKHBpbm5lZFN1Ykl0ZW1zLmxlbmd0aCAmJiB0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgU2F2aW5nICR7cGlubmVkU3ViSXRlbXMubGVuZ3RofSBwaW5uZWQgaXRlbXMsIGluIGxvY2FsIHNldHRpbmdzYCwgcGlubmVkU3ViSXRlbXMpO1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3Muc2F2ZVBhZ2VTZXR0aW5nKCdtZW51JywgcGlubmVkU3ViSXRlbXMsICdzdWItaXRlbXMnKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGZpcnN0Tm90TmlsUHJvbWlzZSh0aGlzLmRhdGFTdWJqZWN0KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRNZW51SXRlbXMoY29uZmlnOiBDb25maWd1cmF0aW9ufG51bGwsIGFjY291bnQ6IEFjY291bnR8bnVsbCkge1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9TG9hZGluZyBtZW51IGl0ZW1zLi4uYCk7XG5cbiAgICAvLyBTYXZlIHByZXZpb3VzIGNoaWxkcmVuIG9mIHJvb3QgaXRlbXNcbiAgICBjb25zdCBkZXRhY2hlZFN1Ykl0ZW1zID0gKHRoaXMuc3ViSXRlbXMgfHwgW10pLmNvbmNhdCh0aGlzLl9zdGF0aWNTdWJJdGVtcyB8fCBbXSlcbiAgICAgIC5yZWR1Y2UoKHJlcywgcm9vdEl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSByb290SXRlbS5jaGlsZHJlbjtcbiAgICAgICAgaWYgKGlzRW1wdHlBcnJheShjaGlsZHJlbikpIHJldHVybiByZXM7XG4gICAgICAgIC8vIERldGFjaCBhbGwgcm9vdCBjaGlsZHJlblxuICAgICAgICByb290SXRlbS5jaGlsZHJlbiA9IFtdO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IGNoaWxkLnBhcmVudCA9IG51bGwpO1xuICAgICAgICAvLyBSZXR1cm4gcm9vdCBjaGlsZHJlblxuICAgICAgICByZXR1cm4gcmVzLmNvbmNhdChjaGlsZHJlbik7XG4gICAgICB9LCB0aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zIHx8IFtdKTtcblxuICAgIC8vIFJlc2V0IGJhc2Ugcm9vdCBpdGVtcyAoY2xlYW4gaXRlbXMgYWRkZWQgYnkgY29uZmlnKVxuICAgIGxldCBpdGVtczogTWVudUl0ZW1bXSA9IHRoaXMuX3N0YXRpY0l0ZW1zLnNsaWNlKCk7XG5cbiAgICAvLyBDb25jYXQgY29uZmlnJ3MgaXRlbXNcbiAgICBjb25zdCBjb25maWdWYWx1ZTogc3RyaW5nID0gY29uZmlnPy5nZXRQcm9wZXJ0eShDT1JFX0NPTkZJR19PUFRJT05TLk1FTlVfSVRFTVMpO1xuICAgIGlmIChpc05vdE5pbE9yQmxhbmsoY29uZmlnVmFsdWUpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb25maWdJdGVtcyA9IEpTT04ucGFyc2UoY29uZmlnVmFsdWUpIGFzIElNZW51SXRlbVtdO1xuICAgICAgICBpdGVtcyA9IChjb25maWdJdGVtcyB8fCBbXSkucmVkdWNlKChyZXM6IE1lbnVJdGVtW10sIHNvdXJjZSkgPT4ge1xuXG4gICAgICAgICAgLy8gTm9ybWFsaXplIHRoZSBpdGVtXG4gICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZnJvbU9iamVjdCh7c3RhdGljOiB0cnVlLCAuLi5zb3VyY2V9LCB7Y29tcHV0ZUlkOiB0cnVlfSk7XG5cbiAgICAgICAgICAvLyBTa2lwIGlzIGFscmVhZHkgbG9hZGVkXG4gICAgICAgICAgaWYgKHJlcy5maW5kKChpKSA9PiBNZW51SXRlbXMuaXNTYW1lKGksIGl0ZW0pKSkgcmV0dXJuIHJlcztcblxuICAgICAgICAgIC8vIFJldXNlIGV4aXN0aW5nIGlkLCBpZiBwb3NzaWJsZVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSXRlbSA9IHRoaXMuZGF0YT8uZmluZCgoaSkgPT4gTWVudUl0ZW1zLmlzU2FtZShpLCBpdGVtKSk7XG4gICAgICAgICAgaWYgKGV4aXN0aW5nSXRlbSkge1xuICAgICAgICAgICAgaXRlbS5pZCA9IGV4aXN0aW5nSXRlbS5pZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXRlbS5hZnRlcikge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSByZXMuZmluZEluZGV4KGkgPT4gaS50aXRsZSA9PT0gaXRlbS5hZnRlcik7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXMuc2xpY2UoMCwgaW5kZXggKyAxKVxuICAgICAgICAgICAgICAgIC5jb25jYXQoaXRlbSlcbiAgICAgICAgICAgICAgICAuY29uY2F0KHJlcy5zbGljZShpbmRleCArIDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXRlbS5iZWZvcmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcmVzLmZpbmRJbmRleChpID0+IGkudGl0bGUgPT09IGl0ZW0uYmVmb3JlKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zbGljZSgwLCBpbmRleClcbiAgICAgICAgICAgICAgICAuY29uY2F0KGl0ZW0pXG4gICAgICAgICAgICAgICAgLmNvbmNhdChyZXMuc2xpY2UoaW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlcy5jb25jYXQoaXRlbSk7XG4gICAgICAgIH0sIGl0ZW1zKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuX2xvZ1ByZWZpeH1JbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gJyR7Q09SRV9DT05GSUdfT1BUSU9OUy5NRU5VX0lURU1TLmtleX0nLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBtZW51IGl0ZW1gLCBlcnIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbHRlciBpdGVtIHVzaW5nIGFjY291bnQgcmlnaHRzXG4gICAgY29uc3Qgb3B0cyA9IHtkZWJ1ZzogdGhpcy5fZGVidWd9O1xuICAgIGl0ZW1zID0gaXRlbXNcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBNZW51SXRlbXMuY2hlY2tJZlZpc2libGUoaXRlbSwgYWNjb3VudCwgY29uZmlnLCBvcHRzKSlcbiAgICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICAgIC8vIFJlcGxhY2UgdGl0bGUgdXNpbmcgYSBjb25maWcgcHJvcGVydHlcbiAgICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayhpdGVtLnRpdGxlUHJvcGVydHkpICYmIGNvbmZpZykge1xuICAgICAgICAgIGl0ZW0udGl0bGUgPSBjb25maWcucHJvcGVydGllc1tpdGVtLnRpdGxlUHJvcGVydHldIHx8IGl0ZW0udGl0bGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Gb3VuZCAke2l0ZW1zLmxlbmd0aH0gdmlzaWJsZSByb290IGl0ZW1zLi4uYCk7XG5cbiAgICAvLyBSZS1hdHRhY2ggc3ViIG1lbnUgaXRlbXNcbiAgICBpZiAodGhpcy5zdWJNZW51RW5hYmxlZCAmJiBkZXRhY2hlZFN1Ykl0ZW1zLmxlbmd0aCkge1xuICAgICAgaWYgKGFjY291bnQpIHtcbiAgICAgICAgdGhpcy5fYWRkU3ViTWVudUl0ZW1zKGRldGFjaGVkU3ViSXRlbXMsIHtza2lwSWZFeGlzdHM6IGZhbHNlLCBhdmFpbGFibGVQYXJlbnRzOiBkZXRhY2hlZFN1Ykl0ZW1zLmNvbmNhdChpdGVtcyl9KTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zID0gZGV0YWNoZWRTdWJJdGVtcztcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkU3ViTWVudUl0ZW1zKHNvdXJjZXM6IE1lbnVJdGVtW10sIG9wdHM/OiB7c2tpcElmRXhpc3RzPzogYm9vbGVhbjsgYXZhaWxhYmxlUGFyZW50cz86IE1lbnVJdGVtW119KSB7XG4gICAgcmV0dXJuIHNvdXJjZXMubWFwKHNvdXJjZSA9PiB0aGlzLl9hZGRTdWJNZW51SXRlbShzb3VyY2UsIG9wdHMpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZFN1Yk1lbnVJdGVtKG5ld0l0ZW06IE1lbnVJdGVtLCBvcHRzPzoge3NraXBJZkV4aXN0cz86IGJvb2xlYW47IGF2YWlsYWJsZVBhcmVudHM/OiBNZW51SXRlbVtdfSkge1xuICAgIG9wdHMgPSB7XG4gICAgICBza2lwSWZFeGlzdHM6IHRydWUsXG4gICAgICAuLi5vcHRzLFxuICAgIH07XG5cbiAgICBjb25zdCBwYXRoUGFyYW0gPSBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCk7XG5cbiAgICAvLyBGaW5kIGlmIGl0ZW0gYWxyZWFkeSBleGlzdHNcbiAgICBjb25zdCBleGlzdGluZ0l0ZW0gPSB0aGlzLl9maW5kRXhpc3RpbmdJdGVtKG5ld0l0ZW0sIG9wdHM/LmF2YWlsYWJsZVBhcmVudHMpO1xuICAgIGlmIChleGlzdGluZ0l0ZW0pIHtcbiAgICAgIC8vIE5vIGNoYW5nZXNcbiAgICAgIGlmIChvcHRzLnNraXBJZkV4aXN0cyAmJiBNZW51SXRlbXMuaXNTYW1lKGV4aXN0aW5nSXRlbSwgbmV3SXRlbSkgJiYgZXhpc3RpbmdJdGVtLnZpc2libGUpIHtcbiAgICAgICAgLy8gREVCVUdcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1Ta2lwcGluZyBzdWIgaXRlbSAoc2FtZSB2aXNpYmxlIGl0ZW0gYWxyZWFkeSBleGlzdClgLCBuZXdJdGVtKTtcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nSXRlbTtcbiAgICAgIH1cblxuXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fVVwZGF0aW5nIGV4aXN0aW5nIHN1YiBpdGVtICNgLCBleGlzdGluZ0l0ZW0uaWQpO1xuXG4gICAgICAvLyBSZXBsYWNlIGV4aXN0aW5nIGl0ZW0sIGJ1dCBrZWVwIHRoZSBleGlzdGluZyBpZFxuICAgICAgaWYgKG5ld0l0ZW0gIT09IGV4aXN0aW5nSXRlbSkge1xuICAgICAgICBuZXdJdGVtLmlkID0gZXhpc3RpbmdJdGVtLmlkO1xuICAgICAgICBuZXdJdGVtLiRjaGlsZHJlbiA9IGV4aXN0aW5nSXRlbS4kY2hpbGRyZW47XG4gICAgICAgIG5ld0l0ZW0ucGlubmVkID0gZXhpc3RpbmdJdGVtLnBpbm5lZDtcbiAgICAgICAgbmV3SXRlbS5zdGF0aWMgPSBleGlzdGluZ0l0ZW0uc3RhdGljO1xuICAgICAgICBpZiAobmV3SXRlbS5waW5uZWQgfHwgbmV3SXRlbS5zdGF0aWMgfHwgZXhpc3RpbmdJdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgICAgLy8gSWYgbG9hZGluZywga2VlcCBleGlzdGluZyB0aXRsZSBpZiBwaW5uZWQgKGF2b2lkIHRvIHNob3cgc2tlbGV0b24pXG4gICAgICAgICAgbmV3SXRlbS50aXRsZSA9IG5ld0l0ZW0udGl0bGUgfHwgZXhpc3RpbmdJdGVtLnRpdGxlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIG5ld0l0ZW0udGl0bGUgPSBpc05vdE5pbChuZXdJdGVtLnRpdGxlKSA/IG5ld0l0ZW0udGl0bGUgOiBleGlzdGluZ0l0ZW0udGl0bGU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQXV0byBzZXQgaWNvbiwgZm9yIGV4cGFuZCBhY3Rpb25cbiAgICAgICAgaWYgKGV4aXN0aW5nSXRlbS5hY3Rpb24gPT09ICdleHBhbmQnKSB7XG4gICAgICAgICAgbmV3SXRlbS5pY29uID0gbnVsbDtcbiAgICAgICAgICBuZXdJdGVtLm1hdEljb24gPSBleGlzdGluZ0l0ZW0uZXhwYW5kZWQgPyAnZXhwYW5kX2xlc3MnIDogJ2V4cGFuZF9tb3JlJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGl0ZW0ncyBpZCAoaWYgbmVlZClcbiAgICBlbHNlIGlmIChpc05pbChuZXdJdGVtLmlkKSkge1xuICAgICAgbmV3SXRlbS5pZCA9IHRoaXMuX2NvbXB1dGVOZXdJZCgpO1xuICAgIH1cblxuICAgIC8vIERlZmF1bHQgaWNvbiBmb3IgZXhwYW5kIGFjdGlvblxuICAgIGlmIChuZXdJdGVtLmFjdGlvbiA9PT0gJ2V4cGFuZCcgJiYgIW5ld0l0ZW0ubWF0SWNvbikge1xuICAgICAgbmV3SXRlbS5tYXRJY29uID0gJ2V4cGFuZF9tb3JlJztcbiAgICB9XG5cbiAgICAvLyBJZiB2aXNpYmxlLCBnZXQgdGhlIHBhcmVudCB3aGVyZSB0byBhdHRhY2ggdGhlIGl0ZW1cbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9maW5kUGFyZW50KG5ld0l0ZW0sIG9wdHM/LmF2YWlsYWJsZVBhcmVudHMpO1xuICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LmV4cGFuZGVkKSB7XG4gICAgICAvLyBBdHRhY2ggaXRlbSB0byBwYXJlbnRcbiAgICAgIHRoaXMuX2F0dGFjaE1lbnVUb1BhcmVudChwYXJlbnQsIG5ld0l0ZW0pO1xuXG4gICAgICAvLyBVcGRhdGUgZGV0YWNoZWQgaXRlbXMgOlxuICAgICAgLy8gLSBleGNsdWRlZCBuZXcgaXRlbVxuICAgICAgLy8gLSBhdHRhY2ggYW5kIGV4Y2x1ZGUgdGhvc2UgdGhhbiBjYW4gYmUgYXR0YWNoZWQgdG8gdGhlIG5ldyBpdGVtXG4gICAgICAvLyBTZWFyY2ggaW4gZGV0YWNoZWQgaXRlbXMgb25lIGhhdmUgbmV3SXRlbSBhcyBwYXJlbnRcbiAgICAgIGlmIChuZXdJdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgIGNvbnN0IGFuY2VzdG9yID0gbmV3SXRlbS5hbmNlc3RvcjtcbiAgICAgICAgdGhpcy5fZGV0YWNoZWRTdWJJdGVtcyA9IHRoaXMuX2RldGFjaGVkU3ViSXRlbXMuY29uY2F0KC4uLm5ld0l0ZW0uY2hpbGRyZW4pXG4gICAgICAgICAgLnJlZHVjZSgocmVzLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICAvLyBFeGNsdWRlZCBuZXdseSBhZGQgaXRlbVxuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IG5ld0l0ZW0uaWQpIHJldHVybiByZXM7XG5cbiAgICAgICAgICAgIC8vIElmIHNvbWUgZGV0YWNoZWQgY2FuIGJlIGF0dGFjaGVkIHRvIHRoZSBuZXcgaXRlbTogZG8gaXRcbiAgICAgICAgICAgIGlmIChNZW51SXRlbXMuY2hlY2tJZlN1Yk1lbnVWaXNpYmxlKGl0ZW0sIHBhdGhQYXJhbSkpIHtcblxuICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLl9maW5kUGFyZW50KGl0ZW0sIFthbmNlc3Rvcl0pO1xuICAgICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGl0ZW0ncyBjaGlsZHJlblxuICAgICAgICAgICAgICAgIGNvbnN0IGRldGFjaGVkQ2hpbGRyZW4gPSB0aGlzLl9kZXRhY2hTdWJNZW51SXRlbXMocGF0aFBhcmFtLCBpdGVtLmNoaWxkcmVuIHx8IFtdKTtcblxuICAgICAgICAgICAgICAgIC8vIEF0dGFjaCBpdGVtXG4gICAgICAgICAgICAgICAgdGhpcy5fYXR0YWNoTWVudVRvUGFyZW50KHBhcmVudCwgaXRlbSk7XG5cbiAgICAgICAgICAgICAgICAvLyBSZW1lbWJlciBkZXRhY2hlZCBjaGlsZHJlblxuICAgICAgICAgICAgICAgIHJldHVybiByZXMuY29uY2F0KC4uLmRldGFjaGVkQ2hpbGRyZW4pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERldGFjaCAoaWYgbmVlZClcbiAgICAgICAgICAgIHRoaXMuX2RldGFjaFRvUGFyZW50KGl0ZW0pO1xuXG4gICAgICAgICAgICAvLyBBZGQgdG8gZGV0YWNoZWQgaXRlbXNcbiAgICAgICAgICAgIHJldHVybiByZXMuY29uY2F0KGl0ZW0pO1xuICAgICAgICAgIH0sIFtdKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBSZW1vdmUgZnJvbSBkZXRhY2hlZCBlbGVtZW50c1xuICAgICAgICB0aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zID0gdGhpcy5fZGV0YWNoZWRTdWJJdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkICE9PSBuZXdJdGVtLmlkKTtcblxuICAgICAgICAvLyBEZXRhY2ggY2hpbGRyZW5cbiAgICAgICAgbmV3SXRlbS5jaGlsZHJlbi5mb3JFYWNoKGl0ZW0gPT4gdGhpcy5fZGV0YWNoVG9QYXJlbnQoaXRlbSkpO1xuXG4gICAgICB9XG5cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyBBZGQgb3IgdXBkYXRlIGRldGFjaGVkIGl0ZW1cbiAgICAgIGNvbnN0IGRldGFjaGVkSW5kZXggPSBpc05vdE5pbChuZXdJdGVtLmlkKSA/IHRoaXMuX2RldGFjaGVkU3ViSXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0gbmV3SXRlbS5pZCkgOiAtMTtcbiAgICAgIGlmIChkZXRhY2hlZEluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zW2RldGFjaGVkSW5kZXhdID0gbmV3SXRlbTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zLnB1c2gobmV3SXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3RhcnQgbGlzdGVuaW5nIHJvdXRlXG4gICAgaWYgKCF0aGlzLl8kbGlzdGVuUm91dGUudmFsdWUpIHRoaXMuXyRsaXN0ZW5Sb3V0ZS5uZXh0KHRydWUpO1xuXG4gICAgcmV0dXJuIG5ld0l0ZW07XG4gIH1cblxuICBwcml2YXRlIF9jb21wdXRlTmV3SWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1Db3VudGVyKys7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVTdWJNZW51SXRlbShpdGVtOiBNZW51SXRlbSkge1xuICAgIGNvbnN0IGV4aXN0aW5nSXRlbSA9IHRoaXMuX2ZpbmRFeGlzdGluZ0l0ZW0oaXRlbSk7XG4gICAgaWYgKGV4aXN0aW5nSXRlbSkge1xuICAgICAgdGhpcy5fZGV0YWNoVG9QYXJlbnQoZXhpc3RpbmdJdGVtKTtcbiAgICAgIHJldHVybiBleGlzdGluZ0l0ZW07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGV0YWNoU3ViTWVudUl0ZW1zKGN1cnJlbnRQYXRoUGFyYW0/OiBNZW51UGF0aFBhcmFtLCBzdWJJdGVtcz86IE1lbnVJdGVtW10pIHtcbiAgICBjdXJyZW50UGF0aFBhcmFtID0gY3VycmVudFBhdGhQYXJhbSA/IGN1cnJlbnRQYXRoUGFyYW0gOiBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybC50b1N0cmluZygpKTtcbiAgICByZXR1cm4gKHN1Ykl0ZW1zIHx8IHRoaXMuc3ViSXRlbXMpXG4gICAgICAucmVkdWNlKChyZXMsIHN1Ykl0ZW0pID0+IHtcblxuICAgICAgICAvLyBOb3QgdmlzaWJsZSA9PiBzaG91bGQgYmUgZGV0YWNoXG4gICAgICAgIGlmICghTWVudUl0ZW1zLmNoZWNrSWZTdWJNZW51VmlzaWJsZShzdWJJdGVtLCBjdXJyZW50UGF0aFBhcmFtKSkge1xuXG4gICAgICAgICAgdGhpcy5fZGV0YWNoVG9QYXJlbnQoc3ViSXRlbSk7XG5cbiAgICAgICAgICByZXR1cm4gcmVzLmNvbmNhdChzdWJJdGVtKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBWaXNpYmxlOiBjaGVjayBjaGlsZHJlblxuICAgICAgICByZXR1cm4gcmVzLmNvbmNhdChcbiAgICAgICAgICB0aGlzLl9kZXRhY2hTdWJNZW51SXRlbXMoY3VycmVudFBhdGhQYXJhbSwgc3ViSXRlbS5jaGlsZHJlbilcbiAgICAgICAgKTtcbiAgICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RldGFjaFRvUGFyZW50KGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgaWYgKCFpdGVtPy5wYXJlbnQpIHJldHVybjsgLy8gU2tpcCBpZiBhbHJlYWR5IGRldGFjaGVkXG4gICAgbGV0IGNoaWxkcmVuID0gaXRlbS5wYXJlbnQuY2hpbGRyZW4gfHwgW107XG5cbiAgICAvLyBSZW1vdmUgZnJvbSBwYXJlbnQgY2hpbGRyZW5cbiAgICBjb25zdCBpbmRleEluUGFyZW50ID0gY2hpbGRyZW4uaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXhJblBhcmVudCAhPT0gLTEpIHtcbiAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uc2xpY2UoKTsgLy8gQ29weSBvcmlnaW5hbCBhcnJheSwgYmVjYXVzZSBpdCBjYW4gYmUgdXNlZCBpbiBhIGxvb3BcbiAgICAgIGNoaWxkcmVuLnNwbGljZShpbmRleEluUGFyZW50LCAxKTtcbiAgICAgIGl0ZW0ucGFyZW50LmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgfVxuXG4gICAgaXRlbS5wYXJlbnQgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmluZEV4aXN0aW5nSXRlbShzZWFyY2hJdGVtOiBJTWVudUl0ZW0sIGl0ZW1zPzogTWVudUl0ZW1bXSwgcmVjdXJzaXZlID0gdHJ1ZSk6IE1lbnVJdGVtIHtcbiAgICBpdGVtcyA9IGl0ZW1zIHx8IFsuLi50aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zLCAuLi50aGlzLmRhdGFdO1xuICAgIGlmICghaXRlbXMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkOyAvLyBOb3QgZm91bmRcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmIChNZW51SXRlbXMuaXNTYW1lSWRPclBhdGhBbmRQYXJhbXMoc2VhcmNoSXRlbSwgaXRlbSkpIHJldHVybiBpdGVtO1xuICAgICAgaWYgKHJlY3Vyc2l2ZSAmJiBpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5fZmluZEV4aXN0aW5nSXRlbShzZWFyY2hJdGVtLCBpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgaWYgKGNoaWxkKSByZXR1cm4gY2hpbGQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmluZFBhcmVudChjaGlsZEl0ZW06IE1lbnVJdGVtLCBhdmFpbGFibGVQYXJlbnRzPzogTWVudUl0ZW1bXSk6IE1lbnVJdGVtIHtcbiAgICBpZiAoIWNoaWxkSXRlbT8ucGF0aCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoY2hpbGRJdGVtLnBhcmVudCkgcmV0dXJuIGNoaWxkSXRlbS5wYXJlbnQ7XG5cbiAgICBhdmFpbGFibGVQYXJlbnRzID0gYXZhaWxhYmxlUGFyZW50cyB8fCBbLi4udGhpcy5fZGV0YWNoZWRTdWJJdGVtcywgLi4udGhpcy5kYXRhXTtcblxuICAgIHJldHVybiBhdmFpbGFibGVQYXJlbnRzLnJlZHVjZSgocmVzLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIWl0ZW0/LnBhdGgpIHJldHVybiByZXM7XG5cbiAgICAgIC8vIEEgZm91bmQgaXRlbSBhbHJlYWR5IG1hdGNoIHdpdGggdGhlIG1lbnVJdGVtLnBhcmVudFBhdGggOiBrZWVwIGl0IGFzIGl0XG4gICAgICAvLyBUaGVyZSBpcyBhIGZvdW5kIGNhbmRpZGF0ZSB0aGF0IGFscmVhZHkgbWF0Y2ggdGhlIGN1cnJlbnQgY2FuZGlkYXRlIDoga2VlcCBpdFxuICAgICAgaWYgKE1lbnVJdGVtcy5pc1BhcmVudChjaGlsZEl0ZW0sIHJlcykpIHJldHVybiByZXM7XG5cbiAgICAgIC8vIElmIHRoZSBtZW51IGl0ZW0gaGFzIGV4cGxpY2l0IHBhcmVudFBhdGggYW5kIGl0cyBwYXRoIGFuZCBwYXRoIHBhcmFtIGFyZSB0aGUgc2FtZSBhcyB0aGUgY2FuZGlkYXRlICA6IHVzZSBpdCBhcyBwYXJlbnRcbiAgICAgIGlmIChNZW51SXRlbXMuaXNQYXJlbnQoY2hpbGRJdGVtLCBpdGVtKSkgcmV0dXJuIGl0ZW07XG5cbiAgICAgIGlmICghcmVzICYmIGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmluZFBhcmVudChjaGlsZEl0ZW0sIGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0sIHVuZGVmaW5lZCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfYXR0YWNoTWVudVRvUGFyZW50KHBhcmVudDogTWVudUl0ZW0sIGNoaWxkOiBNZW51SXRlbSkge1xuXG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1BdHRhY2ggc3ViLW1lbnUgeyR7TWVudUl0ZW1zLmdldFVybChjaGlsZCl9fSB0byBwYXJlbnQgeyR7TWVudUl0ZW1zLmdldFVybChwYXJlbnQpfX1gKTtcblxuICAgIC8vIEF2b2lkIHRvIGtlZXAgaWRlbnRpY2FsIG1lbnUgaXRlbSAod2UgcmVwbGFjZSBpdCB3aXRoIHRoZSBuZXcgY2hpbGQgbWVudSBpdGVtKVxuICAgIC8vaWYgKCFwYXJlbnQ/LiRjaGlsZHJlbikgcGFyZW50LiRjaGlsZHJlbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWVudUl0ZW1bXT4oW10pO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBjaGlsZHJlbi5maW5kSW5kZXgoaXRlbSA9PiBNZW51SXRlbXMuaXNTYW1lSWRPclBhdGhBbmRQYXJhbXMoaXRlbSwgY2hpbGQpKTtcblxuICAgIC8vIFVwZGF0ZSBleGlzdGluZyBlbGVtZW50XG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICBpZiAoY2hpbGRyZW5bZXhpc3RpbmdJbmRleF0gIT09IGNoaWxkKSB7XG4gICAgICAgIGNoaWxkcmVuW2V4aXN0aW5nSW5kZXhdID0gY2hpbGQ7XG4gICAgICAgIHBhcmVudC5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICBjaGlsZC5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG5cbiAgICAgIC8vIFNvcnQgYnkgdGFiIChvciBpZClcbiAgICAgIHBhcmVudC5jaGlsZHJlbiA9IGNoaWxkcmVuLnNvcnQoTWVudUl0ZW1zLnNvcnRCeVRhYk9ySWQpO1xuICAgICAgY2hpbGQucGFyZW50ID0gcGFyZW50O1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
660
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRyxPQUFPLEVBQWEsUUFBUSxFQUFFLFNBQVMsRUFBZSxNQUFNLGNBQWMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUcvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7QUFHbEQs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QUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFckIsc0JBQXNCO1lBQ3RCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekQsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDdkI7SUFDSCxDQUFDOzt3R0E1dEJVLFdBQVcsa1FBeUJaLFdBQVcsYUFDQyxnQkFBZ0IsNkJBQ2hCLGNBQWM7NEdBM0J6QixXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUN4Qzs7MEJBMEJJLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDbkMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCBtZXJnZSwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElNZW51SXRlbSwgTWVudUl0ZW0sIE1lbnVJdGVtcywgTWVudU9wdGlvbnMgfSBmcm9tICcuL21lbnUubW9kZWwnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBEYXRlVXRpbHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGF0ZXMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2NvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBDT1JFX0NPTkZJR19PUFRJT05TIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7IGlzRW1wdHlBcnJheSwgaXNOaWwsIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvYWNjb3VudC5tb2RlbCc7XG5pbXBvcnQgeyBTdGFydGFibGVPYnNlcnZhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtb2JzZXJ2YWJsZS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IGZpcnN0Tm90TmlsUHJvbWlzZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBJY29uUmVmIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWwtc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBUcmVlSXRlbUVudGl0eVV0aWxzIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvdHJlZS1pdGVtLWVudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIE1vZGFsQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFib3V0TW9kYWwgfSBmcm9tICcuLi9hYm91dC9hYm91dC5tb2RhbCc7XG5cbmV4cG9ydCB0eXBlIFNwbGl0UGFuZVNob3dXaGVuID0gYm9vbGVhbiB8ICdsZyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NRU5VX1NIT1dfV0hFTjogU3BsaXRQYW5lU2hvd1doZW4gPSAnbGcnO1xuZXhwb3J0IGNvbnN0IEFQUF9NRU5VX0lURU1TID0gbmV3IEluamVjdGlvblRva2VuPElNZW51SXRlbVtdPignbWVudUl0ZW1zJyk7XG5leHBvcnQgY29uc3QgQVBQX01FTlVfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNZW51T3B0aW9ucz4oJ21lbnVPcHRpb25zJyk7XG5cblxuZXhwb3J0IGludGVyZmFjZSBNZW51UGF0aFBhcmFtIHtcbiAgcGF0aDogc3RyaW5nO1xuICBwYXJhbXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290JywgZGVwczogW0VOVklST05NRU5UXVxufSlcbmV4cG9ydCBjbGFzcyBNZW51U2VydmljZSBleHRlbmRzIFN0YXJ0YWJsZU9ic2VydmFibGVTZXJ2aWNlPE1lbnVJdGVtW10+IHtcblxuICByZWFkb25seSBhY2NvdW50Q2hhbmdlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWNjb3VudD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25QaW5uZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1lbnVJdGVtPih0cnVlKTtcblxuICBwcml2YXRlIF9zdGF0aWNJdGVtczogTWVudUl0ZW1bXTtcbiAgcHJpdmF0ZSBfZGV0YWNoZWRTdWJJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICBwcml2YXRlIF9pdGVtQ291bnRlciA9IDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IE1lbnVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dQcmVmaXggPSAnW21lbnUtc2VydmljZV0gJztcbiAgcHJpdmF0ZSByZWFkb25seSBfJG9wZW5lZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgXyRzcGxpdFBhbmVXaGVuID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTcGxpdFBhbmVTaG93V2hlbj4oREVGQVVMVF9NRU5VX1NIT1dfV0hFTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgXyRlbmFibGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfJGVuYWJsZVN1Yk1lbnU6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfJGxpc3RlblJvdXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9NRU5VX09QVElPTlMpIG9wdGlvbnM/OiBNZW51T3B0aW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9NRU5VX0lURU1TKSBzdGF0aWNJdGVtcz86IElNZW51SXRlbVtdXG4gICkge1xuICAgIHN1cGVyKHNldHRpbmdzKTtcbiAgICB0aGlzLl9vcHRpb25zID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHN1Yk1lbnU6IHtcbiAgICAgICAgZGlzYWJsZUljb246IGZhbHNlLFxuICAgICAgICBzYXZlUGlubmVkOiB0cnVlLFxuICAgICAgICAuLi4ob3B0aW9ucz8uc3ViTWVudSB8fCB7fSksXG4gICAgICAgIC8vIEZvcmNlIGRpc2FibGUgb24gbW9iaWxlXG4gICAgICAgIGVuYWJsZTogb3B0aW9ucz8uc3ViTWVudT8uZW5hYmxlICE9PSBmYWxzZSAmJiAhdGhpcy5zZXR0aW5ncy5tb2JpbGUsXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl8kZW5hYmxlU3ViTWVudSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fb3B0aW9ucy5zdWJNZW51LmVuYWJsZSk7XG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcblxuICAgIHRoaXMuX2RldGFjaGVkU3ViSXRlbXMgPSBbXTtcbiAgICB0aGlzLl9zdGF0aWNJdGVtcyA9IChzdGF0aWNJdGVtcyB8fCBbXSkubWFwKHNvdXJjZSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmZyb21PYmplY3Qoe3N0YXRpYzogdHJ1ZSwgLi4uc291cmNlfSwge2NvbXB1dGVJZDogdHJ1ZSwgZmlsbFBhcmVudDogdHJ1ZSwgZmlsbERlZmF1bHRGcm9tUGFyZW50OiB0cnVlfSk7XG5cbiAgICAgIGNvbnN0IGRldGFjaGVkSXRlbXMgPSBUcmVlSXRlbUVudGl0eVV0aWxzLmRlbGV0ZVJlY3Vyc2l2ZWx5KHRhcmdldCwgKGl0ZW0pID0+IGl0ZW0uc3RhdGljICE9PSB0cnVlKTtcbiAgICAgIGlmIChkZXRhY2hlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyAnRGV0YWNoZWQgaW5pdCBpdGVtcycsIGRldGFjaGVkSXRlbXMpO1xuICAgICAgICBkZXRhY2hlZEl0ZW1zLmZvckVhY2goaXRlbSA9PiB0aGlzLl9kZXRhY2hUb1BhcmVudChpdGVtKSk7XG5cbiAgICAgICAgdGhpcy5fZGV0YWNoZWRTdWJJdGVtcy5wdXNoKC4uLmRldGFjaGVkSXRlbXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBvcGVuZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuXyRvcGVuZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3BsaXRQYW5lV2hlbigpOiBPYnNlcnZhYmxlPFNwbGl0UGFuZVNob3dXaGVuPiB7XG4gICAgcmV0dXJuIHRoaXMuXyRzcGxpdFBhbmVXaGVuLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuXyRlbmFibGVkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHN1Yk1lbnVFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl8kZW5hYmxlU3ViTWVudS52YWx1ZTtcbiAgfVxuXG4gIGdldCBzdWJJdGVtcygpOiBNZW51SXRlbVtdIHtcbiAgICByZXR1cm4gKHRoaXMuZGF0YSB8fCBbXSkucmVkdWNlKChyZXMsIHJvb3RFbGVtZW50KSA9PiByZXMuY29uY2F0KHJvb3RFbGVtZW50LmNoaWxkcmVuKSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX3N0YXRpY1N1Ykl0ZW1zKCk6IE1lbnVJdGVtW10ge1xuICAgIHJldHVybiAodGhpcy5fc3RhdGljSXRlbXMgfHwgW10pLnJlZHVjZSgocmVzLCByb290RWxlbWVudCkgPT4gcmVzLmNvbmNhdChyb290RWxlbWVudC5jaGlsZHJlbiksIFtdKTtcbiAgfVxuXG4gIGVuYWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuXyRlbmFibGVkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZW5hYmxlU3ViTWVudSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuXyRlbmFibGVTdWJNZW51Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgc2V0U3BsaXRQYW5lU2hvd1doZW4odmFsdWU6IFNwbGl0UGFuZVNob3dXaGVuKSB7XG4gICAgaWYgKHRoaXMuXyRzcGxpdFBhbmVXaGVuLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fJHNwbGl0UGFuZVdoZW4ubmV4dCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU3BsaXRQYW5lV2hlbigpIHtcbiAgICBpZiAodGhpcy5fJHNwbGl0UGFuZVdoZW4udmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl8kc3BsaXRQYW5lV2hlbi5uZXh0KGZhbHNlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl8kc3BsaXRQYW5lV2hlbi5uZXh0KERFRkFVTFRfTUVOVV9TSE9XX1dIRU4pO1xuICAgIH1cbiAgfVxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiB7d2l0aENoaWxkcmVuPzogYm9vbGVhbjsgY29tcHV0ZUlkPzogYm9vbGVhbjsgZmlsbFBhcmVudD86IGJvb2xlYW47IGZpbGxEZWZhdWx0RnJvbVBhcmVudD86IGJvb2xlYW59KTogTWVudUl0ZW0ge1xuICAgIGNvbnN0IHRhcmdldCA9IE1lbnVJdGVtLmZyb21PYmplY3Qoc291cmNlLCB7d2l0aENoaWxkcmVuOiBmYWxzZX0pO1xuICAgIC8vIENvbXB1dGUgaWQgaWYgbmVlZFxuICAgIGlmIChvcHRzPy5jb21wdXRlSWQgJiYgaXNOaWwodGFyZ2V0LmlkKSkgdGFyZ2V0LmlkID0gdGhpcy5fY29tcHV0ZU5ld0lkKCk7XG5cbiAgICAvLyBSZW1vdmUgaWNvbiBpZiBkaXNhYmxlZFxuICAgIGlmICh0aGlzLl9vcHRpb25zLnN1Yk1lbnUuZGlzYWJsZUljb24pIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odGFyZ2V0LCA8SWNvblJlZj57aWNvbjogdW5kZWZpbmVkLCBtYXRJY29uOiB1bmRlZmluZWQsIG1hdFN2Z0ljb246IHVuZGVmaW5lZH0pO1xuICAgIH1cblxuICAgIC8vIFJlY3Vyc2l2ZVxuICAgIHRhcmdldC5jaGlsZHJlbiA9IChzb3VyY2UuY2hpbGRyZW4gfHwgW10pLm1hcCgoanNvbjogYW55KSA9PiB0aGlzLmZyb21PYmplY3QoanNvbiwgey4uLm9wdHMsIGZpbGxQYXJlbnQ6IGZhbHNlfSkpO1xuXG4gICAgLy8gRmlsbCBwYXJlbnQgKG9uY2UsIHdoZW4gdGhlIGZ1bGwgdHJlZSBpcyByZWFkeSlcbiAgICBpZiAob3B0cz8uZmlsbFBhcmVudCkge1xuICAgICAgVHJlZUl0ZW1FbnRpdHlVdGlscy50cmVlRmlsbFBhcmVudCh0YXJnZXQpO1xuXG4gICAgICAvLyBGaWxsIGRlZmF1bHRzIGZyb20gdGhlIHBhcmVudCAob25jZSBmaWxsZWQpXG4gICAgICBpZiAob3B0cz8uZmlsbERlZmF1bHRGcm9tUGFyZW50KSB7XG4gICAgICAgIFRyZWVJdGVtRW50aXR5VXRpbHMudmlzaXQodGFyZ2V0LCAoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmICghaXRlbS5wYXJlbnQpIHJldHVybjsgLy8gU2tpcCBpZiBubyBwYXJlbnRcbiAgICAgICAgICBpdGVtLnBhcmVudFBhdGggPSBpdGVtLnBhcmVudFBhdGggfHwgaXRlbS5wYXJlbnQucGF0aDtcbiAgICAgICAgICBpdGVtLnBhcmVudFBhdGhQYXJhbXMgPSBpdGVtLnBhcmVudFBhdGhQYXJhbXMgfHwgaXRlbS5wYXJlbnQucGF0aFBhcmFtcztcbiAgICAgICAgICBpdGVtLnN0YXRpYyA9IHRvQm9vbGVhbihpdGVtLnN0YXRpYywgaXRlbS5wYXJlbnQuc3RhdGljKTtcbiAgICAgICAgICAvLyBDb21wdXRlIHBhdGgsIGZyb20gcGFyZW50IHBhdGggKyBhY3Rpb25cbiAgICAgICAgICBpZiAoIWl0ZW0ucGF0aCAmJiAhIWl0ZW0uYWN0aW9uKSB7XG4gICAgICAgICAgICBpdGVtLnBhdGggPSBpdGVtLnBhcmVudC5wYXRoO1xuICAgICAgICAgICAgaXRlbS5wYXRoUGFyYW1zID0gKHR5cGVvZiBpdGVtLmFjdGlvbiA9PT0gJ3N0cmluZycpID8ge2FjdGlvbjogaXRlbS5hY3Rpb259IDoge2FjdGlvbklkOiBpdGVtLmlkLnRvU3RyaW5nKCksIGFjdGlvblRpdGxlOiBpdGVtLnRpdGxlfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuXG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgY3JlYXRlU3ViTWVudShzb3VyY2U6IFBhcnRpYWw8SU1lbnVJdGVtPik6IE1lbnVJdGVtIHtcbiAgICBpZiAoIXRoaXMuc3ViTWVudUVuYWJsZWQpIHJldHVybiBudWxsOyAvLyBTa2lwIGlmIGRpc2FibGVkXG5cbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmZyb21PYmplY3Qoc291cmNlKTtcblxuICAgIC8vIENoZWNrIGlmIGV4aXN0c1xuICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nSXRlbSA9IHRoaXMuX2ZpbmRFeGlzdGluZ0l0ZW0odGFyZ2V0KTtcbiAgICAgIGlmIChleGlzdGluZ0l0ZW0pIHJldHVybiBleGlzdGluZ0l0ZW07XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlXG4gICAgaWYgKGlzTmlsKHRhcmdldC5pZCkpIHRhcmdldC5pZCA9IHRoaXMuX2NvbXB1dGVOZXdJZCgpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGFzeW5jIGFkZFN1Yk1lbnVJdGVtcyhzb3VyY2VzOiBJTWVudUl0ZW1bXSwgb3B0cz86IHtza2lwSWZFeGlzdHM/OiBib29sZWFufSkge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgaWYgKCF0aGlzLnN1Yk1lbnVFbmFibGVkKSByZXR1cm47IC8vIFNraXBcbiAgICByZXR1cm4gc291cmNlcy5tYXAoc291cmNlID0+IHRoaXMuX2FkZFN1Yk1lbnVJdGVtKHRoaXMuZnJvbU9iamVjdChzb3VyY2UpLCBvcHRzKSk7XG4gIH1cblxuICBhc3luYyBhZGRTdWJNZW51SXRlbShpdGVtOiBJTWVudUl0ZW0sIG9wdHM/OiB7c2tpcElmRXhpc3RzPzogYm9vbGVhbn0pIHtcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuICAgIGlmICghdGhpcy5zdWJNZW51RW5hYmxlZCkgcmV0dXJuOyAvLyBTa2lwXG4gICAgcmV0dXJuIHRoaXMuX2FkZFN1Yk1lbnVJdGVtKHRoaXMuZnJvbU9iamVjdChpdGVtKSwgb3B0cyk7XG4gIH1cblxuICBhc3luYyByZW1vdmVTdWJNZW51SXRlbXMoaXRlbXM6IElNZW51SXRlbVtdKSB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcbiAgICByZXR1cm4gKGl0ZW1zIHx8IFtdKS5tYXAoaXRlbSA9PiB0aGlzLl9yZW1vdmVTdWJNZW51SXRlbSh0aGlzLmZyb21PYmplY3QoaXRlbSkpKTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVN1Yk1lbnVJdGVtKGl0ZW06IElNZW51SXRlbSkge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnJlYWR5KCk7XG4gICAgcmV0dXJuIHRoaXMuX3JlbW92ZVN1Yk1lbnVJdGVtKHRoaXMuZnJvbU9iamVjdChpdGVtKSk7XG4gIH1cblxuICB0b2dnbGVQaW5uZWQoc291cmNlOiBJTWVudUl0ZW0pIHtcbiAgICBjb25zdCBpdGVtID0gKHNvdXJjZSBpbnN0YW5jZW9mIE1lbnVJdGVtKSA/IHNvdXJjZSA6IHRoaXMuX2ZpbmRFeGlzdGluZ0l0ZW0odGhpcy5mcm9tT2JqZWN0KHNvdXJjZSkpO1xuXG4gICAgLy8gU2tpcCBpZiBub3QgZm91bmRcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArIGBTdWIgbWVudSB7JHtzb3VyY2UucGF0aH19IGNhbm5vdCBiZSBmb3VuZCAtIHVuYWJsZSB0byB0b2dnbGUgcGlubmVkIWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNraXAgaWYgc3RhdGljXG4gICAgaWYgKGl0ZW0uc3RhdGljKSByZXR1cm47XG5cbiAgICAvLyBVbnBpbm5lZFxuICAgIGlmIChpdGVtLnBpbm5lZCkge1xuICAgICAgaXRlbS5waW5uZWQgPSBmYWxzZTtcbiAgICAgIGlmICghaXRlbS5kZXRhY2hlZCkge1xuXG4gICAgICAgIHRoaXMuX2RldGFjaGVkU3ViSXRlbXMgPSBbXG4gICAgICAgICAgLi4udGhpcy5fZGV0YWNoZWRTdWJJdGVtcyxcbiAgICAgICAgICAuLi50aGlzLl9kZXRhY2hTdWJNZW51SXRlbXMoKVxuICAgICAgICBdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFBpbm5lZFxuICAgIGVsc2Uge1xuICAgICAgaXRlbS5waW5uZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMub25QaW5uZWQuZW1pdChpdGVtKTtcbiAgfVxuXG5cbiAgYXN5bmMgZXhlY3V0ZUFjdGlvbihldmVudDogRXZlbnQsIGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgY29uc3QgYWN0aW9uID0gaXRlbT8uYWN0aW9uO1xuICAgIGlmICghYWN0aW9uKSByZXR1cm47IC8vIHNraXBcbiAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHN3aXRjaCAoYWN0aW9uIGFzIHN0cmluZykge1xuICAgICAgICBjYXNlICdsb2dvdXQnOlxuICAgICAgICAgIGF3YWl0IHRoaXMubG9nb3V0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Fib3V0JzpcbiAgICAgICAgICBhd2FpdCB0aGlzLm9wZW5BYm91dE1vZGFsKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2V4cGFuZCc6XG4gICAgICAgICAgYXdhaXQgdGhpcy50b2dnbGVFeHBhbmRhYmxlSXRlbShpdGVtKTtcbiAgICAgICAgICBpZiAoaXRlbS5wYXRoKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KGl0ZW0ucGF0aCwge1xuICAgICAgICAgICAgICBxdWVyeVBhcmFtczogaXRlbS5wYXRoUGFyYW1zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBpZiAoaXRlbS5wYXRoKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KGl0ZW0ucGF0aCwge1xuICAgICAgICAgICAgICBxdWVyeVBhcmFtczogaXRlbS5wYXRoUGFyYW1zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gYWN0aW9uOiAnICsgYWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgKGFjdGlvbiBhcyB1bmtub3duIGFzIGFueSkoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvZ291dCgpIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSBhd2FpdCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFtcbiAgICAgICdBVVRILkxPR09VVC5DT05GSVJNX1RJVExFJyxcbiAgICAgICdBVVRILkxPR09VVC5DT05GSVJNX01FU1NBR0UnLFxuICAgICAgJ0NPTU1PTi5CVE5fQ0FOQ0VMJyxcbiAgICAgICdBVVRILkxPR09VVC5CVE5fQ09ORklSTScsXG4gICAgXSk7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLmFsZXJ0Q29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiB0cmFuc2xhdGlvbnNbJ0FVVEguTE9HT1VULkNPTkZJUk1fVElUTEUnXSxcbiAgICAgIG1lc3NhZ2U6IHRyYW5zbGF0aW9uc1snQVVUSC5MT0dPVVQuQ09ORklSTV9NRVNTQUdFJ10sXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQ0FOQ0VMJ10sXG4gICAgICAgICAgcm9sZTogJ2NhbmNlbCcsXG4gICAgICAgICAgY3NzQ2xhc3M6ICdzZWNvbmRhcnknLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydBVVRILkxPR09VVC5CVE5fQ09ORklSTSddLFxuICAgICAgICAgIGNzc0NsYXNzOiAnaW9uLWNvbG9yLXByaW1hcnknLFxuICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2UubG9nb3V0KCk7XG5cbiAgICAgICAgICAgIC8vIEJhY2sgdG8gaG9tZVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KCcvJyksIDEwMCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBhd2FpdCBhbGVydC5wcmVzZW50KCk7XG4gIH1cblxuICBhc3luYyBvcGVuQWJvdXRNb2RhbCgpIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMubW9kYWxDdHJsLmNyZWF0ZSh7IGNvbXBvbmVudDogQWJvdXRNb2RhbCB9KTtcbiAgICByZXR1cm4gbW9kYWwucHJlc2VudCgpO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlRXhwYW5kYWJsZUl0ZW0oaXRlbTogTWVudUl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0uZXhwYW5kZWQpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyAnRXhwYW5kIGl0ZW0nLCBpdGVtKTtcblxuICAgICAgaXRlbS5tYXRJY29uID0gJ2V4cGFuZF9sZXNzJztcblxuICAgICAgLy8gVHJ5IHRvIGF0dGFjaCBzb21lIGl0ZW1cbiAgICAgIHRoaXMuX2RldGFjaGVkU3ViSXRlbXNcbiAgICAgICAgLmZpbHRlcihjaGlsZEl0ZW0gPT4gISF0aGlzLl9maW5kUGFyZW50KGNoaWxkSXRlbSwgW2l0ZW1dKSlcbiAgICAgICAgLmZvckVhY2goY2hpbGRJdGVtID0+IHRoaXMuX2F0dGFjaE1lbnVUb1BhcmVudChpdGVtLCBjaGlsZEl0ZW0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpdGVtLm1hdEljb24gPSAnZXhwYW5kX21vcmUnO1xuXG4gICAgICB0aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zID0gW1xuICAgICAgICAuLi50aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zLFxuICAgICAgICAuLi50aGlzLl9kZXRhY2hTdWJNZW51SXRlbXMoe3BhdGg6ICcvJywgcGFyYW1zOiB7fX0sIGl0ZW0uY2hpbGRyZW4pXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIF9tYXJrQXNPcGVuZWQoKSB7XG4gICAgdGhpcy5fJG9wZW5lZC5uZXh0KHRydWUpO1xuICB9XG5cbiAgX21hcmtBc0Nsb3NlZCgpIHtcbiAgICB0aGlzLl8kb3BlbmVkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoKSB7XG4gICAgdGhpcy5fJG9wZW5lZC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIG9wZW4oKSB7XG4gICAgdGhpcy5fJG9wZW5lZC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpIHtcbiAgICBjb25zb2xlLmluZm8oYCR7dGhpcy5fbG9nUHJlZml4fVN0YXJ0aW5nLi4uYCk7XG5cbiAgICAvLyBSZXN0b3JlIHN1YiBpdGVtcyBmcm9tIHNldHRpbmdzXG4gICAgYXdhaXQgdGhpcy5zZXR0aW5ncy5yZWFkeSgpO1xuICAgIGNvbnN0IHNldHRpbmdzU3ViSXRlbXM6IElNZW51SXRlbVtdID0gdGhpcy5zZXR0aW5ncy5nZXRQYWdlU2V0dGluZ3MoJ21lbnUnLCAnc3ViLWl0ZW1zJyk7XG4gICAgaWYgKGlzTm90RW1wdHlBcnJheShzZXR0aW5nc1N1Ykl0ZW1zKSkge1xuICAgICAgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyAnUmVzdG9yaW5nIHBpbm5lZCBpdGVtcyBmcm9tIHNldHRpbmdzLi4uJywgc2V0dGluZ3NTdWJJdGVtcyk7XG4gICAgICB0aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zID0gc2V0dGluZ3NTdWJJdGVtcy5tYXAoc291cmNlID0+IHRoaXMuZnJvbU9iamVjdChzb3VyY2UsIHtjb21wdXRlSWQ6IHRydWUsIGZpbGxQYXJlbnQ6IHRydWV9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgYWNjb3VudEV2ZW50JCA9IG1lcmdlKFxuICAgICAgZnJvbSh0aGlzLmFjY291bnRTZXJ2aWNlLnJlYWR5KCkpLFxuICAgICAgdGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ2luLFxuICAgICAgdGhpcy5hY2NvdW50U2VydmljZS5vbkxvZ291dC5waXBlKFxuICAgICAgICBtYXAoXyA9PiBudWxsKVxuICAgICAgKVxuICAgICkucGlwZShcbiAgICAgIG1hcChhY2NvdW50ID0+IGlzTm90TmlsKGFjY291bnQ/LmlkKSA/IGFjY291bnQgOiBudWxsKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhMSwgYTIpID0+IERhdGVVdGlscy5pc1NhbWUoYTE/LnVwZGF0ZURhdGUsIGEyPy51cGRhdGVEYXRlKSlcbiAgICApO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIC8vIENvbWJpbmUgY29uZmlnIGFuZCBhY2NvdW50IGV2ZW50c1xuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcsXG4gICAgICAgIGFjY291bnRFdmVudCRcbiAgICAgIF0pLnN1YnNjcmliZSgoW2NvbmZpZywgYWNjb3VudF0pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1SZWNlaXZlZCBjb25maWcgb3IgYWNjb3VudCBldmVudC4gUmVmcmVzaGluZyBpdGVtcy4uLmAsIGFjY291bnQpO1xuXG4gICAgICAgIC8vIExvYWQgYWxsIGl0ZW1zXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5fbG9hZE1lbnVJdGVtcyhjb25maWcsIGFjY291bnQpO1xuXG4gICAgICAgIC8vIEVtaXQgbmV3IHJvb3QgaXRlbXNcbiAgICAgICAgdGhpcy5kYXRhU3ViamVjdC5uZXh0KGl0ZW1zKTtcblxuICAgICAgICAvLyBFbWl0IGFjY291bnQgY2hhbmdlcyBldmVudFxuICAgICAgICB0aGlzLmFjY291bnRDaGFuZ2VzLm5leHQoYWNjb3VudCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgbWVyZ2UoXG4gICAgICAgIHRoaXMuYWNjb3VudENoYW5nZXMucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4gTWVudUl0ZW1zLnBhcnNlUGF0aFdpdGhRdWVyeSh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwpKVxuICAgICAgICApLFxuICAgICAgICB0aGlzLl8kbGlzdGVuUm91dGUucGlwZShcbiAgICAgICAgICBmaWx0ZXIobGlzdGVuID0+IGxpc3RlbiA9PT0gdHJ1ZSAmJiB0aGlzLnN0YXJ0ZWQpLFxuICAgICAgICAgIG1lcmdlTWFwKF8gPT4gdGhpcy5yb3V0ZXIuZXZlbnRzKSxcbiAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgICBtYXAoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KGV2ZW50LnVybCkpLFxuICAgICAgICApXG4gICAgICApLnBpcGUoXG4gICAgICAgIHRocm90dGxlVGltZSgyNTApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHBhdGhQYXJhbSA9PiB7XG4gICAgICAgIGNvbnN0IGRldGFjaGVkU3ViSXRlbXMgPSB0aGlzLl9kZXRhY2hTdWJNZW51SXRlbXMocGF0aFBhcmFtKTtcbiAgICAgICAgaWYgKGRldGFjaGVkU3ViSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuX2RldGFjaGVkU3ViSXRlbXMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zLFxuICAgICAgICAgICAgLi4uZGV0YWNoZWRTdWJJdGVtc1xuICAgICAgICAgIF07XG5cbiAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fU5ld2x5IGRldGFjaGVkIGl0ZW1zOiBgLCBkZXRhY2hlZFN1Ykl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG5cbiAgICAvLyBTYXZlIHBpbm5lZCBpdGVtc1xuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLm9uUGlubmVkXG4gICAgICAgIC5zdWJzY3JpYmUoaXRlbSA9PiB7XG5cbiAgICAgICAgICAvLyBDb2xsZWN0IHBpbm5lZCBlbGVtZW50cywgdGhlbiBzZXJpYWxpemUgaXQgKHdpdGhvdXQgaWQpXG4gICAgICAgICAgY29uc3QgcGlubmVkU3ViSXRlbXMgPSB0aGlzLnN1Ykl0ZW1zLmZpbHRlcihpID0+IGkuaXNQaW5uZWQoKSlcbiAgICAgICAgICAgIC5tYXAoaXRlbSA9PiBpdGVtLmFzT2JqZWN0KHt3aXRoQ2hpbGRyZW46IHRydWUsIGtlZXBMb2NhbElkOiBmYWxzZX0pKTtcblxuICAgICAgICAgIGlmIChwaW5uZWRTdWJJdGVtcy5sZW5ndGggJiYgdGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFNhdmluZyAke3Bpbm5lZFN1Ykl0ZW1zLmxlbmd0aH0gcGlubmVkIGl0ZW1zLCBpbiBsb2NhbCBzZXR0aW5nc2AsIHBpbm5lZFN1Ykl0ZW1zKTtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLnNhdmVQYWdlU2V0dGluZygnbWVudScsIHBpbm5lZFN1Ykl0ZW1zLCAnc3ViLWl0ZW1zJyk7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBmaXJzdE5vdE5pbFByb21pc2UodGhpcy5kYXRhU3ViamVjdCk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkTWVudUl0ZW1zKGNvbmZpZzogQ29uZmlndXJhdGlvbnxudWxsLCBhY2NvdW50OiBBY2NvdW50fG51bGwpIHtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5fbG9nUHJlZml4fUxvYWRpbmcgbWVudSBpdGVtcy4uLmApO1xuXG4gICAgLy8gU2F2ZSBwcmV2aW91cyBjaGlsZHJlbiBvZiByb290IGl0ZW1zXG4gICAgY29uc3QgZGV0YWNoZWRTdWJJdGVtcyA9ICh0aGlzLnN1Ykl0ZW1zIHx8IFtdKS5jb25jYXQodGhpcy5fc3RhdGljU3ViSXRlbXMgfHwgW10pXG4gICAgICAucmVkdWNlKChyZXMsIHJvb3RJdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gcm9vdEl0ZW0uY2hpbGRyZW47XG4gICAgICAgIGlmIChpc0VtcHR5QXJyYXkoY2hpbGRyZW4pKSByZXR1cm4gcmVzO1xuICAgICAgICAvLyBEZXRhY2ggYWxsIHJvb3QgY2hpbGRyZW5cbiAgICAgICAgcm9vdEl0ZW0uY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiBjaGlsZC5wYXJlbnQgPSBudWxsKTtcbiAgICAgICAgLy8gUmV0dXJuIHJvb3QgY2hpbGRyZW5cbiAgICAgICAgcmV0dXJuIHJlcy5jb25jYXQoY2hpbGRyZW4pO1xuICAgICAgfSwgdGhpcy5fZGV0YWNoZWRTdWJJdGVtcyB8fCBbXSk7XG5cbiAgICAvLyBSZXNldCBiYXNlIHJvb3QgaXRlbXMgKGNsZWFuIGl0ZW1zIGFkZGVkIGJ5IGNvbmZpZylcbiAgICBsZXQgaXRlbXM6IE1lbnVJdGVtW10gPSB0aGlzLl9zdGF0aWNJdGVtcy5zbGljZSgpO1xuXG4gICAgLy8gQ29uY2F0IGNvbmZpZydzIGl0ZW1zXG4gICAgY29uc3QgY29uZmlnVmFsdWU6IHN0cmluZyA9IGNvbmZpZz8uZ2V0UHJvcGVydHkoQ09SRV9DT05GSUdfT1BUSU9OUy5NRU5VX0lURU1TKTtcbiAgICBpZiAoaXNOb3ROaWxPckJsYW5rKGNvbmZpZ1ZhbHVlKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29uZmlnSXRlbXMgPSBKU09OLnBhcnNlKGNvbmZpZ1ZhbHVlKSBhcyBJTWVudUl0ZW1bXTtcbiAgICAgICAgaXRlbXMgPSAoY29uZmlnSXRlbXMgfHwgW10pLnJlZHVjZSgocmVzOiBNZW51SXRlbVtdLCBzb3VyY2UpID0+IHtcblxuICAgICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgaXRlbVxuICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZyb21PYmplY3Qoe3N0YXRpYzogdHJ1ZSwgLi4uc291cmNlfSwge2NvbXB1dGVJZDogdHJ1ZX0pO1xuXG4gICAgICAgICAgLy8gU2tpcCBpcyBhbHJlYWR5IGxvYWRlZFxuICAgICAgICAgIGlmIChyZXMuZmluZCgoaSkgPT4gTWVudUl0ZW1zLmlzU2FtZShpLCBpdGVtKSkpIHJldHVybiByZXM7XG5cbiAgICAgICAgICAvLyBSZXVzZSBleGlzdGluZyBpZCwgaWYgcG9zc2libGVcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0l0ZW0gPSB0aGlzLmRhdGE/LmZpbmQoKGkpID0+IE1lbnVJdGVtcy5pc1NhbWUoaSwgaXRlbSkpO1xuICAgICAgICAgIGlmIChleGlzdGluZ0l0ZW0pIHtcbiAgICAgICAgICAgIGl0ZW0uaWQgPSBleGlzdGluZ0l0ZW0uaWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGl0ZW0uYWZ0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcmVzLmZpbmRJbmRleChpID0+IGkudGl0bGUgPT09IGl0ZW0uYWZ0ZXIpO1xuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzLnNsaWNlKDAsIGluZGV4ICsgMSlcbiAgICAgICAgICAgICAgICAuY29uY2F0KGl0ZW0pXG4gICAgICAgICAgICAgICAgLmNvbmNhdChyZXMuc2xpY2UoaW5kZXggKyAxKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGl0ZW0uYmVmb3JlKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHJlcy5maW5kSW5kZXgoaSA9PiBpLnRpdGxlID09PSBpdGVtLmJlZm9yZSk7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXMuc2xpY2UoMCwgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmNvbmNhdChpdGVtKVxuICAgICAgICAgICAgICAgIC5jb25jYXQocmVzLnNsaWNlKGluZGV4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXMuY29uY2F0KGl0ZW0pO1xuICAgICAgICB9LCBpdGVtcyk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgJHt0aGlzLl9sb2dQcmVmaXh9SW52YWxpZCB2YWx1ZSBmb3Igb3B0aW9uICcke0NPUkVfQ09ORklHX09QVElPTlMuTUVOVV9JVEVNUy5rZXl9Jy4gRXhwZWN0ZWQgYW4gYXJyYXkgb2YgbWVudSBpdGVtYCwgZXJyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaWx0ZXIgaXRlbSB1c2luZyBhY2NvdW50IHJpZ2h0c1xuICAgIGNvbnN0IG9wdHMgPSB7ZGVidWc6IHRoaXMuX2RlYnVnfTtcbiAgICBpdGVtcyA9IGl0ZW1zXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gTWVudUl0ZW1zLmNoZWNrSWZWaXNpYmxlKGl0ZW0sIGFjY291bnQsIGNvbmZpZywgb3B0cykpXG4gICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAvLyBSZXBsYWNlIHRpdGxlIHVzaW5nIGEgY29uZmlnIHByb3BlcnR5XG4gICAgICAgIGlmIChpc05vdE5pbE9yQmxhbmsoaXRlbS50aXRsZVByb3BlcnR5KSAmJiBjb25maWcpIHtcbiAgICAgICAgICBpdGVtLnRpdGxlID0gY29uZmlnLnByb3BlcnRpZXNbaXRlbS50aXRsZVByb3BlcnR5XSB8fCBpdGVtLnRpdGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9Rm91bmQgJHtpdGVtcy5sZW5ndGh9IHZpc2libGUgcm9vdCBpdGVtcy4uLmApO1xuXG4gICAgLy8gUmUtYXR0YWNoIHN1YiBtZW51IGl0ZW1zXG4gICAgaWYgKHRoaXMuc3ViTWVudUVuYWJsZWQgJiYgZGV0YWNoZWRTdWJJdGVtcy5sZW5ndGgpIHtcbiAgICAgIGlmIChhY2NvdW50KSB7XG4gICAgICAgIHRoaXMuX2FkZFN1Yk1lbnVJdGVtcyhkZXRhY2hlZFN1Ykl0ZW1zLCB7c2tpcElmRXhpc3RzOiBmYWxzZSwgYXZhaWxhYmxlUGFyZW50czogZGV0YWNoZWRTdWJJdGVtcy5jb25jYXQoaXRlbXMpfSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5fZGV0YWNoZWRTdWJJdGVtcyA9IGRldGFjaGVkU3ViSXRlbXM7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fZGV0YWNoZWRTdWJJdGVtcyA9IFtdO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgX2FkZFN1Yk1lbnVJdGVtcyhzb3VyY2VzOiBNZW51SXRlbVtdLCBvcHRzPzoge3NraXBJZkV4aXN0cz86IGJvb2xlYW47IGF2YWlsYWJsZVBhcmVudHM/OiBNZW51SXRlbVtdfSkge1xuICAgIHJldHVybiBzb3VyY2VzLm1hcChzb3VyY2UgPT4gdGhpcy5fYWRkU3ViTWVudUl0ZW0oc291cmNlLCBvcHRzKSk7XG4gIH1cblxuICBwcml2YXRlIF9hZGRTdWJNZW51SXRlbShuZXdJdGVtOiBNZW51SXRlbSwgb3B0cz86IHtza2lwSWZFeGlzdHM/OiBib29sZWFuOyBhdmFpbGFibGVQYXJlbnRzPzogTWVudUl0ZW1bXX0pIHtcbiAgICBvcHRzID0ge1xuICAgICAgc2tpcElmRXhpc3RzOiB0cnVlLFxuICAgICAgLi4ub3B0cyxcbiAgICB9O1xuXG4gICAgY29uc3QgcGF0aFBhcmFtID0gTWVudUl0ZW1zLnBhcnNlUGF0aFdpdGhRdWVyeSh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwpO1xuXG4gICAgLy8gRmluZCBpZiBpdGVtIGFscmVhZHkgZXhpc3RzXG4gICAgY29uc3QgZXhpc3RpbmdJdGVtID0gdGhpcy5fZmluZEV4aXN0aW5nSXRlbShuZXdJdGVtLCBvcHRzPy5hdmFpbGFibGVQYXJlbnRzKTtcbiAgICBpZiAoZXhpc3RpbmdJdGVtKSB7XG4gICAgICAvLyBObyBjaGFuZ2VzXG4gICAgICBpZiAob3B0cy5za2lwSWZFeGlzdHMgJiYgTWVudUl0ZW1zLmlzU2FtZShleGlzdGluZ0l0ZW0sIG5ld0l0ZW0pICYmIGV4aXN0aW5nSXRlbS52aXNpYmxlKSB7XG4gICAgICAgIC8vIERFQlVHXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9U2tpcHBpbmcgc3ViIGl0ZW0gKHNhbWUgdmlzaWJsZSBpdGVtIGFscmVhZHkgZXhpc3QpYCwgbmV3SXRlbSk7XG4gICAgICAgIHJldHVybiBleGlzdGluZ0l0ZW07XG4gICAgICB9XG5cblxuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1VcGRhdGluZyBleGlzdGluZyBzdWIgaXRlbSAjYCwgZXhpc3RpbmdJdGVtLmlkKTtcblxuICAgICAgLy8gUmVwbGFjZSBleGlzdGluZyBpdGVtLCBidXQga2VlcCB0aGUgZXhpc3RpbmcgaWRcbiAgICAgIGlmIChuZXdJdGVtICE9PSBleGlzdGluZ0l0ZW0pIHtcbiAgICAgICAgbmV3SXRlbS5pZCA9IGV4aXN0aW5nSXRlbS5pZDtcbiAgICAgICAgbmV3SXRlbS4kY2hpbGRyZW4gPSBleGlzdGluZ0l0ZW0uJGNoaWxkcmVuO1xuICAgICAgICBuZXdJdGVtLnBpbm5lZCA9IGV4aXN0aW5nSXRlbS5waW5uZWQ7XG4gICAgICAgIG5ld0l0ZW0uc3RhdGljID0gZXhpc3RpbmdJdGVtLnN0YXRpYztcbiAgICAgICAgaWYgKG5ld0l0ZW0ucGlubmVkIHx8IG5ld0l0ZW0uc3RhdGljIHx8IGV4aXN0aW5nSXRlbS5leHBhbmRlZCkge1xuICAgICAgICAgIC8vIElmIGxvYWRpbmcsIGtlZXAgZXhpc3RpbmcgdGl0bGUgaWYgcGlubmVkIChhdm9pZCB0byBzaG93IHNrZWxldG9uKVxuICAgICAgICAgIG5ld0l0ZW0udGl0bGUgPSBuZXdJdGVtLnRpdGxlIHx8IGV4aXN0aW5nSXRlbS50aXRsZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBuZXdJdGVtLnRpdGxlID0gaXNOb3ROaWwobmV3SXRlbS50aXRsZSkgPyBuZXdJdGVtLnRpdGxlIDogZXhpc3RpbmdJdGVtLnRpdGxlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEF1dG8gc2V0IGljb24sIGZvciBleHBhbmQgYWN0aW9uXG4gICAgICAgIGlmIChleGlzdGluZ0l0ZW0uYWN0aW9uID09PSAnZXhwYW5kJykge1xuICAgICAgICAgIG5ld0l0ZW0uaWNvbiA9IG51bGw7XG4gICAgICAgICAgbmV3SXRlbS5tYXRJY29uID0gZXhpc3RpbmdJdGVtLmV4cGFuZGVkID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZW5lcmF0ZSBpdGVtJ3MgaWQgKGlmIG5lZWQpXG4gICAgZWxzZSBpZiAoaXNOaWwobmV3SXRlbS5pZCkpIHtcbiAgICAgIG5ld0l0ZW0uaWQgPSB0aGlzLl9jb21wdXRlTmV3SWQoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IGljb24gZm9yIGV4cGFuZCBhY3Rpb25cbiAgICBpZiAobmV3SXRlbS5hY3Rpb24gPT09ICdleHBhbmQnICYmICFuZXdJdGVtLm1hdEljb24pIHtcbiAgICAgIG5ld0l0ZW0ubWF0SWNvbiA9ICdleHBhbmRfbW9yZSc7XG4gICAgfVxuXG4gICAgLy8gSWYgdmlzaWJsZSwgZ2V0IHRoZSBwYXJlbnQgd2hlcmUgdG8gYXR0YWNoIHRoZSBpdGVtXG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fZmluZFBhcmVudChuZXdJdGVtLCBvcHRzPy5hdmFpbGFibGVQYXJlbnRzKTtcbiAgICBpZiAocGFyZW50ICYmIHBhcmVudC5leHBhbmRlZCkge1xuICAgICAgLy8gQXR0YWNoIGl0ZW0gdG8gcGFyZW50XG4gICAgICB0aGlzLl9hdHRhY2hNZW51VG9QYXJlbnQocGFyZW50LCBuZXdJdGVtKTtcblxuICAgICAgLy8gVXBkYXRlIGRldGFjaGVkIGl0ZW1zIDpcbiAgICAgIC8vIC0gZXhjbHVkZWQgbmV3IGl0ZW1cbiAgICAgIC8vIC0gYXR0YWNoIGFuZCBleGNsdWRlIHRob3NlIHRoYW4gY2FuIGJlIGF0dGFjaGVkIHRvIHRoZSBuZXcgaXRlbVxuICAgICAgLy8gU2VhcmNoIGluIGRldGFjaGVkIGl0ZW1zIG9uZSBoYXZlIG5ld0l0ZW0gYXMgcGFyZW50XG4gICAgICBpZiAobmV3SXRlbS5leHBhbmRlZCkge1xuICAgICAgICBjb25zdCBhbmNlc3RvciA9IG5ld0l0ZW0uYW5jZXN0b3I7XG4gICAgICAgIHRoaXMuX2RldGFjaGVkU3ViSXRlbXMgPSB0aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zLmNvbmNhdCguLi5uZXdJdGVtLmNoaWxkcmVuKVxuICAgICAgICAgIC5yZWR1Y2UoKHJlcywgaXRlbSkgPT4ge1xuICAgICAgICAgICAgLy8gRXhjbHVkZWQgbmV3bHkgYWRkIGl0ZW1cbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSBuZXdJdGVtLmlkKSByZXR1cm4gcmVzO1xuXG4gICAgICAgICAgICAvLyBJZiBzb21lIGRldGFjaGVkIGNhbiBiZSBhdHRhY2hlZCB0byB0aGUgbmV3IGl0ZW06IGRvIGl0XG4gICAgICAgICAgICBpZiAoTWVudUl0ZW1zLmNoZWNrSWZTdWJNZW51VmlzaWJsZShpdGVtLCBwYXRoUGFyYW0pKSB7XG5cbiAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fZmluZFBhcmVudChpdGVtLCBbYW5jZXN0b3JdKTtcbiAgICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBpdGVtJ3MgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICBjb25zdCBkZXRhY2hlZENoaWxkcmVuID0gdGhpcy5fZGV0YWNoU3ViTWVudUl0ZW1zKHBhdGhQYXJhbSwgaXRlbS5jaGlsZHJlbiB8fCBbXSk7XG5cbiAgICAgICAgICAgICAgICAvLyBBdHRhY2ggaXRlbVxuICAgICAgICAgICAgICAgIHRoaXMuX2F0dGFjaE1lbnVUb1BhcmVudChwYXJlbnQsIGl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgZGV0YWNoZWQgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLmNvbmNhdCguLi5kZXRhY2hlZENoaWxkcmVuKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBEZXRhY2ggKGlmIG5lZWQpXG4gICAgICAgICAgICB0aGlzLl9kZXRhY2hUb1BhcmVudChpdGVtKTtcblxuICAgICAgICAgICAgLy8gQWRkIHRvIGRldGFjaGVkIGl0ZW1zXG4gICAgICAgICAgICByZXR1cm4gcmVzLmNvbmNhdChpdGVtKTtcbiAgICAgICAgICB9LCBbXSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gZGV0YWNoZWQgZWxlbWVudHNcbiAgICAgICAgdGhpcy5fZGV0YWNoZWRTdWJJdGVtcyA9IHRoaXMuX2RldGFjaGVkU3ViSXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pZCAhPT0gbmV3SXRlbS5pZCk7XG5cbiAgICAgICAgLy8gRGV0YWNoIGNoaWxkcmVuXG4gICAgICAgIG5ld0l0ZW0uY2hpbGRyZW4uZm9yRWFjaChpdGVtID0+IHRoaXMuX2RldGFjaFRvUGFyZW50KGl0ZW0pKTtcblxuICAgICAgfVxuXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gQWRkIG9yIHVwZGF0ZSBkZXRhY2hlZCBpdGVtXG4gICAgICBjb25zdCBkZXRhY2hlZEluZGV4ID0gaXNOb3ROaWwobmV3SXRlbS5pZCkgPyB0aGlzLl9kZXRhY2hlZFN1Ykl0ZW1zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaWQgPT09IG5ld0l0ZW0uaWQpIDogLTE7XG4gICAgICBpZiAoZGV0YWNoZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5fZGV0YWNoZWRTdWJJdGVtc1tkZXRhY2hlZEluZGV4XSA9IG5ld0l0ZW07XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5fZGV0YWNoZWRTdWJJdGVtcy5wdXNoKG5ld0l0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN0YXJ0IGxpc3RlbmluZyByb3V0ZVxuICAgIGlmICghdGhpcy5fJGxpc3RlblJvdXRlLnZhbHVlKSB0aGlzLl8kbGlzdGVuUm91dGUubmV4dCh0cnVlKTtcblxuICAgIHJldHVybiBuZXdJdGVtO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcHV0ZU5ld0lkKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtQ291bnRlcisrO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlU3ViTWVudUl0ZW0oaXRlbTogTWVudUl0ZW0pIHtcbiAgICBjb25zdCBleGlzdGluZ0l0ZW0gPSB0aGlzLl9maW5kRXhpc3RpbmdJdGVtKGl0ZW0pO1xuICAgIGlmIChleGlzdGluZ0l0ZW0pIHtcbiAgICAgIHRoaXMuX2RldGFjaFRvUGFyZW50KGV4aXN0aW5nSXRlbSk7XG4gICAgICByZXR1cm4gZXhpc3RpbmdJdGVtO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2RldGFjaFN1Yk1lbnVJdGVtcyhjdXJyZW50UGF0aFBhcmFtPzogTWVudVBhdGhQYXJhbSwgc3ViSXRlbXM/OiBNZW51SXRlbVtdKSB7XG4gICAgY3VycmVudFBhdGhQYXJhbSA9IGN1cnJlbnRQYXRoUGFyYW0gPyBjdXJyZW50UGF0aFBhcmFtIDogTWVudUl0ZW1zLnBhcnNlUGF0aFdpdGhRdWVyeSh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIChzdWJJdGVtcyB8fCB0aGlzLnN1Ykl0ZW1zKVxuICAgICAgLnJlZHVjZSgocmVzLCBzdWJJdGVtKSA9PiB7XG5cbiAgICAgICAgLy8gTm90IHZpc2libGUgPT4gc2hvdWxkIGJlIGRldGFjaFxuICAgICAgICBpZiAoIU1lbnVJdGVtcy5jaGVja0lmU3ViTWVudVZpc2libGUoc3ViSXRlbSwgY3VycmVudFBhdGhQYXJhbSkpIHtcblxuICAgICAgICAgIHRoaXMuX2RldGFjaFRvUGFyZW50KHN1Ykl0ZW0pO1xuXG4gICAgICAgICAgcmV0dXJuIHJlcy5jb25jYXQoc3ViSXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVmlzaWJsZTogY2hlY2sgY2hpbGRyZW5cbiAgICAgICAgcmV0dXJuIHJlcy5jb25jYXQoXG4gICAgICAgICAgdGhpcy5fZGV0YWNoU3ViTWVudUl0ZW1zKGN1cnJlbnRQYXRoUGFyYW0sIHN1Ykl0ZW0uY2hpbGRyZW4pXG4gICAgICAgICk7XG4gICAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIF9kZXRhY2hUb1BhcmVudChpdGVtOiBNZW51SXRlbSkge1xuICAgIGlmICghaXRlbT8ucGFyZW50KSByZXR1cm47IC8vIFNraXAgaWYgYWxyZWFkeSBkZXRhY2hlZFxuICAgIGxldCBjaGlsZHJlbiA9IGl0ZW0ucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuXG4gICAgLy8gUmVtb3ZlIGZyb20gcGFyZW50IGNoaWxkcmVuXG4gICAgY29uc3QgaW5kZXhJblBhcmVudCA9IGNoaWxkcmVuLmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4SW5QYXJlbnQgIT09IC0xKSB7XG4gICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLnNsaWNlKCk7IC8vIENvcHkgb3JpZ2luYWwgYXJyYXksIGJlY2F1c2UgaXQgY2FuIGJlIHVzZWQgaW4gYSBsb29wXG4gICAgICBjaGlsZHJlbi5zcGxpY2UoaW5kZXhJblBhcmVudCwgMSk7XG4gICAgICBpdGVtLnBhcmVudC5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIH1cblxuICAgIGl0ZW0ucGFyZW50ID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmRFeGlzdGluZ0l0ZW0oc2VhcmNoSXRlbTogSU1lbnVJdGVtLCBpdGVtcz86IE1lbnVJdGVtW10sIHJlY3Vyc2l2ZSA9IHRydWUpOiBNZW51SXRlbSB7XG4gICAgaXRlbXMgPSBpdGVtcyB8fCBbLi4udGhpcy5fZGV0YWNoZWRTdWJJdGVtcywgLi4udGhpcy5kYXRhXTtcbiAgICBpZiAoIWl0ZW1zLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gTm90IGZvdW5kXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoTWVudUl0ZW1zLmlzU2FtZUlkT3JQYXRoQW5kUGFyYW1zKHNlYXJjaEl0ZW0sIGl0ZW0pKSByZXR1cm4gaXRlbTtcbiAgICAgIGlmIChyZWN1cnNpdmUgJiYgaXRlbS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBjaGlsZCA9IHRoaXMuX2ZpbmRFeGlzdGluZ0l0ZW0oc2VhcmNoSXRlbSwgaXRlbS5jaGlsZHJlbik7XG4gICAgICAgIGlmIChjaGlsZCkgcmV0dXJuIGNoaWxkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmRQYXJlbnQoY2hpbGRJdGVtOiBNZW51SXRlbSwgYXZhaWxhYmxlUGFyZW50cz86IE1lbnVJdGVtW10pOiBNZW51SXRlbSB7XG4gICAgaWYgKCFjaGlsZEl0ZW0/LnBhdGgpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGNoaWxkSXRlbS5wYXJlbnQpIHJldHVybiBjaGlsZEl0ZW0ucGFyZW50O1xuXG4gICAgYXZhaWxhYmxlUGFyZW50cyA9IGF2YWlsYWJsZVBhcmVudHMgfHwgWy4uLnRoaXMuX2RldGFjaGVkU3ViSXRlbXMsIC4uLnRoaXMuZGF0YV07XG5cbiAgICByZXR1cm4gYXZhaWxhYmxlUGFyZW50cy5yZWR1Y2UoKHJlcywgaXRlbSkgPT4ge1xuICAgICAgaWYgKCFpdGVtPy5wYXRoKSByZXR1cm4gcmVzO1xuXG4gICAgICAvLyBBIGZvdW5kIGl0ZW0gYWxyZWFkeSBtYXRjaCB3aXRoIHRoZSBtZW51SXRlbS5wYXJlbnRQYXRoIDoga2VlcCBpdCBhcyBpdFxuICAgICAgLy8gVGhlcmUgaXMgYSBmb3VuZCBjYW5kaWRhdGUgdGhhdCBhbHJlYWR5IG1hdGNoIHRoZSBjdXJyZW50IGNhbmRpZGF0ZSA6IGtlZXAgaXRcbiAgICAgIGlmIChNZW51SXRlbXMuaXNQYXJlbnQoY2hpbGRJdGVtLCByZXMpKSByZXR1cm4gcmVzO1xuXG4gICAgICAvLyBJZiB0aGUgbWVudSBpdGVtIGhhcyBleHBsaWNpdCBwYXJlbnRQYXRoIGFuZCBpdHMgcGF0aCBhbmQgcGF0aCBwYXJhbSBhcmUgdGhlIHNhbWUgYXMgdGhlIGNhbmRpZGF0ZSAgOiB1c2UgaXQgYXMgcGFyZW50XG4gICAgICBpZiAoTWVudUl0ZW1zLmlzUGFyZW50KGNoaWxkSXRlbSwgaXRlbSkpIHJldHVybiBpdGVtO1xuXG4gICAgICBpZiAoIXJlcyAmJiBpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmRQYXJlbnQoY2hpbGRJdGVtLCBpdGVtLmNoaWxkcmVuKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB1bmRlZmluZWQpO1xuICB9O1xuXG4gIHByaXZhdGUgX2F0dGFjaE1lbnVUb1BhcmVudChwYXJlbnQ6IE1lbnVJdGVtLCBjaGlsZDogTWVudUl0ZW0pIHtcblxuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLl9sb2dQcmVmaXh9QXR0YWNoIHN1Yi1tZW51IHske01lbnVJdGVtcy5nZXRVcmwoY2hpbGQpfX0gdG8gcGFyZW50IHske01lbnVJdGVtcy5nZXRVcmwocGFyZW50KX19YCk7XG5cbiAgICAvLyBBdm9pZCB0byBrZWVwIGlkZW50aWNhbCBtZW51IGl0ZW0gKHdlIHJlcGxhY2UgaXQgd2l0aCB0aGUgbmV3IGNoaWxkIG1lbnUgaXRlbSlcbiAgICAvL2lmICghcGFyZW50Py4kY2hpbGRyZW4pIHBhcmVudC4kY2hpbGRyZW4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lbnVJdGVtW10+KFtdKTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbiB8fCBbXTtcbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gY2hpbGRyZW4uZmluZEluZGV4KGl0ZW0gPT4gTWVudUl0ZW1zLmlzU2FtZUlkT3JQYXRoQW5kUGFyYW1zKGl0ZW0sIGNoaWxkKSk7XG5cbiAgICAvLyBVcGRhdGUgZXhpc3RpbmcgZWxlbWVudFxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgaWYgKGNoaWxkcmVuW2V4aXN0aW5nSW5kZXhdICE9PSBjaGlsZCkge1xuICAgICAgICBjaGlsZHJlbltleGlzdGluZ0luZGV4XSA9IGNoaWxkO1xuICAgICAgICBwYXJlbnQuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgICAgY2hpbGQucGFyZW50ID0gcGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuXG4gICAgICAvLyBTb3J0IGJ5IHRhYiAob3IgaWQpXG4gICAgICBwYXJlbnQuY2hpbGRyZW4gPSBjaGlsZHJlbi5zb3J0KE1lbnVJdGVtcy5zb3J0QnlUYWJPcklkKTtcbiAgICAgIGNoaWxkLnBhcmVudCA9IHBhcmVudDtcbiAgICB9XG4gIH1cblxufVxuIl19
|