@datorama/core 22.1.1-rc.2 → 22.2.0
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/bundle.scss +13 -13
- package/bundles/datorama-core.umd.js +155 -125
- package/bundles/datorama-core.umd.js.map +1 -1
- package/bundles/datorama-core.umd.min.js +15 -15
- package/bundles/datorama-core.umd.min.js.map +1 -1
- package/datorama-core.d.ts +0 -1
- package/datorama-core.metadata.json +1 -1
- package/esm2015/datorama-core.js +1 -2
- package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +2 -4
- package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
- package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +11 -6
- package/esm2015/lib/grid-v2/grid-filter/filter-validator.js +3 -1
- package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +12 -4
- package/esm2015/lib/grid-v2/grid-filter/grid-filter.types.js +3 -1
- package/esm2015/lib/grid-v2/grid-pagination/grid-pagination.component.js +1 -4
- package/esm2015/lib/grid-v2/grid-settings.js +2 -2
- package/esm2015/lib/grid-v2/grid-store/grid.query.js +13 -14
- package/esm2015/lib/grid-v2/grid-store/grid.service.js +42 -21
- package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -7
- package/esm2015/lib/icon/icon.types.js +1 -1
- package/esm2015/lib/progress-bar/progress-bar.component.js +36 -16
- package/esm2015/lib/rich-text/rich-text.directive.js +33 -15
- package/esm2015/lib/select/select.component.js +10 -5
- package/esm2015/lib/version.js +2 -2
- package/esm5/datorama-core.js +1 -2
- package/esm5/lib/breadcrumbs/breadcrumbs.component.js +2 -4
- package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
- package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +11 -6
- package/esm5/lib/grid-v2/grid-filter/filter-validator.js +3 -1
- package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +12 -4
- package/esm5/lib/grid-v2/grid-filter/grid-filter.types.js +3 -1
- package/esm5/lib/grid-v2/grid-pagination/grid-pagination.component.js +1 -4
- package/esm5/lib/grid-v2/grid-settings.js +2 -2
- package/esm5/lib/grid-v2/grid-store/grid.query.js +13 -14
- package/esm5/lib/grid-v2/grid-store/grid.service.js +43 -21
- package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -13
- package/esm5/lib/icon/icon.types.js +1 -1
- package/esm5/lib/progress-bar/progress-bar.component.js +36 -16
- package/esm5/lib/rich-text/rich-text.directive.js +34 -16
- package/esm5/lib/select/select.component.js +10 -5
- package/esm5/lib/version.js +2 -2
- package/fesm2015/datorama-core.js +154 -117
- package/fesm2015/datorama-core.js.map +1 -1
- package/fesm5/datorama-core.js +156 -125
- package/fesm5/datorama-core.js.map +1 -1
- package/i18n/locale-en_US.json +2 -0
- package/lib/grid-v2/grid/grid-v2.types.d.ts +1 -2
- package/lib/grid-v2/grid-controller/grid-controller.component.d.ts +1 -0
- package/lib/grid-v2/grid-filter/grid-filter.types.d.ts +3 -1
- package/lib/grid-v2/grid-settings.d.ts +2 -2
- package/lib/grid-v2/grid-store/grid.service.d.ts +2 -1
- package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +0 -2
- package/lib/icon/icon.types.d.ts +1 -1
- package/lib/progress-bar/progress-bar.component.d.ts +8 -2
- package/lib/rich-text/rich-text.directive.d.ts +6 -4
- package/package.json +1 -1
- package/esm2015/lib/rich-text/rich-text.service.js +0 -50
- package/esm5/lib/rich-text/rich-text.service.js +0 -51
- package/lib/rich-text/rich-text.service.d.ts +0 -10
package/esm2015/datorama-core.js
CHANGED
|
@@ -14,6 +14,5 @@ export { DatoGridV2ToolbarMoreMenuComponent as ɵm } from './lib/grid-v2/grid-to
|
|
|
14
14
|
export { DatoGridHelper as ɵc } from './lib/grid/grid-helper';
|
|
15
15
|
export { DatoListSelectAllComponent as ɵj } from './lib/list-v2/list-select-all.component';
|
|
16
16
|
export { ListStore as ɵi } from './lib/list-v2/list-v2-state';
|
|
17
|
-
export { RichTextService as ɵo } from './lib/rich-text/rich-text.service';
|
|
18
17
|
export { Popper as ɵd } from './lib/services/popper';
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0b3JhbWEtY29yZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsiZGF0b3JhbWEtY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBa0IsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRixPQUFPLEVBQUMsK0JBQStCLElBQUksRUFBRSxFQUFDLE1BQU0saUdBQWlHLENBQUM7QUFDdEosT0FBTyxFQUFDLHdDQUF3QyxJQUFJLEVBQUUsRUFBQyxNQUFNLDhGQUE4RixDQUFDO0FBQzVKLE9BQU8sRUFBQywwQkFBMEIsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN6RyxPQUFPLEVBQUMsU0FBUyxJQUFJLEVBQUUsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsa0NBQWtDLElBQUksRUFBRSxFQUFDLE1BQU0sMEVBQTBFLENBQUM7QUFDbEksT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDekYsT0FBTyxFQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsTUFBTSxJQUFJLEVBQUUsRUFBQyxNQUFNLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0NvcmVDb25maWcgYXMgybVhLERBVE9fQ09SRV9DT05GSUcgYXMgybVifSBmcm9tICcuL2xpYi9jb25maWcnO1xuZXhwb3J0IHtEYXRvRGF0ZVJhbmdlc0ZpbHRlclBpcGUgYXMgybVofSBmcm9tICcuL2xpYi9kYXRlLXBpY2tlci9yYW5nZXMtZmlsdGVyLnBpcGUnO1xuZXhwb3J0IHtEYXRvR3JpZEl0ZW1zQ291bnRDZWxsQ29tcG9uZW50IGFzIMm1bH0gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLWNvbHVtbi1jZWxsLWNvbXBvbmVudHMvZ3JpZC1pdGVtcy1jb3VudC1jZWxsL2dyaWQtaXRlbXMtY291bnQtY2VsbC5jb21wb25lbnQnO1xuZXhwb3J0IHtEYXRvR3JpZE11bHRpU2VsZWN0Q29sdW1uSGVhZGVyQ29tcG9uZW50IGFzIMm1a30gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLWNvbHVtbi1oZWFkZXIvZ3JpZC1tdWx0aS1zZWxlY3QtaGVhZGVyL2dyaWQtbXVsdGktc2VsZWN0LWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0IHtEYXRvR3JpZFNlYXJjaEJhckNvbXBvbmVudCBhcyDJtW59IGZyb20gJy4vbGliL2dyaWQtdjIvZ3JpZC1zZWFyY2gtYmFyL2dyaWQtc2VhcmNoLWJhci5jb21wb25lbnQnO1xuZXhwb3J0IHtHcmlkUXVlcnkgYXMgybVlfSBmcm9tICcuL2xpYi9ncmlkLXYyL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5leHBvcnQge0dyaWRTZXJ2aWNlIGFzIMm1Z30gZnJvbSAnLi9saWIvZ3JpZC12Mi9ncmlkLXN0b3JlL2dyaWQuc2VydmljZSc7XG5leHBvcnQge0dyaWRTdG9yZSBhcyDJtWZ9IGZyb20gJy4vbGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnN0b3JlJztcbmV4cG9ydCB7RGF0b0dyaWRWMlRvb2xiYXJNb3JlTWVudUNvbXBvbmVudCBhcyDJtW19IGZyb20gJy4vbGliL2dyaWQtdjIvZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci1tb3JlLW1lbnUvZ3JpZC10b29sYmFyLW1vcmUtbWVudSc7XG5leHBvcnQge0RhdG9HcmlkSGVscGVyIGFzIMm1Y30gZnJvbSAnLi9saWIvZ3JpZC9ncmlkLWhlbHBlcic7XG5leHBvcnQge0RhdG9MaXN0U2VsZWN0QWxsQ29tcG9uZW50IGFzIMm1an0gZnJvbSAnLi9saWIvbGlzdC12Mi9saXN0LXNlbGVjdC1hbGwuY29tcG9uZW50JztcbmV4cG9ydCB7TGlzdFN0b3JlIGFzIMm1aX0gZnJvbSAnLi9saWIvbGlzdC12Mi9saXN0LXYyLXN0YXRlJztcbmV4cG9ydCB7UG9wcGVyIGFzIMm1ZH0gZnJvbSAnLi9saWIvc2VydmljZXMvcG9wcGVyJzsiXX0=
|
|
@@ -71,9 +71,7 @@ let DatoBreadcrumbsComponent = class DatoBreadcrumbsComponent {
|
|
|
71
71
|
this._breadcrumbs = [...start, ...dots, ...end];
|
|
72
72
|
}
|
|
73
73
|
initEditableHeader() {
|
|
74
|
-
this.headerControl.valueChanges
|
|
75
|
-
.pipe(debounceTime(300), untilDestroyed(this))
|
|
76
|
-
.subscribe((res) => {
|
|
74
|
+
this.headerControl.valueChanges.pipe(debounceTime(300), untilDestroyed(this)).subscribe((res) => {
|
|
77
75
|
this.updateEditableText.emit(res);
|
|
78
76
|
this.cdr.detectChanges();
|
|
79
77
|
});
|
|
@@ -148,4 +146,4 @@ DatoBreadcrumbsComponent = __decorate([
|
|
|
148
146
|
__metadata("design:paramtypes", [ChangeDetectorRef])
|
|
149
147
|
], DatoBreadcrumbsComponent);
|
|
150
148
|
export { DatoBreadcrumbsComponent };
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2NvcmUvIiwic291cmNlcyI6WyJsaWIvYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVN4RCxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtJQXFDbkMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFmakMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLG1CQUFtQixDQUFDO1FBQ3ZDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNoQyw4QkFBeUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUU1QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUlqQyxrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUFDM0MsNkJBQXdCLEdBQUcsSUFBSSxD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LENBQUMsS0FBSyxDQUFDLGlDQUFpQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDO1NBQ3RGO2FBQU07WUFDTCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztDQUNGLENBQUE7O1lBcEQwQixpQkFBaUI7O0FBbkMxQztJQURDLEtBQUssRUFBRTs7O3VFQU1QO0FBR0Q7SUFEQyxLQUFLLEVBQUU7OzsyREFPUDtBQUtRO0lBQVIsS0FBSyxFQUFFOzhCQUFnQixXQUFXOytEQUFDO0FBQzNCO0lBQVIsS0FBSyxFQUFFOztpRUFBeUI7QUFDeEI7SUFBUixLQUFLLEVBQUU7O2dFQUFxQjtBQUNwQjtJQUFSLEtBQUssRUFBRTs7a0VBQXlCO0FBQ3hCO0lBQVIsS0FBSyxFQUFFOztrRUFBd0M7QUFDdkM7SUFBUixLQUFLLEVBQUU7O3lFQUFpQztBQUNoQztJQUFSLEtBQUssRUFBRTs7MkVBQThDO0FBRTVDO0lBQVQsTUFBTSxFQUFFOztpRUFBc0M7QUFDckM7SUFBVCxNQUFNLEVBQUU7O29FQUF5QztBQTlCdkMsd0JBQXdCO0lBUHBDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsdzFDQUEyQztRQUUzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtRQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7S0FDaEQsQ0FBQztxQ0FzQ3lCLGlCQUFpQjtHQXJDL0Isd0JBQXdCLENBeUZwQztTQXpGWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcmVhZGNydW1iIH0gZnJvbSAnLi9icmVhZGNydW1icy50eXBlcyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vdXRpbHMvY29sbGVjdGlvbic7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWJyZWFkY3J1bWJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYnMuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGF0b0JyZWFkY3J1bWJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBzZXQgbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMobWF4OiBudW1iZXIpIHtcbiAgICBpZiAoIWlzTmlsKHRoaXMub3JpZ2luYWxCcmVhZGNydW1icykpIHtcbiAgICAgIHRoaXMuc2V0TWF4RGlzcGxheWVkQnJlYWRjcnVtYnMobWF4KTtcbiAgICAgIHRoaXMuaW5pdEJyZWFkY3J1bWJzKHRoaXMub3JpZ2luYWxCcmVhZGNydW1icyk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10pIHtcbiAgICB0aGlzLm9yaWdpbmFsQnJlYWRjcnVtYnMgPSBicmVhZGNydW1icztcbiAgICBpZiAodGhpcy5fbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPiAwKSB7XG4gICAgICB0aGlzLnNldE1heERpc3BsYXllZEJyZWFkY3J1bWJzKHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzKTtcbiAgICAgIHRoaXMuaW5pdEJyZWFkY3J1bWJzKGJyZWFkY3J1bWJzKTtcbiAgICB9XG4gIH1cblxuICBnZXQgYnJlYWRjcnVtYnMoKTogQnJlYWRjcnVtYltdIHtcbiAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYnM7XG4gIH1cbiAgQElucHV0KCkgaGVhZGVyQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIHNob3dBcnJvd0luTGFzdCA9IGZhbHNlO1xuICBASW5wdXQoKSBsYXN0QXJyb3dDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBtYXJrTGFzdEFzQWN0aXZlID0gdHJ1ZTtcbiAgQElucHV0KCkgZGF0YUF1dG9JZFByZWZpeCA9ICdkYXRvLWJyZWFkY3J1bWJzLSc7XG4gIEBJbnB1dCgpIGlzSGVhZGVyQ29udHJvbERpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhlYWRlckNvbnRyb2xBdXRvSWRTdWZmaXggPSAnaGVhZGVyLWNvbnRyb2wnO1xuXG4gIEBPdXRwdXQoKSBicmVhZGNydW1iQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB1cGRhdGVFZGl0YWJsZVRleHQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBvcmlnaW5hbEJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW107XG4gIHByaXZhdGUgX2JyZWFkY3J1bWJzOiBCcmVhZGNydW1iW107XG4gIHByaXZhdGUgcmVhZG9ubHkgSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlMgPSAzO1xuICBwcml2YXRlIF9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyA9IHRoaXMuSU5JVElBTF9ESVNQTEFZRURfQlJFQURDUlVNQlM7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhlYWRlckNvbnRyb2wpIHtcbiAgICAgIHRoaXMuaW5pdEVkaXRhYmxlSGVhZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLyoqIEltcGxlbWVudGVkIGR1ZSB0byB1bnRpbERlc3Ryb3llZCAqL1xuICB9XG5cbiAgb25DbGljayh7IGRhdGEsIG9uQ2xpY2sgfTogQnJlYWRjcnVtYikge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICB0aGlzLmJyZWFkY3J1bWJDbGljay5lbWl0KGRhdGEpO1xuICAgIH1cblxuICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICBvbkNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgc2hvdWxkSGF2ZUFycm93KGxhc3Q6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gIWxhc3QgfHwgKGxhc3QgJiYgdGhpcy5zaG93QXJyb3dJbkxhc3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0QnJlYWRjcnVtYnMoYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSkge1xuICAgIGNvbnN0IHNob3VsZERpc3BsYXlBbGxCcmVhZGNydW1icyA9IHNpemUoYnJlYWRjcnVtYnMpIDw9IHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzO1xuICAgIGNvbnN0IGRvdHMgPSBzaG91bGREaXNwbGF5QWxsQnJlYWRjcnVtYnMgPyBbXSA6IFt7IHRleHQ6ICcuLi4nIH1dO1xuICAgIGNvbnN0IHN0YXJ0ID0gYnJlYWRjcnVtYnMuc2xpY2UoMCwgMSk7XG4gICAgY29uc3QgZW5kID0gc2hvdWxkRGlzcGxheUFsbEJyZWFkY3J1bWJzXG4gICAgICA/IGJyZWFkY3J1bWJzLnNsaWNlKDEpXG4gICAgICA6IGJyZWFkY3J1bWJzLnNsaWNlKGJyZWFkY3J1bWJzLmxlbmd0aCAtIHRoaXMuX21heERpc3BsYXllZEJyZWFkY3J1bWJzICsgMSk7XG5cbiAgICB0aGlzLl9icmVhZGNydW1icyA9IFsuLi5zdGFydCwgLi4uZG90cywgLi4uZW5kXTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEVkaXRhYmxlSGVhZGVyKCkge1xuICAgIHRoaXMuaGVhZGVyQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMzAwKSwgdW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgocmVzOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlRWRpdGFibGVUZXh0LmVtaXQocmVzKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWF4RGlzcGxheWVkQnJlYWRjcnVtYnMobWF4OiBudW1iZXIpIHtcbiAgICBpZiAobWF4IDwgdGhpcy5JTklUSUFMX0RJU1BMQVlFRF9CUkVBRENSVU1CUykge1xuICAgICAgdGhpcy5fbWF4RGlzcGxheWVkQnJlYWRjcnVtYnMgPSB0aGlzLklOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTO1xuICAgICAgY29uc29sZS5lcnJvcihgTWluaW11bSBicmVhZGNydW1icyBudW1iZXIgaXMgJHt0aGlzLklOSVRJQUxfRElTUExBWUVEX0JSRUFEQ1JVTUJTfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9tYXhEaXNwbGF5ZWRCcmVhZGNydW1icyA9IG1heDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -33,4 +33,4 @@ export var GridRowSelectionType;
|
|
|
33
33
|
GridRowSelectionType["SINGLE"] = "single";
|
|
34
34
|
GridRowSelectionType["MULTIPLE"] = "multiple";
|
|
35
35
|
})(GridRowSelectionType || (GridRowSelectionType = {}));
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12Mi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC9ncmlkLXYyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQ3BELE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsTUFBTSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFOUYsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsQ0FBQyxNQUEyQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUN6RyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyx1Q0FBdUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFDeEcsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxNQUEyQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUM3RixVQUFVLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkUsT0FBTyxVQUFVO1FBQ2YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxrQ0FBa0MsR0FBRyxTQUFTLENBQUM7UUFDOUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMsQ0FBQztBQWtIRixNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHlEQUFhLENBQUE7SUFDYiw2REFBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQVNYO0FBVEQsV0FBWSxtQkFBbUI7SUFDN0Isd0NBQWlCLENBQUE7SUFDakIsd0NBQWlCLENBQUE7SUFDakIsb0NBQWEsQ0FBQTtJQUNiLHdDQUFpQixDQUFBO0lBQ2pCLHNDQUFlLENBQUE7SUFDZixnREFBeUIsQ0FBQTtJQUN6Qiw0Q0FBcUIsQ0FBQTtJQUNyQix3Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVM5QjtBQWNELE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDOUIseUNBQWlCLENBQUE7SUFDakIsNkNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xEZWYsIEdyaWRPcHRpb25zLCBJQ2VsbFJlbmRlcmVyUGFyYW1zLCBJR2V0Um93c1BhcmFtcywgTWVudUl0ZW1EZWYsIFJvd05vZGUgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBEYXRvR3JpZEZpbHRlclNlY3Rpb25zLCBMaXN0SXRlbSB9IGZyb20gJy4uL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9TZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi4vZ3JpZC1wYWdpbmF0aW9uL2dyaWQtcGFnaW5hdGlvbi50eXBlcyc7XG5pbXBvcnQgeyBBZ0dyaWRFdmVudCB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5L2Rpc3QvbGliL2V2ZW50cyc7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tICcuLi9ncmlkLXRvb2xiYXIvZ3JpZC10b29sYmFyLnR5cGVzJztcbmltcG9ydCB7IEljb25SZWdpc3RyeSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ljb24tcmVnaXN0cnknO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkU2V0dGluZ3MgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRNb3JlTWVudUFjdGlvbnMgfSBmcm9tICcuLi9ncmlkLWNvbHVtbi1oZWFkZXItbW9yZS1tZW51L2dyaWQtY29sdW1uLWhlYWRlci1tb3JlLW1lbnUudHlwZXMnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzJztcbmltcG9ydCB7IENvcmVFdmVudFR5cGVzIH0gZnJvbSAnLi4vLi4vZXZlbnQtbG9nZ2VyJztcbmltcG9ydCB7IERhdG9HcmlkT3ZlcmxheUlucHV0IH0gZnJvbSAnLi4vZ3JpZC1uby1kYXRhLW92ZXJsYXkvZ3JpZC12Mi1uby1kYXRhLW92ZXJsYXkudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEVkaXRhYmxlQ29sdW1uUmVuZGVyZXIgPSBwYXJhbXMgPT5cbiAgcGFyYW1zICYmIHBhcmFtcy52YWx1ZSA/IGA8ZGl2IGNsYXNzPVwidmFsdWUtd3JhcHBlciBlbGxpcHNpc1wiPiR7cGFyYW1zLnZhbHVlfTwvZGl2PmAgOiBudWxsO1xuXG5leHBvcnQgY29uc3QgZWRpdGFibGVDZWxsUmVuZGVyZXJXaXRoU2VhcmNoSGlnaGxpZ2h0ID0gKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcywgc2VhcmNoVGVybTogc3RyaW5nKSA9PiB7XG4gIGlmICghcGFyYW1zIHx8ICFwYXJhbXMudmFsdWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gYDxkaXYgY2xhc3M9XCJ2YWx1ZS13cmFwcGVyIGVsbGlwc2lzXCI+JHtzZWFyY2hIaWdobGlnaHRDZWxsUmVuZGVyZXIocGFyYW1zLCBzZWFyY2hUZXJtKX08L2Rpdj5gO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlYXJjaEhpZ2hsaWdodENlbGxSZW5kZXJlciA9IChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMsIHNlYXJjaFRlcm06IHN0cmluZykgPT4ge1xuICBzZWFyY2hUZXJtID0gKHNlYXJjaFRlcm0gfHwgJycpLnRyaW0oKTtcbiAgY29uc3QgdmFsdWUgPSAocGFyYW1zLnZhbHVlRm9ybWF0dGVkIHx8IHBhcmFtcy52YWx1ZSB8fCAnJykudG9TdHJpbmcoKTtcbiAgcmV0dXJuIHNlYXJjaFRlcm1cbiAgICA/IHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cChzZWFyY2hUZXJtLCAnZ2knKSwgKHN0cjogc3RyaW5nKSA9PiBgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaGlnaGxpZ2h0XCI+JHtzdHJ9PC9zcGFuPmApXG4gICAgOiB2YWx1ZTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkQ29sdW1uRGVmID0ge1xuICBmaWx0ZXJzQ29uZmlnPzogRGF0b0dyaWRGaWx0ZXJDb25maWc7XG4gIG1vcmVNZW51QWN0aW9ucz86IERhdG9HcmlkTW9yZU1lbnVBY3Rpb25zW107XG4gIGluZm8/OiBzdHJpbmc7XG4gIG9yaWdpbmFsV2lkdGg/OiBudW1iZXI7XG4gIGluY2x1ZGVJblNlYXJjaD86IGJvb2xlYW47XG4gIGN1c3RvbUNlbGxDb25maWc/OiBEYXRvR3JpZEN1c3RvbUNlbGxDb25maWc7XG4gIHZhbHVlVG9DdXN0b21DZWxsQ29uZmlnPzogSGFzaE1hcDxEYXRvR3JpZEN1c3RvbUNlbGxDb25maWc+O1xufSAmIENvbERlZjtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRDdXN0b21DZWxsQ29uZmlnID0ge1xuICBjb2xvcj86ICdwcmltYXJ5JyB8ICdncmVlbicgfCAncmVkJyB8ICdhY2NlbnQnIHwgJ3llbGxvdyc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNzc0NsYXNzPzogc3RyaW5nO1xuICBpY29uQ3NzQ2xhc3M/OiBzdHJpbmc7XG4gIG1pbldpZHRoPzogbnVtYmVyO1xuICBzaG93U3Bpbm5lcj86IGJvb2xlYW47XG4gIG1heExhYmVscz86IG51bWJlcjtcbiAgZ2V0QWRkaXRpb25hbFRleHQ/OiAoZGF0YTogYW55KSA9PiBzdHJpbmc7XG4gIGdldEltYWdlVXJsPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuICBpbml0aWFsc0NvbmZpZz86IERhdG9HcmlkSW5pdGlhbHNDZWxsQ29uZmlnO1xuICBnZXRJc1Zpc2libGU/OiAoZGF0YTogYW55KSA9PiBib29sZWFuO1xuICBnZXRJdGVtcz86IChkYXRhOiBhbnkpID0+IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRJbml0aWFsc0NlbGxDb25maWcgPSB7XG4gIGZpcnN0TmFtZUZpZWxkPzogc3RyaW5nO1xuICBsYXN0TmFtZUZpZWxkPzogc3RyaW5nO1xuICBmdWxsTmFtZUZpZWxkPzogc3RyaW5nO1xuICBnZXRGdWxsTmFtZT86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbiAgaXNCb2xkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkRmlsdGVyQ29uZmlnID0ge1xuICBzZWN0aW9ucz86IERhdG9HcmlkRmlsdGVyU2VjdGlvbnM7XG4gIHByZWRlZmluZWRMaXN0VmFsdWVzPzogKHN0cmluZyB8IExpc3RJdGVtKVtdO1xuICBrZWVwUHJlZGVmaW5lZExpc3RPcmlnaW5hbE9yZGVyPzogYm9vbGVhbjtcbiAgc2hvd0VtcHR5Q29uZGl0aW9ucz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudCBleHRlbmRzIEFnR3JpZEV2ZW50IHtcbiAgdHlwZTogJ1NlcnZlckRhdGFMb2FkZWQnIHwgJ3Jvd0RhdGFDaGFuZ2VkJyB8ICdyb3dEYXRhVXBkYXRlZCc7XG4gIHBhZ2luYXRpb25QYWdlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdG9HcmlkR2V0Um93c1BhcmFtcyBleHRlbmRzIElHZXRSb3dzUGFyYW1zIHtcbiAgc2VydmVyQ29uZmlnOiBEYXRvU2VydmVyUGFnaW5hdGlvbkNvbmZpZztcbn1cblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRFeHBvcnRQYXJhbXMgPSBEYXRvR3JpZEFwaSAmIERhdG9HcmlkU2V0dGluZ3M7XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkT25Ib3ZlckNvbmZpZyA9IHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIG1heERpc3BsYXllZEl0ZW1zPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRvR3JpZE9wdGlvbnMgZXh0ZW5kcyBHcmlkT3B0aW9ucyB7XG4gIGdyaWROYW1lOiBzdHJpbmc7XG4gIGNvbHVtbkRlZnM6IERhdG9HcmlkQ29sdW1uRGVmW107XG4gIHNhdmVTZXR0aW5ncz86IGJvb2xlYW47XG4gIGVuYWJsZVYyXzE/OiBib29sZWFuO1xuICBleHBvcnRHcmlkPyhwYXJhbXM6IERhdG9HcmlkRXhwb3J0UGFyYW1zKTogdm9pZDtcbiAgZGVmYXVsdENvbERlZj86IERhdG9HcmlkQ29sdW1uRGVmO1xuICBkYXRhc291cmNlPzoge1xuICAgIGdldFJvd3MocGFyYW1zOiBEYXRvR3JpZEdldFJvd3NQYXJhbXMpOiB2b2lkO1xuICAgIC8vIG9wdGlvbmFsIGRlc3Ryb3kgbWV0aG9kLCBpZiB5b3VyIGRhdGFzb3VyY2UgaGFzIHN0YXRlIGl0IG5lZWRzIHRvIGNsZWFuIHVwXG4gICAgZGVzdHJveT8oKTogdm9pZDtcbiAgfTtcbiAgY3VzdG9tQ29udGV4dE1lbnU/KHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdKTogUm93QWN0aW9uW107XG4gIGhvdmVyQ29uZmlnPzogRGF0b0dyaWRPbkhvdmVyQ29uZmlnO1xuICBvdmVybGF5c0NvbmZpZz86IERhdG9HcmlkT3ZlcmxheUlucHV0O1xuICBkaXN0aW5jdFJlc3VsdHM/OiBib29sZWFuO1xuICBtYXhEZXB0aD86IG51bWJlcjtcbiAgZW5hYmxlU2VhcmNoPzogYm9vbGVhbjtcbiAgZW5hYmxlU2VhcmNoSGlnaGxpZ2h0PzogYm9vbGVhbjtcbiAgY29sdW1uc0luY2x1ZGVkSW5TZWFyY2hCeURlZmF1bHQ/OiBib29sZWFuO1xuICBzZWFyY2hEZWJvdW5jZVRpbWU/OiBudW1iZXI7XG4gIGluY2x1ZGVIaWRkZW5Db2x1bW5zSW5TZWFyY2g/OiBib29sZWFuO1xuICBzaG93TXVsdGlTZWxlY3Rpb25DaGVja2JveGVzPzogYm9vbGVhbjtcbiAgZW5hYmxlQWxsUGFnZXNTZWxlY3Rpb24/OiBib29sZWFuO1xuICBpZENvbHVtbktleT86IHN0cmluZztcbiAgZW5hYmxlQmFja2dyb3VuZD86IGJvb2xlYW47XG4gIHNob3dCb3R0b21Db250cm9scz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW51SXRlbSA9IHN0cmluZyB8IE1lbnVJdGVtRGVmO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbnZlcnRlclBhcmFtcyB7XG4gIG5vZGU6IFJvd05vZGU7XG4gIHRvb2xiYXJBY3Rpb25zOiBSb3dBY3Rpb25bXTtcbiAgc2VsZWN0ZWRSb3dzOiBSb3dOb2RlW107XG4gIGljb25SZWdpc3RyeTogSWNvblJlZ2lzdHJ5O1xuICBsb2dnZXI/OiB7XG4gICAgbG9nKGV2ZW50VHlwZTogQ29yZUV2ZW50VHlwZXMuR1JJRF9UQUJMRV9BQ1RJT04sIGV2ZW50UHJvcGVydGllcz86IEhhc2hNYXA8YW55Pik6IHZvaWQ7XG4gICAgZXZlbnRPcmlnaW4/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTb3J0ID0ge1xuICBjb2xJZDogc3RyaW5nO1xuICBzb3J0OiBEYXRvR3JpZFNvcnREaXJlY3Rpb247XG4gIGNvbEZpZWxkPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIERhdG9HcmlkU2VydmVyU29ydERpcmVjdGlvbiA9ICdBU0MnIHwgJ0RFU0MnO1xuZXhwb3J0IHR5cGUgRGF0b0dyaWRTZXJ2ZXJTb3J0ID0geyBjb2x1bW46IHN0cmluZzsgc29ydE9yZGVyOiBEYXRvR3JpZFNlcnZlclNvcnREaXJlY3Rpb24gfTtcbmV4cG9ydCBjb25zdCBlbnVtIERhdG9HcmlkQWxpZ25tZW50IHtcbiAgRklUX1RPX0NPTlRBSU5FUixcbiAgRklUX1RPX0NPTlRFTlQsXG4gIENVU1RPTVxufVxuXG5leHBvcnQgZW51bSBHcmlkTWluV2lkdGhzIHtcbiAgRGVmYXVsdCA9IDEwNyxcbiAgV2l0aF9JbmZvID0gMTMxXG59XG5cbmV4cG9ydCBlbnVtIERhdG9HcmlkQ29sdW1uVHlwZXMge1xuICBTdHJpbmcgPSAnU3RyaW5nJyxcbiAgTnVtYmVyID0gJ051bWJlcicsXG4gIERhdGUgPSAnRGF0ZScsXG4gIFN0YXR1cyA9ICdTdGF0dXMnLFxuICBJdGVtcyA9ICdJdGVtcycsXG4gIEl0ZW1zQ291bnQgPSAnSXRlbXNDb3VudCcsXG4gIEluaXRpYWxzID0gJ0luaXRpYWxzJyxcbiAgQXZhdGFyID0gJ0F2YXRhcidcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRvR3JpZFRyZWVDb25maWcge1xuICBpZEtleTogc3RyaW5nO1xuICBwYXJlbnRJREtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBZ0dyaWRSb3dJY29uID1cbiAgfCBzdHJpbmdcbiAgfCB7XG4gICAgICBleHBhbmRlZDogc3RyaW5nO1xuICAgICAgY29sbGFwc2VkOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IGVudW0gR3JpZFJvd1NlbGVjdGlvblR5cGUge1xuICBTSU5HTEUgPSAnc2luZ2xlJyxcbiAgTVVMVElQTEUgPSAnbXVsdGlwbGUnXG59XG5cbmV4cG9ydCB0eXBlIEdyaWRSb3dzU2VsZWN0aW9uRGF0YSA9IHtcbiAgdG90YWxSb3dzQ291bnQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRSb3dzQ291bnQ6IG51bWJlcjtcbiAgc2VsZWN0ZWRQYWdlUm93c0NvdW50OiBudW1iZXI7XG4gIGlzQWxsUGFnZVJvd3NTZWxlY3RlZDogYm9vbGVhbjtcbn07XG4iXX0=
|
|
@@ -19,7 +19,7 @@ import { DatoCustomHeaderTemplateComponent } from '../grid-custom-header/custom-
|
|
|
19
19
|
import { DatoTranslateService } from '../../services/translate.service';
|
|
20
20
|
import { DATO_GRID_STORAGE_API } from '../grid-settings';
|
|
21
21
|
import { auditTime, debounceTime, filter, skip, switchMap, tap } from 'rxjs/operators';
|
|
22
|
-
import { appendChild, query } from '../../internal/helpers';
|
|
22
|
+
import { addClass, appendChild, query } from '../../internal/helpers';
|
|
23
23
|
import Tooltip from 'tooltip.js';
|
|
24
24
|
import { isNil } from '../../utils/validators';
|
|
25
25
|
import { createComponent } from '../../angular/dynamic-components';
|
|
@@ -86,16 +86,18 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
|
|
|
86
86
|
.pipe(switchMap(() => {
|
|
87
87
|
this.gridOptions = this.normalizeOptions();
|
|
88
88
|
agGrid.gridOptions = this.gridOptions;
|
|
89
|
-
const
|
|
90
|
-
const settingsLoader = this.gridOptions.saveSettings === false
|
|
91
|
-
? of(null)
|
|
92
|
-
: this.storageAPI.get(this.gridOptions.gridName, isGlobal);
|
|
89
|
+
const settingsLoader = this.gridOptions.saveSettings === false ? of(null) : this.storageAPI.get(this.gridOptions.gridName);
|
|
93
90
|
return combineLatest([agGrid.gridReady, settingsLoader]);
|
|
94
91
|
}), untilDestroyed(this))
|
|
95
92
|
.subscribe(([{ api, columnApi }, savedSettings = {}]) => {
|
|
96
93
|
if (!this.gridOptions.rowData) {
|
|
97
94
|
api.showLoadingOverlay();
|
|
98
95
|
}
|
|
96
|
+
if (!this.gridOptions.statusBar) {
|
|
97
|
+
/** Fix ag-grid bug that doesn't add ag-hidden class to the status bar, which only get fixed in later versions */
|
|
98
|
+
const el = agGridEl.querySelector('.ag-status-bar');
|
|
99
|
+
addClass(el, 'ag-hidden');
|
|
100
|
+
}
|
|
99
101
|
const gridApi = { grid: api, columns: columnApi };
|
|
100
102
|
this.gridService._setApi(gridApi, agGrid);
|
|
101
103
|
this.gridQuery._setApi(gridApi, agGrid);
|
|
@@ -135,6 +137,9 @@ let DatoGridControllerComponent = class DatoGridControllerComponent {
|
|
|
135
137
|
setGridFilters(filters) {
|
|
136
138
|
this.gridService.setGridFilters(filters);
|
|
137
139
|
}
|
|
140
|
+
setGridSort(sort) {
|
|
141
|
+
this.gridService.setGridSort(sort);
|
|
142
|
+
}
|
|
138
143
|
onFilterChanged() {
|
|
139
144
|
return this.gridQuery.filterChanged();
|
|
140
145
|
}
|
|
@@ -469,4 +474,4 @@ DatoGridControllerComponent = __decorate([
|
|
|
469
474
|
DatoHotkeys, Object])
|
|
470
475
|
], DatoGridControllerComponent);
|
|
471
476
|
export { DatoGridControllerComponent };
|
|
472
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBWXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBa0Is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QUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUM7O0tBQy9DLENBQUM7SUFvREcsV0FBQSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQTtxQ0FUVixXQUFXO1FBQ2IsU0FBUztRQUNkLGlCQUFpQjtRQUNSLFlBQVk7UUFDZixvQkFBb0I7UUFDekIsVUFBVTtRQUNOLFFBQVE7UUFDUix3QkFBd0I7UUFDekIsV0FBVztHQWxEbkIsMkJBQTJCLENBOGV2QztTQTllWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWdHcmlkTmcyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge1xuICBCb2R5U2Nyb2xsRXZlbnQsXG4gIENlbGxDbGlja2VkRXZlbnQsXG4gIENlbGxFdmVudCxcbiAgQ2VsbE1vdXNlT3V0RXZlbnQsXG4gIENvbHVtblJlc2l6ZWRFdmVudCxcbiAgQ29sdW1uUm93R3JvdXBDaGFuZ2VkRXZlbnQsXG4gIERldGFpbEdyaWRJbmZvLFxuICBHcmlkQXBpLFxuICBSb3dHcm91cE9wZW5lZEV2ZW50XG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEdyaWRRdWVyeSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5xdWVyeSc7XG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldENvbHVtbnNTaXplcyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvdXRpbCc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncyB9IGZyb20gJy4uL2dyaWQtc3RvcmUvZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4vZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkQWxpZ25tZW50LCBEYXRvR3JpZE9wdGlvbnMsIERhdG9HcmlkU29ydCB9IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBJY29uUmVnaXN0cnkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pY29uLXJlZ2lzdHJ5JztcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2RlZXAtbWVyZ2UnO1xuaW1wb3J0IHsgRGF0b0N1c3RvbUhlYWRlclRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jdXN0b20taGVhZGVyL2N1c3RvbS1oZWFkZXItdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBHcmlkQWN0aW9uLCBSb3dBY3Rpb24gfSBmcm9tICcuLi9ncmlkLXRvb2xiYXIvZ3JpZC10b29sYmFyLnR5cGVzJztcbmltcG9ydCB7IERhdG9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgREFUT19HUklEX1NUT1JBR0VfQVBJLCBHcmlkU3RvcmFnZUFQSSB9IGZyb20gJy4uL2dyaWQtc2V0dGluZ3MnO1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgc2tpcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBhcHBlbmRDaGlsZCwgcXVlcnkgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9oZWxwZXJzJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ3Rvb2x0aXAuanMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IGNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2FuZ3VsYXIvZHluYW1pYy1jb21wb25lbnRzJztcbmltcG9ydCB7IERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtb24taG92ZXIvZ3JpZC1vbi1ob3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29udmVydEZyb21UcmVlRGF0YSwgZGVmYXVsdEdyaWRPcHRpb25zLCBkZWZhdWx0VHJlZU9wdGlvbnMgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIuY29uZmlnJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuaW1wb3J0IHsgRGF0b0hvdGtleXMgfSBmcm9tICcuLi8uLi9ob3RrZXlzL2hvdGtleXMuc2VydmljZSc7XG5pbXBvcnQgRE9NUHVyaWZ5IGZyb20gJ2RvbXB1cmlmeSc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyLCBEYXRvR3JpZEZpbHRlcnNNYXAgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tZ3JpZC1jb250cm9sbGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbR3JpZFF1ZXJ5LCBHcmlkU2VydmljZSwgR3JpZFN0b3JlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICBAQ29udGVudENoaWxkcmVuKERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudCkgY3VzdG9tSGVhZGVyc1RlbXBsYXRlczogUXVlcnlMaXN0PFxuICAgIERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudFxuICA+O1xuXG4gIEBPdXRwdXQoKSBvbkdyaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIEBJbnB1dCgpIGdyaWRBY3Rpb25zOiBHcmlkQWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgc2V0IGdyaWRPcHRpb25zKGdyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnMpIHtcbiAgICB0aGlzLl9ncmlkT3B0aW9ucyA9IGdyaWRPcHRpb25zO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UudHJlZURhdGEgPSBncmlkT3B0aW9ucy50cmVlRGF0YTtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmlzUGl2b3RNb2RlID0gZ3JpZE9wdGlvbnMucGl2b3RNb2RlO1xuXG4gICAgaWYgKHRoaXMuYWdHcmlkRWwpIHtcbiAgICAgIGlmIChncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgICAhdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuY29udGFpbnModGhpcy50cmVlR3JpZENsYXNzKSAmJiB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQodGhpcy50cmVlR3JpZENsYXNzKTtcbiAgICAgIH0gZWxzZSBpZiAoIWdyaWRPcHRpb25zLmVuYWJsZVYyXzEpIHtcbiAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKHRoaXMudHJlZUdyaWRDbGFzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGdyaWRPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9ncmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgY29udGVudEluaXQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHRvb2x0aXA7XG4gIHByaXZhdGUgX2dyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnM7XG4gIGdyaWRSZWFkeSQgPSB0aGlzLmdyaWRRdWVyeS5ncmlkUmVhZHkkO1xuICBhZ0dyaWRFbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSByb3dIb3ZlckNvbXBvbmVudDogQ29tcG9uZW50UmVmPERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudD47XG4gIHByaXZhdGUgbGFzdEhvdmVyZWRSb3c6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGdyaWRFbGVtZW50cyA9IHtcbiAgICBjZW50ZXJWaWV3cG9ydDogbnVsbCxcbiAgICBjZW50ZXJDb250YWluZXI6IG51bGwsXG4gICAgYm9keVZpZXdwb3J0OiBudWxsXG4gIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJlZUdyaWRDbGFzcyA9ICd0cmVlJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHB1YmxpYyBncmlkUXVlcnk6IEdyaWRRdWVyeSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IEljb25SZWdpc3RyeSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogRGF0b1RyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGhvdGtleXM6IERhdG9Ib3RrZXlzLFxuICAgIEBJbmplY3QoREFUT19HUklEX1NUT1JBR0VfQVBJKSBwcml2YXRlIHN0b3JhZ2VBUEk6IEdyaWRTdG9yYWdlQVBJXG4gICkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy50b29sdGlwICYmIHRoaXMuY2xlYXJUb29sdGlwKCk7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCAmJiB0aGlzLnJvd0hvdmVyQ29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ID0gbnVsbDtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0Lm5leHQoKTtcbiAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiBAaW50ZXJuYWwgKi9cbiAgX2luaXRpYWxpemVHcmlkKGFnR3JpZDogQWdHcmlkTmcyLCBhZ0dyaWRFbDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLmFnR3JpZEVsID0gYWdHcmlkRWw7XG4gICAgdGhpcy5jb250ZW50SW5pdFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zID0gdGhpcy5ub3JtYWxpemVPcHRpb25zKCk7XG4gICAgICAgICAgYWdHcmlkLmdyaWRPcHRpb25zID0gdGhpcy5ncmlkT3B0aW9ucztcbiAgICAgICAgICBjb25zdCBpc0dsb2JhbCA9IHRoaXMuZ3JpZE9wdGlvbnMuaXNHbG9iYWxTZXR0aW5ncztcbiAgICAgICAgICBjb25zdCBzZXR0aW5nc0xvYWRlciA9XG4gICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNhdmVTZXR0aW5ncyA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgPyBvZihudWxsKVxuICAgICAgICAgICAgICA6IHRoaXMuc3RvcmFnZUFQSS5nZXQodGhpcy5ncmlkT3B0aW9ucy5ncmlkTmFtZSwgaXNHbG9iYWwpO1xuICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFthZ0dyaWQuZ3JpZFJlYWR5LCBzZXR0aW5nc0xvYWRlcl0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFt7IGFwaSwgY29sdW1uQXBpIH0sIHNhdmVkU2V0dGluZ3MgPSB7fV06IFtEZXRhaWxHcmlkSW5mbywgUGFydGlhbDxEYXRvR3JpZFNldHRpbmdzPl0pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnJvd0RhdGEpIHtcbiAgICAgICAgICBhcGkuc2hvd0xvYWRpbmdPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ3JpZEFwaTogRGF0b0dyaWRBcGkgPSB7IGdyaWQ6IGFwaSwgY29sdW1uczogY29sdW1uQXBpIH07XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuX3NldEFwaShncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLmdyaWRRdWVyeS5fc2V0QXBpKGdyaWRBcGksIGFnR3JpZCk7XG5cbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5pbml0U2V0dGluZ3Moc2F2ZWRTZXR0aW5ncyB8fCB7fSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJTZXR0aW5nc0xpc3RlbmVycyhncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyR3JpZExpc3RlbmVycyhncmlkQXBpLCBhZ0dyaWQpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzVHJpZ2dlcmluZ0NsZWFyU2VsZWN0ZWRSb3dzKGFnR3JpZCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJQYWdpbmF0aW9uQ2hhbmdlZChhZ0dyaWQpO1xuICAgICAgICB0aGlzLmdyaWRRdWVyeS5fZ3JpZFJlYWR5Lm5leHQodHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgICAgICB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQoJ3RyZWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy5yb3dIZWlnaHQpIHtcbiAgICAgICAgICB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQoYHJvdy1oZWlnaHQtJHt0aGlzLmdyaWRPcHRpb25zLnJvd0hlaWdodH1gKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZU9wdGlvbnMoKSB7XG4gICAgLyoqXG4gICAgICogV2hlbiB0cmVlRGF0YSBpcyBlbmFibGVkLCBQYWdpbmF0aW9uIG11c3QgYmUgdHVybmVkIG9mZlxuICAgICAqL1xuICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICB0aGlzLmdyaWRPcHRpb25zID0ge1xuICAgICAgICAuLi50aGlzLmdyaWRPcHRpb25zLFxuICAgICAgICBwYWdpbmF0aW9uOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgZ3JpZE9wdGlvbnM6IHRoaXMuZ3JpZE9wdGlvbnMsXG4gICAgICBjdXN0b21IZWFkZXJzVGVtcGxhdGVzOiB0aGlzLmN1c3RvbUhlYWRlcnNUZW1wbGF0ZXMsXG4gICAgICByb3dBY3Rpb25zOiB0aGlzLnJvd0FjdGlvbnNcbiAgICB9O1xuXG4gICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLmdyaWRTZXJ2aWNlLm5vcm1hbGl6ZU9wdGlvbnMocGFyYW1zKTtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIC4uLmRlZmF1bHRHcmlkT3B0aW9ucyxcbiAgICAgIC4uLih0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhID8gZGVmYXVsdFRyZWVPcHRpb25zIDoge30pLFxuICAgICAgaWNvbnM6IHRoaXMuZ2V0R3JpZEljb25zKClcbiAgICB9O1xuICAgIHJldHVybiBkZWVwbWVyZ2UoZGVmYXVsdHMsIG5vcm1hbGl6ZWQpO1xuICB9XG5cbiAgc2V0R3JpZFJvd3M8VD4oZGF0YTogVFtdKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRSb3dzPFQ+KGRhdGEpO1xuICB9XG5cbiAgc2V0R3JpZEZpbHRlcnMoZmlsdGVyczogRGF0b0dyaWRFeHRlcm5hbEZpbHRlcltdKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRHcmlkRmlsdGVycyhmaWx0ZXJzKTtcbiAgfVxuXG4gIG9uRmlsdGVyQ2hhbmdlZCgpOiBPYnNlcnZhYmxlPERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLmdyaWRRdWVyeS5maWx0ZXJDaGFuZ2VkKCk7XG4gIH1cblxuICBvblNvcnRDaGFuZ2VkKCk6IE9ic2VydmFibGU8RGF0b0dyaWRTb3J0PiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZFF1ZXJ5LnNlbGVjdFNvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JpZEljb25zKCk6IEhhc2hNYXA8c3RyaW5nPiB7XG4gICAgY29uc3QgbW92ZUNvbHVtbkljb24gPSBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggY29sdW1uLW1vdmVcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICdtb3ZlLWNvbHVtbidcbiAgICApfTwvc3Bhbj5gO1xuICAgIHJldHVybiB7XG4gICAgICBncm91cEV4cGFuZGVkOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBncm91cC1leHBhbmRlZC1pY29uXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdhcnJvdy1yaWdodCdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBncm91cENvbnRyYWN0ZWQ6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGdyb3VwLWNvbnRyYWN0ZWQtaWNvblwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgICAnYXJyb3ctcmlnaHQnXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgY29sdW1uTW92ZVBpbjogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IHByaW1hcnktMzAwLWZpbGwgY29sdW1uLW1vdmUtcGluXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdwaW4nXG4gICAgICApfTwvc3Bhbj5gLFxuICAgICAgY29sdW1uTW92ZUhpZGU6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBjb2x1bW4tbW92ZS1oaWRlXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdleWUtaGlkZSdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlTW92ZTogbW92ZUNvbHVtbkljb24sXG4gICAgICBjb2x1bW5Nb3ZlTGVmdDogbW92ZUNvbHVtbkljb24sXG4gICAgICBjb2x1bW5Nb3ZlUmlnaHQ6IG1vdmVDb2x1bW5JY29uLFxuICAgICAgcm93RHJhZzogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIGRyYWcgZC1mbGV4XCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoJ2RyYWctMDEnKX08L3NwYW4+YFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyU2V0dGluZ3NMaXN0ZW5lcnMoYXBpOiBEYXRvR3JpZEFwaSwgYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICB0aGlzLmxpc3RlblRvQ29sdW1uUmVzaXplKGFwaSwgYWdHcmlkKTtcbiAgICB0aGlzLmxpc3RlblRvR3JpZEV2ZW50cyhhZ0dyaWQpO1xuICAgIHRoaXMubGlzdGVuVG9TdG9yZVNldHRpbmdzQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub0NvbHVtblJlc2l6ZShhcGk6IERhdG9HcmlkQXBpLCB7IGNvbHVtblJlc2l6ZWQgfTogQWdHcmlkTmcyKSB7XG4gICAgbGV0IG9ic2VydmFibGUgPSBjb2x1bW5SZXNpemVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIGlmICh0aGlzLm9uSG92ZXJFbmFibGVkKCkpIHtcbiAgICAgIG9ic2VydmFibGUgPSBvYnNlcnZhYmxlLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyBzb3VyY2UgfTogQ29sdW1uUmVzaXplZEV2ZW50KSA9PiBzb3VyY2UgPT09ICd1aUNvbHVtbkRyYWdnZWQnKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlT25Ib3ZlclBvcygpKVxuICAgICAgKTtcbiAgICB9XG4gICAgb2JzZXJ2YWJsZVxuICAgICAgLnBpcGUoXG4gICAgICAgIGF1ZGl0VGltZSgxMDApLFxuICAgICAgICBmaWx0ZXIoKHsgZmluaXNoZWQsIHNvdXJjZSB9OiBDb2x1bW5SZXNpemVkRXZlbnQpID0+IGZpbmlzaGVkICYmIHNvdXJjZSA9PT0gJ3VpQ29sdW1uRHJhZ2dlZCcpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgY29uc3QgW2NvbHVtbl0gPSBlLmNvbHVtbnM7XG4gICAgICAgIGxldCBjb2x1bW5zU2l6ZXMgPSB7IC4uLnRoaXMuZ3JpZFF1ZXJ5LmdldENvbHVtblNpemVzKCkgfTtcbiAgICAgICAgaWYgKGNvbHVtbnNTaXplcykge1xuICAgICAgICAgIGNvbHVtbnNTaXplc1tjb2x1bW4uZ2V0Q29sSWQoKV0gPSBjb2x1bW4uZ2V0QWN0dWFsV2lkdGgoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2x1bW5zU2l6ZXMgPSBnZXRDb2x1bW5zU2l6ZXMoYXBpLmNvbHVtbnMuZ2V0QWxsR3JpZENvbHVtbnMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS51cGRhdGVTZXR0aW5ncyh7IGdyaWRBbGlnbm1lbnQ6IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSwgY29sdW1uc1NpemVzIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvR3JpZEV2ZW50cyhhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIGNvbnN0IHsgY29sdW1uVmlzaWJsZSwgc29ydENoYW5nZWQsIGNvbHVtblJvd0dyb3VwQ2hhbmdlZCwgY29sdW1uUGlubmVkLCBkcmFnU3RvcHBlZCB9ID0gYWdHcmlkO1xuICAgIG1lcmdlKGNvbHVtblZpc2libGUsIHNvcnRDaGFuZ2VkLCBjb2x1bW5Sb3dHcm91cENoYW5nZWQsIGNvbHVtblBpbm5lZCwgZHJhZ1N0b3BwZWQpXG4gICAgICAucGlwZShcbiAgICAgICAgLyogU2tpcCB0aGUgaW5pdGlhbCBzb3J0aW5nIGV2ZW50IGZpcmVkIGJ5IHRoZSBncmlkIHdoZW4gYWRkaW5nIHJvd3MgKi9cbiAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgdHlwZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzRGlmZiA9IHRoaXMuZ3JpZFNlcnZpY2UuZ2V0U2V0dGluZ3NEaWZmKCk7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlU2V0dGluZ3Moc2V0dGluZ3NEaWZmKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0R3JpZERhdGEoKTtcbiAgICAgICAgdGhpcy5vbkdyaWRDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvU3RvcmVTZXR0aW5nc0NoYW5nZXMoKSB7XG4gICAgdGhpcy5ncmlkUXVlcnlcbiAgICAgIC5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MpXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzRGlmZiA9IHRoaXMuZ3JpZFNlcnZpY2UuZ2V0U2V0dGluZ3NEaWZmKCk7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2F2ZVNldHRpbmdzVG9TZXJ2ZXIoc2V0dGluZ3NEaWZmKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRMaXN0ZW5lcnMoYXBpOiBEYXRvR3JpZEFwaSwgYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICB0aGlzLmdyaWRFbGVtZW50cyA9IHtcbiAgICAgIGNlbnRlckNvbnRhaW5lcjogcXVlcnkoJy5hZy1jZW50ZXItY29scy1jb250YWluZXInLCB0aGlzLmFnR3JpZEVsKSxcbiAgICAgIGNlbnRlclZpZXdwb3J0OiBxdWVyeSgnLmFnLWNlbnRlci1jb2xzLXZpZXdwb3J0JywgdGhpcy5hZ0dyaWRFbCksXG4gICAgICBib2R5Vmlld3BvcnQ6IHF1ZXJ5KCcuYWctYm9keS12aWV3cG9ydCcsIHRoaXMuYWdHcmlkRWwpXG4gICAgfTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZENsaWNrTGlzdGVuZXIoYXBpLmdyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkR3JvdXBMaXN0ZW5lcnMoYWdHcmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZE1vdXNlTGlzdGVuZXJzKGFnR3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRLZXlib2FyZExpc3RlbmVyKGFwaSk7XG4gICAgdGhpcy5yZWdpc3RlcldpbmRvd1Jlc2l6ZUxpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZEdyb3VwTGlzdGVuZXJzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgLyogTWFrZSBncm91cCBleHBhbmQvY29sbGFwc2Ugb24gYSBzaW5nbGUgY2xpY2sgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBkb3VibGUgY2xpY2sgKi9cbiAgICBhZ0dyaWQuY29sdW1uUm93R3JvdXBDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh7IGNvbHVtbnMgfTogQ29sdW1uUm93R3JvdXBDaGFuZ2VkRXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gY29sdW1ucy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gRU1QVFlcbiAgICAgICAgICAgIDogYWdHcmlkLmNlbGxDbGlja2VkLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCh7IHZhbHVlLCBub2RlIH06IENlbGxDbGlja2VkRXZlbnQpID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgbm9kZS5ncm91cCA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IG5vZGUgfTogQ2VsbENsaWNrZWRFdmVudCkgPT4ge1xuICAgICAgICBub2RlLnNldEV4cGFuZGVkKCFub2RlLmV4cGFuZGVkKTtcbiAgICAgIH0pO1xuICAgIC8qIFdoZW4gY2xvc2luZyBhIGdyb3VwZWQgcm93IHdlIHdhbnQgdG8gaGlkZSB0aGUgb24gaG92ZXIgYWN0aW9ucyAqL1xuICAgIGlmICh0aGlzLm9uSG92ZXJFbmFibGVkKCkpIHtcbiAgICAgIGFnR3JpZC5yb3dHcm91cE9wZW5lZFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHsgbm9kZSB9OiBSb3dHcm91cE9wZW5lZEV2ZW50KSA9PiBub2RlLmV4cGFuZGVkID09PSBmYWxzZSksXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZShmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGNsaWNrIHdhcyBwZXJmb3JtZWQgb24gdGhlIGdyaWRzIGJvZHkgYW5kIG5vdCBhIHJvdywgY2xlYXIgdGhlIHJvd3Mgc2VsZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyR3JpZENsaWNrTGlzdGVuZXIoYXBpOiBHcmlkQXBpKSB7XG4gICAgY29uc3QgeyBib2R5Vmlld3BvcnQsIGNlbnRlclZpZXdwb3J0IH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBmcm9tRXZlbnQoYm9keVZpZXdwb3J0LCAnY2xpY2snKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gKGV2ZW50LnRhcmdldCA9PT0gYm9keVZpZXdwb3J0IHx8IGV2ZW50LnRhcmdldCA9PT0gY2VudGVyVmlld3BvcnQpICYmIGFwaS5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGggPiAwO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gYXBpLmRlc2VsZWN0QWxsKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkhvdmVyRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucy5ob3ZlckNvbmZpZy5lbmFibGVkICYmIHRoaXMucm93QWN0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRNb3VzZUxpc3RlbmVycyhhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIGNvbnN0IHsgYm9keVZpZXdwb3J0LCBjZW50ZXJDb250YWluZXIgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGxldCBsYXN0SG92ZXJlZENlbGw7XG4gICAgY29uc3Qgb25Ib3ZlckVuYWJsZWQgPSB0aGlzLm9uSG92ZXJFbmFibGVkKCk7XG4gICAgaWYgKG9uSG92ZXJFbmFibGVkKSB7XG4gICAgICBmcm9tRXZlbnQoY2VudGVyQ29udGFpbmVyLCAnbW91c2VsZWF2ZScpXG4gICAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZVJvd0hvdmVyQ2xhc3ModGhpcy5sYXN0SG92ZXJlZFJvdyk7XG4gICAgICAgICAgdGhpcy5sYXN0SG92ZXJlZFJvdyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5zZXRPbkhvdmVyU3RhdGUoZmFsc2UpO1xuICAgICAgICAgIGxhc3RIb3ZlcmVkQ2VsbCA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgbWVyZ2UoXG4gICAgICAgIGFnR3JpZC5ib2R5U2Nyb2xsLnBpcGUoZmlsdGVyKCh7IGRpcmVjdGlvbiB9OiBCb2R5U2Nyb2xsRXZlbnQpID0+IGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSksXG4gICAgICAgIGFnR3JpZC5yb3dEYXRhQ2hhbmdlZFxuICAgICAgKVxuICAgICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVPbkhvdmVyUG9zKCk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5hZGRPbkhvdmVyRWxlbWVudCgpO1xuICAgIH1cbiAgICBhZ0dyaWQuY2VsbE1vdXNlT3ZlclxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyBub2RlLCBjb2x1bW4gfSkgPT4gbGFzdEhvdmVyZWRDZWxsICE9PSBgJHtub2RlLmlkfS0ke2NvbHVtbi5nZXRDb2xJZCgpfWApLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IENlbGxNb3VzZU91dEV2ZW50KSA9PiB7XG4gICAgICAgIGxhc3RIb3ZlcmVkQ2VsbCA9IGAke2V2ZW50Lm5vZGUuaWR9LSR7ZXZlbnQuY29sdW1uLmdldENvbElkKCl9YDtcbiAgICAgICAgdGhpcy5zaG93VG9vbHRpcChldmVudCk7XG4gICAgICAgIGNvbnN0IHJvdyA9IChldmVudC5ldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGlmIChvbkhvdmVyRW5hYmxlZCAmJiAoZXZlbnQubm9kZS5ncm91cCA9PT0gZmFsc2UgfHwgaXNOaWwoZXZlbnQubm9kZS5ncm91cCkpICYmIHRoaXMubGFzdEhvdmVyZWRSb3cgIT09IHJvdykge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzTm9kZSA9IHRoaXMubGFzdEhvdmVyZWRSb3c7XG4gICAgICAgICAgdGhpcy5sYXN0SG92ZXJlZFJvdyA9IHJvdztcbiAgICAgICAgICB0aGlzLnRvZ2dsZVJvd0hvdmVyQ2xhc3MoW3ByZXZpb3VzTm9kZSwgdGhpcy5sYXN0SG92ZXJlZFJvd10pO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKHRydWUsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgY29uc3Qgb25Ub29sdGlwT3V0ID0gbWVyZ2UoXG4gICAgICBmcm9tRXZlbnQoYm9keVZpZXdwb3J0LCAnc2Nyb2xsJyksXG4gICAgICBmcm9tRXZlbnQodGhpcy5hZ0dyaWRFbCwgJ21vdXNlbGVhdmUnKSxcbiAgICAgIGFnR3JpZC5jZWxsTW91c2VPdXRcbiAgICApO1xuICAgIG9uVG9vbHRpcE91dFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiAhaXNOaWwodGhpcy50b29sdGlwKSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbGVhclRvb2x0aXAoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3Bvc2UgdGhlIHRvb2x0aXBcbiAgICovXG4gIGNsZWFyVG9vbHRpcCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2x0aXAuZGlzcG9zZSgpO1xuICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHNob3dUb29sdGlwKGV2ZW50OiBDZWxsRXZlbnQpIHtcbiAgICBjb25zdCBjZWxsOiBIVE1MRWxlbWVudCA9IGV2ZW50LmV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCB0ZXh0T3ZlcmZsb3cgPSBjZWxsLm9mZnNldFdpZHRoIDwgY2VsbC5zY3JvbGxXaWR0aDtcbiAgICBpZiAodGV4dE92ZXJmbG93KSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNlbGwsIHZhbHVlOiBjZWxsLmlubmVyVGV4dCB9O1xuICAgICAgaXNOaWwodGhpcy50b29sdGlwKSA/IHRoaXMuY3JlYXRlQW5kU2hvd1Rvb2x0aXAocGFyYW1zKSA6IHRoaXMudXBkYXRlVG9vbHRpcChwYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5kU2hvd1Rvb2x0aXAoeyBjZWxsLCB2YWx1ZSB9KSB7XG4gICAgdGhpcy50b29sdGlwID0gbmV3IFRvb2x0aXAoY2VsbCwge1xuICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgIGNvbnRhaW5lcjogZG9jdW1lbnQuYm9keSxcbiAgICAgIHRyaWdnZXI6ICdtYW51YWwnLFxuICAgICAgdGl0bGU6IERPTVB1cmlmeS5zYW5pdGl6ZSh2YWx1ZSksXG4gICAgICBodG1sOiB0cnVlLFxuICAgICAgcG9wcGVyT3B0aW9uczoge1xuICAgICAgICBtb2RpZmllcnM6IHtcbiAgICAgICAgICBwcmV2ZW50T3ZlcmZsb3c6IHsgZW5hYmxlZDogZmFsc2UgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdGVtcGxhdGU6XG4gICAgICAgICc8ZGl2IGNsYXNzPVwidG9vbHRpcCBkYXRvLXRvb2x0aXAgY29tbW9uLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPjxkaXYgY2xhc3M9XCJ0b29sdGlwLWFycm93XCI+PC9kaXY+PGRpdiBjbGFzcz1cInRvb2x0aXAtaW5uZXJcIj48L2Rpdj48L2Rpdj4nXG4gICAgfSk7XG5cbiAgICB0aGlzLnRvb2x0aXAuc2hvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdG9vbHRpcCBlbGVtZW50IHJlZiBhbmQgY29udGVudFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVUb29sdGlwKHsgY2VsbCwgdmFsdWUgfSk6IHZvaWQge1xuICAgIGlmIChjZWxsICE9PSB0aGlzLnRvb2x0aXAucmVmZXJlbmNlKSB7XG4gICAgICB0aGlzLnRvb2x0aXAucmVmZXJlbmNlID0gY2VsbDtcbiAgICAgIHRoaXMudG9vbHRpcC5wb3BwZXJJbnN0YW5jZS5yZWZlcmVuY2UgPSBjZWxsO1xuICAgICAgdGhpcy50b29sdGlwLnVwZGF0ZVRpdGxlQ29udGVudCh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gIH1cblxuICBwcml2YXRlIGFkZE9uSG92ZXJFbGVtZW50KCkge1xuICAgIHRoaXMucm93SG92ZXJDb21wb25lbnQgPSBjcmVhdGVDb21wb25lbnQ8RGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50Pih7XG4gICAgICBjb21wb25lbnQ6IERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudCxcbiAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxuICAgICAgcmVzb2x2ZXI6IHRoaXMucmVzb2x2ZXJcbiAgICB9KTtcbiAgICBjb25zdCB7IGluc3RhbmNlLCBob3N0VmlldyB9ID0gdGhpcy5yb3dIb3ZlckNvbXBvbmVudDtcbiAgICBpbnN0YW5jZS5jb25maWcgPSB7IC4uLnRoaXMuZ3JpZE9wdGlvbnMuaG92ZXJDb25maWcsIGFjdGlvbnM6IHRoaXMucm93QWN0aW9ucy5zbGljZSgpIH07XG4gICAgaG9zdFZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGFwcGVuZENoaWxkKHRoaXMuZ3JpZEVsZW1lbnRzLmNlbnRlckNvbnRhaW5lciwgdGhpcy5yb3dIb3ZlckVsKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJvd0hvdmVyRWwoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93SG92ZXJDb21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0T25Ib3ZlclN0YXRlKHZpc2libGU6IGJvb2xlYW4sIGV2ZW50PzogQ2VsbE1vdXNlT3V0RXZlbnQpIHtcbiAgICBjb25zdCB7IGluc3RhbmNlIH0gPSB0aGlzLnJvd0hvdmVyQ29tcG9uZW50O1xuICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICBpbnN0YW5jZS5zaG93KGV2ZW50KTtcbiAgICAgIHRoaXMudXBkYXRlT25Ib3ZlclBvcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZS5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVPbkhvdmVyUG9zKCkge1xuICAgIGNvbnN0IHsgY2VudGVyVmlld3BvcnQsIGNlbnRlckNvbnRhaW5lciB9ID0gdGhpcy5ncmlkRWxlbWVudHM7XG4gICAgY29uc3QgdGFyZ2V0ID0gY2VudGVyQ29udGFpbmVyLmNsaWVudFdpZHRoID4gY2VudGVyVmlld3BvcnQuY2xpZW50V2lkdGggPyBjZW50ZXJWaWV3cG9ydCA6IGNlbnRlckNvbnRhaW5lcjtcbiAgICBjb25zdCB7IGNsaWVudFdpZHRoLCBzY3JvbGxMZWZ0IH0gPSB0YXJnZXQ7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5pbnN0YW5jZS51cGRhdGVTY3JvbGxQb3MoY2xpZW50V2lkdGggKyBzY3JvbGxMZWZ0KTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlUm93SG92ZXJDbGFzcyhyb3dzOiBIVE1MRWxlbWVudCB8IEhUTUxFbGVtZW50W10pIHtcbiAgICBjb2VyY2VBcnJheShyb3dzKS5mb3JFYWNoKHJvdyA9PiByb3cgJiYgcm93LmNsYXNzTGlzdC50b2dnbGUoJ2FjdGlvbnMtaG92ZXJlZCcpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkS2V5Ym9hcmRMaXN0ZW5lcih7IGdyaWQsIGNvbHVtbnMgfTogRGF0b0dyaWRBcGkpIHtcbiAgICB0aGlzLmhvdGtleXNcbiAgICAgIC5hZGRTaG9ydGN1dCh7XG4gICAgICAgIGVsZW1lbnQ6IHRoaXMuYWdHcmlkRWwsXG4gICAgICAgIGtleXM6ICdtZXRhLmEnLFxuICAgICAgICBpZ25vcmVJbkVkaXRhYmxlOiB0cnVlXG4gICAgICB9KVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5zZWxlY3RBbGxDdXJyZW50UGFnZVJvd3MoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlcldpbmRvd1Jlc2l6ZUxpc3RlbmVyKCkge1xuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5ncmlkUXVlcnkuZ3JpZEFsaWdubWVudCAhPT0gRGF0b0dyaWRBbGlnbm1lbnQuQ1VTVE9NKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBmaXRUbyA9IHRoaXMuZ3JpZFF1ZXJ5LmdyaWRBbGlnbm1lbnQgPT09IERhdG9HcmlkQWxpZ25tZW50LkZJVF9UT19DT05UQUlORVIgPyAnY29udGFpbmVyJyA6ICdjb250ZW50JztcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKGZpdFRvKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkRGF0YSgpIHtcbiAgICBjb25zdCBncmlkTW9kZWwgPSB0aGlzLmdyaWRTZXJ2aWNlLmFwaS5ncmlkLmdldE1vZGVsKCkgYXMgYW55O1xuICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICBjb25zdCBncmlkRGF0YSA9IGdyaWRNb2RlbC5yb3dzVG9EaXNwbGF5Lm1hcCgoeyBkYXRhIH0pID0+IGRhdGEpO1xuICAgICAgcmV0dXJuIGNvbnZlcnRGcm9tVHJlZURhdGEoZ3JpZERhdGEsIHRoaXMuZ3JpZFNlcnZpY2UudHJlZUNvbmZpZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBncmlkTW9kZWwucm93c1RvRGlzcGxheTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRXZlbnRzVHJpZ2dlcmluZ0NsZWFyU2VsZWN0ZWRSb3dzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgZXZlbnRzJCA9IHRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2lkZVxuICAgICAgPyBtZXJnZShhZ0dyaWQuc29ydENoYW5nZWQsIGFnR3JpZC5maWx0ZXJDaGFuZ2VkKVxuICAgICAgOiBhZ0dyaWQuZmlsdGVyQ2hhbmdlZDtcbiAgICAoZXZlbnRzJCBhcyBPYnNlcnZhYmxlPGFueT4pLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLmRlc2VsZWN0QWxsUm93cygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclBhZ2luYXRpb25DaGFuZ2VkKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgaWYgKCF0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWdHcmlkLnBhZ2luYXRpb25DaGFuZ2VkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCkge1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNlbGVjdEFsbEN1cnJlbnRQYWdlUm93cyh0cnVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
477
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBWXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBa0Is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S0FBSyxFQUFFOzsrREFBOEI7QUFDN0I7SUFBUixLQUFLLEVBQUU7O2dFQUFnQztBQUMvQjtJQUFSLEtBQUssRUFBRTs7OzhEQVlQO0FBcEJVLDJCQUEyQjtJQVR2QyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLFFBQVEsRUFBRTs7R0FFVDtRQUVELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1FBQy9DLFNBQVMsRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDOztLQUMvQyxDQUFDO0lBb0RHLFdBQUEsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7cUNBVFYsV0FBVztRQUNiLFNBQVM7UUFDZCxpQkFBaUI7UUFDUixZQUFZO1FBQ2Ysb0JBQW9CO1FBQ3pCLFVBQVU7UUFDTixRQUFRO1FBQ1Isd0JBQXdCO1FBQ3pCLFdBQVc7R0FsRG5CLDJCQUEyQixDQXFmdkM7U0FyZlksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBFTVBUWSwgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFnR3JpZE5nMiB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtcbiAgQm9keVNjcm9sbEV2ZW50LFxuICBDZWxsQ2xpY2tlZEV2ZW50LFxuICBDZWxsRXZlbnQsXG4gIENlbGxNb3VzZU91dEV2ZW50LFxuICBDb2x1bW5SZXNpemVkRXZlbnQsXG4gIENvbHVtblJvd0dyb3VwQ2hhbmdlZEV2ZW50LFxuICBEZXRhaWxHcmlkSW5mbyxcbiAgR3JpZEFwaSxcbiAgUm93R3JvdXBPcGVuZWRFdmVudFxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBHcmlkUXVlcnkgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQucXVlcnknO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRDb2x1bW5zU2l6ZXMgfSBmcm9tICcuLi9ncmlkLXN0b3JlL3V0aWwnO1xuaW1wb3J0IHsgR3JpZFN0b3JlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnN0b3JlJztcbmltcG9ydCB7IERhdG9HcmlkU2V0dGluZ3MgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQuc3RvcmUudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuL2dyaWQtY29udHJvbGxlci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEFsaWdubWVudCwgRGF0b0dyaWRPcHRpb25zLCBEYXRvR3JpZFNvcnQgfSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgSWNvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaWNvbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC9kZWVwLW1lcmdlJztcbmltcG9ydCB7IERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtY3VzdG9tLWhlYWRlci9jdXN0b20taGVhZGVyLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgR3JpZEFjdGlvbiwgUm93QWN0aW9uIH0gZnJvbSAnLi4vZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci50eXBlcyc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IERBVE9fR1JJRF9TVE9SQUdFX0FQSSwgR3JpZFN0b3JhZ2VBUEkgfSBmcm9tICcuLi9ncmlkLXNldHRpbmdzJztcbmltcG9ydCB7IGF1ZGl0VGltZSwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHNraXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgYWRkQ2xhc3MsIGFwcGVuZENoaWxkLCBxdWVyeSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2hlbHBlcnMnO1xuaW1wb3J0IFRvb2x0aXAgZnJvbSAndG9vbHRpcC5qcyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uLy4uL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgY3JlYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYW5ndWxhci9keW5hbWljLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1vbi1ob3Zlci9ncmlkLW9uLWhvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb252ZXJ0RnJvbVRyZWVEYXRhLCBkZWZhdWx0R3JpZE9wdGlvbnMsIGRlZmF1bHRUcmVlT3B0aW9ucyB9IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi5jb25maWcnO1xuaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICcuLi8uLi91dGlscy9jb2VyY2lvbic7XG5pbXBvcnQgeyBEYXRvSG90a2V5cyB9IGZyb20gJy4uLy4uL2hvdGtleXMvaG90a2V5cy5zZXJ2aWNlJztcbmltcG9ydCBET01QdXJpZnkgZnJvbSAnZG9tcHVyaWZ5JztcbmltcG9ydCB7IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXIgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tZ3JpZC1jb250cm9sbGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbR3JpZFF1ZXJ5LCBHcmlkU2VydmljZSwgR3JpZFN0b3JlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICBAQ29udGVudENoaWxkcmVuKERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudCkgY3VzdG9tSGVhZGVyc1RlbXBsYXRlczogUXVlcnlMaXN0PFxuICAgIERhdG9DdXN0b21IZWFkZXJUZW1wbGF0ZUNvbXBvbmVudFxuICA+O1xuXG4gIEBPdXRwdXQoKSBvbkdyaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIEBJbnB1dCgpIGdyaWRBY3Rpb25zOiBHcmlkQWN0aW9uW10gPSBbXTtcbiAgQElucHV0KCkgc2V0IGdyaWRPcHRpb25zKGdyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnMpIHtcbiAgICB0aGlzLl9ncmlkT3B0aW9ucyA9IGdyaWRPcHRpb25zO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UudHJlZURhdGEgPSBncmlkT3B0aW9ucy50cmVlRGF0YTtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmlzUGl2b3RNb2RlID0gZ3JpZE9wdGlvbnMucGl2b3RNb2RlO1xuXG4gICAgaWYgKHRoaXMuYWdHcmlkRWwpIHtcbiAgICAgIGlmIChncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgICAhdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuY29udGFpbnModGhpcy50cmVlR3JpZENsYXNzKSAmJiB0aGlzLmFnR3JpZEVsLmNsYXNzTGlzdC5hZGQodGhpcy50cmVlR3JpZENsYXNzKTtcbiAgICAgIH0gZWxzZSBpZiAoIWdyaWRPcHRpb25zLmVuYWJsZVYyXzEpIHtcbiAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKHRoaXMudHJlZUdyaWRDbGFzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGdyaWRPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9ncmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgY29udGVudEluaXQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHRvb2x0aXA7XG4gIHByaXZhdGUgX2dyaWRPcHRpb25zOiBEYXRvR3JpZE9wdGlvbnM7XG4gIGdyaWRSZWFkeSQgPSB0aGlzLmdyaWRRdWVyeS5ncmlkUmVhZHkkO1xuICBhZ0dyaWRFbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSByb3dIb3ZlckNvbXBvbmVudDogQ29tcG9uZW50UmVmPERhdG9HcmlkT25Ib3ZlckNvbXBvbmVudD47XG4gIHByaXZhdGUgbGFzdEhvdmVyZWRSb3c6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGdyaWRFbGVtZW50cyA9IHtcbiAgICBjZW50ZXJWaWV3cG9ydDogbnVsbCxcbiAgICBjZW50ZXJDb250YWluZXI6IG51bGwsXG4gICAgYm9keVZpZXdwb3J0OiBudWxsXG4gIH07XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJlZUdyaWRDbGFzcyA9ICd0cmVlJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLFxuICAgIHB1YmxpYyBncmlkUXVlcnk6IEdyaWRRdWVyeSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IEljb25SZWdpc3RyeSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogRGF0b1RyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGhvdGtleXM6IERhdG9Ib3RrZXlzLFxuICAgIEBJbmplY3QoREFUT19HUklEX1NUT1JBR0VfQVBJKSBwcml2YXRlIHN0b3JhZ2VBUEk6IEdyaWRTdG9yYWdlQVBJXG4gICkge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gICAgdGhpcy50b29sdGlwICYmIHRoaXMuY2xlYXJUb29sdGlwKCk7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCAmJiB0aGlzLnJvd0hvdmVyQ29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50ID0gbnVsbDtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0Lm5leHQoKTtcbiAgICB0aGlzLmNvbnRlbnRJbml0LmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiBAaW50ZXJuYWwgKi9cbiAgX2luaXRpYWxpemVHcmlkKGFnR3JpZDogQWdHcmlkTmcyLCBhZ0dyaWRFbDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLmFnR3JpZEVsID0gYWdHcmlkRWw7XG4gICAgdGhpcy5jb250ZW50SW5pdFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zID0gdGhpcy5ub3JtYWxpemVPcHRpb25zKCk7XG4gICAgICAgICAgYWdHcmlkLmdyaWRPcHRpb25zID0gdGhpcy5ncmlkT3B0aW9ucztcbiAgICAgICAgICBjb25zdCBzZXR0aW5nc0xvYWRlciA9XG4gICAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnNhdmVTZXR0aW5ncyA9PT0gZmFsc2UgPyBvZihudWxsKSA6IHRoaXMuc3RvcmFnZUFQSS5nZXQodGhpcy5ncmlkT3B0aW9ucy5ncmlkTmFtZSk7XG4gICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2FnR3JpZC5ncmlkUmVhZHksIHNldHRpbmdzTG9hZGVyXSk7XG4gICAgICAgIH0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3sgYXBpLCBjb2x1bW5BcGkgfSwgc2F2ZWRTZXR0aW5ncyA9IHt9XTogW0RldGFpbEdyaWRJbmZvLCBQYXJ0aWFsPERhdG9HcmlkU2V0dGluZ3M+XSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMucm93RGF0YSkge1xuICAgICAgICAgIGFwaS5zaG93TG9hZGluZ092ZXJsYXkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMuc3RhdHVzQmFyKSB7XG4gICAgICAgICAgLyoqIEZpeCBhZy1ncmlkIGJ1ZyB0aGF0IGRvZXNuJ3QgYWRkIGFnLWhpZGRlbiBjbGFzcyB0byB0aGUgc3RhdHVzIGJhciwgd2hpY2ggb25seSBnZXQgZml4ZWQgaW4gbGF0ZXIgdmVyc2lvbnMgKi9cbiAgICAgICAgICBjb25zdCBlbCA9IGFnR3JpZEVsLnF1ZXJ5U2VsZWN0b3IoJy5hZy1zdGF0dXMtYmFyJyk7XG5cbiAgICAgICAgICBhZGRDbGFzcyhlbCwgJ2FnLWhpZGRlbicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyaWRBcGk6IERhdG9HcmlkQXBpID0geyBncmlkOiBhcGksIGNvbHVtbnM6IGNvbHVtbkFwaSB9O1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLl9zZXRBcGkoZ3JpZEFwaSwgYWdHcmlkKTtcbiAgICAgICAgdGhpcy5ncmlkUXVlcnkuX3NldEFwaShncmlkQXBpLCBhZ0dyaWQpO1xuXG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuaW5pdFNldHRpbmdzKHNhdmVkU2V0dGluZ3MgfHwge30pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU2V0dGluZ3NMaXN0ZW5lcnMoZ3JpZEFwaSwgYWdHcmlkKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckdyaWRMaXN0ZW5lcnMoZ3JpZEFwaSwgYWdHcmlkKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50c1RyaWdnZXJpbmdDbGVhclNlbGVjdGVkUm93cyhhZ0dyaWQpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyUGFnaW5hdGlvbkNoYW5nZWQoYWdHcmlkKTtcbiAgICAgICAgdGhpcy5ncmlkUXVlcnkuX2dyaWRSZWFkeS5uZXh0KHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLnRyZWVEYXRhKSB7XG4gICAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKCd0cmVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMucm93SGVpZ2h0KSB7XG4gICAgICAgICAgdGhpcy5hZ0dyaWRFbC5jbGFzc0xpc3QuYWRkKGByb3ctaGVpZ2h0LSR7dGhpcy5ncmlkT3B0aW9ucy5yb3dIZWlnaHR9YCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVPcHRpb25zKCkge1xuICAgIC8qKlxuICAgICAqIFdoZW4gdHJlZURhdGEgaXMgZW5hYmxlZCwgUGFnaW5hdGlvbiBtdXN0IGJlIHR1cm5lZCBvZmZcbiAgICAgKi9cbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSkge1xuICAgICAgdGhpcy5ncmlkT3B0aW9ucyA9IHtcbiAgICAgICAgLi4udGhpcy5ncmlkT3B0aW9ucyxcbiAgICAgICAgcGFnaW5hdGlvbjogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGdyaWRPcHRpb25zOiB0aGlzLmdyaWRPcHRpb25zLFxuICAgICAgY3VzdG9tSGVhZGVyc1RlbXBsYXRlczogdGhpcy5jdXN0b21IZWFkZXJzVGVtcGxhdGVzLFxuICAgICAgcm93QWN0aW9uczogdGhpcy5yb3dBY3Rpb25zXG4gICAgfTtcblxuICAgIGxldCBub3JtYWxpemVkID0gdGhpcy5ncmlkU2VydmljZS5ub3JtYWxpemVPcHRpb25zKHBhcmFtcyk7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMsXG4gICAgICAuLi4odGhpcy5ncmlkT3B0aW9ucy50cmVlRGF0YSA/IGRlZmF1bHRUcmVlT3B0aW9ucyA6IHt9KSxcbiAgICAgIGljb25zOiB0aGlzLmdldEdyaWRJY29ucygpXG4gICAgfTtcbiAgICByZXR1cm4gZGVlcG1lcmdlKGRlZmF1bHRzLCBub3JtYWxpemVkKTtcbiAgfVxuXG4gIHNldEdyaWRSb3dzPFQ+KGRhdGE6IFRbXSkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0Um93czxUPihkYXRhKTtcbiAgfVxuXG4gIHNldEdyaWRGaWx0ZXJzKGZpbHRlcnM6IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXSkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0R3JpZEZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBzZXRHcmlkU29ydChzb3J0OiBEYXRvR3JpZFNvcnQpIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldEdyaWRTb3J0KHNvcnQpO1xuICB9XG5cbiAgb25GaWx0ZXJDaGFuZ2VkKCk6IE9ic2VydmFibGU8RGF0b0dyaWRFeHRlcm5hbEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZFF1ZXJ5LmZpbHRlckNoYW5nZWQoKTtcbiAgfVxuXG4gIG9uU29ydENoYW5nZWQoKTogT2JzZXJ2YWJsZTxEYXRvR3JpZFNvcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5ncmlkUXVlcnkuc2VsZWN0U29ydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHcmlkSWNvbnMoKTogSGFzaE1hcDxzdHJpbmc+IHtcbiAgICBjb25zdCBtb3ZlQ29sdW1uSWNvbiA9IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGQtZmxleCBjb2x1bW4tbW92ZVwiPiR7dGhpcy5pY29uUmVnaXN0cnkuZ2V0U3ZnKFxuICAgICAgJ21vdmUtY29sdW1uJ1xuICAgICl9PC9zcGFuPmA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdyb3VwRXhwYW5kZWQ6IGA8c3BhbiBjbGFzcz1cImRhLWdyaWQtaWNvbiBwb2ludGVyIGdyb3VwLWV4cGFuZGVkLWljb25cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2Fycm93LXJpZ2h0J1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGdyb3VwQ29udHJhY3RlZDogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZ3JvdXAtY29udHJhY3RlZC1pY29uXCI+JHt0aGlzLmljb25SZWdpc3RyeS5nZXRTdmcoXG4gICAgICAgICdhcnJvdy1yaWdodCdcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlUGluOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gcG9pbnRlciBkLWZsZXggcHJpbWFyeS0zMDAtZmlsbCBjb2x1bW4tbW92ZS1waW5cIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ3BpbidcbiAgICAgICl9PC9zcGFuPmAsXG4gICAgICBjb2x1bW5Nb3ZlSGlkZTogYDxzcGFuIGNsYXNzPVwiZGEtZ3JpZC1pY29uIHBvaW50ZXIgZC1mbGV4IGNvbHVtbi1tb3ZlLWhpZGVcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZyhcbiAgICAgICAgJ2V5ZS1oaWRlJ1xuICAgICAgKX08L3NwYW4+YCxcbiAgICAgIGNvbHVtbk1vdmVNb3ZlOiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVMZWZ0OiBtb3ZlQ29sdW1uSWNvbixcbiAgICAgIGNvbHVtbk1vdmVSaWdodDogbW92ZUNvbHVtbkljb24sXG4gICAgICByb3dEcmFnOiBgPHNwYW4gY2xhc3M9XCJkYS1ncmlkLWljb24gZHJhZyBkLWZsZXhcIj4ke3RoaXMuaWNvblJlZ2lzdHJ5LmdldFN2ZygnZHJhZy0wMScpfTwvc3Bhbj5gXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTZXR0aW5nc0xpc3RlbmVycyhhcGk6IERhdG9HcmlkQXBpLCBhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIHRoaXMubGlzdGVuVG9Db2x1bW5SZXNpemUoYXBpLCBhZ0dyaWQpO1xuICAgIHRoaXMubGlzdGVuVG9HcmlkRXZlbnRzKGFnR3JpZCk7XG4gICAgdGhpcy5saXN0ZW5Ub1N0b3JlU2V0dGluZ3NDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvQ29sdW1uUmVzaXplKGFwaTogRGF0b0dyaWRBcGksIHsgY29sdW1uUmVzaXplZCB9OiBBZ0dyaWROZzIpIHtcbiAgICBsZXQgb2JzZXJ2YWJsZSA9IGNvbHVtblJlc2l6ZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgaWYgKHRoaXMub25Ib3ZlckVuYWJsZWQoKSkge1xuICAgICAgb2JzZXJ2YWJsZSA9IG9ic2VydmFibGUucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHNvdXJjZSB9OiBDb2x1bW5SZXNpemVkRXZlbnQpID0+IHNvdXJjZSA9PT0gJ3VpQ29sdW1uRHJhZ2dlZCcpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy51cGRhdGVPbkhvdmVyUG9zKCkpXG4gICAgICApO1xuICAgIH1cbiAgICBvYnNlcnZhYmxlXG4gICAgICAucGlwZShcbiAgICAgICAgYXVkaXRUaW1lKDEwMCksXG4gICAgICAgIGZpbHRlcigoeyBmaW5pc2hlZCwgc291cmNlIH06IENvbHVtblJlc2l6ZWRFdmVudCkgPT4gZmluaXNoZWQgJiYgc291cmNlID09PSAndWlDb2x1bW5EcmFnZ2VkJyksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgICBjb25zdCBbY29sdW1uXSA9IGUuY29sdW1ucztcbiAgICAgICAgbGV0IGNvbHVtbnNTaXplcyA9IHsgLi4udGhpcy5ncmlkUXVlcnkuZ2V0Q29sdW1uU2l6ZXMoKSB9O1xuICAgICAgICBpZiAoY29sdW1uc1NpemVzKSB7XG4gICAgICAgICAgY29sdW1uc1NpemVzW2NvbHVtbi5nZXRDb2xJZCgpXSA9IGNvbHVtbi5nZXRBY3R1YWxXaWR0aCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbHVtbnNTaXplcyA9IGdldENvbHVtbnNTaXplcyhhcGkuY29sdW1ucy5nZXRBbGxHcmlkQ29sdW1ucygpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnVwZGF0ZVNldHRpbmdzKHsgZ3JpZEFsaWdubWVudDogRGF0b0dyaWRBbGlnbm1lbnQuQ1VTVE9NLCBjb2x1bW5zU2l6ZXMgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9HcmlkRXZlbnRzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgeyBjb2x1bW5WaXNpYmxlLCBzb3J0Q2hhbmdlZCwgY29sdW1uUm93R3JvdXBDaGFuZ2VkLCBjb2x1bW5QaW5uZWQsIGRyYWdTdG9wcGVkIH0gPSBhZ0dyaWQ7XG4gICAgbWVyZ2UoY29sdW1uVmlzaWJsZSwgc29ydENoYW5nZWQsIGNvbHVtblJvd0dyb3VwQ2hhbmdlZCwgY29sdW1uUGlubmVkLCBkcmFnU3RvcHBlZClcbiAgICAgIC5waXBlKFxuICAgICAgICAvKiBTa2lwIHRoZSBpbml0aWFsIHNvcnRpbmcgZXZlbnQgZmlyZWQgYnkgdGhlIGdyaWQgd2hlbiBhZGRpbmcgcm93cyAqL1xuICAgICAgICBza2lwKDEpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyB0eXBlIH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3NEaWZmID0gdGhpcy5ncmlkU2VydmljZS5nZXRTZXR0aW5nc0RpZmYoKTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS51cGRhdGVTZXR0aW5ncyhzZXR0aW5nc0RpZmYpO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRHcmlkRGF0YSgpO1xuICAgICAgICB0aGlzLm9uR3JpZENoYW5nZS5lbWl0KHtcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9TdG9yZVNldHRpbmdzQ2hhbmdlcygpIHtcbiAgICB0aGlzLmdyaWRRdWVyeVxuICAgICAgLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncylcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTAwMCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3NEaWZmID0gdGhpcy5ncmlkU2VydmljZS5nZXRTZXR0aW5nc0RpZmYoKTtcbiAgICAgICAgdGhpcy5ncmlkU2VydmljZS5zYXZlU2V0dGluZ3NUb1NlcnZlcihzZXR0aW5nc0RpZmYpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZExpc3RlbmVycyhhcGk6IERhdG9HcmlkQXBpLCBhZ0dyaWQ6IEFnR3JpZE5nMikge1xuICAgIHRoaXMuZ3JpZEVsZW1lbnRzID0ge1xuICAgICAgY2VudGVyQ29udGFpbmVyOiBxdWVyeSgnLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lcicsIHRoaXMuYWdHcmlkRWwpLFxuICAgICAgY2VudGVyVmlld3BvcnQ6IHF1ZXJ5KCcuYWctY2VudGVyLWNvbHMtdmlld3BvcnQnLCB0aGlzLmFnR3JpZEVsKSxcbiAgICAgIGJvZHlWaWV3cG9ydDogcXVlcnkoJy5hZy1ib2R5LXZpZXdwb3J0JywgdGhpcy5hZ0dyaWRFbClcbiAgICB9O1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkQ2xpY2tMaXN0ZW5lcihhcGkuZ3JpZCk7XG4gICAgdGhpcy5yZWdpc3RlckdyaWRHcm91cExpc3RlbmVycyhhZ0dyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXJHcmlkTW91c2VMaXN0ZW5lcnMoYWdHcmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyR3JpZEtleWJvYXJkTGlzdGVuZXIoYXBpKTtcbiAgICB0aGlzLnJlZ2lzdGVyV2luZG93UmVzaXplTGlzdGVuZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkR3JvdXBMaXN0ZW5lcnMoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICAvKiBNYWtlIGdyb3VwIGV4cGFuZC9jb2xsYXBzZSBvbiBhIHNpbmdsZSBjbGljayBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGRvdWJsZSBjbGljayAqL1xuICAgIGFnR3JpZC5jb2x1bW5Sb3dHcm91cENoYW5nZWRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHsgY29sdW1ucyB9OiBDb2x1bW5Sb3dHcm91cENoYW5nZWRFdmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb2x1bW5zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBFTVBUWVxuICAgICAgICAgICAgOiBhZ0dyaWQuY2VsbENsaWNrZWQucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHsgdmFsdWUsIG5vZGUgfTogQ2VsbENsaWNrZWRFdmVudCkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBub2RlLmdyb3VwID09PSB0cnVlKVxuICAgICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHsgbm9kZSB9OiBDZWxsQ2xpY2tlZEV2ZW50KSA9PiB7XG4gICAgICAgIG5vZGUuc2V0RXhwYW5kZWQoIW5vZGUuZXhwYW5kZWQpO1xuICAgICAgfSk7XG4gICAgLyogV2hlbiBjbG9zaW5nIGEgZ3JvdXBlZCByb3cgd2Ugd2FudCB0byBoaWRlIHRoZSBvbiBob3ZlciBhY3Rpb25zICovXG4gICAgaWYgKHRoaXMub25Ib3ZlckVuYWJsZWQoKSkge1xuICAgICAgYWdHcmlkLnJvd0dyb3VwT3BlbmVkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoeyBub2RlIH06IFJvd0dyb3VwT3BlbmVkRXZlbnQpID0+IG5vZGUuZXhwYW5kZWQgPT09IGZhbHNlKSxcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubGFzdEhvdmVyZWRSb3cgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc2V0T25Ib3ZlclN0YXRlKGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgY2xpY2sgd2FzIHBlcmZvcm1lZCBvbiB0aGUgZ3JpZHMgYm9keSBhbmQgbm90IGEgcm93LCBjbGVhciB0aGUgcm93cyBzZWxlY3Rpb25cbiAgICovXG4gIHByaXZhdGUgcmVnaXN0ZXJHcmlkQ2xpY2tMaXN0ZW5lcihhcGk6IEdyaWRBcGkpIHtcbiAgICBjb25zdCB7IGJvZHlWaWV3cG9ydCwgY2VudGVyVmlld3BvcnQgfSA9IHRoaXMuZ3JpZEVsZW1lbnRzO1xuICAgIGZyb21FdmVudChib2R5Vmlld3BvcnQsICdjbGljaycpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoZXZlbnQudGFyZ2V0ID09PSBib2R5Vmlld3BvcnQgfHwgZXZlbnQudGFyZ2V0ID09PSBjZW50ZXJWaWV3cG9ydCkgJiYgYXBpLmdldFNlbGVjdGVkUm93cygpLmxlbmd0aCA+IDA7XG4gICAgICAgIH0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiBhcGkuZGVzZWxlY3RBbGwoKSk7XG4gIH1cblxuICBwcml2YXRlIG9uSG92ZXJFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLmhvdmVyQ29uZmlnLmVuYWJsZWQgJiYgdGhpcy5yb3dBY3Rpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3JpZE1vdXNlTGlzdGVuZXJzKGFnR3JpZDogQWdHcmlkTmcyKSB7XG4gICAgY29uc3QgeyBib2R5Vmlld3BvcnQsIGNlbnRlckNvbnRhaW5lciB9ID0gdGhpcy5ncmlkRWxlbWVudHM7XG4gICAgbGV0IGxhc3RIb3ZlcmVkQ2VsbDtcbiAgICBjb25zdCBvbkhvdmVyRW5hYmxlZCA9IHRoaXMub25Ib3ZlckVuYWJsZWQoKTtcbiAgICBpZiAob25Ib3ZlckVuYWJsZWQpIHtcbiAgICAgIGZyb21FdmVudChjZW50ZXJDb250YWluZXIsICdtb3VzZWxlYXZlJylcbiAgICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9nZ2xlUm93SG92ZXJDbGFzcyh0aGlzLmxhc3RIb3ZlcmVkUm93KTtcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnNldE9uSG92ZXJTdGF0ZShmYWxzZSk7XG4gICAgICAgICAgbGFzdEhvdmVyZWRDZWxsID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICBtZXJnZShcbiAgICAgICAgYWdHcmlkLmJvZHlTY3JvbGwucGlwZShmaWx0ZXIoKHsgZGlyZWN0aW9uIH06IEJvZHlTY3JvbGxFdmVudCkgPT4gZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpKSxcbiAgICAgICAgYWdHcmlkLnJvd0RhdGFDaGFuZ2VkXG4gICAgICApXG4gICAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU9uSG92ZXJQb3MoKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmFkZE9uSG92ZXJFbGVtZW50KCk7XG4gICAgfVxuICAgIGFnR3JpZC5jZWxsTW91c2VPdmVyXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IG5vZGUsIGNvbHVtbiB9KSA9PiBsYXN0SG92ZXJlZENlbGwgIT09IGAke25vZGUuaWR9LSR7Y29sdW1uLmdldENvbElkKCl9YCksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogQ2VsbE1vdXNlT3V0RXZlbnQpID0+IHtcbiAgICAgICAgbGFzdEhvdmVyZWRDZWxsID0gYCR7ZXZlbnQubm9kZS5pZH0tJHtldmVudC5jb2x1bW4uZ2V0Q29sSWQoKX1gO1xuICAgICAgICB0aGlzLnNob3dUb29sdGlwKGV2ZW50KTtcbiAgICAgICAgY29uc3Qgcm93ID0gKGV2ZW50LmV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudDtcbiAgICAgICAgaWYgKG9uSG92ZXJFbmFibGVkICYmIChldmVudC5ub2RlLmdyb3VwID09PSBmYWxzZSB8fCBpc05pbChldmVudC5ub2RlLmdyb3VwKSkgJiYgdGhpcy5sYXN0SG92ZXJlZFJvdyAhPT0gcm93KSB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gdGhpcy5sYXN0SG92ZXJlZFJvdztcbiAgICAgICAgICB0aGlzLmxhc3RIb3ZlcmVkUm93ID0gcm93O1xuICAgICAgICAgIHRoaXMudG9nZ2xlUm93SG92ZXJDbGFzcyhbcHJldmlvdXNOb2RlLCB0aGlzLmxhc3RIb3ZlcmVkUm93XSk7XG4gICAgICAgICAgdGhpcy5zZXRPbkhvdmVyU3RhdGUodHJ1ZSwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBjb25zdCBvblRvb2x0aXBPdXQgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudChib2R5Vmlld3BvcnQsICdzY3JvbGwnKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLmFnR3JpZEVsLCAnbW91c2VsZWF2ZScpLFxuICAgICAgYWdHcmlkLmNlbGxNb3VzZU91dFxuICAgICk7XG4gICAgb25Ub29sdGlwT3V0XG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICFpc05pbCh0aGlzLnRvb2x0aXApKSxcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsZWFyVG9vbHRpcCgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcG9zZSB0aGUgdG9vbHRpcFxuICAgKi9cbiAgY2xlYXJUb29sdGlwKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbHRpcC5kaXNwb3NlKCk7XG4gICAgdGhpcy50b29sdGlwID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1Rvb2x0aXAoZXZlbnQ6IENlbGxFdmVudCkge1xuICAgIGNvbnN0IGNlbGw6IEhUTUxFbGVtZW50ID0gZXZlbnQuZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHRleHRPdmVyZmxvdyA9IGNlbGwub2Zmc2V0V2lkdGggPCBjZWxsLnNjcm9sbFdpZHRoO1xuICAgIGlmICh0ZXh0T3ZlcmZsb3cpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY2VsbCwgdmFsdWU6IGNlbGwuaW5uZXJUZXh0IH07XG4gICAgICBpc05pbCh0aGlzLnRvb2x0aXApID8gdGhpcy5jcmVhdGVBbmRTaG93VG9vbHRpcChwYXJhbXMpIDogdGhpcy51cGRhdGVUb29sdGlwKHBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbmRTaG93VG9vbHRpcCh7IGNlbGwsIHZhbHVlIH0pIHtcbiAgICB0aGlzLnRvb2x0aXAgPSBuZXcgVG9vbHRpcChjZWxsLCB7XG4gICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgY29udGFpbmVyOiBkb2N1bWVudC5ib2R5LFxuICAgICAgdHJpZ2dlcjogJ21hbnVhbCcsXG4gICAgICB0aXRsZTogRE9NUHVyaWZ5LnNhbml0aXplKHZhbHVlKSxcbiAgICAgIGh0bWw6IHRydWUsXG4gICAgICBwb3BwZXJPcHRpb25zOiB7XG4gICAgICAgIG1vZGlmaWVyczoge1xuICAgICAgICAgIHByZXZlbnRPdmVyZmxvdzogeyBlbmFibGVkOiBmYWxzZSB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0ZW1wbGF0ZTpcbiAgICAgICAgJzxkaXYgY2xhc3M9XCJ0b29sdGlwIGRhdG8tdG9vbHRpcCBjb21tb24tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+PGRpdiBjbGFzcz1cInRvb2x0aXAtYXJyb3dcIj48L2Rpdj48ZGl2IGNsYXNzPVwidG9vbHRpcC1pbm5lclwiPjwvZGl2PjwvZGl2PidcbiAgICB9KTtcblxuICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB0b29sdGlwIGVsZW1lbnQgcmVmIGFuZCBjb250ZW50XG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXAoeyBjZWxsLCB2YWx1ZSB9KTogdm9pZCB7XG4gICAgaWYgKGNlbGwgIT09IHRoaXMudG9vbHRpcC5yZWZlcmVuY2UpIHtcbiAgICAgIHRoaXMudG9vbHRpcC5yZWZlcmVuY2UgPSBjZWxsO1xuICAgICAgdGhpcy50b29sdGlwLnBvcHBlckluc3RhbmNlLnJlZmVyZW5jZSA9IGNlbGw7XG4gICAgICB0aGlzLnRvb2x0aXAudXBkYXRlVGl0bGVDb250ZW50KHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy50b29sdGlwLnNob3coKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT25Ib3ZlckVsZW1lbnQoKSB7XG4gICAgdGhpcy5yb3dIb3ZlckNvbXBvbmVudCA9IGNyZWF0ZUNvbXBvbmVudDxEYXRvR3JpZE9uSG92ZXJDb21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudDogRGF0b0dyaWRPbkhvdmVyQ29tcG9uZW50LFxuICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsXG4gICAgICByZXNvbHZlcjogdGhpcy5yZXNvbHZlclxuICAgIH0pO1xuICAgIGNvbnN0IHsgaW5zdGFuY2UsIGhvc3RWaWV3IH0gPSB0aGlzLnJvd0hvdmVyQ29tcG9uZW50O1xuICAgIGluc3RhbmNlLmNvbmZpZyA9IHsgLi4udGhpcy5ncmlkT3B0aW9ucy5ob3ZlckNvbmZpZywgYWN0aW9uczogdGhpcy5yb3dBY3Rpb25zLnNsaWNlKCkgfTtcbiAgICBob3N0Vmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgYXBwZW5kQ2hpbGQodGhpcy5ncmlkRWxlbWVudHMuY2VudGVyQ29udGFpbmVyLCB0aGlzLnJvd0hvdmVyRWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcm93SG92ZXJFbCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dIb3ZlckNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPbkhvdmVyU3RhdGUodmlzaWJsZTogYm9vbGVhbiwgZXZlbnQ/OiBDZWxsTW91c2VPdXRFdmVudCkge1xuICAgIGNvbnN0IHsgaW5zdGFuY2UgfSA9IHRoaXMucm93SG92ZXJDb21wb25lbnQ7XG4gICAgaWYgKHZpc2libGUpIHtcbiAgICAgIGluc3RhbmNlLnNob3coZXZlbnQpO1xuICAgICAgdGhpcy51cGRhdGVPbkhvdmVyUG9zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU9uSG92ZXJQb3MoKSB7XG4gICAgY29uc3QgeyBjZW50ZXJWaWV3cG9ydCwgY2VudGVyQ29udGFpbmVyIH0gPSB0aGlzLmdyaWRFbGVtZW50cztcbiAgICBjb25zdCB0YXJnZXQgPSBjZW50ZXJDb250YWluZXIuY2xpZW50V2lkdGggPiBjZW50ZXJWaWV3cG9ydC5jbGllbnRXaWR0aCA/IGNlbnRlclZpZXdwb3J0IDogY2VudGVyQ29udGFpbmVyO1xuICAgIGNvbnN0IHsgY2xpZW50V2lkdGgsIHNjcm9sbExlZnQgfSA9IHRhcmdldDtcbiAgICB0aGlzLnJvd0hvdmVyQ29tcG9uZW50Lmluc3RhbmNlLnVwZGF0ZVNjcm9sbFBvcyhjbGllbnRXaWR0aCArIHNjcm9sbExlZnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVSb3dIb3ZlckNsYXNzKHJvd3M6IEhUTUxFbGVtZW50IHwgSFRNTEVsZW1lbnRbXSkge1xuICAgIGNvZXJjZUFycmF5KHJvd3MpLmZvckVhY2gocm93ID0+IHJvdyAmJiByb3cuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aW9ucy1ob3ZlcmVkJykpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckdyaWRLZXlib2FyZExpc3RlbmVyKHsgZ3JpZCwgY29sdW1ucyB9OiBEYXRvR3JpZEFwaSkge1xuICAgIHRoaXMuaG90a2V5c1xuICAgICAgLmFkZFNob3J0Y3V0KHtcbiAgICAgICAgZWxlbWVudDogdGhpcy5hZ0dyaWRFbCxcbiAgICAgICAga2V5czogJ21ldGEuYScsXG4gICAgICAgIGlnbm9yZUluRWRpdGFibGU6IHRydWVcbiAgICAgIH0pXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNlbGVjdEFsbEN1cnJlbnRQYWdlUm93cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyV2luZG93UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmdyaWRRdWVyeS5ncmlkQWxpZ25tZW50ICE9PSBEYXRvR3JpZEFsaWdubWVudC5DVVNUT00pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpdFRvID0gdGhpcy5ncmlkUXVlcnkuZ3JpZEFsaWdubWVudCA9PT0gRGF0b0dyaWRBbGlnbm1lbnQuRklUX1RPX0NPTlRBSU5FUiA/ICdjb250YWluZXInIDogJ2NvbnRlbnQnO1xuICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmZpdEdyaWQoZml0VG8pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEdyaWREYXRhKCkge1xuICAgIGNvbnN0IGdyaWRNb2RlbCA9IHRoaXMuZ3JpZFNlcnZpY2UuYXBpLmdyaWQuZ2V0TW9kZWwoKSBhcyBhbnk7XG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMudHJlZURhdGEpIHtcbiAgICAgIGNvbnN0IGdyaWREYXRhID0gZ3JpZE1vZGVsLnJvd3NUb0Rpc3BsYXkubWFwKCh7IGRhdGEgfSkgPT4gZGF0YSk7XG4gICAgICByZXR1cm4gY29udmVydEZyb21UcmVlRGF0YShncmlkRGF0YSwgdGhpcy5ncmlkU2VydmljZS50cmVlQ29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdyaWRNb2RlbC5yb3dzVG9EaXNwbGF5O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJFdmVudHNUcmlnZ2VyaW5nQ2xlYXJTZWxlY3RlZFJvd3MoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBjb25zdCBldmVudHMkID0gdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTaWRlXG4gICAgICA/IG1lcmdlKGFnR3JpZC5zb3J0Q2hhbmdlZCwgYWdHcmlkLmZpbHRlckNoYW5nZWQpXG4gICAgICA6IGFnR3JpZC5maWx0ZXJDaGFuZ2VkO1xuICAgIChldmVudHMkIGFzIE9ic2VydmFibGU8YW55PikucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZGVzZWxlY3RBbGxSb3dzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyUGFnaW5hdGlvbkNoYW5nZWQoYWdHcmlkOiBBZ0dyaWROZzIpIHtcbiAgICBpZiAoIXRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2lkZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhZ0dyaWQucGFnaW5hdGlvbkNoYW5nZWQucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyaWRRdWVyeS5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKSB7XG4gICAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2VsZWN0QWxsQ3VycmVudFBhZ2VSb3dzKHRydWUsIHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -46,8 +46,10 @@ export function validateNumberCondition(unparsedRowValue, { condition, value, ra
|
|
|
46
46
|
case DatoFilterConditions.IN_RANGE:
|
|
47
47
|
return rowValue >= filterValue && rowValue <= parseFloat(rangeEnd);
|
|
48
48
|
case DatoFilterConditions.IS_EMPTY:
|
|
49
|
+
case DatoFilterConditions.IS_NULL:
|
|
49
50
|
return isNil(rowValue);
|
|
50
51
|
case DatoFilterConditions.NOT_EMPTY:
|
|
52
|
+
case DatoFilterConditions.NOT_NULL:
|
|
51
53
|
return !isNil(rowValue);
|
|
52
54
|
}
|
|
53
55
|
}
|
|
@@ -123,4 +125,4 @@ function getRowPivotKeys(childrenMapped, keys = []) {
|
|
|
123
125
|
}
|
|
124
126
|
return keys;
|
|
125
127
|
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1maWx0ZXIvZmlsdGVyLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQXNCLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxRQUFnQixFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7SUFDekYsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pFLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ25FLFFBQVEsU0FBUyxFQUFFO1FBQ2pCLEtBQUssb0JBQW9CLENBQUMsTUFBTTtZQUM5QixPQUFPLGNBQWMsS0FBSyxtQkFBbUIsQ0FBQztRQUNoRCxLQUFLLG9CQUFvQixDQUFDLFVBQVU7WUFDbEMs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aUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FDMUUsQ0FBQzthQUNIO1lBQ0QsSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFO2dCQUMzQixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDeEQsWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEtBQUssb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO2FBQ3BHO1lBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDakIsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLGNBQTRCLEVBQUUsSUFBSSxHQUFHLEVBQUU7SUFDOUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQVcsQ0FBQztJQUVyRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQyxJQUFJLFNBQVMsRUFBRTtRQUNiLElBQUksR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDekU7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmlkQXBpLCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgRGF0b0ZpbHRlckNvbmRpdGlvbnMsIERhdG9HcmlkRmlsdGVyc01hcCwgRGF0b0dyaWRGaWx0ZXJUeXBlcyB9IGZyb20gJy4vZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgT3BlcmF0b3JUeXBlcyB9IGZyb20gJy4uLy4uL29wZXJhdG9yLXRvZ2dsZXIvb3BlcmF0b3ItdG9nZ2xlci50eXBlcyc7XG5pbXBvcnQgeyBlbmRPZkRheSwgaXNBZnRlciwgaXNCZWZvcmUsIGlzRXF1YWwsIHN0YXJ0T2ZEYXkgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBnZXRVVENEYXRlIH0gZnJvbSAnLi4vLi4vZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIudHlwZXMnO1xuaW1wb3J0IHsgaXNFbXB0eSwgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IGlzQXJyYXlWYWx1ZXNFcXVhbCB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuaW1wb3J0IHsgdHJ5UGFyc2VQaXZvdFZhbHVlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU3RyaW5nQ29uZGl0aW9uKHJvd1ZhbHVlOiBzdHJpbmcsIHsgY29uZGl0aW9uLCB2YWx1ZTogZmlsdGVyVmFsdWUgfSk6IGJvb2xlYW4ge1xuICBjb25zdCBmaWx0ZXJUZXh0TG93ZXJDYXNlID0gZmlsdGVyVmFsdWUgPyBmaWx0ZXJWYWx1ZS50b0xvd2VyQ2FzZSgpIDogJyc7XG4gIGNvbnN0IHZhbHVlTG93ZXJDYXNlID0gcm93VmFsdWUgPyBgJHtyb3dWYWx1ZX1gLnRvTG93ZXJDYXNlKCkgOiAnJztcbiAgc3dpdGNoIChjb25kaXRpb24pIHtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLkVRVUFMUzpcbiAgICAgIHJldHVybiB2YWx1ZUxvd2VyQ2FzZSA9PT0gZmlsdGVyVGV4dExvd2VyQ2FzZTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLk5PVF9FUVVBTFM6XG4gICAgICByZXR1cm4gdmFsdWVMb3dlckNhc2UgIT09IGZpbHRlclRleHRMb3dlckNhc2U7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5DT05UQUlOUzpcbiAgICAgIHJldHVybiB2YWx1ZUxvd2VyQ2FzZS5pbmRleE9mKGZpbHRlclRleHRMb3dlckNhc2UpID4gLTE7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5OT1RfQ09OVEFJTlM6XG4gICAgICByZXR1cm4gdmFsdWVMb3dlckNhc2UuaW5kZXhPZihmaWx0ZXJUZXh0TG93ZXJDYXNlKSA9PT0gLTE7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5TVEFSVFNfV0lUSDpcbiAgICAgIHJldHVybiB2YWx1ZUxvd2VyQ2FzZS5zdGFydHNXaXRoKGZpbHRlclRleHRMb3dlckNhc2UpO1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuRU5EU19XSVRIOlxuICAgICAgcmV0dXJuIHZhbHVlTG93ZXJDYXNlLmVuZHNXaXRoKGZpbHRlclRleHRMb3dlckNhc2UpO1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuSVNfRU1QVFk6XG4gICAgICByZXR1cm4gaXNFbXB0eSh2YWx1ZUxvd2VyQ2FzZSk7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5OT1RfRU1QVFk6XG4gICAgICByZXR1cm4gIWlzRW1wdHkodmFsdWVMb3dlckNhc2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU51bWJlckNvbmRpdGlvbih1bnBhcnNlZFJvd1ZhbHVlLCB7IGNvbmRpdGlvbiwgdmFsdWUsIHJhbmdlRW5kIH0sIGZpbHRlcktleSA9ICcnKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJvd1ZhbHVlID0gISF1bnBhcnNlZFJvd1ZhbHVlID8gcGFyc2VGbG9hdCh1bnBhcnNlZFJvd1ZhbHVlW2ZpbHRlcktleV0gfHwgdW5wYXJzZWRSb3dWYWx1ZSkgOiBudWxsO1xuICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuRVFVQUxTOlxuICAgICAgcmV0dXJuIHJvd1ZhbHVlID09PSBmaWx0ZXJWYWx1ZTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLk5PVF9FUVVBTFM6XG4gICAgICByZXR1cm4gcm93VmFsdWUgIT09IGZpbHRlclZhbHVlO1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuTEVTU19USEFOOlxuICAgICAgcmV0dXJuIHJvd1ZhbHVlIDwgZmlsdGVyVmFsdWU7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5MRVNTX0VRVUFMUzpcbiAgICAgIHJldHVybiByb3dWYWx1ZSA8PSBmaWx0ZXJWYWx1ZTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLkdSRUFURVJfVEhBTjpcbiAgICAgIHJldHVybiByb3dWYWx1ZSA+IGZpbHRlclZhbHVlO1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuR1JFQVRFUl9FUVVBTFM6XG4gICAgICByZXR1cm4gcm93VmFsdWUgPj0gZmlsdGVyVmFsdWU7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5JTl9SQU5HRTpcbiAgICAgIHJldHVybiByb3dWYWx1ZSA+PSBmaWx0ZXJWYWx1ZSAmJiByb3dWYWx1ZSA8PSBwYXJzZUZsb2F0KHJhbmdlRW5kKTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLklTX0VNUFRZOlxuICAgICAgcmV0dXJuIGlzTmlsKHJvd1ZhbHVlKTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLk5PVF9FTVBUWTpcbiAgICAgIHJldHVybiAhaXNOaWwocm93VmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURhdGVDb25kaXRpb24ocm93VmFsdWUsIHsgY29uZGl0aW9uLCB2YWx1ZSwgcmFuZ2VFbmQgfSk6IGJvb2xlYW4ge1xuICBjb25zdCByb3dEYXRlID0gcm93VmFsdWUgPyBnZXRVVENEYXRlKHN0YXJ0T2ZEYXkobmV3IERhdGUocm93VmFsdWUpKSkgOiBudWxsO1xuICBjb25zdCBmaWx0ZXJEYXRlID0gZ2V0VVRDRGF0ZShuZXcgRGF0ZSh2YWx1ZSkpO1xuICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuRVFVQUxTOlxuICAgICAgcmV0dXJuIGlzRXF1YWwocm93RGF0ZSwgZmlsdGVyRGF0ZSk7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5OT1RfRVFVQUxTOlxuICAgICAgcmV0dXJuICFpc0VxdWFsKHJvd0RhdGUsIGZpbHRlckRhdGUpO1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuR1JFQVRFUl9USEFOOlxuICAgICAgcmV0dXJuIGlzQWZ0ZXIocm93RGF0ZSwgZmlsdGVyRGF0ZSk7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5MRVNTX1RIQU46XG4gICAgICByZXR1cm4gaXNCZWZvcmUocm93RGF0ZSwgZmlsdGVyRGF0ZSk7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5JTl9SQU5HRTpcbiAgICAgIGNvbnN0IHJhbmdlRGF0ZSA9IGdldFVUQ0RhdGUoZW5kT2ZEYXkobmV3IERhdGUocmFuZ2VFbmQpKSk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBpc0VxdWFsKHJvd0RhdGUsIGZpbHRlckRhdGUpIHx8XG4gICAgICAgIGlzRXF1YWwocm93RGF0ZSwgcmFuZ2VEYXRlKSB8fFxuICAgICAgICAoaXNBZnRlcihyb3dEYXRlLCBmaWx0ZXJEYXRlKSAmJiBpc0JlZm9yZShyb3dEYXRlLCByYW5nZURhdGUpKVxuICAgICAgKTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLklTX0VNUFRZOlxuICAgICAgcmV0dXJuIGlzTmlsKHJvd1ZhbHVlKTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLk5PVF9FTVBUWTpcbiAgICAgIHJldHVybiAhaXNOaWwocm93VmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvbmRpdGlvbih7IHJvd1ZhbHVlLCBjb25kaXRpb24sIHR5cGUsIGZpbHRlcktleSB9KTogYm9vbGVhbiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRGF0b0dyaWRGaWx0ZXJUeXBlcy5EYXRlOlxuICAgICAgcmV0dXJuIHZhbGlkYXRlRGF0ZUNvbmRpdGlvbihyb3dWYWx1ZSwgY29uZGl0aW9uKTtcbiAgICBjYXNlIERhdG9HcmlkRmlsdGVyVHlwZXMuTnVtYmVyOlxuICAgICAgcmV0dXJuIHZhbGlkYXRlTnVtYmVyQ29uZGl0aW9uKHJvd1ZhbHVlLCBjb25kaXRpb24sIGZpbHRlcktleSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2YWxpZGF0ZVN0cmluZ0NvbmRpdGlvbihyb3dWYWx1ZSwgY29uZGl0aW9uKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWx0ZXIoXG4gIHsgcm93LCBhcGkgfTogeyByb3c6IFJvd05vZGU7IGFwaTogR3JpZEFwaSB9LFxuICBhY3RpdmVGaWx0ZXJzOiBEYXRvR3JpZEZpbHRlcnNNYXBcbik6IGJvb2xlYW4ge1xuICBpZiAoYWN0aXZlRmlsdGVycykge1xuICAgIGNvbnN0IG9yZGVyZWRGaWx0ZXJzID0gT2JqZWN0LmtleXMoYWN0aXZlRmlsdGVycyk7XG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2Ygb3JkZXJlZEZpbHRlcnMpIHtcbiAgICAgIGxldCBmaWx0ZXJQYXNzZXMgPSB0cnVlO1xuICAgICAgY29uc3QgeyBieVZhbHVlLCBjb25kaXRpb25hbCwgcGl2b3RLZXlzIH0gPSBhY3RpdmVGaWx0ZXJzW2ZpbHRlcl07XG4gICAgICBjb25zdCBjdXJyZW50Um93UGl2b3RLZXlzID1cbiAgICAgICAgKHJvdy5wYXJlbnQgJiYgcm93LnBhcmVudC5jaGlsZHJlbk1hcHBlZCAmJiBnZXRSb3dQaXZvdEtleXMocm93LnBhcmVudC5jaGlsZHJlbk1hcHBlZCkpIHx8IFtdO1xuICAgICAgY29uc3Qgcm93VmFsdWUgPSBhcGkuZ2V0VmFsdWUoZmlsdGVyLCByb3cpO1xuXG4gICAgICAvKiogSWYgdmFsdWUgaXMgdW5kZXIgYSBwaXZvdGVkIGNvbHVtbiBidXQgZG9lc24ndCBtYXRjaCB0aGUgZmlsdGVyIHBpdm90ICovXG4gICAgICBpZiAocGl2b3RLZXlzICYmIHBpdm90S2V5cy5sZW5ndGggPiAwICYmICFpc0FycmF5VmFsdWVzRXF1YWwocGl2b3RLZXlzLCBjdXJyZW50Um93UGl2b3RLZXlzKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmRpdGlvbmFsKSB7XG4gICAgICAgIGNvbnN0IHsgb3BlcmF0b3IsIGNvbmRpdGlvbnMsIHR5cGUgfSA9IGNvbmRpdGlvbmFsO1xuICAgICAgICBjb25zdCBjb25kaXRpb25zUmVsYXRpb24gPSBvcGVyYXRvciA9PT0gT3BlcmF0b3JUeXBlcy5BTkQgPyAnZXZlcnknIDogJ3NvbWUnO1xuICAgICAgICBmaWx0ZXJQYXNzZXMgPSBjb25kaXRpb25zW2NvbmRpdGlvbnNSZWxhdGlvbl0oY29uZGl0aW9uID0+XG4gICAgICAgICAgdmFsaWRhdGVDb25kaXRpb24oeyByb3dWYWx1ZSwgY29uZGl0aW9uLCB0eXBlOiB0eXBlLCBmaWx0ZXJLZXk6IGZpbHRlciB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGZpbHRlclBhc3NlcyAmJiBieVZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVzVmFsdWUgPSBieVZhbHVlLnZhbHVlcy5pbmNsdWRlcyhyb3dWYWx1ZSk7XG4gICAgICAgIGZpbHRlclBhc3NlcyA9IGJ5VmFsdWUuY29uZGl0aW9uID09PSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5JTl9MSVNUID8gaW5jbHVkZXNWYWx1ZSA6ICFpbmNsdWRlc1ZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKCFmaWx0ZXJQYXNzZXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEdldCBwaXZvdCBrZXlzIGZyb20gYSByb3cgcGFyZW50XG4gKi9cbmZ1bmN0aW9uIGdldFJvd1Bpdm90S2V5cyhjaGlsZHJlbk1hcHBlZDogSGFzaE1hcDxhbnk+LCBrZXlzID0gW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGNoaWxkcmVuTWFwcGVkKVswXSBhcyBzdHJpbmc7XG5cbiAgY29uc3QgcGFyc2VkS2V5ID0gdHJ5UGFyc2VQaXZvdFZhbHVlKGtleSk7XG5cbiAgaWYgKHBhcnNlZEtleSkge1xuICAgIGtleXMgPSBnZXRSb3dQaXZvdEtleXMoY2hpbGRyZW5NYXBwZWRba2V5XSwgWy4uLmtleXMsIHBhcnNlZEtleS52YWx1ZV0pO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG4iXX0=
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1maWx0ZXIvZmlsdGVyLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQXNCLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxRQUFnQixFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7SUFDekYsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pFLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ25FLFFBQVEsU0FBUyxFQUFFO1FBQ2pCLEtBQUssb0JBQW9CLENBQUMsTUFBTTtZQUM5QixPQUFPLGNBQWMsS0FBSyxtQkFBbUIsQ0FBQztRQUNoRCxLQUFLLG9CQUFvQixDQUFDLFVBQVU7WUFDbEMs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QzdFLFlBQVksR0FBRyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUN4RCxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FDMUUsQ0FBQzthQUNIO1lBQ0QsSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFO2dCQUMzQixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDeEQsWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEtBQUssb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO2FBQ3BHO1lBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDakIsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLGNBQTRCLEVBQUUsSUFBSSxHQUFHLEVBQUU7SUFDOUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQVcsQ0FBQztJQUVyRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQyxJQUFJLFNBQVMsRUFBRTtRQUNiLElBQUksR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDekU7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmlkQXBpLCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgRGF0b0ZpbHRlckNvbmRpdGlvbnMsIERhdG9HcmlkRmlsdGVyc01hcCwgRGF0b0dyaWRGaWx0ZXJUeXBlcyB9IGZyb20gJy4vZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgT3BlcmF0b3JUeXBlcyB9IGZyb20gJy4uLy4uL29wZXJhdG9yLXRvZ2dsZXIvb3BlcmF0b3ItdG9nZ2xlci50eXBlcyc7XG5pbXBvcnQgeyBlbmRPZkRheSwgaXNBZnRlciwgaXNCZWZvcmUsIGlzRXF1YWwsIHN0YXJ0T2ZEYXkgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBnZXRVVENEYXRlIH0gZnJvbSAnLi4vLi4vZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIudHlwZXMnO1xuaW1wb3J0IHsgaXNFbXB0eSwgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IGlzQXJyYXlWYWx1ZXNFcXVhbCB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5JztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuaW1wb3J0IHsgdHJ5UGFyc2VQaXZvdFZhbHVlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU3RyaW5nQ29uZGl0aW9uKHJvd1ZhbHVlOiBzdHJpbmcsIHsgY29uZGl0aW9uLCB2YWx1ZTogZmlsdGVyVmFsdWUgfSk6IGJvb2xlYW4ge1xuICBjb25zdCBmaWx0ZXJUZXh0TG93ZXJDYXNlID0gZmlsdGVyVmFsdWUgPyBmaWx0ZXJWYWx1ZS50b0xvd2VyQ2FzZSgpIDogJyc7XG4gIGNvbnN0IHZhbHVlTG93ZXJDYXNlID0gcm93VmFsdWUgPyBgJHtyb3dWYWx1ZX1gLnRvTG93ZXJDYXNlKCkgOiAnJztcbiAgc3dpdGNoIChjb25kaXRpb24pIHtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLkVRVUFMUzpcbiAgICAgIHJldHVybiB2YWx1ZUxvd2VyQ2FzZSA9PT0gZmlsdGVyVGV4dExvd2VyQ2FzZTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLk5PVF9FUVVBTFM6XG4gICAgICByZXR1cm4gdmFsdWVMb3dlckNhc2UgIT09IGZpbHRlclRleHRMb3dlckNhc2U7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5DT05UQUlOUzpcbiAgICAgIHJldHVybiB2YWx1ZUxvd2VyQ2FzZS5pbmRleE9mKGZpbHRlclRleHRMb3dlckNhc2UpID4gLTE7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5OT1RfQ09OVEFJTlM6XG4gICAgICByZXR1cm4gdmFsdWVMb3dlckNhc2UuaW5kZXhPZihmaWx0ZXJUZXh0TG93ZXJDYXNlKSA9PT0gLTE7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5TVEFSVFNfV0lUSDpcbiAgICAgIHJldHVybiB2YWx1ZUxvd2VyQ2FzZS5zdGFydHNXaXRoKGZpbHRlclRleHRMb3dlckNhc2UpO1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuRU5EU19XSVRIOlxuICAgICAgcmV0dXJuIHZhbHVlTG93ZXJDYXNlLmVuZHNXaXRoKGZpbHRlclRleHRMb3dlckNhc2UpO1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuSVNfRU1QVFk6XG4gICAgICByZXR1cm4gaXNFbXB0eSh2YWx1ZUxvd2VyQ2FzZSk7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5OT1RfRU1QVFk6XG4gICAgICByZXR1cm4gIWlzRW1wdHkodmFsdWVMb3dlckNhc2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU51bWJlckNvbmRpdGlvbih1bnBhcnNlZFJvd1ZhbHVlLCB7IGNvbmRpdGlvbiwgdmFsdWUsIHJhbmdlRW5kIH0sIGZpbHRlcktleSA9ICcnKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJvd1ZhbHVlID0gISF1bnBhcnNlZFJvd1ZhbHVlID8gcGFyc2VGbG9hdCh1bnBhcnNlZFJvd1ZhbHVlW2ZpbHRlcktleV0gfHwgdW5wYXJzZWRSb3dWYWx1ZSkgOiBudWxsO1xuICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuRVFVQUxTOlxuICAgICAgcmV0dXJuIHJvd1ZhbHVlID09PSBmaWx0ZXJWYWx1ZTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLk5PVF9FUVVBTFM6XG4gICAgICByZXR1cm4gcm93VmFsdWUgIT09IGZpbHRlclZhbHVlO1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuTEVTU19USEFOOlxuICAgICAgcmV0dXJuIHJvd1ZhbHVlIDwgZmlsdGVyVmFsdWU7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5MRVNTX0VRVUFMUzpcbiAgICAgIHJldHVybiByb3dWYWx1ZSA8PSBmaWx0ZXJWYWx1ZTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLkdSRUFURVJfVEhBTjpcbiAgICAgIHJldHVybiByb3dWYWx1ZSA+IGZpbHRlclZhbHVlO1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuR1JFQVRFUl9FUVVBTFM6XG4gICAgICByZXR1cm4gcm93VmFsdWUgPj0gZmlsdGVyVmFsdWU7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5JTl9SQU5HRTpcbiAgICAgIHJldHVybiByb3dWYWx1ZSA+PSBmaWx0ZXJWYWx1ZSAmJiByb3dWYWx1ZSA8PSBwYXJzZUZsb2F0KHJhbmdlRW5kKTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLklTX0VNUFRZOlxuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuSVNfTlVMTDpcbiAgICAgIHJldHVybiBpc05pbChyb3dWYWx1ZSk7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5OT1RfRU1QVFk6XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5OT1RfTlVMTDpcbiAgICAgIHJldHVybiAhaXNOaWwocm93VmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURhdGVDb25kaXRpb24ocm93VmFsdWUsIHsgY29uZGl0aW9uLCB2YWx1ZSwgcmFuZ2VFbmQgfSk6IGJvb2xlYW4ge1xuICBjb25zdCByb3dEYXRlID0gcm93VmFsdWUgPyBnZXRVVENEYXRlKHN0YXJ0T2ZEYXkobmV3IERhdGUocm93VmFsdWUpKSkgOiBudWxsO1xuICBjb25zdCBmaWx0ZXJEYXRlID0gZ2V0VVRDRGF0ZShuZXcgRGF0ZSh2YWx1ZSkpO1xuICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuRVFVQUxTOlxuICAgICAgcmV0dXJuIGlzRXF1YWwocm93RGF0ZSwgZmlsdGVyRGF0ZSk7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5OT1RfRVFVQUxTOlxuICAgICAgcmV0dXJuICFpc0VxdWFsKHJvd0RhdGUsIGZpbHRlckRhdGUpO1xuICAgIGNhc2UgRGF0b0ZpbHRlckNvbmRpdGlvbnMuR1JFQVRFUl9USEFOOlxuICAgICAgcmV0dXJuIGlzQWZ0ZXIocm93RGF0ZSwgZmlsdGVyRGF0ZSk7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5MRVNTX1RIQU46XG4gICAgICByZXR1cm4gaXNCZWZvcmUocm93RGF0ZSwgZmlsdGVyRGF0ZSk7XG4gICAgY2FzZSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5JTl9SQU5HRTpcbiAgICAgIGNvbnN0IHJhbmdlRGF0ZSA9IGdldFVUQ0RhdGUoZW5kT2ZEYXkobmV3IERhdGUocmFuZ2VFbmQpKSk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBpc0VxdWFsKHJvd0RhdGUsIGZpbHRlckRhdGUpIHx8XG4gICAgICAgIGlzRXF1YWwocm93RGF0ZSwgcmFuZ2VEYXRlKSB8fFxuICAgICAgICAoaXNBZnRlcihyb3dEYXRlLCBmaWx0ZXJEYXRlKSAmJiBpc0JlZm9yZShyb3dEYXRlLCByYW5nZURhdGUpKVxuICAgICAgKTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLklTX0VNUFRZOlxuICAgICAgcmV0dXJuIGlzTmlsKHJvd1ZhbHVlKTtcbiAgICBjYXNlIERhdG9GaWx0ZXJDb25kaXRpb25zLk5PVF9FTVBUWTpcbiAgICAgIHJldHVybiAhaXNOaWwocm93VmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvbmRpdGlvbih7IHJvd1ZhbHVlLCBjb25kaXRpb24sIHR5cGUsIGZpbHRlcktleSB9KTogYm9vbGVhbiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRGF0b0dyaWRGaWx0ZXJUeXBlcy5EYXRlOlxuICAgICAgcmV0dXJuIHZhbGlkYXRlRGF0ZUNvbmRpdGlvbihyb3dWYWx1ZSwgY29uZGl0aW9uKTtcbiAgICBjYXNlIERhdG9HcmlkRmlsdGVyVHlwZXMuTnVtYmVyOlxuICAgICAgcmV0dXJuIHZhbGlkYXRlTnVtYmVyQ29uZGl0aW9uKHJvd1ZhbHVlLCBjb25kaXRpb24sIGZpbHRlcktleSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2YWxpZGF0ZVN0cmluZ0NvbmRpdGlvbihyb3dWYWx1ZSwgY29uZGl0aW9uKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWx0ZXIoXG4gIHsgcm93LCBhcGkgfTogeyByb3c6IFJvd05vZGU7IGFwaTogR3JpZEFwaSB9LFxuICBhY3RpdmVGaWx0ZXJzOiBEYXRvR3JpZEZpbHRlcnNNYXBcbik6IGJvb2xlYW4ge1xuICBpZiAoYWN0aXZlRmlsdGVycykge1xuICAgIGNvbnN0IG9yZGVyZWRGaWx0ZXJzID0gT2JqZWN0LmtleXMoYWN0aXZlRmlsdGVycyk7XG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2Ygb3JkZXJlZEZpbHRlcnMpIHtcbiAgICAgIGxldCBmaWx0ZXJQYXNzZXMgPSB0cnVlO1xuICAgICAgY29uc3QgeyBieVZhbHVlLCBjb25kaXRpb25hbCwgcGl2b3RLZXlzIH0gPSBhY3RpdmVGaWx0ZXJzW2ZpbHRlcl07XG4gICAgICBjb25zdCBjdXJyZW50Um93UGl2b3RLZXlzID1cbiAgICAgICAgKHJvdy5wYXJlbnQgJiYgcm93LnBhcmVudC5jaGlsZHJlbk1hcHBlZCAmJiBnZXRSb3dQaXZvdEtleXMocm93LnBhcmVudC5jaGlsZHJlbk1hcHBlZCkpIHx8IFtdO1xuICAgICAgY29uc3Qgcm93VmFsdWUgPSBhcGkuZ2V0VmFsdWUoZmlsdGVyLCByb3cpO1xuXG4gICAgICAvKiogSWYgdmFsdWUgaXMgdW5kZXIgYSBwaXZvdGVkIGNvbHVtbiBidXQgZG9lc24ndCBtYXRjaCB0aGUgZmlsdGVyIHBpdm90ICovXG4gICAgICBpZiAocGl2b3RLZXlzICYmIHBpdm90S2V5cy5sZW5ndGggPiAwICYmICFpc0FycmF5VmFsdWVzRXF1YWwocGl2b3RLZXlzLCBjdXJyZW50Um93UGl2b3RLZXlzKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmRpdGlvbmFsKSB7XG4gICAgICAgIGNvbnN0IHsgb3BlcmF0b3IsIGNvbmRpdGlvbnMsIHR5cGUgfSA9IGNvbmRpdGlvbmFsO1xuICAgICAgICBjb25zdCBjb25kaXRpb25zUmVsYXRpb24gPSBvcGVyYXRvciA9PT0gT3BlcmF0b3JUeXBlcy5BTkQgPyAnZXZlcnknIDogJ3NvbWUnO1xuICAgICAgICBmaWx0ZXJQYXNzZXMgPSBjb25kaXRpb25zW2NvbmRpdGlvbnNSZWxhdGlvbl0oY29uZGl0aW9uID0+XG4gICAgICAgICAgdmFsaWRhdGVDb25kaXRpb24oeyByb3dWYWx1ZSwgY29uZGl0aW9uLCB0eXBlOiB0eXBlLCBmaWx0ZXJLZXk6IGZpbHRlciB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGZpbHRlclBhc3NlcyAmJiBieVZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVzVmFsdWUgPSBieVZhbHVlLnZhbHVlcy5pbmNsdWRlcyhyb3dWYWx1ZSk7XG4gICAgICAgIGZpbHRlclBhc3NlcyA9IGJ5VmFsdWUuY29uZGl0aW9uID09PSBEYXRvRmlsdGVyQ29uZGl0aW9ucy5JTl9MSVNUID8gaW5jbHVkZXNWYWx1ZSA6ICFpbmNsdWRlc1ZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKCFmaWx0ZXJQYXNzZXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEdldCBwaXZvdCBrZXlzIGZyb20gYSByb3cgcGFyZW50XG4gKi9cbmZ1bmN0aW9uIGdldFJvd1Bpdm90S2V5cyhjaGlsZHJlbk1hcHBlZDogSGFzaE1hcDxhbnk+LCBrZXlzID0gW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGNoaWxkcmVuTWFwcGVkKVswXSBhcyBzdHJpbmc7XG5cbiAgY29uc3QgcGFyc2VkS2V5ID0gdHJ5UGFyc2VQaXZvdFZhbHVlKGtleSk7XG5cbiAgaWYgKHBhcnNlZEtleSkge1xuICAgIGtleXMgPSBnZXRSb3dQaXZvdEtleXMoY2hpbGRyZW5NYXBwZWRba2V5XSwgWy4uLmtleXMsIHBhcnNlZEtleS52YWx1ZV0pO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG4iXX0=
|