@koalarx/ui 13.0.8 → 13.0.9
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/list/esm2020/lib/list.abstract.mjs +11 -1
- package/list/esm2020/lib/list.component.mjs +3 -3
- package/list/fesm2015/koalarx-ui-list.mjs +12 -2
- package/list/fesm2015/koalarx-ui-list.mjs.map +1 -1
- package/list/fesm2020/koalarx-ui-list.mjs +12 -2
- package/list/fesm2020/koalarx-ui-list.mjs.map +1 -1
- package/list/lib/list.abstract.d.ts +2 -0
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ import { FormAbstract } from '@koalarx/ui/form';
|
|
|
4
4
|
import { debounceTime, first, map, startWith, switchMap } from 'rxjs/operators';
|
|
5
5
|
import { MatTableDataSource } from '@angular/material/table';
|
|
6
6
|
import { delay } from "@koalarx/utils/operators/delay";
|
|
7
|
+
import { randomString } from "@koalarx/utils/operators/string";
|
|
7
8
|
export class ListAbstract extends FormAbstract {
|
|
8
9
|
constructor(requestFunction, requestResponseFunction, formSearch) {
|
|
9
10
|
super(formSearch);
|
|
@@ -17,6 +18,7 @@ export class ListAbstract extends FormAbstract {
|
|
|
17
18
|
this.typeRequest = 'onDemand';
|
|
18
19
|
this.filterParams = new BehaviorSubject(null);
|
|
19
20
|
this.filterError$ = new BehaviorSubject(null);
|
|
21
|
+
this.tableId = randomString(20, { uppercase: true, lowercase: true });
|
|
20
22
|
}
|
|
21
23
|
selectAll() {
|
|
22
24
|
this.isAllSelected() ?
|
|
@@ -101,6 +103,7 @@ export class ListAbstract extends FormAbstract {
|
|
|
101
103
|
observe.next(true);
|
|
102
104
|
})), debounceTime(300), switchMap(() => this.runRequestFunction()), map((response) => {
|
|
103
105
|
this.loading(false);
|
|
106
|
+
this.scrollTableToTop();
|
|
104
107
|
return this.requestResponseFunction(response);
|
|
105
108
|
})).subscribe();
|
|
106
109
|
}
|
|
@@ -109,6 +112,7 @@ export class ListAbstract extends FormAbstract {
|
|
|
109
112
|
this.dataSource.paginator = this.paginator;
|
|
110
113
|
this.subscriptionList = this.filterParams.pipe(startWith({}), debounceTime(300), switchMap(() => this.runRequestFunction()), map((response) => {
|
|
111
114
|
this.loading(false);
|
|
115
|
+
this.scrollTableToTop();
|
|
112
116
|
return this.requestResponseFunction(response);
|
|
113
117
|
})).subscribe();
|
|
114
118
|
}
|
|
@@ -153,5 +157,11 @@ export class ListAbstract extends FormAbstract {
|
|
|
153
157
|
});
|
|
154
158
|
});
|
|
155
159
|
}
|
|
160
|
+
scrollTableToTop() {
|
|
161
|
+
const table = document.getElementById(this.tableId);
|
|
162
|
+
if (table) {
|
|
163
|
+
table.scrollTop = 0;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
156
166
|
}
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xpc3Qvc3JjL2xpYi9saXN0LmFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzdELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUt2RCxNQUFNLE9BQWdCLFlBQWEsU0FBUSxZQUFZO0lBcUJyRCxZQUNVLGVBQXNDLEVBQ3RDLHVCQUFrRCxFQUMxRCxVQUEyQjtRQUUzQixLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFKVixvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUFDdEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUEyQjtRQXRCckQsY0FBUyxHQUFHLElBQUksY0FBYyxDQUFTLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRCxpQkFBWSxHQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkQsZUFBVSxHQUFHLElBQUksa0JBQWtCLENBQU0sRUFBRSxDQUFDLENBQUM7UUFDN0MsZ0JBQVcsR0FBdUIs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SixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1BYnN0cmFjdCB9IGZyb20gJ0Brb2FsYXJ4L3VpL2Zvcm0nO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaXJzdCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IEtvYWxhTGlzdEZvcm1GaWx0ZXJJbnRlcmZhY2UgfSBmcm9tICcuL2tvYWxhLWxpc3QtZm9ybS1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IEtvYWxhRHluYW1pY0NvbXBvbmVudCB9IGZyb20gXCJAa29hbGFyeC91aS9keW5hbWljLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tIFwiQGtvYWxhcngvdXRpbHMvb3BlcmF0b3JzL2RlbGF5XCI7XG5pbXBvcnQgeyBLb2FsYUxpc3RDb25maWdJbnRlcmZhY2UgfSBmcm9tIFwiLi9rb2FsYS5saXN0LWNvbmZpZy5pbnRlcmZhY2VcIjtcblxuZXhwb3J0IHR5cGUgS29hbGFMaXN0UGFnZVNpemUgPSAxMCB8IDIwIHwgMzAgfCA1MCB8IDEwMDtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExpc3RBYnN0cmFjdCBleHRlbmRzIEZvcm1BYnN0cmFjdCB7XG4gIHB1YmxpYyBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8b2JqZWN0Pih0cnVlLCBbXSk7XG4gIHB1YmxpYyBsaW1pdE9wdGlvbnM6IG51bWJlcltdID0gWzEwLCAyMCwgMzAsIDUwLCAxMDBdO1xuICBwdWJsaWMgc2hvd01lbnVMaXN0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBhbGxTZWxlY3RlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPGFueT4oW10pO1xuICBwdWJsaWMgdHlwZVJlcXVlc3Q6ICdhbGwnIHwgJ29uRGVtYW5kJyA9ICdvbkRlbWFuZCc7XG4gIHB1YmxpYyBmaWx0ZXJQYXJhbXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEtvYWxhTGlzdEZvcm1GaWx0ZXJJbnRlcmZhY2V8bnVsbD4obnVsbCk7XG4gIHB1YmxpYyBmaWx0ZXJFcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHB1YmxpYyBlbXB0eUxpc3RDb21wb25lbnQ/OiBLb2FsYUR5bmFtaWNDb21wb25lbnQ7XG4gIHB1YmxpYyBlcnJvckxpc3RDb21wb25lbnQ/OiBLb2FsYUR5bmFtaWNDb21wb25lbnQ7XG4gIHB1YmxpYyBwYWdlU2l6ZTogS29hbGFMaXN0UGFnZVNpemU7XG5cbiAgcHJvdGVjdGVkIGNvbmZpZz86IEtvYWxhTGlzdENvbmZpZ0ludGVyZmFjZTtcbiAgcHJvdGVjdGVkIHBhZ2luYXRvcj86IE1hdFBhZ2luYXRvcjtcbiAgcHJvdGVjdGVkIHNvcnQ/OiBNYXRTb3J0O1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uTGlzdD86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25Tb3J0TGlzdD86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBpbnRlcnZhbFNvcnRMaXN0OiBhbnk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVxdWVzdEZ1bmN0aW9uOiAoKSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gICAgcHJpdmF0ZSByZXF1ZXN0UmVzcG9uc2VGdW5jdGlvbjogPFQ+KHJlc3VsdHM6IFRbXSkgPT4gdm9pZCxcbiAgICBmb3JtU2VhcmNoOiAoKSA9PiBGb3JtR3JvdXBcbiAgKSB7XG4gICAgc3VwZXIoZm9ybVNlYXJjaCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuaXNBbGxTZWxlY3RlZCgpID9cbiAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpIDpcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAodGhpcy5jb25maWc/LmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdCAmJiAhdGhpcy5jb25maWcuZGlzYWJsZWRDaGVja2JveEl0ZW1MaXN0KGl0ZW0pKSB8fFxuICAgICAgICAhdGhpcy5jb25maWc/LmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdChpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuaXNBbGxTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHVibGljIGRlZmluZVN0YXR1c1NlbGVjdEFsbChzdGF0dXM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFsbFNlbGVjdGVkJC5uZXh0KHN0YXR1cyk7XG4gICAgcmV0dXJuIHRoaXMuYWxsU2VsZWN0ZWQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0SXRlbSgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd01lbnVMaXN0ID0gdGhpcy5zZWxlY3Rpb24uaGFzVmFsdWUoKTtcbiAgICAgIHRoaXMuaXNBbGxTZWxlY3RlZCgpO1xuICAgIH0sIDUwKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZWFyY2goZmlsdGVyPzogYW55KSB7XG4gICAgdGhpcy5sb2FkaW5nKHRydWUpO1xuICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgaWYgKHRoaXMucGFnaW5hdG9yKSB7XG4gICAgICB0aGlzLnBhZ2luYXRvci5maXJzdFBhZ2UoKTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJQYXJhbXMubmV4dCh7XG4gICAgICBwYXJhbXM6IGZpbHRlcixcbiAgICAgIHNvcnQ6IHRoaXMuc29ydD8uYWN0aXZlID8/ICcnLFxuICAgICAgb3JkZXI6IHRoaXMuc29ydD8uZGlyZWN0aW9uID8/ICdhc2MnLFxuICAgICAgcGFnZTogdGhpcy5wYWdpbmF0b3I/LnBhZ2VJbmRleCA/PyAwLFxuICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdG9yPy5wYWdlU2l6ZSA/PyAzMFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblNvcnRMaXN0Py51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uTGlzdD8udW5zdWJzY3JpYmUoKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxTb3J0TGlzdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgYWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBsZXQgdGVudGF0aXZhcyA9IDA7XG4gICAgbGV0IHN0b3AgPSBmYWxzZTtcbiAgICBkbyB7XG4gICAgICB0ZW50YXRpdmFzKys7XG4gICAgICBhd2FpdCBkZWxheSg0MDApO1xuICAgICAgaWYgKHRoaXMuc29ydCB8fCB0aGlzLmVtcHR5TGlzdENvbXBvbmVudCkge1xuICAgICAgICB0aGlzLnByZXBhcmVTZWFyY2goKS50aGVuKCk7XG4gICAgICAgIGlmICh0aGlzLmVtcHR5TGlzdENvbXBvbmVudCkgc3RvcCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHRlbnRhdGl2YXMgPiAxMCkge1xuICAgICAgICBzdG9wID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IHdoaWxlICghdGhpcy5zb3J0ICYmICFzdG9wKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVNlYXJjaCgpIHtcbiAgICB0aGlzLmludGVydmFsU29ydExpc3QgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zb3J0ICYmICF0aGlzLnN1YnNjcmlwdGlvblNvcnRMaXN0KSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uU29ydExpc3QgPSB0aGlzLnNvcnQuc29ydENoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZmlsdGVyUGFyYW1zLnZhbHVlID8/IHt9IGFzIGFueTtcbiAgICAgICAgICBmaWx0ZXIuc29ydCA9IHRoaXMuc29ydD8uYWN0aXZlID8/ICcnO1xuICAgICAgICAgIGZpbHRlci5vcmRlciA9IHRoaXMuc29ydD8uZGlyZWN0aW9uID8/ICcnO1xuICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLm5leHQoZmlsdGVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnNvcnQgJiYgdGhpcy5zdWJzY3JpcHRpb25Tb3J0TGlzdCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblNvcnRMaXN0LnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSwgNTApO1xuXG4gICAgaWYgKHRoaXMudHlwZVJlcXVlc3QgPT09ICdvbkRlbWFuZCcpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uTGlzdCA9IG1lcmdlKHRoaXMucGFnaW5hdG9yPy5wYWdlID8/IG5ldyBPYnNlcnZhYmxlKCksIHRoaXMuZmlsdGVyUGFyYW1zKS5waXBlKFxuICAgICAgICBzdGFydFdpdGgoe30pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nKHRydWUpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy52YWx1ZS5zb3J0ID0gdGhpcy5zb3J0Py5hY3RpdmUgPz8gdGhpcy5jb25maWc/LmNvbHVtblNvcnQgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy52YWx1ZS5vcmRlciA9IHRoaXMuc29ydD8uZGlyZWN0aW9uID8/IHRoaXMuY29uZmlnPy5zb3J0RGlyZWN0aW9uID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMudmFsdWUucGFnZSA9IHRoaXMucGFnaW5hdG9yPy5wYWdlSW5kZXggPz8gMDtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnZhbHVlLmxpbWl0ID0gdGhpcy5wYWdpbmF0b3I/LnBhZ2VTaXplID8/IDMwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvYnNlcnZlLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnJ1blJlcXVlc3RGdW5jdGlvbigpKSxcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFJlc3BvbnNlRnVuY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMucGFnaW5hdG9yKSB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbkxpc3QgPSB0aGlzLmZpbHRlclBhcmFtcy5waXBlKFxuICAgICAgICBzdGFydFdpdGgoe30pLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucnVuUmVxdWVzdEZ1bmN0aW9uKCkpLFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0UmVzcG9uc2VGdW5jdGlvbihyZXNwb25zZSk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVtcHR5TGlzdENvbXBvbmVudCkge1xuICAgICAgZG8ge1xuICAgICAgICBhd2FpdCBkZWxheSgzMDEpO1xuICAgICAgICBpZiAodGhpcy5zb3J0KSB7XG4gICAgICAgICAgaWYgKHRoaXMudHlwZVJlcXVlc3QgPT09IFwib25EZW1hbmRcIikge1xuICAgICAgICAgICAgdGhpcy5zb3J0LnNvcnRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yKSB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IHdoaWxlICghdGhpcy5zb3J0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzQWxsU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgbnVtUm93cyA9ICh0aGlzLmNvbmZpZz8uZGlzYWJsZWRDaGVja2JveEl0ZW1MaXN0ID9cbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbHRlcihpdGVtID0+ICEodGhpcy5jb25maWc/LmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuY29uZmlnLmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdChpdGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnKSkgOlxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEpLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLmRlZmluZVN0YXR1c1NlbGVjdEFsbChudW1TZWxlY3RlZCA9PT0gbnVtUm93cyk7XG4gIH1cblxuICBwcml2YXRlIHJ1blJlcXVlc3RGdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dW5rbm93bltdPihvYnNlcnZlID0+IHtcbiAgICAgIHRoaXMucmVxdWVzdEZ1bmN0aW9uKCkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiByZXNwb25zZSA9PiBvYnNlcnZlLm5leHQocmVzcG9uc2UpLFxuICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5lcnJvckxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRXJyb3IkLm5leHQoZXJyKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JMaXN0Q29tcG9uZW50LmRhdGEgPSBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgb2JzZXJ2ZS5uZXh0KFtdKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG4iXX0=
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xpc3Qvc3JjL2xpYi9saXN0LmFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzdELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJL0QsTUFBTSxPQUFnQixZQUFhLFNBQVEsWUFBWTtJQXNCckQsWUFDVSxlQUFzQyxFQUN0Qyx1QkFBa0QsRUFDMUQsVUFBMkI7UUFFM0IsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBSlYsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBMkI7UUF2QnJELGNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakQsaUJBQVksR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ25ELGVBQVUsR0FBRyxJQUFJLGtC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QVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO3FCQUNwQztvQkFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQixDQUFDO2FBQ0YsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtQWJzdHJhY3QgfSBmcm9tICdAa29hbGFyeC91aS9mb3JtJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3QsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBLb2FsYUxpc3RGb3JtRmlsdGVySW50ZXJmYWNlIH0gZnJvbSAnLi9rb2FsYS1saXN0LWZvcm0tZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNDb21wb25lbnQgfSBmcm9tIFwiQGtvYWxhcngvdWkvZHluYW1pYy1jb21wb25lbnRcIjtcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcIkBrb2FsYXJ4L3V0aWxzL29wZXJhdG9ycy9kZWxheVwiO1xuaW1wb3J0IHsgS29hbGFMaXN0Q29uZmlnSW50ZXJmYWNlIH0gZnJvbSBcIi4va29hbGEubGlzdC1jb25maWcuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyByYW5kb21TdHJpbmcgfSBmcm9tIFwiQGtvYWxhcngvdXRpbHMvb3BlcmF0b3JzL3N0cmluZ1wiO1xuXG5leHBvcnQgdHlwZSBLb2FsYUxpc3RQYWdlU2l6ZSA9IDEwIHwgMjAgfCAzMCB8IDUwIHwgMTAwO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTGlzdEFic3RyYWN0IGV4dGVuZHMgRm9ybUFic3RyYWN0IHtcbiAgcHVibGljIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxvYmplY3Q+KHRydWUsIFtdKTtcbiAgcHVibGljIGxpbWl0T3B0aW9uczogbnVtYmVyW10gPSBbMTAsIDIwLCAzMCwgNTAsIDEwMF07XG4gIHB1YmxpYyBzaG93TWVudUxpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGFsbFNlbGVjdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55PihbXSk7XG4gIHB1YmxpYyB0eXBlUmVxdWVzdDogJ2FsbCcgfCAnb25EZW1hbmQnID0gJ29uRGVtYW5kJztcbiAgcHVibGljIGZpbHRlclBhcmFtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8S29hbGFMaXN0Rm9ybUZpbHRlckludGVyZmFjZXxudWxsPihudWxsKTtcbiAgcHVibGljIGZpbHRlckVycm9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHVibGljIGVtcHR5TGlzdENvbXBvbmVudD86IEtvYWxhRHluYW1pY0NvbXBvbmVudDtcbiAgcHVibGljIGVycm9yTGlzdENvbXBvbmVudD86IEtvYWxhRHluYW1pY0NvbXBvbmVudDtcbiAgcHVibGljIHBhZ2VTaXplOiBLb2FsYUxpc3RQYWdlU2l6ZTtcbiAgcHVibGljIHRhYmxlSWQgPSByYW5kb21TdHJpbmcoMjAsIHt1cHBlcmNhc2U6IHRydWUsIGxvd2VyY2FzZTogdHJ1ZX0pO1xuXG4gIHByb3RlY3RlZCBjb25maWc/OiBLb2FsYUxpc3RDb25maWdJbnRlcmZhY2U7XG4gIHByb3RlY3RlZCBwYWdpbmF0b3I/OiBNYXRQYWdpbmF0b3I7XG4gIHByb3RlY3RlZCBzb3J0PzogTWF0U29ydDtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbkxpc3Q/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU29ydExpc3Q/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaW50ZXJ2YWxTb3J0TGlzdDogYW55O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlcXVlc3RGdW5jdGlvbjogKCkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxuICAgIHByaXZhdGUgcmVxdWVzdFJlc3BvbnNlRnVuY3Rpb246IDxUPihyZXN1bHRzOiBUW10pID0+IHZvaWQsXG4gICAgZm9ybVNlYXJjaDogKCkgPT4gRm9ybUdyb3VwXG4gICkge1xuICAgIHN1cGVyKGZvcm1TZWFyY2gpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/XG4gICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKSA6XG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgKHRoaXMuY29uZmlnPy5kaXNhYmxlZENoZWNrYm94SXRlbUxpc3QgJiYgIXRoaXMuY29uZmlnLmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdChpdGVtKSkgfHxcbiAgICAgICAgIXRoaXMuY29uZmlnPy5kaXNhYmxlZENoZWNrYm94SXRlbUxpc3RcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoaXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmlzQWxsU2VsZWN0ZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWZpbmVTdGF0dXNTZWxlY3RBbGwoc3RhdHVzOiBib29sZWFuKSB7XG4gICAgdGhpcy5hbGxTZWxlY3RlZCQubmV4dChzdGF0dXMpO1xuICAgIHJldHVybiB0aGlzLmFsbFNlbGVjdGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEl0ZW0oKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNob3dNZW51TGlzdCA9IHRoaXMuc2VsZWN0aW9uLmhhc1ZhbHVlKCk7XG4gICAgICB0aGlzLmlzQWxsU2VsZWN0ZWQoKTtcbiAgICB9LCA1MCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VhcmNoKGZpbHRlcj86IGFueSkge1xuICAgIHRoaXMubG9hZGluZyh0cnVlKTtcbiAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgdGhpcy5wYWdpbmF0b3IuZmlyc3RQYWdlKCk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyUGFyYW1zLm5leHQoe1xuICAgICAgcGFyYW1zOiBmaWx0ZXIsXG4gICAgICBzb3J0OiB0aGlzLnNvcnQ/LmFjdGl2ZSA/PyAnJyxcbiAgICAgIG9yZGVyOiB0aGlzLnNvcnQ/LmRpcmVjdGlvbiA/PyAnYXNjJyxcbiAgICAgIHBhZ2U6IHRoaXMucGFnaW5hdG9yPy5wYWdlSW5kZXggPz8gMCxcbiAgICAgIGxpbWl0OiB0aGlzLnBhZ2luYXRvcj8ucGFnZVNpemUgPz8gMzBcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25Tb3J0TGlzdD8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbkxpc3Q/LnVuc3Vic2NyaWJlKCk7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsU29ydExpc3QpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGFmdGVyVmlld0luaXQoKSB7XG4gICAgbGV0IHRlbnRhdGl2YXMgPSAwO1xuICAgIGxldCBzdG9wID0gZmFsc2U7XG4gICAgZG8ge1xuICAgICAgdGVudGF0aXZhcysrO1xuICAgICAgYXdhaXQgZGVsYXkoNDAwKTtcbiAgICAgIGlmICh0aGlzLnNvcnQgfHwgdGhpcy5lbXB0eUxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5wcmVwYXJlU2VhcmNoKCkudGhlbigpO1xuICAgICAgICBpZiAodGhpcy5lbXB0eUxpc3RDb21wb25lbnQpIHN0b3AgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICh0ZW50YXRpdmFzID4gMTApIHtcbiAgICAgICAgc3RvcCA9IHRydWU7XG4gICAgICB9XG4gICAgfSB3aGlsZSAoIXRoaXMuc29ydCAmJiAhc3RvcCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVTZWFyY2goKSB7XG4gICAgdGhpcy5pbnRlcnZhbFNvcnRMaXN0ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc29ydCAmJiAhdGhpcy5zdWJzY3JpcHRpb25Tb3J0TGlzdCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblNvcnRMaXN0ID0gdGhpcy5zb3J0LnNvcnRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmZpbHRlclBhcmFtcy52YWx1ZSA/PyB7fSBhcyBhbnk7XG4gICAgICAgICAgZmlsdGVyLnNvcnQgPSB0aGlzLnNvcnQ/LmFjdGl2ZSA/PyAnJztcbiAgICAgICAgICBmaWx0ZXIub3JkZXIgPSB0aGlzLnNvcnQ/LmRpcmVjdGlvbiA/PyAnJztcbiAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5uZXh0KGZpbHRlcik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5zb3J0ICYmIHRoaXMuc3Vic2NyaXB0aW9uU29ydExpc3QpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25Tb3J0TGlzdC51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0sIDUwKTtcblxuICAgIGlmICh0aGlzLnR5cGVSZXF1ZXN0ID09PSAnb25EZW1hbmQnKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbkxpc3QgPSBtZXJnZSh0aGlzLnBhZ2luYXRvcj8ucGFnZSA/PyBuZXcgT2JzZXJ2YWJsZSgpLCB0aGlzLmZpbHRlclBhcmFtcykucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHt9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IG5ldyBPYnNlcnZhYmxlKG9ic2VydmUgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyh0cnVlKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMudmFsdWUuc29ydCA9IHRoaXMuc29ydD8uYWN0aXZlID8/IHRoaXMuY29uZmlnPy5jb2x1bW5Tb3J0ID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMudmFsdWUub3JkZXIgPSB0aGlzLnNvcnQ/LmRpcmVjdGlvbiA/PyB0aGlzLmNvbmZpZz8uc29ydERpcmVjdGlvbiA/PyAnJztcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnZhbHVlLnBhZ2UgPSB0aGlzLnBhZ2luYXRvcj8ucGFnZUluZGV4ID8/IDA7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy52YWx1ZS5saW1pdCA9IHRoaXMucGFnaW5hdG9yPy5wYWdlU2l6ZSA/PyAzMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JzZXJ2ZS5uZXh0KHRydWUpO1xuICAgICAgICB9KSksXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5ydW5SZXF1ZXN0RnVuY3Rpb24oKSksXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVGFibGVUb1RvcCgpO1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RSZXNwb25zZUZ1bmN0aW9uKHJlc3BvbnNlKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25MaXN0ID0gdGhpcy5maWx0ZXJQYXJhbXMucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHt9KSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnJ1blJlcXVlc3RGdW5jdGlvbigpKSxcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUYWJsZVRvVG9wKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFJlc3BvbnNlRnVuY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbXB0eUxpc3RDb21wb25lbnQpIHtcbiAgICAgIGRvIHtcbiAgICAgICAgYXdhaXQgZGVsYXkoMzAxKTtcbiAgICAgICAgaWYgKHRoaXMuc29ydCkge1xuICAgICAgICAgIGlmICh0aGlzLnR5cGVSZXF1ZXN0ID09PSBcIm9uRGVtYW5kXCIpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSB3aGlsZSAoIXRoaXMuc29ydCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0FsbFNlbGVjdGVkKCkge1xuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xuICAgIGNvbnN0IG51bVJvd3MgPSAodGhpcy5jb25maWc/LmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdCA/XG4gICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5maWx0ZXIoaXRlbSA9PiAhKHRoaXMuY29uZmlnPy5kaXNhYmxlZENoZWNrYm94SXRlbUxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbmZpZy5kaXNhYmxlZENoZWNrYm94SXRlbUxpc3QoaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJykpIDpcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhKS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5kZWZpbmVTdGF0dXNTZWxlY3RBbGwobnVtU2VsZWN0ZWQgPT09IG51bVJvd3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBydW5SZXF1ZXN0RnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHVua25vd25bXT4ob2JzZXJ2ZSA9PiB7XG4gICAgICB0aGlzLnJlcXVlc3RGdW5jdGlvbigpLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogcmVzcG9uc2UgPT4gb2JzZXJ2ZS5uZXh0KHJlc3BvbnNlKSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZXJyb3JMaXN0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckVycm9yJC5uZXh0KGVycik7XG4gICAgICAgICAgICB0aGlzLmVycm9yTGlzdENvbXBvbmVudC5kYXRhID0gZXJyO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgIG9ic2VydmUubmV4dChbXSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVGFibGVUb1RvcCgpIHtcbiAgICBjb25zdCB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMudGFibGVJZCk7XG4gICAgaWYgKHRhYmxlKSB7XG4gICAgICB0YWJsZS5zY3JvbGxUb3AgPSAwO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -143,7 +143,7 @@ export class ListComponent extends ListAbstract {
|
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
ListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ListComponent, deps: [{ token: i1.FormBuilder }, { token: i2.KoalaDynamicFormService }, { token: i3.DeviceDetectorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
146
|
-
ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ListComponent, selector: "koala-list", inputs: { config: "config" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"list-container\" [ngClass]=\"customClass\">\n <div *ngIf=\"filterFormConfig\" class=\"list-filter\">\n <form (ngSubmit)=\"filterSubmit()\" [formGroup]=\"formFilter\">\n <div class=\"main\">\n <koala-dynamic-form\n *ngIf=\"filterFormConfig.main\"\n [form]=\"filterFormConfig.main.form\"\n [formConfig]=\"filterFormConfig.main.formConfig\"\n [setValues]=\"filterFormConfig.main.setValues\"\n [showFields]=\"filterFormConfig.main.showFields\">\n </koala-dynamic-form>\n <ul>\n <li *ngIf=\"filterFormConfig.advanced\" class=\"option\">\n <button (click)=\"toogleFilter()\" color=\"primary\" mat-icon-button matTooltip=\"Filtro Avan\u00E7ado\"\n matTooltipPosition=\"below\" type=\"button\">\n <mat-icon>tune</mat-icon>\n </button>\n </li>\n <li *ngIf=\"filterFormConfig.checkAndSearch\" class=\"checkbox-filter\">\n <mat-checkbox (click)=\"filterSubmit()\"\n [formControlName]=\"filterFormConfig.checkAndSearch.formControlName\">\n {{filterFormConfig.checkAndSearch.label}}\n </mat-checkbox>\n </li>\n <li class=\"option\">\n <koala-submit\n [btnSubmitDisabled]=\"btnSubmitDisabled\"\n [fg]=\"formFilter\"\n [iconButton]=\"true\"\n [loader]=\"loader\"\n icon=\"search\">\n </koala-submit>\n </li>\n </ul>\n </div>\n <div *ngIf=\"filterFormConfig.advanced\" [ngClass]=\"{'show': showAdvancedFilter}\" class=\"advanced\">\n <div class=\"container-filter\">\n <koala-dynamic-form\n [form]=\"filterFormConfig.advanced.form\"\n [formConfig]=\"filterFormConfig.advanced.formConfig\"\n [setValues]=\"filterFormConfig.advanced.setValues\"\n [showFields]=\"filterFormConfig.advanced.showFields\">\n </koala-dynamic-form>\n </div>\n </div>\n </form>\n </div>\n <nav class=\"menu-list\">\n <ul class=\"menu\">\n <li *ngIf=\"selection.hasValue()\">\n <ng-content select=\"[itemsSelectList]\"></ng-content>\n </li>\n <li *ngIf=\"selection.hasValue()\" class=\"text-center\">|</li>\n <li>\n <ng-content select=\"[itemsList]\"></ng-content>\n </li>\n </ul>\n </nav>\n <div *ngIf=\"loader | async\" class=\"spinner-container\" [ngClass]=\"{\n 'no-filter': !filterFormConfig\n }\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n <div class=\"list\">\n <table\n *ngIf=\"!emptyListComponent || (emptyListComponent && dataSource?.data?.length > 0) else emptyList\"\n [dataSource]=\"dataSource\"\n [matSortActive]=\"columnSort\"\n multiTemplateDataRows\n class=\"table-hover\"\n mat-table\n matSort\n [matSortDirection]=\"sortDirection\" matSortDisableClear>\n <ng-container matColumnDef=\"select\">\n <th *matHeaderCellDef mat-header-cell>\n <mat-checkbox (change)=\"$event ? selectAll() : null\"\n [checked]=\"selection.hasValue() && allSelected$ | async\"\n [indeterminate]=\"selection.hasValue() && !(allSelected$ | async)\">\n </mat-checkbox>\n </th>\n <td *matCellDef=\"let item\" mat-cell>\n <mat-checkbox *ngIf=\"disabledCheckboxItemList ? !disabledCheckboxItemList(item) : true\"\n (change)=\"$event ? selection.toggle(item) : null\"\n (click)=\"$event.stopPropagation(); selectItem();\"\n [checked]=\"selection.isSelected(item)\">\n </mat-checkbox>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\" matColumnDef=\"collapseButton\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" mat-cell>\n <koala-button\n *ngIf=\"btnCollapseSubListConfig.show(item)\"\n (click)=\"expandedElement = expandedElement === item ? null : item\"\n [koalaIcon]=\"btnCollapseSubListConfig.koalaIcon\"\n [icon]=\"btnCollapseSubListConfig.icon\"\n [tooltip]=\"btnCollapseSubListConfig.tooltip\"\n [color]=\"btnCollapseSubListConfig.iconColor\"\n [backgroundColor]=\"btnCollapseSubListConfig.backgroundColor\"\n [koalaIconSize]=\"22\">\n </koala-button>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container *ngFor=\"let itemList of itemsList\" [matColumnDef]=\"itemList.columnDef\">\n <th *matHeaderCellDef [mat-sort-header]=\"itemList.sortHeader\" [disabled]=\"!itemList.sortHeader\" mat-header-cell>{{itemList.label}}</th>\n <td (dblclick)=\"itemList.dblClick(item)\" *matCellDef=\"let item\" mat-cell>\n\t <koala-dynamic-component *ngIf=\"itemList.itemComponent else itemText\"\n\t [dynamicComponent]=\"itemList.itemComponent(item)\"></koala-dynamic-component>\n\t <ng-template #itemText>\n\t {{itemList.itemNameProperty(item)}}\n\t </ng-template>\n </td>\n <td *matFooterCellDef mat-footer-cell>\n <koala-dynamic-component *ngIf=\"itemList.footer?.itemComponent else itemFooterText\"\n [dynamicComponent]=\"itemList.footer?.itemComponent(responseRequest)\"></koala-dynamic-component>\n <ng-template #itemFooterText>\n {{itemList.footer?.itemNameProperty(responseRequest)}}\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\" matColumnDef=\"koalaListDetails\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" [attr.colspan]=\"columnsToShowInList.length\" mat-cell>\n <div class=\"item-detail\" [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\">\n <koala-list [config]=\"subListConfig(item)\"></koala-list>\n </div>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container matColumnDef=\"options\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" mat-cell>\n <div *ngIf=\"haveOptionsOnItemLine(item)\">\n <button [matMenuTriggerFor]=\"options\" mat-icon-button type=\"button\">\n <i class='material-icons'>more_vert</i>\n </button>\n <mat-menu #options=\"matMenu\" class=\"menu-list\" yPosition=\"below\">\n\t <div *ngFor=\"let option of itemsMenuListOptions\">\n\t <button\n\t\t (click)=\"option.action(item)\"\n\t\t *ngIf=\"option.havePermission && (\n\t\t !option.showByItemList ||\n\t\t option.showByItemList(item)\n\t )\"\n\t\t mat-menu-item>\n\t <mat-icon>{{option.icon}}</mat-icon>\n\t <span>{{option.name}}</span>\n\t </button>\n\t </div>\n </mat-menu>\n </div>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <tr *matHeaderRowDef=\"columnsToShowInList; sticky: true\" mat-header-row></tr>\n <tr *matRowDef=\"let item; columns: columnsToShowInList;\" mat-row></tr>\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\">\n <tr mat-row *matRowDef=\"let row; columns: ['koalaListDetails']\" class=\"item-detail-row\"></tr>\n </ng-container>\n <ng-container *ngIf=\"hasFooter()\">\n <tr *matFooterRowDef=\"columnsToShowInList; sticky: true\" mat-footer-row></tr>\n </ng-container>\n </table>\n <ng-template #emptyList>\n <koala-dynamic-component *ngIf=\"!(filterError$ | async) else errorList\" [dynamicComponent]=\"emptyListComponent\"></koala-dynamic-component>\n <ng-template #errorList>\n <koala-dynamic-component [dynamicComponent]=\"errorListComponent\"></koala-dynamic-component>\n </ng-template>\n </ng-template>\n </div>\n <div *ngIf=\"!hidePaginator\" class=\"content-paginator\">\n <mat-paginator\n [length]=\"qtdListResult\"\n [pageSizeOptions]=\"limitOptions\"\n [pageSize]=\"pageSize\"\n showFirstLastButtons>\n </mat-paginator>\n </div>\n</div>\n", styles: [".list-container{border-radius:10px;margin:0 auto;overflow-x:hidden;width:calc(100% - 40px);position:relative}.list-container .spinner-container{position:absolute;width:100%;height:calc(100vh - 320px);top:100px;left:0;background:rgba(0,0,0,.15);z-index:2;display:flex;align-items:center;justify-content:center}.list-container .spinner-container.no-filter{top:40px}.list-container .list{display:block;height:calc(100vh - 320px);overflow-y:auto;position:relative;top:0;width:100%;z-index:1}.list-container .list table:not(.table-not-selection) .mat-header-cell:first-child,.list-container .list .mat-header-cell:last-child,.list-container .list .mat-header-cell.mat-column-collapseButton{width:5%}.list-container .list .mat-header-cell:last-child{text-align:center}.list-container .list .mat-header-row,.list-container .list .mat-row,.list-container .list .mat-footer-row{height:35px}.list-container .list .mat-row .mat-icon-button{height:35px;line-height:35px;width:35px}.list-container .list tr.detail-row:not(.expanded-row){height:0}.list-container .list .element-detail{display:flex;overflow:hidden}.list-container .list table{position:relative;width:100%;font-family:OpenSans,sans-serif;font-size:1em}.list-container .list table.table-hover tr{cursor:pointer;transition:.2s}.list-container .list table th:first-child,.list-container .list table td:first-child{padding:0 8px 0 20px}.list-container .list table th{font-size:.7em;padding:0 8px;font-family:OpenSans,sans-serif;line-height:1em}.list-container .list table td{font-size:.8em;padding:0 8px;font-family:OpenSans,sans-serif}.list-container .list table th:last-child,.list-container .list table td:last-child{padding:0 20px 0 8px}.list-container .list .mat-list-item-content,.list-container .list .mat-list-item-content .mat-list-text{padding:0}.list-container .list-filter{box-shadow:0 1px 3px #0000004d;height:60px;position:relative;z-index:3}.list-container .list-filter .main{display:flex;justify-content:space-between;font-size:1.05em;height:60px;overflow:hidden;padding-left:2.5px;position:relative;width:100%}.list-container .list-filter .main koala-dynamic-form{width:100%}.list-container .list-filter .main mat-form-field{display:inline-block}.list-container .list-filter .main .mat-form-field-appearance-fill .mat-form-field-flex{background:transparent}.list-container .list-filter .main .mat-form-field .mat-form-field-wrapper{padding-bottom:0}.list-container .list-filter .main .mat-form-field-underline,.list-container .list-filter .main .mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper,.list-container .list-filter .main .mat-form-field-wrapper .mat-form-field-subscript-wrapper{display:none}.list-container .list-filter ul{display:flex;align-items:center;font-size:0;list-style:none;margin:0;padding:0 15px 0 0;position:relative;text-align:right}.list-container .list-filter ul li{display:inline-block;font-size:14px;padding:5px;position:relative}.list-container .list-filter ul li.option button{transition:.2s}.list-container .list-filter ul li.option button:hover{background:rgba(0,0,0,.1)}.list-container .list-filter ul li.checkbox-filter{text-align:center}.list-container .list-filter ul li.checkbox-filter .checkbox-inline{top:-5px}.list-container .list-filter ul li.checkbox-filter input[type=checkbox]{margin-left:0}.list-container .list-filter ul li.checkbox-filter label{padding:0!important;width:auto}.list-container .list-filter .advanced{border-top:1px solid #dddddd;box-shadow:0 3px 10px #0000004d;height:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:60px;transition:.2s;width:100%;z-index:1}.list-container .list-filter .advanced .container-filter{padding:15px}.list-container .list-filter .advanced.show{height:360px}.list-container nav.menu-list{height:40px;margin:0;padding:3px 0;position:relative;transition:.2s;width:100%;z-index:2;box-sizing:border-box}.list-container nav.menu-list ul.menu{float:left;font-size:0;list-style:none;margin:0;padding:0 10px;position:relative;text-align:left}.list-container nav.menu-list ul.menu li{color:#616161;display:inline-block;font-size:16px;padding:0 4px}.list-container nav.menu-list ul.menu li button.mat-button,.list-container nav.menu-list ul.menu li button.koala-icon-button{display:inline-block}.list-container .content-paginator mat-paginator .mat-paginator-container{height:40px!important;min-height:40px!important}.list-container .content-paginator mat-paginator .mat-paginator-container .mat-paginator-page-size-select{height:40px;margin-top:0!important}.list-container .content-paginator mat-paginator .mat-paginator-container .mat-paginator-range-label{margin-top:3px}.list-container .content-paginator{position:relative;background:transparent!important;z-index:2;box-shadow:-3px 1px 3px #0000004d}.list-container .item-detail{overflow:hidden}.list-container tr.item-detail-row{height:0!important}.list-container tr.item-detail-row .list-container{width:100%!important}.list-container tr.item-detail-row .list-container .list{height:auto!important;max-height:250px!important}.list-container tr.item-detail-row .list-container nav.menu-list{display:none}@media (max-width: 900px){.list-container{width:100%;box-shadow:none!important;padding:15px 10px 15px 15px;box-sizing:border-box}.list-container .list{height:auto;overflow:unset}.list-container .list-filter .main{justify-content:flex-end}}\n"], components: [{ type: i2.DynamicFormComponent, selector: "koala-dynamic-form", inputs: ["form", "formConfig", "showFields", "showFieldsMoreItensConfig", "setValues", "tabIndexStart"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i2.BtnSubmitComponent, selector: "koala-submit", inputs: ["fg", "color", "btnLabel", "btnSubmitDisabled", "loader", "iconButton", "icon", "iconColor"] }, { type: i7.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i8.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i9.ButtonComponent, selector: "koala-button", inputs: ["color", "backgroundColor", "icon", "text", "tooltip", "disabled", "koalaIcon", "koalaIconSize"] }, { type: i10.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i11.KoalaDynamicComponentFactory, selector: "koala-dynamic-component", inputs: ["dynamicComponent"] }, { type: ListComponent, selector: "koala-list", inputs: ["config"] }, { type: i12.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i8.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i8.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i8.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i13.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i14.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i15.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i8.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i8.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i8.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i8.MatCellDef, selector: "[matCellDef]" }, { type: i8.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i8.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i8.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i8.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i8.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i8.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }], pipes: { "async": i14.AsyncPipe }, animations: [
|
|
146
|
+
ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ListComponent, selector: "koala-list", inputs: { config: "config" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"list-container\" [ngClass]=\"customClass\">\n <div *ngIf=\"filterFormConfig\" class=\"list-filter\">\n <form (ngSubmit)=\"filterSubmit()\" [formGroup]=\"formFilter\">\n <div class=\"main\">\n <koala-dynamic-form\n *ngIf=\"filterFormConfig.main\"\n [form]=\"filterFormConfig.main.form\"\n [formConfig]=\"filterFormConfig.main.formConfig\"\n [setValues]=\"filterFormConfig.main.setValues\"\n [showFields]=\"filterFormConfig.main.showFields\">\n </koala-dynamic-form>\n <ul>\n <li *ngIf=\"filterFormConfig.advanced\" class=\"option\">\n <button (click)=\"toogleFilter()\" color=\"primary\" mat-icon-button matTooltip=\"Filtro Avan\u00E7ado\"\n matTooltipPosition=\"below\" type=\"button\">\n <mat-icon>tune</mat-icon>\n </button>\n </li>\n <li *ngIf=\"filterFormConfig.checkAndSearch\" class=\"checkbox-filter\">\n <mat-checkbox (click)=\"filterSubmit()\"\n [formControlName]=\"filterFormConfig.checkAndSearch.formControlName\">\n {{filterFormConfig.checkAndSearch.label}}\n </mat-checkbox>\n </li>\n <li class=\"option\">\n <koala-submit\n [btnSubmitDisabled]=\"btnSubmitDisabled\"\n [fg]=\"formFilter\"\n [iconButton]=\"true\"\n [loader]=\"loader\"\n icon=\"search\">\n </koala-submit>\n </li>\n </ul>\n </div>\n <div *ngIf=\"filterFormConfig.advanced\" [ngClass]=\"{'show': showAdvancedFilter}\" class=\"advanced\">\n <div class=\"container-filter\">\n <koala-dynamic-form\n [form]=\"filterFormConfig.advanced.form\"\n [formConfig]=\"filterFormConfig.advanced.formConfig\"\n [setValues]=\"filterFormConfig.advanced.setValues\"\n [showFields]=\"filterFormConfig.advanced.showFields\">\n </koala-dynamic-form>\n </div>\n </div>\n </form>\n </div>\n <nav class=\"menu-list\">\n <ul class=\"menu\">\n <li *ngIf=\"selection.hasValue()\">\n <ng-content select=\"[itemsSelectList]\"></ng-content>\n </li>\n <li *ngIf=\"selection.hasValue()\" class=\"text-center\">|</li>\n <li>\n <ng-content select=\"[itemsList]\"></ng-content>\n </li>\n </ul>\n </nav>\n <div *ngIf=\"loader | async\" class=\"spinner-container\" [ngClass]=\"{\n 'no-filter': !filterFormConfig\n }\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n <div class=\"list\">\n <table\n *ngIf=\"!emptyListComponent || (emptyListComponent && dataSource?.data?.length > 0) else emptyList\"\n [dataSource]=\"dataSource\"\n [matSortActive]=\"columnSort\"\n [id]=\"tableId\"\n multiTemplateDataRows\n class=\"table-hover\"\n mat-table\n matSort\n [matSortDirection]=\"sortDirection\" matSortDisableClear>\n <ng-container matColumnDef=\"select\">\n <th *matHeaderCellDef mat-header-cell>\n <mat-checkbox (change)=\"$event ? selectAll() : null\"\n [checked]=\"selection.hasValue() && allSelected$ | async\"\n [indeterminate]=\"selection.hasValue() && !(allSelected$ | async)\">\n </mat-checkbox>\n </th>\n <td *matCellDef=\"let item\" mat-cell>\n <mat-checkbox *ngIf=\"disabledCheckboxItemList ? !disabledCheckboxItemList(item) : true\"\n (change)=\"$event ? selection.toggle(item) : null\"\n (click)=\"$event.stopPropagation(); selectItem();\"\n [checked]=\"selection.isSelected(item)\">\n </mat-checkbox>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\" matColumnDef=\"collapseButton\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" mat-cell>\n <koala-button\n *ngIf=\"btnCollapseSubListConfig.show(item)\"\n (click)=\"expandedElement = expandedElement === item ? null : item\"\n [koalaIcon]=\"btnCollapseSubListConfig.koalaIcon\"\n [icon]=\"btnCollapseSubListConfig.icon\"\n [tooltip]=\"btnCollapseSubListConfig.tooltip\"\n [color]=\"btnCollapseSubListConfig.iconColor\"\n [backgroundColor]=\"btnCollapseSubListConfig.backgroundColor\"\n [koalaIconSize]=\"22\">\n </koala-button>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container *ngFor=\"let itemList of itemsList\" [matColumnDef]=\"itemList.columnDef\">\n <th *matHeaderCellDef [mat-sort-header]=\"itemList.sortHeader\" [disabled]=\"!itemList.sortHeader\" mat-header-cell>{{itemList.label}}</th>\n <td (dblclick)=\"itemList.dblClick(item)\" *matCellDef=\"let item\" mat-cell>\n\t <koala-dynamic-component *ngIf=\"itemList.itemComponent else itemText\"\n\t [dynamicComponent]=\"itemList.itemComponent(item)\"></koala-dynamic-component>\n\t <ng-template #itemText>\n\t {{itemList.itemNameProperty(item)}}\n\t </ng-template>\n </td>\n <td *matFooterCellDef mat-footer-cell>\n <koala-dynamic-component *ngIf=\"itemList.footer?.itemComponent else itemFooterText\"\n [dynamicComponent]=\"itemList.footer?.itemComponent(responseRequest)\"></koala-dynamic-component>\n <ng-template #itemFooterText>\n {{itemList.footer?.itemNameProperty(responseRequest)}}\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\" matColumnDef=\"koalaListDetails\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" [attr.colspan]=\"columnsToShowInList.length\" mat-cell>\n <div class=\"item-detail\" [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\">\n <koala-list [config]=\"subListConfig(item)\"></koala-list>\n </div>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container matColumnDef=\"options\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" mat-cell>\n <div *ngIf=\"haveOptionsOnItemLine(item)\">\n <button [matMenuTriggerFor]=\"options\" mat-icon-button type=\"button\">\n <i class='material-icons'>more_vert</i>\n </button>\n <mat-menu #options=\"matMenu\" class=\"menu-list\" yPosition=\"below\">\n\t <div *ngFor=\"let option of itemsMenuListOptions\">\n\t <button\n\t\t (click)=\"option.action(item)\"\n\t\t *ngIf=\"option.havePermission && (\n\t\t !option.showByItemList ||\n\t\t option.showByItemList(item)\n\t )\"\n\t\t mat-menu-item>\n\t <mat-icon>{{option.icon}}</mat-icon>\n\t <span>{{option.name}}</span>\n\t </button>\n\t </div>\n </mat-menu>\n </div>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <tr *matHeaderRowDef=\"columnsToShowInList; sticky: true\" mat-header-row></tr>\n <tr *matRowDef=\"let item; columns: columnsToShowInList;\" mat-row></tr>\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\">\n <tr mat-row *matRowDef=\"let row; columns: ['koalaListDetails']\" class=\"item-detail-row\"></tr>\n </ng-container>\n <ng-container *ngIf=\"hasFooter()\">\n <tr *matFooterRowDef=\"columnsToShowInList; sticky: true\" mat-footer-row></tr>\n </ng-container>\n </table>\n <ng-template #emptyList>\n <koala-dynamic-component *ngIf=\"!(filterError$ | async) else errorList\" [dynamicComponent]=\"emptyListComponent\"></koala-dynamic-component>\n <ng-template #errorList>\n <koala-dynamic-component [dynamicComponent]=\"errorListComponent\"></koala-dynamic-component>\n </ng-template>\n </ng-template>\n </div>\n <div *ngIf=\"!hidePaginator\" class=\"content-paginator\">\n <mat-paginator\n [length]=\"qtdListResult\"\n [pageSizeOptions]=\"limitOptions\"\n [pageSize]=\"pageSize\"\n showFirstLastButtons>\n </mat-paginator>\n </div>\n</div>\n", styles: [".list-container{border-radius:10px;margin:0 auto;overflow-x:hidden;width:calc(100% - 40px);position:relative}.list-container .spinner-container{position:absolute;width:100%;height:calc(100vh - 320px);top:100px;left:0;background:rgba(0,0,0,.15);z-index:2;display:flex;align-items:center;justify-content:center}.list-container .spinner-container.no-filter{top:40px}.list-container .list{display:block;height:calc(100vh - 320px);overflow-y:auto;position:relative;top:0;width:100%;z-index:1}.list-container .list table:not(.table-not-selection) .mat-header-cell:first-child,.list-container .list .mat-header-cell:last-child,.list-container .list .mat-header-cell.mat-column-collapseButton{width:5%}.list-container .list .mat-header-cell:last-child{text-align:center}.list-container .list .mat-header-row,.list-container .list .mat-row,.list-container .list .mat-footer-row{height:35px}.list-container .list .mat-row .mat-icon-button{height:35px;line-height:35px;width:35px}.list-container .list tr.detail-row:not(.expanded-row){height:0}.list-container .list .element-detail{display:flex;overflow:hidden}.list-container .list table{position:relative;width:100%;font-family:OpenSans,sans-serif;font-size:1em}.list-container .list table.table-hover tr{cursor:pointer;transition:.2s}.list-container .list table th:first-child,.list-container .list table td:first-child{padding:0 8px 0 20px}.list-container .list table th{font-size:.7em;padding:0 8px;font-family:OpenSans,sans-serif;line-height:1em}.list-container .list table td{font-size:.8em;padding:0 8px;font-family:OpenSans,sans-serif}.list-container .list table th:last-child,.list-container .list table td:last-child{padding:0 20px 0 8px}.list-container .list .mat-list-item-content,.list-container .list .mat-list-item-content .mat-list-text{padding:0}.list-container .list-filter{box-shadow:0 1px 3px #0000004d;height:60px;position:relative;z-index:3}.list-container .list-filter .main{display:flex;justify-content:space-between;font-size:1.05em;height:60px;overflow:hidden;padding-left:2.5px;position:relative;width:100%}.list-container .list-filter .main koala-dynamic-form{width:100%}.list-container .list-filter .main mat-form-field{display:inline-block}.list-container .list-filter .main .mat-form-field-appearance-fill .mat-form-field-flex{background:transparent}.list-container .list-filter .main .mat-form-field .mat-form-field-wrapper{padding-bottom:0}.list-container .list-filter .main .mat-form-field-underline,.list-container .list-filter .main .mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper,.list-container .list-filter .main .mat-form-field-wrapper .mat-form-field-subscript-wrapper{display:none}.list-container .list-filter ul{display:flex;align-items:center;font-size:0;list-style:none;margin:0;padding:0 15px 0 0;position:relative;text-align:right}.list-container .list-filter ul li{display:inline-block;font-size:14px;padding:5px;position:relative}.list-container .list-filter ul li.option button{transition:.2s}.list-container .list-filter ul li.option button:hover{background:rgba(0,0,0,.1)}.list-container .list-filter ul li.checkbox-filter{text-align:center}.list-container .list-filter ul li.checkbox-filter .checkbox-inline{top:-5px}.list-container .list-filter ul li.checkbox-filter input[type=checkbox]{margin-left:0}.list-container .list-filter ul li.checkbox-filter label{padding:0!important;width:auto}.list-container .list-filter .advanced{border-top:1px solid #dddddd;box-shadow:0 3px 10px #0000004d;height:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:60px;transition:.2s;width:100%;z-index:1}.list-container .list-filter .advanced .container-filter{padding:15px}.list-container .list-filter .advanced.show{height:360px}.list-container nav.menu-list{height:40px;margin:0;padding:3px 0;position:relative;transition:.2s;width:100%;z-index:2;box-sizing:border-box}.list-container nav.menu-list ul.menu{float:left;font-size:0;list-style:none;margin:0;padding:0 10px;position:relative;text-align:left}.list-container nav.menu-list ul.menu li{color:#616161;display:inline-block;font-size:16px;padding:0 4px}.list-container nav.menu-list ul.menu li button.mat-button,.list-container nav.menu-list ul.menu li button.koala-icon-button{display:inline-block}.list-container .content-paginator mat-paginator .mat-paginator-container{height:40px!important;min-height:40px!important}.list-container .content-paginator mat-paginator .mat-paginator-container .mat-paginator-page-size-select{height:40px;margin-top:0!important}.list-container .content-paginator mat-paginator .mat-paginator-container .mat-paginator-range-label{margin-top:3px}.list-container .content-paginator{position:relative;background:transparent!important;z-index:2;box-shadow:-3px 1px 3px #0000004d}.list-container .item-detail{overflow:hidden}.list-container tr.item-detail-row{height:0!important}.list-container tr.item-detail-row .list-container{width:100%!important}.list-container tr.item-detail-row .list-container .list{height:auto!important;max-height:250px!important}.list-container tr.item-detail-row .list-container nav.menu-list{display:none}@media (max-width: 900px){.list-container{width:100%;box-shadow:none!important;padding:15px 10px 15px 15px;box-sizing:border-box}.list-container .list{height:auto;overflow:unset}.list-container .list-filter .main{justify-content:flex-end}}\n"], components: [{ type: i2.DynamicFormComponent, selector: "koala-dynamic-form", inputs: ["form", "formConfig", "showFields", "showFieldsMoreItensConfig", "setValues", "tabIndexStart"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i2.BtnSubmitComponent, selector: "koala-submit", inputs: ["fg", "color", "btnLabel", "btnSubmitDisabled", "loader", "iconButton", "icon", "iconColor"] }, { type: i7.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i8.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i9.ButtonComponent, selector: "koala-button", inputs: ["color", "backgroundColor", "icon", "text", "tooltip", "disabled", "koalaIcon", "koalaIconSize"] }, { type: i10.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i11.KoalaDynamicComponentFactory, selector: "koala-dynamic-component", inputs: ["dynamicComponent"] }, { type: ListComponent, selector: "koala-list", inputs: ["config"] }, { type: i12.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i8.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i8.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i8.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { type: i13.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i14.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i15.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i8.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i8.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i8.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i8.MatCellDef, selector: "[matCellDef]" }, { type: i8.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i8.MatFooterCellDef, selector: "[matFooterCellDef]" }, { type: i8.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i8.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i8.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i8.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }], pipes: { "async": i14.AsyncPipe }, animations: [
|
|
147
147
|
trigger('detailExpand', [
|
|
148
148
|
state('collapsed', style({ height: '0px', minHeight: '0' })),
|
|
149
149
|
state('expanded', style({ height: '*' })),
|
|
@@ -158,7 +158,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
158
158
|
state('expanded', style({ height: '*' })),
|
|
159
159
|
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
160
160
|
]),
|
|
161
|
-
], template: "<div class=\"list-container\" [ngClass]=\"customClass\">\n <div *ngIf=\"filterFormConfig\" class=\"list-filter\">\n <form (ngSubmit)=\"filterSubmit()\" [formGroup]=\"formFilter\">\n <div class=\"main\">\n <koala-dynamic-form\n *ngIf=\"filterFormConfig.main\"\n [form]=\"filterFormConfig.main.form\"\n [formConfig]=\"filterFormConfig.main.formConfig\"\n [setValues]=\"filterFormConfig.main.setValues\"\n [showFields]=\"filterFormConfig.main.showFields\">\n </koala-dynamic-form>\n <ul>\n <li *ngIf=\"filterFormConfig.advanced\" class=\"option\">\n <button (click)=\"toogleFilter()\" color=\"primary\" mat-icon-button matTooltip=\"Filtro Avan\u00E7ado\"\n matTooltipPosition=\"below\" type=\"button\">\n <mat-icon>tune</mat-icon>\n </button>\n </li>\n <li *ngIf=\"filterFormConfig.checkAndSearch\" class=\"checkbox-filter\">\n <mat-checkbox (click)=\"filterSubmit()\"\n [formControlName]=\"filterFormConfig.checkAndSearch.formControlName\">\n {{filterFormConfig.checkAndSearch.label}}\n </mat-checkbox>\n </li>\n <li class=\"option\">\n <koala-submit\n [btnSubmitDisabled]=\"btnSubmitDisabled\"\n [fg]=\"formFilter\"\n [iconButton]=\"true\"\n [loader]=\"loader\"\n icon=\"search\">\n </koala-submit>\n </li>\n </ul>\n </div>\n <div *ngIf=\"filterFormConfig.advanced\" [ngClass]=\"{'show': showAdvancedFilter}\" class=\"advanced\">\n <div class=\"container-filter\">\n <koala-dynamic-form\n [form]=\"filterFormConfig.advanced.form\"\n [formConfig]=\"filterFormConfig.advanced.formConfig\"\n [setValues]=\"filterFormConfig.advanced.setValues\"\n [showFields]=\"filterFormConfig.advanced.showFields\">\n </koala-dynamic-form>\n </div>\n </div>\n </form>\n </div>\n <nav class=\"menu-list\">\n <ul class=\"menu\">\n <li *ngIf=\"selection.hasValue()\">\n <ng-content select=\"[itemsSelectList]\"></ng-content>\n </li>\n <li *ngIf=\"selection.hasValue()\" class=\"text-center\">|</li>\n <li>\n <ng-content select=\"[itemsList]\"></ng-content>\n </li>\n </ul>\n </nav>\n <div *ngIf=\"loader | async\" class=\"spinner-container\" [ngClass]=\"{\n 'no-filter': !filterFormConfig\n }\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n <div class=\"list\">\n <table\n *ngIf=\"!emptyListComponent || (emptyListComponent && dataSource?.data?.length > 0) else emptyList\"\n [dataSource]=\"dataSource\"\n [matSortActive]=\"columnSort\"\n multiTemplateDataRows\n class=\"table-hover\"\n mat-table\n matSort\n [matSortDirection]=\"sortDirection\" matSortDisableClear>\n <ng-container matColumnDef=\"select\">\n <th *matHeaderCellDef mat-header-cell>\n <mat-checkbox (change)=\"$event ? selectAll() : null\"\n [checked]=\"selection.hasValue() && allSelected$ | async\"\n [indeterminate]=\"selection.hasValue() && !(allSelected$ | async)\">\n </mat-checkbox>\n </th>\n <td *matCellDef=\"let item\" mat-cell>\n <mat-checkbox *ngIf=\"disabledCheckboxItemList ? !disabledCheckboxItemList(item) : true\"\n (change)=\"$event ? selection.toggle(item) : null\"\n (click)=\"$event.stopPropagation(); selectItem();\"\n [checked]=\"selection.isSelected(item)\">\n </mat-checkbox>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\" matColumnDef=\"collapseButton\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" mat-cell>\n <koala-button\n *ngIf=\"btnCollapseSubListConfig.show(item)\"\n (click)=\"expandedElement = expandedElement === item ? null : item\"\n [koalaIcon]=\"btnCollapseSubListConfig.koalaIcon\"\n [icon]=\"btnCollapseSubListConfig.icon\"\n [tooltip]=\"btnCollapseSubListConfig.tooltip\"\n [color]=\"btnCollapseSubListConfig.iconColor\"\n [backgroundColor]=\"btnCollapseSubListConfig.backgroundColor\"\n [koalaIconSize]=\"22\">\n </koala-button>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container *ngFor=\"let itemList of itemsList\" [matColumnDef]=\"itemList.columnDef\">\n <th *matHeaderCellDef [mat-sort-header]=\"itemList.sortHeader\" [disabled]=\"!itemList.sortHeader\" mat-header-cell>{{itemList.label}}</th>\n <td (dblclick)=\"itemList.dblClick(item)\" *matCellDef=\"let item\" mat-cell>\n\t <koala-dynamic-component *ngIf=\"itemList.itemComponent else itemText\"\n\t [dynamicComponent]=\"itemList.itemComponent(item)\"></koala-dynamic-component>\n\t <ng-template #itemText>\n\t {{itemList.itemNameProperty(item)}}\n\t </ng-template>\n </td>\n <td *matFooterCellDef mat-footer-cell>\n <koala-dynamic-component *ngIf=\"itemList.footer?.itemComponent else itemFooterText\"\n [dynamicComponent]=\"itemList.footer?.itemComponent(responseRequest)\"></koala-dynamic-component>\n <ng-template #itemFooterText>\n {{itemList.footer?.itemNameProperty(responseRequest)}}\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\" matColumnDef=\"koalaListDetails\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" [attr.colspan]=\"columnsToShowInList.length\" mat-cell>\n <div class=\"item-detail\" [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\">\n <koala-list [config]=\"subListConfig(item)\"></koala-list>\n </div>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container matColumnDef=\"options\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" mat-cell>\n <div *ngIf=\"haveOptionsOnItemLine(item)\">\n <button [matMenuTriggerFor]=\"options\" mat-icon-button type=\"button\">\n <i class='material-icons'>more_vert</i>\n </button>\n <mat-menu #options=\"matMenu\" class=\"menu-list\" yPosition=\"below\">\n\t <div *ngFor=\"let option of itemsMenuListOptions\">\n\t <button\n\t\t (click)=\"option.action(item)\"\n\t\t *ngIf=\"option.havePermission && (\n\t\t !option.showByItemList ||\n\t\t option.showByItemList(item)\n\t )\"\n\t\t mat-menu-item>\n\t <mat-icon>{{option.icon}}</mat-icon>\n\t <span>{{option.name}}</span>\n\t </button>\n\t </div>\n </mat-menu>\n </div>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <tr *matHeaderRowDef=\"columnsToShowInList; sticky: true\" mat-header-row></tr>\n <tr *matRowDef=\"let item; columns: columnsToShowInList;\" mat-row></tr>\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\">\n <tr mat-row *matRowDef=\"let row; columns: ['koalaListDetails']\" class=\"item-detail-row\"></tr>\n </ng-container>\n <ng-container *ngIf=\"hasFooter()\">\n <tr *matFooterRowDef=\"columnsToShowInList; sticky: true\" mat-footer-row></tr>\n </ng-container>\n </table>\n <ng-template #emptyList>\n <koala-dynamic-component *ngIf=\"!(filterError$ | async) else errorList\" [dynamicComponent]=\"emptyListComponent\"></koala-dynamic-component>\n <ng-template #errorList>\n <koala-dynamic-component [dynamicComponent]=\"errorListComponent\"></koala-dynamic-component>\n </ng-template>\n </ng-template>\n </div>\n <div *ngIf=\"!hidePaginator\" class=\"content-paginator\">\n <mat-paginator\n [length]=\"qtdListResult\"\n [pageSizeOptions]=\"limitOptions\"\n [pageSize]=\"pageSize\"\n showFirstLastButtons>\n </mat-paginator>\n </div>\n</div>\n", styles: [".list-container{border-radius:10px;margin:0 auto;overflow-x:hidden;width:calc(100% - 40px);position:relative}.list-container .spinner-container{position:absolute;width:100%;height:calc(100vh - 320px);top:100px;left:0;background:rgba(0,0,0,.15);z-index:2;display:flex;align-items:center;justify-content:center}.list-container .spinner-container.no-filter{top:40px}.list-container .list{display:block;height:calc(100vh - 320px);overflow-y:auto;position:relative;top:0;width:100%;z-index:1}.list-container .list table:not(.table-not-selection) .mat-header-cell:first-child,.list-container .list .mat-header-cell:last-child,.list-container .list .mat-header-cell.mat-column-collapseButton{width:5%}.list-container .list .mat-header-cell:last-child{text-align:center}.list-container .list .mat-header-row,.list-container .list .mat-row,.list-container .list .mat-footer-row{height:35px}.list-container .list .mat-row .mat-icon-button{height:35px;line-height:35px;width:35px}.list-container .list tr.detail-row:not(.expanded-row){height:0}.list-container .list .element-detail{display:flex;overflow:hidden}.list-container .list table{position:relative;width:100%;font-family:OpenSans,sans-serif;font-size:1em}.list-container .list table.table-hover tr{cursor:pointer;transition:.2s}.list-container .list table th:first-child,.list-container .list table td:first-child{padding:0 8px 0 20px}.list-container .list table th{font-size:.7em;padding:0 8px;font-family:OpenSans,sans-serif;line-height:1em}.list-container .list table td{font-size:.8em;padding:0 8px;font-family:OpenSans,sans-serif}.list-container .list table th:last-child,.list-container .list table td:last-child{padding:0 20px 0 8px}.list-container .list .mat-list-item-content,.list-container .list .mat-list-item-content .mat-list-text{padding:0}.list-container .list-filter{box-shadow:0 1px 3px #0000004d;height:60px;position:relative;z-index:3}.list-container .list-filter .main{display:flex;justify-content:space-between;font-size:1.05em;height:60px;overflow:hidden;padding-left:2.5px;position:relative;width:100%}.list-container .list-filter .main koala-dynamic-form{width:100%}.list-container .list-filter .main mat-form-field{display:inline-block}.list-container .list-filter .main .mat-form-field-appearance-fill .mat-form-field-flex{background:transparent}.list-container .list-filter .main .mat-form-field .mat-form-field-wrapper{padding-bottom:0}.list-container .list-filter .main .mat-form-field-underline,.list-container .list-filter .main .mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper,.list-container .list-filter .main .mat-form-field-wrapper .mat-form-field-subscript-wrapper{display:none}.list-container .list-filter ul{display:flex;align-items:center;font-size:0;list-style:none;margin:0;padding:0 15px 0 0;position:relative;text-align:right}.list-container .list-filter ul li{display:inline-block;font-size:14px;padding:5px;position:relative}.list-container .list-filter ul li.option button{transition:.2s}.list-container .list-filter ul li.option button:hover{background:rgba(0,0,0,.1)}.list-container .list-filter ul li.checkbox-filter{text-align:center}.list-container .list-filter ul li.checkbox-filter .checkbox-inline{top:-5px}.list-container .list-filter ul li.checkbox-filter input[type=checkbox]{margin-left:0}.list-container .list-filter ul li.checkbox-filter label{padding:0!important;width:auto}.list-container .list-filter .advanced{border-top:1px solid #dddddd;box-shadow:0 3px 10px #0000004d;height:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:60px;transition:.2s;width:100%;z-index:1}.list-container .list-filter .advanced .container-filter{padding:15px}.list-container .list-filter .advanced.show{height:360px}.list-container nav.menu-list{height:40px;margin:0;padding:3px 0;position:relative;transition:.2s;width:100%;z-index:2;box-sizing:border-box}.list-container nav.menu-list ul.menu{float:left;font-size:0;list-style:none;margin:0;padding:0 10px;position:relative;text-align:left}.list-container nav.menu-list ul.menu li{color:#616161;display:inline-block;font-size:16px;padding:0 4px}.list-container nav.menu-list ul.menu li button.mat-button,.list-container nav.menu-list ul.menu li button.koala-icon-button{display:inline-block}.list-container .content-paginator mat-paginator .mat-paginator-container{height:40px!important;min-height:40px!important}.list-container .content-paginator mat-paginator .mat-paginator-container .mat-paginator-page-size-select{height:40px;margin-top:0!important}.list-container .content-paginator mat-paginator .mat-paginator-container .mat-paginator-range-label{margin-top:3px}.list-container .content-paginator{position:relative;background:transparent!important;z-index:2;box-shadow:-3px 1px 3px #0000004d}.list-container .item-detail{overflow:hidden}.list-container tr.item-detail-row{height:0!important}.list-container tr.item-detail-row .list-container{width:100%!important}.list-container tr.item-detail-row .list-container .list{height:auto!important;max-height:250px!important}.list-container tr.item-detail-row .list-container nav.menu-list{display:none}@media (max-width: 900px){.list-container{width:100%;box-shadow:none!important;padding:15px 10px 15px 15px;box-sizing:border-box}.list-container .list{height:auto;overflow:unset}.list-container .list-filter .main{justify-content:flex-end}}\n"] }]
|
|
161
|
+
], template: "<div class=\"list-container\" [ngClass]=\"customClass\">\n <div *ngIf=\"filterFormConfig\" class=\"list-filter\">\n <form (ngSubmit)=\"filterSubmit()\" [formGroup]=\"formFilter\">\n <div class=\"main\">\n <koala-dynamic-form\n *ngIf=\"filterFormConfig.main\"\n [form]=\"filterFormConfig.main.form\"\n [formConfig]=\"filterFormConfig.main.formConfig\"\n [setValues]=\"filterFormConfig.main.setValues\"\n [showFields]=\"filterFormConfig.main.showFields\">\n </koala-dynamic-form>\n <ul>\n <li *ngIf=\"filterFormConfig.advanced\" class=\"option\">\n <button (click)=\"toogleFilter()\" color=\"primary\" mat-icon-button matTooltip=\"Filtro Avan\u00E7ado\"\n matTooltipPosition=\"below\" type=\"button\">\n <mat-icon>tune</mat-icon>\n </button>\n </li>\n <li *ngIf=\"filterFormConfig.checkAndSearch\" class=\"checkbox-filter\">\n <mat-checkbox (click)=\"filterSubmit()\"\n [formControlName]=\"filterFormConfig.checkAndSearch.formControlName\">\n {{filterFormConfig.checkAndSearch.label}}\n </mat-checkbox>\n </li>\n <li class=\"option\">\n <koala-submit\n [btnSubmitDisabled]=\"btnSubmitDisabled\"\n [fg]=\"formFilter\"\n [iconButton]=\"true\"\n [loader]=\"loader\"\n icon=\"search\">\n </koala-submit>\n </li>\n </ul>\n </div>\n <div *ngIf=\"filterFormConfig.advanced\" [ngClass]=\"{'show': showAdvancedFilter}\" class=\"advanced\">\n <div class=\"container-filter\">\n <koala-dynamic-form\n [form]=\"filterFormConfig.advanced.form\"\n [formConfig]=\"filterFormConfig.advanced.formConfig\"\n [setValues]=\"filterFormConfig.advanced.setValues\"\n [showFields]=\"filterFormConfig.advanced.showFields\">\n </koala-dynamic-form>\n </div>\n </div>\n </form>\n </div>\n <nav class=\"menu-list\">\n <ul class=\"menu\">\n <li *ngIf=\"selection.hasValue()\">\n <ng-content select=\"[itemsSelectList]\"></ng-content>\n </li>\n <li *ngIf=\"selection.hasValue()\" class=\"text-center\">|</li>\n <li>\n <ng-content select=\"[itemsList]\"></ng-content>\n </li>\n </ul>\n </nav>\n <div *ngIf=\"loader | async\" class=\"spinner-container\" [ngClass]=\"{\n 'no-filter': !filterFormConfig\n }\">\n <mat-spinner diameter=\"40\"></mat-spinner>\n </div>\n <div class=\"list\">\n <table\n *ngIf=\"!emptyListComponent || (emptyListComponent && dataSource?.data?.length > 0) else emptyList\"\n [dataSource]=\"dataSource\"\n [matSortActive]=\"columnSort\"\n [id]=\"tableId\"\n multiTemplateDataRows\n class=\"table-hover\"\n mat-table\n matSort\n [matSortDirection]=\"sortDirection\" matSortDisableClear>\n <ng-container matColumnDef=\"select\">\n <th *matHeaderCellDef mat-header-cell>\n <mat-checkbox (change)=\"$event ? selectAll() : null\"\n [checked]=\"selection.hasValue() && allSelected$ | async\"\n [indeterminate]=\"selection.hasValue() && !(allSelected$ | async)\">\n </mat-checkbox>\n </th>\n <td *matCellDef=\"let item\" mat-cell>\n <mat-checkbox *ngIf=\"disabledCheckboxItemList ? !disabledCheckboxItemList(item) : true\"\n (change)=\"$event ? selection.toggle(item) : null\"\n (click)=\"$event.stopPropagation(); selectItem();\"\n [checked]=\"selection.isSelected(item)\">\n </mat-checkbox>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\" matColumnDef=\"collapseButton\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" mat-cell>\n <koala-button\n *ngIf=\"btnCollapseSubListConfig.show(item)\"\n (click)=\"expandedElement = expandedElement === item ? null : item\"\n [koalaIcon]=\"btnCollapseSubListConfig.koalaIcon\"\n [icon]=\"btnCollapseSubListConfig.icon\"\n [tooltip]=\"btnCollapseSubListConfig.tooltip\"\n [color]=\"btnCollapseSubListConfig.iconColor\"\n [backgroundColor]=\"btnCollapseSubListConfig.backgroundColor\"\n [koalaIconSize]=\"22\">\n </koala-button>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container *ngFor=\"let itemList of itemsList\" [matColumnDef]=\"itemList.columnDef\">\n <th *matHeaderCellDef [mat-sort-header]=\"itemList.sortHeader\" [disabled]=\"!itemList.sortHeader\" mat-header-cell>{{itemList.label}}</th>\n <td (dblclick)=\"itemList.dblClick(item)\" *matCellDef=\"let item\" mat-cell>\n\t <koala-dynamic-component *ngIf=\"itemList.itemComponent else itemText\"\n\t [dynamicComponent]=\"itemList.itemComponent(item)\"></koala-dynamic-component>\n\t <ng-template #itemText>\n\t {{itemList.itemNameProperty(item)}}\n\t </ng-template>\n </td>\n <td *matFooterCellDef mat-footer-cell>\n <koala-dynamic-component *ngIf=\"itemList.footer?.itemComponent else itemFooterText\"\n [dynamicComponent]=\"itemList.footer?.itemComponent(responseRequest)\"></koala-dynamic-component>\n <ng-template #itemFooterText>\n {{itemList.footer?.itemNameProperty(responseRequest)}}\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\" matColumnDef=\"koalaListDetails\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" [attr.colspan]=\"columnsToShowInList.length\" mat-cell>\n <div class=\"item-detail\" [@detailExpand]=\"item == expandedElement ? 'expanded' : 'collapsed'\">\n <koala-list [config]=\"subListConfig(item)\"></koala-list>\n </div>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <ng-container matColumnDef=\"options\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let item\" mat-cell>\n <div *ngIf=\"haveOptionsOnItemLine(item)\">\n <button [matMenuTriggerFor]=\"options\" mat-icon-button type=\"button\">\n <i class='material-icons'>more_vert</i>\n </button>\n <mat-menu #options=\"matMenu\" class=\"menu-list\" yPosition=\"below\">\n\t <div *ngFor=\"let option of itemsMenuListOptions\">\n\t <button\n\t\t (click)=\"option.action(item)\"\n\t\t *ngIf=\"option.havePermission && (\n\t\t !option.showByItemList ||\n\t\t option.showByItemList(item)\n\t )\"\n\t\t mat-menu-item>\n\t <mat-icon>{{option.icon}}</mat-icon>\n\t <span>{{option.name}}</span>\n\t </button>\n\t </div>\n </mat-menu>\n </div>\n </td>\n <td *matFooterCellDef mat-footer-cell></td>\n </ng-container>\n\n <tr *matHeaderRowDef=\"columnsToShowInList; sticky: true\" mat-header-row></tr>\n <tr *matRowDef=\"let item; columns: columnsToShowInList;\" mat-row></tr>\n <ng-container *ngIf=\"subListConfig && btnCollapseSubListConfig\">\n <tr mat-row *matRowDef=\"let row; columns: ['koalaListDetails']\" class=\"item-detail-row\"></tr>\n </ng-container>\n <ng-container *ngIf=\"hasFooter()\">\n <tr *matFooterRowDef=\"columnsToShowInList; sticky: true\" mat-footer-row></tr>\n </ng-container>\n </table>\n <ng-template #emptyList>\n <koala-dynamic-component *ngIf=\"!(filterError$ | async) else errorList\" [dynamicComponent]=\"emptyListComponent\"></koala-dynamic-component>\n <ng-template #errorList>\n <koala-dynamic-component [dynamicComponent]=\"errorListComponent\"></koala-dynamic-component>\n </ng-template>\n </ng-template>\n </div>\n <div *ngIf=\"!hidePaginator\" class=\"content-paginator\">\n <mat-paginator\n [length]=\"qtdListResult\"\n [pageSizeOptions]=\"limitOptions\"\n [pageSize]=\"pageSize\"\n showFirstLastButtons>\n </mat-paginator>\n </div>\n</div>\n", styles: [".list-container{border-radius:10px;margin:0 auto;overflow-x:hidden;width:calc(100% - 40px);position:relative}.list-container .spinner-container{position:absolute;width:100%;height:calc(100vh - 320px);top:100px;left:0;background:rgba(0,0,0,.15);z-index:2;display:flex;align-items:center;justify-content:center}.list-container .spinner-container.no-filter{top:40px}.list-container .list{display:block;height:calc(100vh - 320px);overflow-y:auto;position:relative;top:0;width:100%;z-index:1}.list-container .list table:not(.table-not-selection) .mat-header-cell:first-child,.list-container .list .mat-header-cell:last-child,.list-container .list .mat-header-cell.mat-column-collapseButton{width:5%}.list-container .list .mat-header-cell:last-child{text-align:center}.list-container .list .mat-header-row,.list-container .list .mat-row,.list-container .list .mat-footer-row{height:35px}.list-container .list .mat-row .mat-icon-button{height:35px;line-height:35px;width:35px}.list-container .list tr.detail-row:not(.expanded-row){height:0}.list-container .list .element-detail{display:flex;overflow:hidden}.list-container .list table{position:relative;width:100%;font-family:OpenSans,sans-serif;font-size:1em}.list-container .list table.table-hover tr{cursor:pointer;transition:.2s}.list-container .list table th:first-child,.list-container .list table td:first-child{padding:0 8px 0 20px}.list-container .list table th{font-size:.7em;padding:0 8px;font-family:OpenSans,sans-serif;line-height:1em}.list-container .list table td{font-size:.8em;padding:0 8px;font-family:OpenSans,sans-serif}.list-container .list table th:last-child,.list-container .list table td:last-child{padding:0 20px 0 8px}.list-container .list .mat-list-item-content,.list-container .list .mat-list-item-content .mat-list-text{padding:0}.list-container .list-filter{box-shadow:0 1px 3px #0000004d;height:60px;position:relative;z-index:3}.list-container .list-filter .main{display:flex;justify-content:space-between;font-size:1.05em;height:60px;overflow:hidden;padding-left:2.5px;position:relative;width:100%}.list-container .list-filter .main koala-dynamic-form{width:100%}.list-container .list-filter .main mat-form-field{display:inline-block}.list-container .list-filter .main .mat-form-field-appearance-fill .mat-form-field-flex{background:transparent}.list-container .list-filter .main .mat-form-field .mat-form-field-wrapper{padding-bottom:0}.list-container .list-filter .main .mat-form-field-underline,.list-container .list-filter .main .mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper,.list-container .list-filter .main .mat-form-field-wrapper .mat-form-field-subscript-wrapper{display:none}.list-container .list-filter ul{display:flex;align-items:center;font-size:0;list-style:none;margin:0;padding:0 15px 0 0;position:relative;text-align:right}.list-container .list-filter ul li{display:inline-block;font-size:14px;padding:5px;position:relative}.list-container .list-filter ul li.option button{transition:.2s}.list-container .list-filter ul li.option button:hover{background:rgba(0,0,0,.1)}.list-container .list-filter ul li.checkbox-filter{text-align:center}.list-container .list-filter ul li.checkbox-filter .checkbox-inline{top:-5px}.list-container .list-filter ul li.checkbox-filter input[type=checkbox]{margin-left:0}.list-container .list-filter ul li.checkbox-filter label{padding:0!important;width:auto}.list-container .list-filter .advanced{border-top:1px solid #dddddd;box-shadow:0 3px 10px #0000004d;height:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:60px;transition:.2s;width:100%;z-index:1}.list-container .list-filter .advanced .container-filter{padding:15px}.list-container .list-filter .advanced.show{height:360px}.list-container nav.menu-list{height:40px;margin:0;padding:3px 0;position:relative;transition:.2s;width:100%;z-index:2;box-sizing:border-box}.list-container nav.menu-list ul.menu{float:left;font-size:0;list-style:none;margin:0;padding:0 10px;position:relative;text-align:left}.list-container nav.menu-list ul.menu li{color:#616161;display:inline-block;font-size:16px;padding:0 4px}.list-container nav.menu-list ul.menu li button.mat-button,.list-container nav.menu-list ul.menu li button.koala-icon-button{display:inline-block}.list-container .content-paginator mat-paginator .mat-paginator-container{height:40px!important;min-height:40px!important}.list-container .content-paginator mat-paginator .mat-paginator-container .mat-paginator-page-size-select{height:40px;margin-top:0!important}.list-container .content-paginator mat-paginator .mat-paginator-container .mat-paginator-range-label{margin-top:3px}.list-container .content-paginator{position:relative;background:transparent!important;z-index:2;box-shadow:-3px 1px 3px #0000004d}.list-container .item-detail{overflow:hidden}.list-container tr.item-detail-row{height:0!important}.list-container tr.item-detail-row .list-container{width:100%!important}.list-container tr.item-detail-row .list-container .list{height:auto!important;max-height:250px!important}.list-container tr.item-detail-row .list-container nav.menu-list{display:none}@media (max-width: 900px){.list-container{width:100%;box-shadow:none!important;padding:15px 10px 15px 15px;box-sizing:border-box}.list-container .list{height:auto;overflow:unset}.list-container .list-filter .main{justify-content:flex-end}}\n"] }]
|
|
162
162
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.KoalaDynamicFormService }, { type: i3.DeviceDetectorService }]; }, propDecorators: { config: [{
|
|
163
163
|
type: Input
|
|
164
164
|
}], paginator: [{
|
|
@@ -168,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
168
168
|
type: ViewChild,
|
|
169
169
|
args: [MatSort, { static: false }]
|
|
170
170
|
}] } });
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saXN0L3NyYy9saWIvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saXN0L3NyYy9saWIvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFlLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS25ELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlakYsTUFBTSxPQUFPLGFBQWMsU0FBUSxZQUFZO0lBNEI3QyxZQUNVLEVBQWUsRUFDZixrQkFBMkMsRUFDM0MsYUFBb0M7UUFFNUMsS0FBSyxDQUNILEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLElBQUksVUFBVSxFQUFPLEVBQ25ELENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGlCQUFpQjtnQkFDOUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUI7b0JBQzdCLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztvQkFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDUixDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhO2dCQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLDBCQUEwQjtnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDdkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxFQUNELEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FDdEMsQ0FBQztRQW5CTSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF5QjtRQUMzQyxrQkFBYSxHQUFiLGFBQWEsQ0FBdUI7UUF2QnZDLGtCQUFhLEdBQWEsS0FBSyxDQUFDO1FBRWhDLGtCQUFhLEdBQWtCLEtBQUssQ0FBQztRQU9yQyxnQkFBVyxHQUF1QixLQUFLLENBQUE7UUFJdkMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBeUIvQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzlCLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyRCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUNsRSxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLEtBQUssSUFBSSxvQkFBb0IsQ0FBQztnQkFDbkMsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEQsSUFBSSxDQUFDLEtBQUssSUFBSSxlQUFlLENBQUM7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDNUo7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0I7WUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUMsTUFBTSxFQUFDLEVBQUU7Z0JBQ25DLElBQUksTUFBTSxFQUFFO29CQUNWLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUMzQjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsZUFBZTtRQUNiLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVk7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLElBQUksS0FBSyxHQUFHLEtBQUssQ0FDZixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7WUFDckUsQ0FBQyxDQUFDLEVBQUUsQ0FDTDthQUNFLE1BQU0sRUFBRTthQUNSLEtBQUssQ0FDSixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLElBQUk7WUFDckMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUM7WUFDekUsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUNOLFFBQVEsRUFBRSxDQUFDO1FBRWQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFO1lBQ3pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO1lBQ3pFLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDN0Q7UUFDRCxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ3JELENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxJQUFTO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLElBQUksQ0FDekUsQ0FBQyxNQUFNLENBQUMsY0FBYztZQUN0QixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUM1QixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUNmLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDO1FBQ3hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUMzRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUU7Z0JBQ3JCLENBQUMsQ0FBQzthQUNIO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1FBQ3pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUN2RCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQztRQUN6RSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLElBQUksZUFBZSxDQUErQixJQUFJLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztRQUN6RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQztRQUNyRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQy9DLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUM3QyxDQUFDOzswR0E3SlUsYUFBYTs4RkFBYixhQUFhLDJIQUdiLFlBQVksdUVBQ1osT0FBTyx1RUNuQ3BCLDY2UUEwTEEsdThORDNKYSxhQUFhLHFyRkFSWjtRQUNWLE9BQU8sQ0FBQyxjQUFjLEVBQUU7WUFDdEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO1lBQzFELEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7WUFDdkMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1NBQ3RGLENBQUM7S0FDSDsyRkFFVSxhQUFhO2tCQWJ6QixTQUFTOytCQUNFLFlBQVksbUJBR0wsdUJBQXVCLENBQUMsTUFBTSxjQUNuQzt3QkFDVixPQUFPLENBQUMsY0FBYyxFQUFFOzRCQUN0QixLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7NEJBQzFELEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7NEJBQ3ZDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQzt5QkFDdEYsQ0FBQztxQkFDSDs0S0FHZSxNQUFNO3NCQUFyQixLQUFLO2dCQUU2QixTQUFTO3NCQUEzQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ3dCLElBQUk7c0JBQWxELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaXN0QWJzdHJhY3QgfSBmcm9tICcuL2xpc3QuYWJzdHJhY3QnO1xuaW1wb3J0IHsgS29hbGFMaXN0SXRlbU1lbnVPcHRpb25JbnRlcmZhY2UgfSBmcm9tICcuL2tvYWxhLWxpc3QtaXRlbS1tZW51LW9wdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEtvYWxhTGlzdEZpbHRlckludGVyZmFjZSB9IGZyb20gJy4va29hbGEtbGlzdC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IEtvYWxhRHluYW1pY0Zvcm1TZXJ2aWNlLCBLb2FsYUR5bmFtaWNGb3JtQ29uZmlnSW50ZXJmYWNlIH0gZnJvbSAnQGtvYWxhcngvdWkvZm9ybSc7XG5pbXBvcnQgeyBLb2FsYUxpc3RJdGVtSW50ZXJmYWNlIH0gZnJvbSAnLi9rb2FsYS1saXN0LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEtvYWxhTGlzdEZvcm1GaWx0ZXJJbnRlcmZhY2UgfSBmcm9tIFwiLi9rb2FsYS1saXN0LWZvcm0tZmlsdGVyLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgTWF0U29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zb3J0XCI7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gXCJAa29hbGFyeC91dGlscy9vcGVyYXRvcnMvZGVsYXlcIjtcbmltcG9ydCB7IGtvYWxhIH0gZnJvbSBcIkBrb2FsYXJ4L3V0aWxzXCI7XG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tIFwibmd4LWRldmljZS1kZXRlY3RvclwiO1xuaW1wb3J0IHsgS29hbGFMaXN0Q29uZmlnSW50ZXJmYWNlIH0gZnJvbSBcIi4va29hbGEubGlzdC1jb25maWcuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yXCI7XG5pbXBvcnQgeyBLb2FsYUxpc3RCdG5Db2xsYXBzZVN1Ykxpc3RDb25maWdJbnRlcmZhY2UgfSBmcm9tIFwiLi9rb2FsYS1saXN0LWJ0bi1jb2xsYXBzZS1zdWItbGlzdC1jb25maWcuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrb2FsYS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICdsaXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2xpc3QuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7aGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCd9KSksXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7aGVpZ2h0OiAnKid9KSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Q29tcG9uZW50IGV4dGVuZHMgTGlzdEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgY29uZmlnPzogS29hbGFMaXN0Q29uZmlnSW50ZXJmYWNlO1xuXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwcm90ZWN0ZWQgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG4gIEBWaWV3Q2hpbGQoTWF0U29ydCwge3N0YXRpYzogZmFsc2V9KSBwcm90ZWN0ZWQgc29ydDogTWF0U29ydDtcblxuICBwdWJsaWMgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XG4gIHB1YmxpYyBjb2x1bW5zVG9TaG93SW5MaXN0Pzogc3RyaW5nW107XG4gIHB1YmxpYyBoaWRlUGFnaW5hdG9yPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgY29sdW1uU29ydD86IHN0cmluZztcbiAgcHVibGljIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPSAnYXNjJztcbiAgcHVibGljIGl0ZW1zTWVudUxpc3RPcHRpb25zPzogS29hbGFMaXN0SXRlbU1lbnVPcHRpb25JbnRlcmZhY2U8YW55PltdO1xuICBwdWJsaWMgaXRlbXNMaXN0PzogS29hbGFMaXN0SXRlbUludGVyZmFjZTxhbnk+W107XG4gIHB1YmxpYyByZXF1ZXN0PzogT2JzZXJ2YWJsZTxhbnk+O1xuICBwdWJsaWMgcmVzcG9uc2VJbmRleE5hbWU/OiBzdHJpbmc7XG4gIHB1YmxpYyByZXNwb25zZVF0ZFJlc3VsdEluZGV4TmFtZT86IChyZXNwb25zZTogYW55KSA9PiBudW1iZXI7XG4gIHB1YmxpYyByZXNwb25zZVJlcXVlc3Q/OiBhbnk7XG4gIHB1YmxpYyB0eXBlUmVxdWVzdDogJ2FsbCcgfCAnb25EZW1hbmQnID0gJ2FsbCdcbiAgcHVibGljIGZpbHRlckZvcm1Db25maWc/OiBLb2FsYUxpc3RGaWx0ZXJJbnRlcmZhY2U7XG4gIHB1YmxpYyByZWxvYWQ/OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyBmb3JtRmlsdGVyPzogRm9ybUdyb3VwO1xuICBwdWJsaWMgc2hvd0FkdmFuY2VkRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBxdGRMaXN0UmVzdWx0ID0gMDtcbiAgcHVibGljIGRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdD86IChpdGVtOiBhbnkpID0+IGJvb2xlYW47XG4gIHB1YmxpYyBleHBhbmRlZEVsZW1lbnQgPSBmYWxzZTtcbiAgcHVibGljIGJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZz86IEtvYWxhTGlzdEJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZ0ludGVyZmFjZTxhbnk+O1xuICBwdWJsaWMgc3ViTGlzdENvbmZpZz86IChpdGVtOiBhbnkpID0+IEtvYWxhTGlzdENvbmZpZ0ludGVyZmFjZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGR5bmFtaWNGb3JtU2VydmljZTogS29hbGFEeW5hbWljRm9ybVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICAoKSA9PiB0aGlzLmNvbmZpZz8ucmVxdWVzdCA/PyBuZXcgT2JzZXJ2YWJsZTxhbnk+KCksXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5yZXNwb25zZVJlcXVlc3QgPSByZXNwb25zZTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmNvbmZpZz8ucmVzcG9uc2VJbmRleE5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICh0aGlzLmNvbmZpZy5yZXNwb25zZUluZGV4TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcmVzcG9uc2VbdGhpcy5jb25maWcucmVzcG9uc2VJbmRleE5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlc3BvbnNlO1xuICAgICAgICBpZiAodGhpcy5jb25maWc/LmdldERhdGFTb3VyY2UpIHRoaXMuY29uZmlnPy5nZXREYXRhU291cmNlKHRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcbiAgICAgICAgdGhpcy5xdGRMaXN0UmVzdWx0ID0gdGhpcy5jb25maWc/LnJlc3BvbnNlUXRkUmVzdWx0SW5kZXhOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5jb25maWcucmVzcG9uc2VRdGRSZXN1bHRJbmRleE5hbWUocmVzcG9uc2UpID8/IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmRhdGFTb3VyY2UuZGF0YT8ubGVuZ3RoID8/IDA7XG4gICAgICB9LFxuICAgICAgKCkgPT4gdGhpcy5mb3JtRmlsdGVyID8/IGZiLmdyb3VwKHt9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRDb25maWcoKTtcbiAgICB0aGlzLmZvcm1GaWx0ZXIgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGZvcm1TZWFyY2g6IHRoaXMuZmlsdGVyRm9ybUNvbmZpZz8ubWFpbj8uZm9ybSA/PyBbJyddLFxuICAgICAgZm9ybUFkdmFuY2VkU2VhcmNoOiB0aGlzLmZpbHRlckZvcm1Db25maWc/LmFkdmFuY2VkPy5mb3JtID8/IFsnJ11cbiAgICB9KTtcbiAgICB0aGlzLmxvYWRpbmcodHJ1ZSk7XG4gICAgaWYgKHRoaXMuZmlsdGVyRm9ybUNvbmZpZykge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtQ29uZmlnPy5tYWluPy5mb3JtQ29uZmlnPy5tYXAoaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0uY2xhc3MgKz0gJyBwYWRkaW5nLW5vbmUgdy05OSc7XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpbHRlckZvcm1Db25maWc/LmFkdmFuY2VkPy5mb3JtQ29uZmlnPy5tYXAoaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0uY2xhc3MgKz0gJyBwYWRkaW5nLW5vbmUnO1xuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMuZmlsdGVyRm9ybUNvbmZpZz8uY2hlY2tBbmRTZWFyY2gpIHtcbiAgICAgICAgdGhpcy5mb3JtRmlsdGVyLmFkZENvbnRyb2wodGhpcy5maWx0ZXJGb3JtQ29uZmlnLmNoZWNrQW5kU2VhcmNoLmZvcm1Db250cm9sTmFtZSwgbmV3IEZvcm1Db250cm9sKHRoaXMuZmlsdGVyRm9ybUNvbmZpZy5jaGVja0FuZFNlYXJjaC5pc0NoZWNrZWQgPz8gZmFsc2UpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuZ2V0U2VsZWN0aW9uTGlzdCkgdGhpcy5jb25maWcuZ2V0U2VsZWN0aW9uTGlzdCh0aGlzLnNlbGVjdGlvbik7XG5cbiAgICBpZiAodGhpcy5yZWxvYWQpIHtcbiAgICAgIHRoaXMucmVsb2FkLnN1YnNjcmliZShhc3luYyByZWxvYWQgPT4ge1xuICAgICAgICBpZiAocmVsb2FkKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5maWx0ZXJTdWJtaXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIub25EZXN0cm95KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIuYWZ0ZXJWaWV3SW5pdCgpLnRoZW4oKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmaWx0ZXJTdWJtaXQoKSB7XG4gICAgdGhpcy5zaG93QWR2YW5jZWRGaWx0ZXIgPSBmYWxzZTtcbiAgICBhd2FpdCBkZWxheSgxKTtcbiAgICBsZXQgZGFkb3MgPSBrb2FsYShcbiAgICAgIHRoaXMuZmlsdGVyRm9ybUNvbmZpZz8ubWFpbj8uZm9ybVxuICAgICAgPyB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5lbWl0RGF0YSh0aGlzLmZpbHRlckZvcm1Db25maWc/Lm1haW4/LmZvcm0pXG4gICAgICA6IHt9XG4gICAgKVxuICAgICAgLm9iamVjdCgpXG4gICAgICAubWVyZ2UoXG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybUNvbmZpZz8uYWR2YW5jZWQ/LmZvcm1cbiAgICAgICAgPyB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5lbWl0RGF0YSh0aGlzLmZpbHRlckZvcm1Db25maWc/LmFkdmFuY2VkPy5mb3JtKVxuICAgICAgICA6IHt9KVxuICAgICAgLmdldFZhbHVlKCk7XG5cbiAgICBpZiAodGhpcy5maWx0ZXJGb3JtQ29uZmlnPy5jaGVja0FuZFNlYXJjaCkge1xuICAgICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmZpbHRlckZvcm1Db25maWcuY2hlY2tBbmRTZWFyY2guZm9ybUNvbnRyb2xOYW1lO1xuICAgICAgZGFkb3NbY29udHJvbE5hbWVdID0gdGhpcy5mb3JtRmlsdGVyLmdldChjb250cm9sTmFtZSkudmFsdWU7XG4gICAgfVxuICAgIGF3YWl0IHN1cGVyLnNlYXJjaChkYWRvcyk7XG4gIH1cblxuICBwdWJsaWMgdG9vZ2xlRmlsdGVyKCkge1xuICAgIHRoaXMuc2hvd0FkdmFuY2VkRmlsdGVyID0gIXRoaXMuc2hvd0FkdmFuY2VkRmlsdGVyO1xuICB9XG5cbiAgcHVibGljIGhhdmVPcHRpb25zT25JdGVtTGluZShpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc01lbnVMaXN0T3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5oYXZlUGVybWlzc2lvbiAmJiAoXG4gICAgICAhb3B0aW9uLnNob3dCeUl0ZW1MaXN0IHx8XG4gICAgICBvcHRpb24uc2hvd0J5SXRlbUxpc3QoaXRlbSlcbiAgICApKS5sZW5ndGggPiAwXG4gIH1cblxuICBwdWJsaWMgaGFzRm9vdGVyKCkge1xuICAgIHJldHVybiAhIXRoaXMuaXRlbXNMaXN0LmZpbmQoaXRlbSA9PiAhIWl0ZW0uZm9vdGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENvbmZpZygpIHtcbiAgICB0aGlzLmNvbHVtblNvcnQgPSB0aGlzLmNvbmZpZy5jb2x1bW5Tb3J0ID8/IG51bGw7XG4gICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gdGhpcy5jb25maWcuc29ydERpcmVjdGlvbiA/PyAnYXNjJztcbiAgICB0aGlzLml0ZW1zTWVudUxpc3RPcHRpb25zID0gdGhpcy5jb25maWcuaXRlbXNNZW51TGlzdE9wdGlvbnMgPz8gW107XG4gICAgdGhpcy50eXBlUmVxdWVzdCA9IHRoaXMuY29uZmlnLnR5cGVSZXF1ZXN0ID8/ICdhbGwnO1xuICAgIHRoaXMucXRkTGlzdFJlc3VsdCA9IHRoaXMuY29uZmlnLnF0ZExpc3RSZXN1bHQgPz8gMDtcbiAgICB0aGlzLmNvbHVtbnNUb1Nob3dJbkxpc3QgPSB0aGlzLmNvbmZpZy5jb2x1bW5zVG9TaG93SW5MaXN0O1xuICAgIHRoaXMuaXRlbXNMaXN0ID0gdGhpcy5jb25maWcuaXRlbXNMaXN0Lm1hcChpdGVtID0+IHtcbiAgICAgIGlmICghaXRlbS5kYmxDbGljaykge1xuICAgICAgICBpdGVtLmRibENsaWNrID0gKCkgPT4ge1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gICAgdGhpcy5zaG93QWR2YW5jZWRGaWx0ZXIgPSB0aGlzLmNvbmZpZy5zaG93QWR2YW5jZWRGaWx0ZXI7XG4gICAgdGhpcy5maWx0ZXJGb3JtQ29uZmlnID0gdGhpcy5jb25maWcuZmlsdGVyRm9ybUNvbmZpZztcbiAgICB0aGlzLnJlcXVlc3QgPSB0aGlzLmNvbmZpZy5yZXF1ZXN0O1xuICAgIHRoaXMucmVsb2FkID0gdGhpcy5jb25maWcucmVsb2FkO1xuICAgIHRoaXMucmVzcG9uc2VJbmRleE5hbWUgPSB0aGlzLmNvbmZpZy5yZXNwb25zZUluZGV4TmFtZTtcbiAgICB0aGlzLnJlc3BvbnNlUXRkUmVzdWx0SW5kZXhOYW1lID0gdGhpcy5jb25maWcucmVzcG9uc2VRdGRSZXN1bHRJbmRleE5hbWU7XG4gICAgdGhpcy5maWx0ZXJQYXJhbXMgPSB0aGlzLmNvbmZpZy5maWx0ZXJQYXJhbXMgPz8gbmV3IEJlaGF2aW9yU3ViamVjdDxLb2FsYUxpc3RGb3JtRmlsdGVySW50ZXJmYWNlPihudWxsKTtcbiAgICB0aGlzLmVtcHR5TGlzdENvbXBvbmVudCA9IHRoaXMuY29uZmlnLmVtcHR5TGlzdENvbXBvbmVudDtcbiAgICB0aGlzLmVycm9yTGlzdENvbXBvbmVudCA9IHRoaXMuY29uZmlnLmVycm9yTGlzdENvbXBvbmVudDtcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5jb25maWcucGFnZVNpemUgPz8gMzA7XG4gICAgdGhpcy5kaXNhYmxlZENoZWNrYm94SXRlbUxpc3QgPSB0aGlzLmNvbmZpZy5kaXNhYmxlZENoZWNrYm94SXRlbUxpc3Q7XG4gICAgdGhpcy5zdWJMaXN0Q29uZmlnID0gdGhpcy5jb25maWcuc3ViTGlzdENvbmZpZztcbiAgICB0aGlzLmJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZyA9IHRoaXMuY29uZmlnLmJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZztcbiAgICB0aGlzLmhpZGVQYWdpbmF0b3IgPSB0aGlzLmNvbmZpZy5oaWRlUGFnaW5hdG9yO1xuICAgIHRoaXMuY3VzdG9tQ2xhc3MgPSB0aGlzLmNvbmZpZy5jdXN0b21DbGFzcztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxpc3QtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiY3VzdG9tQ2xhc3NcIj5cbiAgPGRpdiAqbmdJZj1cImZpbHRlckZvcm1Db25maWdcIiBjbGFzcz1cImxpc3QtZmlsdGVyXCI+XG4gICAgPGZvcm0gKG5nU3VibWl0KT1cImZpbHRlclN1Ym1pdCgpXCIgW2Zvcm1Hcm91cF09XCJmb3JtRmlsdGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFpblwiPlxuICAgICAgICA8a29hbGEtZHluYW1pYy1mb3JtXG4gICAgICAgICAgKm5nSWY9XCJmaWx0ZXJGb3JtQ29uZmlnLm1haW5cIlxuICAgICAgICAgIFtmb3JtXT1cImZpbHRlckZvcm1Db25maWcubWFpbi5mb3JtXCJcbiAgICAgICAgICBbZm9ybUNvbmZpZ109XCJmaWx0ZXJGb3JtQ29uZmlnLm1haW4uZm9ybUNvbmZpZ1wiXG4gICAgICAgICAgW3NldFZhbHVlc109XCJmaWx0ZXJGb3JtQ29uZmlnLm1haW4uc2V0VmFsdWVzXCJcbiAgICAgICAgICBbc2hvd0ZpZWxkc109XCJmaWx0ZXJGb3JtQ29uZmlnLm1haW4uc2hvd0ZpZWxkc1wiPlxuICAgICAgICA8L2tvYWxhLWR5bmFtaWMtZm9ybT5cbiAgICAgICAgPHVsPlxuICAgICAgICAgIDxsaSAqbmdJZj1cImZpbHRlckZvcm1Db25maWcuYWR2YW5jZWRcIiBjbGFzcz1cIm9wdGlvblwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9vZ2xlRmlsdGVyKClcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkZpbHRybyBBdmFuw6dhZG9cIlxuICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJiZWxvd1wiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPnR1bmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGkgKm5nSWY9XCJmaWx0ZXJGb3JtQ29uZmlnLmNoZWNrQW5kU2VhcmNoXCIgY2xhc3M9XCJjaGVja2JveC1maWx0ZXJcIj5cbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cImZpbHRlclN1Ym1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXJGb3JtQ29uZmlnLmNoZWNrQW5kU2VhcmNoLmZvcm1Db250cm9sTmFtZVwiPlxuICAgICAgICAgICAgICB7e2ZpbHRlckZvcm1Db25maWcuY2hlY2tBbmRTZWFyY2gubGFiZWx9fVxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgICA8bGkgY2xhc3M9XCJvcHRpb25cIj5cbiAgICAgICAgICAgIDxrb2FsYS1zdWJtaXRcbiAgICAgICAgICAgICAgW2J0blN1Ym1pdERpc2FibGVkXT1cImJ0blN1Ym1pdERpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2ZnXT1cImZvcm1GaWx0ZXJcIlxuICAgICAgICAgICAgICBbaWNvbkJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2xvYWRlcl09XCJsb2FkZXJcIlxuICAgICAgICAgICAgICBpY29uPVwic2VhcmNoXCI+XG4gICAgICAgICAgICA8L2tvYWxhLXN1Ym1pdD5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyRm9ybUNvbmZpZy5hZHZhbmNlZFwiIFtuZ0NsYXNzXT1cInsnc2hvdyc6IHNob3dBZHZhbmNlZEZpbHRlcn1cIiBjbGFzcz1cImFkdmFuY2VkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmlsdGVyXCI+XG4gICAgICAgICAgPGtvYWxhLWR5bmFtaWMtZm9ybVxuICAgICAgICAgICAgW2Zvcm1dPVwiZmlsdGVyRm9ybUNvbmZpZy5hZHZhbmNlZC5mb3JtXCJcbiAgICAgICAgICAgIFtmb3JtQ29uZmlnXT1cImZpbHRlckZvcm1Db25maWcuYWR2YW5jZWQuZm9ybUNvbmZpZ1wiXG4gICAgICAgICAgICBbc2V0VmFsdWVzXT1cImZpbHRlckZvcm1Db25maWcuYWR2YW5jZWQuc2V0VmFsdWVzXCJcbiAgICAgICAgICAgIFtzaG93RmllbGRzXT1cImZpbHRlckZvcm1Db25maWcuYWR2YW5jZWQuc2hvd0ZpZWxkc1wiPlxuICAgICAgICAgIDwva29hbGEtZHluYW1pYy1mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9kaXY+XG4gIDxuYXYgY2xhc3M9XCJtZW51LWxpc3RcIj5cbiAgICA8dWwgY2xhc3M9XCJtZW51XCI+XG4gICAgICA8bGkgKm5nSWY9XCJzZWxlY3Rpb24uaGFzVmFsdWUoKVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaXRlbXNTZWxlY3RMaXN0XVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgKm5nSWY9XCJzZWxlY3Rpb24uaGFzVmFsdWUoKVwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj58PC9saT5cbiAgICAgIDxsaT5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2l0ZW1zTGlzdF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvbmF2PlxuICA8ZGl2ICpuZ0lmPVwibG9hZGVyIHwgYXN5bmNcIiBjbGFzcz1cInNwaW5uZXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwie1xuICAgICduby1maWx0ZXInOiAhZmlsdGVyRm9ybUNvbmZpZ1xuICB9XCI+XG4gICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiNDBcIj48L21hdC1zcGlubmVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImxpc3RcIj5cbiAgICA8dGFibGVcbiAgICAgICpuZ0lmPVwiIWVtcHR5TGlzdENvbXBvbmVudCB8fCAoZW1wdHlMaXN0Q29tcG9uZW50ICYmIGRhdGFTb3VyY2U/LmRhdGE/Lmxlbmd0aCA+IDApIGVsc2UgZW1wdHlMaXN0XCJcbiAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICAgICAgW21hdFNvcnRBY3RpdmVdPVwiY29sdW1uU29ydFwiXG4gICAgICBtdWx0aVRlbXBsYXRlRGF0YVJvd3NcbiAgICAgIGNsYXNzPVwidGFibGUtaG92ZXJcIlxuICAgICAgbWF0LXRhYmxlXG4gICAgICBtYXRTb3J0XG4gICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCIgbWF0U29ydERpc2FibGVDbGVhcj5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2VsZWN0XCI+XG4gICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdEFsbCgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBhbGxTZWxlY3RlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhKGFsbFNlbGVjdGVkJCB8IGFzeW5jKVwiPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIG1hdC1jZWxsPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJkaXNhYmxlZENoZWNrYm94SXRlbUxpc3QgPyAhZGlzYWJsZWRDaGVja2JveEl0ZW1MaXN0KGl0ZW0pIDogdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUoaXRlbSkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNlbGVjdEl0ZW0oKTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQoaXRlbSlcIj5cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkICptYXRGb290ZXJDZWxsRGVmIG1hdC1mb290ZXItY2VsbD48L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJMaXN0Q29uZmlnICYmIGJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZ1wiIG1hdENvbHVtbkRlZj1cImNvbGxhcHNlQnV0dG9uXCI+XG4gICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtaGVhZGVyLWNlbGw+PC90aD5cbiAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBtYXQtY2VsbD5cbiAgICAgICAgICA8a29hbGEtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZy5zaG93KGl0ZW0pXCJcbiAgICAgICAgICAgIChjbGljayk9XCJleHBhbmRlZEVsZW1lbnQgPSBleHBhbmRlZEVsZW1lbnQgPT09IGl0ZW0gPyBudWxsIDogaXRlbVwiXG4gICAgICAgICAgICBba29hbGFJY29uXT1cImJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZy5rb2FsYUljb25cIlxuICAgICAgICAgICAgW2ljb25dPVwiYnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnLmljb25cIlxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiYnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnLnRvb2x0aXBcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZy5pY29uQ29sb3JcIlxuICAgICAgICAgICAgW2JhY2tncm91bmRDb2xvcl09XCJidG5Db2xsYXBzZVN1Ykxpc3RDb25maWcuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICAgIFtrb2FsYUljb25TaXplXT1cIjIyXCI+XG4gICAgICAgICAgPC9rb2FsYS1idXR0b24+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCAqbWF0Rm9vdGVyQ2VsbERlZiBtYXQtZm9vdGVyLWNlbGw+PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtTGlzdCBvZiBpdGVtc0xpc3RcIiBbbWF0Q29sdW1uRGVmXT1cIml0ZW1MaXN0LmNvbHVtbkRlZlwiPlxuICAgICAgICA8dGggKm1hdEhlYWRlckNlbGxEZWYgW21hdC1zb3J0LWhlYWRlcl09XCJpdGVtTGlzdC5zb3J0SGVhZGVyXCIgW2Rpc2FibGVkXT1cIiFpdGVtTGlzdC5zb3J0SGVhZGVyXCIgbWF0LWhlYWRlci1jZWxsPnt7aXRlbUxpc3QubGFiZWx9fTwvdGg+XG4gICAgICAgIDx0ZCAoZGJsY2xpY2spPVwiaXRlbUxpc3QuZGJsQ2xpY2soaXRlbSlcIiAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgbWF0LWNlbGw+XG5cdCAgICAgICAgPGtvYWxhLWR5bmFtaWMtY29tcG9uZW50ICpuZ0lmPVwiaXRlbUxpc3QuaXRlbUNvbXBvbmVudCBlbHNlIGl0ZW1UZXh0XCJcblx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2R5bmFtaWNDb21wb25lbnRdPVwiaXRlbUxpc3QuaXRlbUNvbXBvbmVudChpdGVtKVwiPjwva29hbGEtZHluYW1pYy1jb21wb25lbnQ+XG5cdCAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtVGV4dD5cblx0ICAgICAgICAgIHt7aXRlbUxpc3QuaXRlbU5hbWVQcm9wZXJ0eShpdGVtKX19XG5cdCAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkICptYXRGb290ZXJDZWxsRGVmIG1hdC1mb290ZXItY2VsbD5cbiAgICAgICAgICA8a29hbGEtZHluYW1pYy1jb21wb25lbnQgKm5nSWY9XCJpdGVtTGlzdC5mb290ZXI/Lml0ZW1Db21wb25lbnQgZWxzZSBpdGVtRm9vdGVyVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkeW5hbWljQ29tcG9uZW50XT1cIml0ZW1MaXN0LmZvb3Rlcj8uaXRlbUNvbXBvbmVudChyZXNwb25zZVJlcXVlc3QpXCI+PC9rb2FsYS1keW5hbWljLWNvbXBvbmVudD5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW1Gb290ZXJUZXh0PlxuICAgICAgICAgICAge3tpdGVtTGlzdC5mb290ZXI/Lml0ZW1OYW1lUHJvcGVydHkocmVzcG9uc2VSZXF1ZXN0KX19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3ViTGlzdENvbmZpZyAmJiBidG5Db2xsYXBzZVN1Ykxpc3RDb25maWdcIiBtYXRDb2x1bW5EZWY9XCJrb2FsYUxpc3REZXRhaWxzXCI+XG4gICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtaGVhZGVyLWNlbGw+PC90aD5cbiAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnNUb1Nob3dJbkxpc3QubGVuZ3RoXCIgbWF0LWNlbGw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tZGV0YWlsXCIgW0BkZXRhaWxFeHBhbmRdPVwiaXRlbSA9PSBleHBhbmRlZEVsZW1lbnQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cbiAgICAgICAgICAgIDxrb2FsYS1saXN0IFtjb25maWddPVwic3ViTGlzdENvbmZpZyhpdGVtKVwiPjwva29hbGEtbGlzdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkICptYXRGb290ZXJDZWxsRGVmIG1hdC1mb290ZXItY2VsbD48L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwib3B0aW9uc1wiPlxuICAgICAgICA8dGggKm1hdEhlYWRlckNlbGxEZWYgbWF0LWhlYWRlci1jZWxsPjwvdGg+XG4gICAgICAgIDx0ZCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgbWF0LWNlbGw+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImhhdmVPcHRpb25zT25JdGVtTGluZShpdGVtKVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3B0aW9uc1wiIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPSdtYXRlcmlhbC1pY29ucyc+bW9yZV92ZXJ0PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8bWF0LW1lbnUgI29wdGlvbnM9XCJtYXRNZW51XCIgY2xhc3M9XCJtZW51LWxpc3RcIiB5UG9zaXRpb249XCJiZWxvd1wiPlxuXHQgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgaXRlbXNNZW51TGlzdE9wdGlvbnNcIj5cblx0ICAgICAgICAgICAgICA8YnV0dG9uXG5cdFx0ICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9uLmFjdGlvbihpdGVtKVwiXG5cdFx0ICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbi5oYXZlUGVybWlzc2lvbiAmJiAoXG5cdFx0ICAgICAgICAgICAgICAgICFvcHRpb24uc2hvd0J5SXRlbUxpc3QgfHxcblx0XHQgICAgICAgICAgICAgICAgb3B0aW9uLnNob3dCeUl0ZW1MaXN0KGl0ZW0pXG5cdCAgICAgICAgICAgICAgICApXCJcblx0XHQgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW0+XG5cdCAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tvcHRpb24uaWNvbn19PC9tYXQtaWNvbj5cblx0ICAgICAgICAgICAgICAgIDxzcGFuPnt7b3B0aW9uLm5hbWV9fTwvc3Bhbj5cblx0ICAgICAgICAgICAgICA8L2J1dHRvbj5cblx0ICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgKm1hdEZvb3RlckNlbGxEZWYgbWF0LWZvb3Rlci1jZWxsPjwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPHRyICptYXRIZWFkZXJSb3dEZWY9XCJjb2x1bW5zVG9TaG93SW5MaXN0OyBzdGlja3k6IHRydWVcIiBtYXQtaGVhZGVyLXJvdz48L3RyPlxuICAgICAgPHRyICptYXRSb3dEZWY9XCJsZXQgaXRlbTsgY29sdW1uczogY29sdW1uc1RvU2hvd0luTGlzdDtcIiBtYXQtcm93PjwvdHI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3ViTGlzdENvbmZpZyAmJiBidG5Db2xsYXBzZVN1Ykxpc3RDb25maWdcIj5cbiAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsna29hbGFMaXN0RGV0YWlscyddXCIgY2xhc3M9XCJpdGVtLWRldGFpbC1yb3dcIj48L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzRm9vdGVyKClcIj5cbiAgICAgICAgPHRyICptYXRGb290ZXJSb3dEZWY9XCJjb2x1bW5zVG9TaG93SW5MaXN0OyBzdGlja3k6IHRydWVcIiBtYXQtZm9vdGVyLXJvdz48L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90YWJsZT5cbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5TGlzdD5cbiAgICAgIDxrb2FsYS1keW5hbWljLWNvbXBvbmVudCAqbmdJZj1cIiEoZmlsdGVyRXJyb3IkIHwgYXN5bmMpIGVsc2UgZXJyb3JMaXN0XCIgW2R5bmFtaWNDb21wb25lbnRdPVwiZW1wdHlMaXN0Q29tcG9uZW50XCI+PC9rb2FsYS1keW5hbWljLWNvbXBvbmVudD5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZXJyb3JMaXN0PlxuICAgICAgICA8a29hbGEtZHluYW1pYy1jb21wb25lbnQgW2R5bmFtaWNDb21wb25lbnRdPVwiZXJyb3JMaXN0Q29tcG9uZW50XCI+PC9rb2FsYS1keW5hbWljLWNvbXBvbmVudD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhaGlkZVBhZ2luYXRvclwiIGNsYXNzPVwiY29udGVudC1wYWdpbmF0b3JcIj5cbiAgICA8bWF0LXBhZ2luYXRvclxuICAgICAgW2xlbmd0aF09XCJxdGRMaXN0UmVzdWx0XCJcbiAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwibGltaXRPcHRpb25zXCJcbiAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICBzaG93Rmlyc3RMYXN0QnV0dG9ucz5cbiAgICA8L21hdC1wYWdpbmF0b3I+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saXN0L3NyYy9saWIvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saXN0L3NyYy9saWIvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFlLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS25ELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQmpGLE1BQU0sT0FBTyxhQUFjLFNBQVEsWUFBWTtJQTRCN0MsWUFDVSxFQUFlLEVBQ2Ysa0JBQTJDLEVBQzNDLGFBQW9DO1FBRTVDLEtBQUssQ0FDSCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxJQUFJLFVBQVUsRUFBTyxFQUNuRCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUM7WUFDaEMs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QyxDQUFDOzRCQUN2QyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7eUJBQ3RGLENBQUM7cUJBQ0g7NEtBR2UsTUFBTTtzQkFBckIsS0FBSztnQkFFNkIsU0FBUztzQkFBM0MsU0FBUzt1QkFBQyxZQUFZO2dCQUN3QixJQUFJO3NCQUFsRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlzdEFic3RyYWN0IH0gZnJvbSAnLi9saXN0LmFic3RyYWN0JztcbmltcG9ydCB7IEtvYWxhTGlzdEl0ZW1NZW51T3B0aW9uSW50ZXJmYWNlIH0gZnJvbSAnLi9rb2FsYS1saXN0LWl0ZW0tbWVudS1vcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBLb2FsYUxpc3RGaWx0ZXJJbnRlcmZhY2UgfSBmcm9tICcuL2tvYWxhLWxpc3QtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNGb3JtU2VydmljZSB9IGZyb20gJ0Brb2FsYXJ4L3VpL2Zvcm0nO1xuaW1wb3J0IHsgS29hbGFMaXN0SXRlbUludGVyZmFjZSB9IGZyb20gJy4va29hbGEtbGlzdC1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBLb2FsYUxpc3RGb3JtRmlsdGVySW50ZXJmYWNlIH0gZnJvbSBcIi4va29hbGEtbGlzdC1mb3JtLWZpbHRlci5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydFwiO1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tIFwiQGtvYWxhcngvdXRpbHMvb3BlcmF0b3JzL2RlbGF5XCI7XG5pbXBvcnQgeyBrb2FsYSB9IGZyb20gXCJAa29hbGFyeC91dGlsc1wiO1xuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSBcIm5neC1kZXZpY2UtZGV0ZWN0b3JcIjtcbmltcG9ydCB7IEtvYWxhTGlzdENvbmZpZ0ludGVyZmFjZSB9IGZyb20gXCIuL2tvYWxhLmxpc3QtY29uZmlnLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvclwiO1xuaW1wb3J0IHsgS29hbGFMaXN0QnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnSW50ZXJmYWNlIH0gZnJvbSBcIi4va29hbGEtbGlzdC1idG4tY29sbGFwc2Utc3ViLWxpc3QtY29uZmlnLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7IHJhbmRvbVN0cmluZyB9IGZyb20gXCJAa29hbGFyeC91dGlscy9vcGVyYXRvcnMvc3RyaW5nXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tvYWxhLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJ2xpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnbGlzdC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHtoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJ30pKSxcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHtoZWlnaHQ6ICcqJ30pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExpc3RDb21wb25lbnQgZXh0ZW5kcyBMaXN0QWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc/OiBLb2FsYUxpc3RDb25maWdJbnRlcmZhY2U7XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHByb3RlY3RlZCBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7c3RhdGljOiBmYWxzZX0pIHByb3RlY3RlZCBzb3J0OiBNYXRTb3J0O1xuXG4gIHB1YmxpYyBjdXN0b21DbGFzcz86IHN0cmluZztcbiAgcHVibGljIGNvbHVtbnNUb1Nob3dJbkxpc3Q/OiBzdHJpbmdbXTtcbiAgcHVibGljIGhpZGVQYWdpbmF0b3I/OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBjb2x1bW5Tb3J0Pzogc3RyaW5nO1xuICBwdWJsaWMgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9ICdhc2MnO1xuICBwdWJsaWMgaXRlbXNNZW51TGlzdE9wdGlvbnM/OiBLb2FsYUxpc3RJdGVtTWVudU9wdGlvbkludGVyZmFjZTxhbnk+W107XG4gIHB1YmxpYyBpdGVtc0xpc3Q/OiBLb2FsYUxpc3RJdGVtSW50ZXJmYWNlPGFueT5bXTtcbiAgcHVibGljIHJlcXVlc3Q/OiBPYnNlcnZhYmxlPGFueT47XG4gIHB1YmxpYyByZXNwb25zZUluZGV4TmFtZT86IHN0cmluZztcbiAgcHVibGljIHJlc3BvbnNlUXRkUmVzdWx0SW5kZXhOYW1lPzogKHJlc3BvbnNlOiBhbnkpID0+IG51bWJlcjtcbiAgcHVibGljIHJlc3BvbnNlUmVxdWVzdD86IGFueTtcbiAgcHVibGljIHR5cGVSZXF1ZXN0OiAnYWxsJyB8ICdvbkRlbWFuZCcgPSAnYWxsJ1xuICBwdWJsaWMgZmlsdGVyRm9ybUNvbmZpZz86IEtvYWxhTGlzdEZpbHRlckludGVyZmFjZTtcbiAgcHVibGljIHJlbG9hZD86IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIGZvcm1GaWx0ZXI/OiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzaG93QWR2YW5jZWRGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHF0ZExpc3RSZXN1bHQgPSAwO1xuICBwdWJsaWMgZGlzYWJsZWRDaGVja2JveEl0ZW1MaXN0PzogKGl0ZW06IGFueSkgPT4gYm9vbGVhbjtcbiAgcHVibGljIGV4cGFuZGVkRWxlbWVudCA9IGZhbHNlO1xuICBwdWJsaWMgYnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnPzogS29hbGFMaXN0QnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnSW50ZXJmYWNlPGFueT47XG4gIHB1YmxpYyBzdWJMaXN0Q29uZmlnPzogKGl0ZW06IGFueSkgPT4gS29hbGFMaXN0Q29uZmlnSW50ZXJmYWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZHluYW1pY0Zvcm1TZXJ2aWNlOiBLb2FsYUR5bmFtaWNGb3JtU2VydmljZSxcbiAgICBwcml2YXRlIGRldmljZVNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZVxuICApIHtcbiAgICBzdXBlcihcbiAgICAgICgpID0+IHRoaXMuY29uZmlnPy5yZXF1ZXN0ID8/IG5ldyBPYnNlcnZhYmxlPGFueT4oKSxcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLnJlc3BvbnNlUmVxdWVzdCA9IHJlc3BvbnNlO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuY29uZmlnPy5yZXNwb25zZUluZGV4TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKHRoaXMuY29uZmlnLnJlc3BvbnNlSW5kZXhOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZXNwb25zZVt0aGlzLmNvbmZpZy5yZXNwb25zZUluZGV4TmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVzcG9uc2U7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8uZ2V0RGF0YVNvdXJjZSkgdGhpcy5jb25maWc/LmdldERhdGFTb3VyY2UodGhpcy5kYXRhU291cmNlLmRhdGEpO1xuICAgICAgICB0aGlzLnF0ZExpc3RSZXN1bHQgPSB0aGlzLmNvbmZpZz8ucmVzcG9uc2VRdGRSZXN1bHRJbmRleE5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNvbmZpZy5yZXNwb25zZVF0ZFJlc3VsdEluZGV4TmFtZShyZXNwb25zZSkgPz8gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZGF0YVNvdXJjZS5kYXRhPy5sZW5ndGggPz8gMDtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB0aGlzLmZvcm1GaWx0ZXIgPz8gZmIuZ3JvdXAoe30pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdENvbmZpZygpO1xuICAgIHRoaXMuZm9ybUZpbHRlciA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZm9ybVNlYXJjaDogdGhpcy5maWx0ZXJGb3JtQ29uZmlnPy5tYWluPy5mb3JtID8/IFsnJ10sXG4gICAgICBmb3JtQWR2YW5jZWRTZWFyY2g6IHRoaXMuZmlsdGVyRm9ybUNvbmZpZz8uYWR2YW5jZWQ/LmZvcm0gPz8gWycnXVxuICAgIH0pO1xuICAgIHRoaXMubG9hZGluZyh0cnVlKTtcbiAgICBpZiAodGhpcy5maWx0ZXJGb3JtQ29uZmlnKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm1Db25maWc/Lm1haW4/LmZvcm1Db25maWc/Lm1hcChpdGVtID0+IHtcbiAgICAgICAgaXRlbS5jbGFzcyArPSAnIHBhZGRpbmctbm9uZSB3LTk5JztcbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybUNvbmZpZz8uYWR2YW5jZWQ/LmZvcm1Db25maWc/Lm1hcChpdGVtID0+IHtcbiAgICAgICAgaXRlbS5jbGFzcyArPSAnIHBhZGRpbmctbm9uZSc7XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5maWx0ZXJGb3JtQ29uZmlnPy5jaGVja0FuZFNlYXJjaCkge1xuICAgICAgICB0aGlzLmZvcm1GaWx0ZXIuYWRkQ29udHJvbCh0aGlzLmZpbHRlckZvcm1Db25maWcuY2hlY2tBbmRTZWFyY2guZm9ybUNvbnRyb2xOYW1lLCBuZXcgRm9ybUNvbnRyb2wodGhpcy5maWx0ZXJGb3JtQ29uZmlnLmNoZWNrQW5kU2VhcmNoLmlzQ2hlY2tlZCA/PyBmYWxzZSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5nZXRTZWxlY3Rpb25MaXN0KSB0aGlzLmNvbmZpZy5nZXRTZWxlY3Rpb25MaXN0KHRoaXMuc2VsZWN0aW9uKTtcblxuICAgIGlmICh0aGlzLnJlbG9hZCkge1xuICAgICAgdGhpcy5yZWxvYWQuc3Vic2NyaWJlKGFzeW5jIHJlbG9hZCA9PiB7XG4gICAgICAgIGlmIChyZWxvYWQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmZpbHRlclN1Ym1pdCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5vbkRlc3Ryb3koKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5hZnRlclZpZXdJbml0KCkudGhlbigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZpbHRlclN1Ym1pdCgpIHtcbiAgICB0aGlzLnNob3dBZHZhbmNlZEZpbHRlciA9IGZhbHNlO1xuICAgIGF3YWl0IGRlbGF5KDEpO1xuICAgIGxldCBkYWRvcyA9IGtvYWxhKFxuICAgICAgdGhpcy5maWx0ZXJGb3JtQ29uZmlnPy5tYWluPy5mb3JtXG4gICAgICA/IHRoaXMuZHluYW1pY0Zvcm1TZXJ2aWNlLmVtaXREYXRhKHRoaXMuZmlsdGVyRm9ybUNvbmZpZz8ubWFpbj8uZm9ybSlcbiAgICAgIDoge31cbiAgICApXG4gICAgICAub2JqZWN0KClcbiAgICAgIC5tZXJnZShcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtQ29uZmlnPy5hZHZhbmNlZD8uZm9ybVxuICAgICAgICA/IHRoaXMuZHluYW1pY0Zvcm1TZXJ2aWNlLmVtaXREYXRhKHRoaXMuZmlsdGVyRm9ybUNvbmZpZz8uYWR2YW5jZWQ/LmZvcm0pXG4gICAgICAgIDoge30pXG4gICAgICAuZ2V0VmFsdWUoKTtcblxuICAgIGlmICh0aGlzLmZpbHRlckZvcm1Db25maWc/LmNoZWNrQW5kU2VhcmNoKSB7XG4gICAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmlsdGVyRm9ybUNvbmZpZy5jaGVja0FuZFNlYXJjaC5mb3JtQ29udHJvbE5hbWU7XG4gICAgICBkYWRvc1tjb250cm9sTmFtZV0gPSB0aGlzLmZvcm1GaWx0ZXIuZ2V0KGNvbnRyb2xOYW1lKS52YWx1ZTtcbiAgICB9XG4gICAgYXdhaXQgc3VwZXIuc2VhcmNoKGRhZG9zKTtcbiAgfVxuXG4gIHB1YmxpYyB0b29nbGVGaWx0ZXIoKSB7XG4gICAgdGhpcy5zaG93QWR2YW5jZWRGaWx0ZXIgPSAhdGhpcy5zaG93QWR2YW5jZWRGaWx0ZXI7XG4gIH1cblxuICBwdWJsaWMgaGF2ZU9wdGlvbnNPbkl0ZW1MaW5lKGl0ZW06IGFueSkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zTWVudUxpc3RPcHRpb25zLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLmhhdmVQZXJtaXNzaW9uICYmIChcbiAgICAgICFvcHRpb24uc2hvd0J5SXRlbUxpc3QgfHxcbiAgICAgIG9wdGlvbi5zaG93QnlJdGVtTGlzdChpdGVtKVxuICAgICkpLmxlbmd0aCA+IDBcbiAgfVxuXG4gIHB1YmxpYyBoYXNGb290ZXIoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5pdGVtc0xpc3QuZmluZChpdGVtID0+ICEhaXRlbS5mb290ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q29uZmlnKCkge1xuICAgIHRoaXMuY29sdW1uU29ydCA9IHRoaXMuY29uZmlnLmNvbHVtblNvcnQgPz8gbnVsbDtcbiAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLmNvbmZpZy5zb3J0RGlyZWN0aW9uID8/ICdhc2MnO1xuICAgIHRoaXMuaXRlbXNNZW51TGlzdE9wdGlvbnMgPSB0aGlzLmNvbmZpZy5pdGVtc01lbnVMaXN0T3B0aW9ucyA/PyBbXTtcbiAgICB0aGlzLnR5cGVSZXF1ZXN0ID0gdGhpcy5jb25maWcudHlwZVJlcXVlc3QgPz8gJ2FsbCc7XG4gICAgdGhpcy5xdGRMaXN0UmVzdWx0ID0gdGhpcy5jb25maWcucXRkTGlzdFJlc3VsdCA/PyAwO1xuICAgIHRoaXMuY29sdW1uc1RvU2hvd0luTGlzdCA9IHRoaXMuY29uZmlnLmNvbHVtbnNUb1Nob3dJbkxpc3Q7XG4gICAgdGhpcy5pdGVtc0xpc3QgPSB0aGlzLmNvbmZpZy5pdGVtc0xpc3QubWFwKGl0ZW0gPT4ge1xuICAgICAgaWYgKCFpdGVtLmRibENsaWNrKSB7XG4gICAgICAgIGl0ZW0uZGJsQ2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcbiAgICB0aGlzLnNob3dBZHZhbmNlZEZpbHRlciA9IHRoaXMuY29uZmlnLnNob3dBZHZhbmNlZEZpbHRlcjtcbiAgICB0aGlzLmZpbHRlckZvcm1Db25maWcgPSB0aGlzLmNvbmZpZy5maWx0ZXJGb3JtQ29uZmlnO1xuICAgIHRoaXMucmVxdWVzdCA9IHRoaXMuY29uZmlnLnJlcXVlc3Q7XG4gICAgdGhpcy5yZWxvYWQgPSB0aGlzLmNvbmZpZy5yZWxvYWQ7XG4gICAgdGhpcy5yZXNwb25zZUluZGV4TmFtZSA9IHRoaXMuY29uZmlnLnJlc3BvbnNlSW5kZXhOYW1lO1xuICAgIHRoaXMucmVzcG9uc2VRdGRSZXN1bHRJbmRleE5hbWUgPSB0aGlzLmNvbmZpZy5yZXNwb25zZVF0ZFJlc3VsdEluZGV4TmFtZTtcbiAgICB0aGlzLmZpbHRlclBhcmFtcyA9IHRoaXMuY29uZmlnLmZpbHRlclBhcmFtcyA/PyBuZXcgQmVoYXZpb3JTdWJqZWN0PEtvYWxhTGlzdEZvcm1GaWx0ZXJJbnRlcmZhY2U+KG51bGwpO1xuICAgIHRoaXMuZW1wdHlMaXN0Q29tcG9uZW50ID0gdGhpcy5jb25maWcuZW1wdHlMaXN0Q29tcG9uZW50O1xuICAgIHRoaXMuZXJyb3JMaXN0Q29tcG9uZW50ID0gdGhpcy5jb25maWcuZXJyb3JMaXN0Q29tcG9uZW50O1xuICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLmNvbmZpZy5wYWdlU2l6ZSA/PyAzMDtcbiAgICB0aGlzLmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdCA9IHRoaXMuY29uZmlnLmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdDtcbiAgICB0aGlzLnN1Ykxpc3RDb25maWcgPSB0aGlzLmNvbmZpZy5zdWJMaXN0Q29uZmlnO1xuICAgIHRoaXMuYnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnID0gdGhpcy5jb25maWcuYnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnO1xuICAgIHRoaXMuaGlkZVBhZ2luYXRvciA9IHRoaXMuY29uZmlnLmhpZGVQYWdpbmF0b3I7XG4gICAgdGhpcy5jdXN0b21DbGFzcyA9IHRoaXMuY29uZmlnLmN1c3RvbUNsYXNzO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGlzdC1jb250YWluZXJcIiBbbmdDbGFzc109XCJjdXN0b21DbGFzc1wiPlxuICA8ZGl2ICpuZ0lmPVwiZmlsdGVyRm9ybUNvbmZpZ1wiIGNsYXNzPVwibGlzdC1maWx0ZXJcIj5cbiAgICA8Zm9ybSAobmdTdWJtaXQpPVwiZmlsdGVyU3VibWl0KClcIiBbZm9ybUdyb3VwXT1cImZvcm1GaWx0ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluXCI+XG4gICAgICAgIDxrb2FsYS1keW5hbWljLWZvcm1cbiAgICAgICAgICAqbmdJZj1cImZpbHRlckZvcm1Db25maWcubWFpblwiXG4gICAgICAgICAgW2Zvcm1dPVwiZmlsdGVyRm9ybUNvbmZpZy5tYWluLmZvcm1cIlxuICAgICAgICAgIFtmb3JtQ29uZmlnXT1cImZpbHRlckZvcm1Db25maWcubWFpbi5mb3JtQ29uZmlnXCJcbiAgICAgICAgICBbc2V0VmFsdWVzXT1cImZpbHRlckZvcm1Db25maWcubWFpbi5zZXRWYWx1ZXNcIlxuICAgICAgICAgIFtzaG93RmllbGRzXT1cImZpbHRlckZvcm1Db25maWcubWFpbi5zaG93RmllbGRzXCI+XG4gICAgICAgIDwva29hbGEtZHluYW1pYy1mb3JtPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpICpuZ0lmPVwiZmlsdGVyRm9ybUNvbmZpZy5hZHZhbmNlZFwiIGNsYXNzPVwib3B0aW9uXCI+XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ0b29nbGVGaWx0ZXIoKVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiRmlsdHJvIEF2YW7Dp2Fkb1wiXG4gICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+dHVuZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaSAqbmdJZj1cImZpbHRlckZvcm1Db25maWcuY2hlY2tBbmRTZWFyY2hcIiBjbGFzcz1cImNoZWNrYm94LWZpbHRlclwiPlxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiZmlsdGVyU3VibWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlckZvcm1Db25maWcuY2hlY2tBbmRTZWFyY2guZm9ybUNvbnRyb2xOYW1lXCI+XG4gICAgICAgICAgICAgIHt7ZmlsdGVyRm9ybUNvbmZpZy5jaGVja0FuZFNlYXJjaC5sYWJlbH19XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaSBjbGFzcz1cIm9wdGlvblwiPlxuICAgICAgICAgICAgPGtvYWxhLXN1Ym1pdFxuICAgICAgICAgICAgICBbYnRuU3VibWl0RGlzYWJsZWRdPVwiYnRuU3VibWl0RGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbZmddPVwiZm9ybUZpbHRlclwiXG4gICAgICAgICAgICAgIFtpY29uQnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgICAgICBbbG9hZGVyXT1cImxvYWRlclwiXG4gICAgICAgICAgICAgIGljb249XCJzZWFyY2hcIj5cbiAgICAgICAgICAgIDwva29hbGEtc3VibWl0PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJGb3JtQ29uZmlnLmFkdmFuY2VkXCIgW25nQ2xhc3NdPVwieydzaG93Jzogc2hvd0FkdmFuY2VkRmlsdGVyfVwiIGNsYXNzPVwiYWR2YW5jZWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1maWx0ZXJcIj5cbiAgICAgICAgICA8a29hbGEtZHluYW1pYy1mb3JtXG4gICAgICAgICAgICBbZm9ybV09XCJmaWx0ZXJGb3JtQ29uZmlnLmFkdmFuY2VkLmZvcm1cIlxuICAgICAgICAgICAgW2Zvcm1Db25maWddPVwiZmlsdGVyRm9ybUNvbmZpZy5hZHZhbmNlZC5mb3JtQ29uZmlnXCJcbiAgICAgICAgICAgIFtzZXRWYWx1ZXNdPVwiZmlsdGVyRm9ybUNvbmZpZy5hZHZhbmNlZC5zZXRWYWx1ZXNcIlxuICAgICAgICAgICAgW3Nob3dGaWVsZHNdPVwiZmlsdGVyRm9ybUNvbmZpZy5hZHZhbmNlZC5zaG93RmllbGRzXCI+XG4gICAgICAgICAgPC9rb2FsYS1keW5hbWljLWZvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbiAgPG5hdiBjbGFzcz1cIm1lbnUtbGlzdFwiPlxuICAgIDx1bCBjbGFzcz1cIm1lbnVcIj5cbiAgICAgIDxsaSAqbmdJZj1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpdGVtc1NlbGVjdExpc3RdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9saT5cbiAgICAgIDxsaSAqbmdJZj1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPnw8L2xpPlxuICAgICAgPGxpPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaXRlbXNMaXN0XVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9uYXY+XG4gIDxkaXYgKm5nSWY9XCJsb2FkZXIgfCBhc3luY1wiIGNsYXNzPVwic3Bpbm5lci1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7XG4gICAgJ25vLWZpbHRlcic6ICFmaWx0ZXJGb3JtQ29uZmlnXG4gIH1cIj5cbiAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCI0MFwiPjwvbWF0LXNwaW5uZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibGlzdFwiPlxuICAgIDx0YWJsZVxuICAgICAgKm5nSWY9XCIhZW1wdHlMaXN0Q29tcG9uZW50IHx8IChlbXB0eUxpc3RDb21wb25lbnQgJiYgZGF0YVNvdXJjZT8uZGF0YT8ubGVuZ3RoID4gMCkgZWxzZSBlbXB0eUxpc3RcIlxuICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgICBbbWF0U29ydEFjdGl2ZV09XCJjb2x1bW5Tb3J0XCJcbiAgICAgIFtpZF09XCJ0YWJsZUlkXCJcbiAgICAgIG11bHRpVGVtcGxhdGVEYXRhUm93c1xuICAgICAgY2xhc3M9XCJ0YWJsZS1ob3ZlclwiXG4gICAgICBtYXQtdGFibGVcbiAgICAgIG1hdFNvcnRcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cInNvcnREaXJlY3Rpb25cIiBtYXRTb3J0RGlzYWJsZUNsZWFyPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cbiAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0QWxsKCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGFsbFNlbGVjdGVkJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICEoYWxsU2VsZWN0ZWQkIHwgYXN5bmMpXCI+XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCIgbWF0LWNlbGw+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cImRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdCA/ICFkaXNhYmxlZENoZWNrYm94SXRlbUxpc3QoaXRlbSkgOiB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnRvZ2dsZShpdGVtKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgc2VsZWN0SXRlbSgpO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChpdGVtKVwiPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgKm1hdEZvb3RlckNlbGxEZWYgbWF0LWZvb3Rlci1jZWxsPjwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1Ykxpc3RDb25maWcgJiYgYnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnXCIgbWF0Q29sdW1uRGVmPVwiY29sbGFwc2VCdXR0b25cIj5cbiAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXItY2VsbD48L3RoPlxuICAgICAgICA8dGQgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIG1hdC1jZWxsPlxuICAgICAgICAgIDxrb2FsYS1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnLnNob3coaXRlbSlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImV4cGFuZGVkRWxlbWVudCA9IGV4cGFuZGVkRWxlbWVudCA9PT0gaXRlbSA/IG51bGwgOiBpdGVtXCJcbiAgICAgICAgICAgIFtrb2FsYUljb25dPVwiYnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnLmtvYWxhSWNvblwiXG4gICAgICAgICAgICBbaWNvbl09XCJidG5Db2xsYXBzZVN1Ykxpc3RDb25maWcuaWNvblwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCJidG5Db2xsYXBzZVN1Ykxpc3RDb25maWcudG9vbHRpcFwiXG4gICAgICAgICAgICBbY29sb3JdPVwiYnRuQ29sbGFwc2VTdWJMaXN0Q29uZmlnLmljb25Db2xvclwiXG4gICAgICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cImJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZy5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgICAgW2tvYWxhSWNvblNpemVdPVwiMjJcIj5cbiAgICAgICAgICA8L2tvYWxhLWJ1dHRvbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkICptYXRGb290ZXJDZWxsRGVmIG1hdC1mb290ZXItY2VsbD48L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW1MaXN0IG9mIGl0ZW1zTGlzdFwiIFttYXRDb2x1bW5EZWZdPVwiaXRlbUxpc3QuY29sdW1uRGVmXCI+XG4gICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBbbWF0LXNvcnQtaGVhZGVyXT1cIml0ZW1MaXN0LnNvcnRIZWFkZXJcIiBbZGlzYWJsZWRdPVwiIWl0ZW1MaXN0LnNvcnRIZWFkZXJcIiBtYXQtaGVhZGVyLWNlbGw+e3tpdGVtTGlzdC5sYWJlbH19PC90aD5cbiAgICAgICAgPHRkIChkYmxjbGljayk9XCJpdGVtTGlzdC5kYmxDbGljayhpdGVtKVwiICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBtYXQtY2VsbD5cblx0ICAgICAgICA8a29hbGEtZHluYW1pYy1jb21wb25lbnQgKm5nSWY9XCJpdGVtTGlzdC5pdGVtQ29tcG9uZW50IGVsc2UgaXRlbVRleHRcIlxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZHluYW1pY0NvbXBvbmVudF09XCJpdGVtTGlzdC5pdGVtQ29tcG9uZW50KGl0ZW0pXCI+PC9rb2FsYS1keW5hbWljLWNvbXBvbmVudD5cblx0ICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW1UZXh0PlxuXHQgICAgICAgICAge3tpdGVtTGlzdC5pdGVtTmFtZVByb3BlcnR5KGl0ZW0pfX1cblx0ICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgKm1hdEZvb3RlckNlbGxEZWYgbWF0LWZvb3Rlci1jZWxsPlxuICAgICAgICAgIDxrb2FsYS1keW5hbWljLWNvbXBvbmVudCAqbmdJZj1cIml0ZW1MaXN0LmZvb3Rlcj8uaXRlbUNvbXBvbmVudCBlbHNlIGl0ZW1Gb290ZXJUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2R5bmFtaWNDb21wb25lbnRdPVwiaXRlbUxpc3QuZm9vdGVyPy5pdGVtQ29tcG9uZW50KHJlc3BvbnNlUmVxdWVzdClcIj48L2tvYWxhLWR5bmFtaWMtY29tcG9uZW50PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbUZvb3RlclRleHQ+XG4gICAgICAgICAgICB7e2l0ZW1MaXN0LmZvb3Rlcj8uaXRlbU5hbWVQcm9wZXJ0eShyZXNwb25zZVJlcXVlc3QpfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJMaXN0Q29uZmlnICYmIGJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZ1wiIG1hdENvbHVtbkRlZj1cImtvYWxhTGlzdERldGFpbHNcIj5cbiAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXItY2VsbD48L3RoPlxuICAgICAgICA8dGQgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIFthdHRyLmNvbHNwYW5dPVwiY29sdW1uc1RvU2hvd0luTGlzdC5sZW5ndGhcIiBtYXQtY2VsbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1kZXRhaWxcIiBbQGRldGFpbEV4cGFuZF09XCJpdGVtID09IGV4cGFuZGVkRWxlbWVudCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiPlxuICAgICAgICAgICAgPGtvYWxhLWxpc3QgW2NvbmZpZ109XCJzdWJMaXN0Q29uZmlnKGl0ZW0pXCI+PC9rb2FsYS1saXN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgKm1hdEZvb3RlckNlbGxEZWYgbWF0LWZvb3Rlci1jZWxsPjwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJvcHRpb25zXCI+XG4gICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtaGVhZGVyLWNlbGw+PC90aD5cbiAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBtYXQtY2VsbD5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGF2ZU9wdGlvbnNPbkl0ZW1MaW5lKGl0ZW0pXCI+XG4gICAgICAgICAgICA8YnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJvcHRpb25zXCIgbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9J21hdGVyaWFsLWljb25zJz5tb3JlX3ZlcnQ8L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjb3B0aW9ucz1cIm1hdE1lbnVcIiBjbGFzcz1cIm1lbnUtbGlzdFwiIHlQb3NpdGlvbj1cImJlbG93XCI+XG5cdCAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBpdGVtc01lbnVMaXN0T3B0aW9uc1wiPlxuXHQgICAgICAgICAgICAgIDxidXR0b25cblx0XHQgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb24uYWN0aW9uKGl0ZW0pXCJcblx0XHQgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uLmhhdmVQZXJtaXNzaW9uICYmIChcblx0XHQgICAgICAgICAgICAgICAgIW9wdGlvbi5zaG93QnlJdGVtTGlzdCB8fFxuXHRcdCAgICAgICAgICAgICAgICBvcHRpb24uc2hvd0J5SXRlbUxpc3QoaXRlbSlcblx0ICAgICAgICAgICAgICAgIClcIlxuXHRcdCAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbT5cblx0ICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e29wdGlvbi5pY29ufX08L21hdC1pY29uPlxuXHQgICAgICAgICAgICAgICAgPHNwYW4+e3tvcHRpb24ubmFtZX19PC9zcGFuPlxuXHQgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXHQgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCAqbWF0Rm9vdGVyQ2VsbERlZiBtYXQtZm9vdGVyLWNlbGw+PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dHIgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnNUb1Nob3dJbkxpc3Q7IHN0aWNreTogdHJ1ZVwiIG1hdC1oZWFkZXItcm93PjwvdHI+XG4gICAgICA8dHIgKm1hdFJvd0RlZj1cImxldCBpdGVtOyBjb2x1bW5zOiBjb2x1bW5zVG9TaG93SW5MaXN0O1wiIG1hdC1yb3c+PC90cj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJMaXN0Q29uZmlnICYmIGJ0bkNvbGxhcHNlU3ViTGlzdENvbmZpZ1wiPlxuICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydrb2FsYUxpc3REZXRhaWxzJ11cIiBjbGFzcz1cIml0ZW0tZGV0YWlsLXJvd1wiPjwvdHI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNGb290ZXIoKVwiPlxuICAgICAgICA8dHIgKm1hdEZvb3RlclJvd0RlZj1cImNvbHVtbnNUb1Nob3dJbkxpc3Q7IHN0aWNreTogdHJ1ZVwiIG1hdC1mb290ZXItcm93PjwvdHI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RhYmxlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlMaXN0PlxuICAgICAgPGtvYWxhLWR5bmFtaWMtY29tcG9uZW50ICpuZ0lmPVwiIShmaWx0ZXJFcnJvciQgfCBhc3luYykgZWxzZSBlcnJvckxpc3RcIiBbZHluYW1pY0NvbXBvbmVudF09XCJlbXB0eUxpc3RDb21wb25lbnRcIj48L2tvYWxhLWR5bmFtaWMtY29tcG9uZW50PlxuICAgICAgPG5nLXRlbXBsYXRlICNlcnJvckxpc3Q+XG4gICAgICAgIDxrb2FsYS1keW5hbWljLWNvbXBvbmVudCBbZHluYW1pY0NvbXBvbmVudF09XCJlcnJvckxpc3RDb21wb25lbnRcIj48L2tvYWxhLWR5bmFtaWMtY29tcG9uZW50PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFoaWRlUGFnaW5hdG9yXCIgY2xhc3M9XCJjb250ZW50LXBhZ2luYXRvclwiPlxuICAgIDxtYXQtcGFnaW5hdG9yXG4gICAgICBbbGVuZ3RoXT1cInF0ZExpc3RSZXN1bHRcIlxuICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJsaW1pdE9wdGlvbnNcIlxuICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgIHNob3dGaXJzdExhc3RCdXR0b25zPlxuICAgIDwvbWF0LXBhZ2luYXRvcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|