@mintplayer/ng-bootstrap 15.20.3 → 15.20.5
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/calendar/src/calendar.component.d.ts +2 -0
- package/carousel/src/carousel/carousel.component.d.ts +2 -0
- package/carousel/src/carousel-image/carousel-image.directive.d.ts +3 -1
- package/esm2020/calendar/src/calendar.component.mjs +9 -3
- package/esm2020/carousel/src/carousel/carousel.component.mjs +7 -3
- package/esm2020/carousel/src/carousel-image/carousel-image.directive.mjs +7 -4
- package/esm2020/file-upload/src/component/file-upload.component.mjs +7 -4
- package/esm2020/file-upload/src/file-upload.mjs +1 -1
- package/esm2020/multiselect/src/component/multiselect.component.mjs +8 -3
- package/esm2020/multiselect/src/directives/button-template/button-template.directive.mjs +1 -1
- package/esm2020/multiselect/src/directives/footer-template/footer-template.directive.mjs +1 -1
- package/esm2020/multiselect/src/directives/header-template/header-template.directive.mjs +1 -1
- package/esm2020/pagination/src/component/pagination/pagination.component.mjs +6 -3
- package/esm2020/rating/src/component/rating.component.mjs +6 -3
- package/esm2020/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs +1 -1
- package/esm2020/scheduler/src/components/scheduler/scheduler.component.mjs +2 -1
- package/esm2020/splitter/src/splitter/splitter.component.mjs +12 -7
- package/esm2020/splitter/src/splitter.module.mjs +5 -4
- package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs +8 -2
- package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs +10 -5
- package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs +6 -3
- package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs +7 -2
- package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs +5 -2
- package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-rating.mjs +5 -2
- package/fesm2015/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs +1 -0
- package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
- package/fesm2015/mintplayer-ng-bootstrap-splitter.mjs +14 -8
- package/fesm2015/mintplayer-ng-bootstrap-splitter.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs +8 -2
- package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs +10 -5
- package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs +6 -3
- package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs +7 -2
- package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs +5 -2
- package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-rating.mjs +5 -2
- package/fesm2020/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs +1 -0
- package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-splitter.mjs +14 -8
- package/fesm2020/mintplayer-ng-bootstrap-splitter.mjs.map +1 -1
- package/file-upload/src/component/file-upload.component.d.ts +1 -0
- package/file-upload/src/file-upload.d.ts +1 -0
- package/multiselect/src/component/multiselect.component.d.ts +9 -7
- package/multiselect/src/directives/button-template/button-template.directive.d.ts +4 -4
- package/multiselect/src/directives/footer-template/footer-template.directive.d.ts +4 -4
- package/multiselect/src/directives/header-template/header-template.directive.d.ts +4 -4
- package/package.json +1 -1
- package/pagination/src/component/pagination/pagination.component.d.ts +1 -0
- package/rating/src/component/rating.component.d.ts +1 -0
- package/scheduler/src/components/scheduler/scheduler.component.d.ts +1 -0
- package/splitter/src/splitter.module.d.ts +2 -1
|
@@ -27,6 +27,7 @@ export class BsSchedulerComponent {
|
|
|
27
27
|
this.hoveredTimeSlot$ = new BehaviorSubject(null);
|
|
28
28
|
this.hoveredEvent$ = new BehaviorSubject(null);
|
|
29
29
|
this.destroyed$ = new Subject();
|
|
30
|
+
this.resourceGroupPresenterCounter = 1;
|
|
30
31
|
//#region Mode
|
|
31
32
|
this.modes = ESchedulerMode;
|
|
32
33
|
this.mode$ = new BehaviorSubject(ESchedulerMode.week);
|
|
@@ -535,4 +536,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
535
536
|
type: HostListener,
|
|
536
537
|
args: ['document:mouseup', ['$event']]
|
|
537
538
|
}] } });
|
|
538
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9jb21wb25lbnRzL3NjaGVkdWxlci9zY2hlZHVsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zY2hlZHVsZXIvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGVyL3NjaGVkdWxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU81RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7OztBQVk3RSxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW9CLG9CQUE0QyxFQUFVLGVBQWtDO1FBQXhGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBd0I7UUFBVSxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUE2SjVHLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBK0IsRUFBRSxDQUFDLENBQUM7UUFLbkUsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FB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QztnQ0FDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0NBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0NBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0NBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzZCQUMvQjt3QkFDSCxDQUFDLENBQUMsQ0FBQztxQkFDTjtvQkFBQyxNQUFNO2FBQ1Q7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7aUhBamhCVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixtaEJDdkJqQyw2ME9BNEdNOzJGRHJGTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsY0FBYzs2SUF3TEYsZ0JBQWdCO3NCQUFyQyxZQUFZO3VCQUFDLE1BQU07Z0JBd0JILFVBQVU7c0JBQTFCLE1BQU07Z0JBSWEsSUFBSTtzQkFBdkIsS0FBSztnQkFlVyxpQkFBaUI7c0JBQWpDLE1BQU07Z0JBSWEsV0FBVztzQkFBOUIsS0FBSztnQkFLVyxxQkFBcUI7c0JBQXJDLE1BQU07Z0JBSWEsZUFBZTtzQkFBbEMsS0FBSztnQkFLVSxjQUFjO3NCQUE3QixLQUFLO2dCQU1jLFNBQVM7c0JBQTVCLEtBQUs7Z0JBZ0pOLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkEyRjlDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnNDYWxlbmRhck1vbnRoU2VydmljZSB9IGZyb20gJ0BtaW50cGxheWVyL25nLWJvb3RzdHJhcC9jYWxlbmRhci1tb250aCc7XG5pbXBvcnQgeyBFU2NoZWR1bGVyTW9kZSB9IGZyb20gJy4uLy4uL2VudW1zL3NjaGVkdWxlci1tb2RlJztcbmltcG9ydCB7IEVEcmFnT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvZHJhZy1vcGVyYXRpb24nO1xuaW1wb3J0IHsgRHJhZ09wZXJhdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZHJhZy1vcGVyYXRpb24nO1xuaW1wb3J0IHsgUHJldmlld0V2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wcmV2aWV3LWV2ZW50JztcbmltcG9ydCB7IFNjaGVkdWxlckV2ZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnRQYXJ0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItZXZlbnQtcGFydCc7XG5pbXBvcnQgeyBTY2hlZHVsZXJFdmVudFdpdGhQYXJ0cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLWV2ZW50LXdpdGgtcGFydHMnO1xuaW1wb3J0IHsgVGltZVNsb3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3RpbWUtc2xvdCc7XG5pbXBvcnQgeyBCc1RpbWVsaW5lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpbWVsaW5lL3RpbWVsaW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVzb3VyY2UtZ3JvdXAnO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Jlc291cmNlJztcbmltcG9ydCB7IFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2hlZHVsZXItc3RhbXAtd2l0aC1zbG90cyc7XG5pbXBvcnQgeyBXZWVrT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2Vlay1vcHRpb25zJztcbmltcG9ydCB7IFRpbWVsaW5lT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGltZWxpbmUtb3B0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLXNjaGVkdWxlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2hlZHVsZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY2hlZHVsZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnNTY2hlZHVsZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhbGVuZGFyTW9udGhTZXJ2aWNlOiBCc0NhbGVuZGFyTW9udGhTZXJ2aWNlLCBwcml2YXRlIHRpbWVsaW5lU2VydmljZTogQnNUaW1lbGluZVNlcnZpY2UpIHtcbiAgICBjb25zdCBtb25kYXkgPSB0aGlzLmNhbGVuZGFyTW9udGhTZXJ2aWNlLmdldE1vbmRheUJlZm9yZShuZXcgRGF0ZSgpKTtcbiAgICB0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KG1vbmRheSk7XG5cbiAgICB0aGlzLnNob3duRGF5cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQsIHRoaXMubW9kZSRdKVxuICAgICAgLnBpcGUobWFwKChbY3VycmVudERheSwgbW9kZV0pID0+IHtcbiAgICAgICAgY3VycmVudERheS5zZXRIb3VycygwKTtcbiAgICAgICAgY3VycmVudERheS5zZXRNaW51dGVzKDApO1xuICAgICAgICBjdXJyZW50RGF5LnNldFNlY29uZHMoMCk7XG4gICAgICAgIGN1cnJlbnREYXkuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKEFycmF5KDcpLmtleXMoKSkubWFwKCh4KSA9PiB0aGlzLmFkZERheXMoY3VycmVudERheSwgeCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKGN1cnJlbnREYXkuZ2V0RnVsbFllYXIoKSwgY3VycmVudERheS5nZXRNb250aCgpLCAxKTtcbiAgICAgICAgICAgIGNvbnN0IGRheXNPZk1vbnRoID0gbmV3IERhdGUoY3VycmVudERheS5nZXRGdWxsWWVhcigpLCBjdXJyZW50RGF5LmdldE1vbnRoKCkgKyAxLCAwKS5nZXREYXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShBcnJheShkYXlzT2ZNb250aCkua2V5cygpKS5tYXAoKHgpID0+IHRoaXMuYWRkRGF5cyhmaXJzdERheSwgeCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5kYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkID0gdGhpcy5zaG93bkRheXMkXG4gICAgICAucGlwZShtYXAoKHNob3duRGF5cykgPT4gKHsgc3RhcnQ6IHNob3duRGF5c1swXS5nZXRUaW1lKCksIGVuZDogc2hvd25EYXlzW3Nob3duRGF5cy5sZW5ndGggLSAxXS5nZXRUaW1lKCkgKyAyNCAqIDYwICogNjAgKiAxMDAwIH0pKSk7XG4gICAgXG4gICAgdGhpcy5ldmVudHMkID0gdGhpcy5yZXNvdXJjZXMkXG4gICAgICAucGlwZShtYXAoKHJlc291cmNlc09yR3JvdXBzKSA9PiByZXNvdXJjZXNPckdyb3Vwcy5tYXAocmVzT3JHcm91cCA9PiB0aGlzLmdldFJlc291cmNlc0Zvckdyb3VwKHJlc09yR3JvdXApKSkpXG4gICAgICAucGlwZShtYXAoamFnZ2VkUmVzb3VyY2VzID0+IGphZ2dlZFJlc291cmNlcy5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pKSlcbiAgICAgIC5waXBlKG1hcChyZXNvdXJjZXMgPT4gcmVzb3VyY2VzLm1hcChyZXMgPT4gcmVzLmV2ZW50cykpKVxuICAgICAgLnBpcGUobWFwKGphZ2dlZEV2ZW50cyA9PiBqYWdnZWRFdmVudHMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKSkpO1xuXG4gICAgICAvLyBncm91cHMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbi5jaGlsZHJlbiksIFtdKVxuICAgIHRoaXMuZXZlbnRQYXJ0cyQgPSB0aGlzLmV2ZW50cyQucGlwZShcbiAgICAgIG1hcCgoZXZlbnRzKSA9PiAgZXZlbnRzLm1hcCgoZXYpID0+IHRoaXMudGltZWxpbmVTZXJ2aWNlLnNwbGl0SW5QYXJ0cyhldikpKVxuICAgICk7XG5cbiAgICB0aGlzLmV2ZW50UGFydHNGb3JUaGlzV2VlayQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJCxcbiAgICAgIHRoaXMuZXZlbnRQYXJ0cyRcbiAgICAgICAgLnBpcGUobWFwKGV2ZW50UGFydHMgPT4gZXZlbnRQYXJ0cy5tYXAoZXZwID0+IGV2cC5wYXJ0cykpKVxuICAgICAgICAucGlwZShtYXAoamFnZ2VkUGFydHMgPT4gIGphZ2dlZFBhcnRzLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSkpKVxuICAgICAgXSlcbiAgICAgIC5waXBlKG1hcCgoW3N0YXJ0QW5kRW5kLCBldmVudFBhcnRzXSkgPT4ge1xuICAgICAgICByZXR1cm4gZXZlbnRQYXJ0cy5maWx0ZXIoZXZlbnRQYXJ0ID0+IHtcbiAgICAgICAgICByZXR1cm4gISgoZXZlbnRQYXJ0LmVuZC5nZXRUaW1lKCkgPD0gc3RhcnRBbmRFbmQuc3RhcnQpIHx8IChldmVudFBhcnQuc3RhcnQuZ2V0VGltZSgpID49IHN0YXJ0QW5kRW5kLmVuZCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pKTtcblxuICAgIHRoaXMucHJldmlld0V2ZW50UGFydHMkID0gdGhpcy5wcmV2aWV3RXZlbnQkLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRpbWVsaW5lU2VydmljZS5zcGxpdEluUGFydHMoZXZlbnQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnByZXZpZXdFdmVudFBhcnRzRm9yVGhpc1dlZWskID0gY29tYmluZUxhdGVzdChbdGhpcy5kYXlzT2ZXZWVrV2l0aFRpbWVzdGFtcHMkLCB0aGlzLnByZXZpZXdFdmVudFBhcnRzJF0pXG4gICAgICAucGlwZShtYXAoKFtzdGFydEFuZEVuZCwgcHJldmlld0V2ZW50UGFydHNdKSA9PiB7XG4gICAgICAgIGlmIChwcmV2aWV3RXZlbnRQYXJ0cykge1xuICAgICAgICAgIHJldHVybiBwcmV2aWV3RXZlbnRQYXJ0cy5wYXJ0cy5maWx0ZXIoZXZlbnRQYXJ0ID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhKChldmVudFBhcnQuZW5kLmdldFRpbWUoKSA8PSBzdGFydEFuZEVuZC5zdGFydCkgfHwgKGV2ZW50UGFydC5zdGFydC5nZXRUaW1lKCkgPj0gc3RhcnRBbmRFbmQuZW5kKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnRpbWVsaW5lZEV2ZW50UGFydHNGb3JUaGlzV2VlayQgPSB0aGlzLmV2ZW50UGFydHNGb3JUaGlzV2VlayRcbiAgICAgIC5waXBlKG1hcChldmVudFBhcnRzID0+IHtcbiAgICAgICAgLy8gV2UnbGwgb25seSB1c2UgdGhlIGV2ZW50cyBmb3IgdGhpcyB3ZWVrXG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IGV2ZW50UGFydHMubWFwKGVwID0+IGVwLmV2ZW50KVxuICAgICAgICAgIC5maWx0ZXIoKGUsIGksIGxpc3QpID0+IGxpc3QuaW5kZXhPZihlKSA9PT0gaSlcbiAgICAgICAgICAuZmlsdGVyKChlKSA9PiAhIWUpXG4gICAgICAgICAgLm1hcCgoZSkgPT4gPFNjaGVkdWxlckV2ZW50PmUpO1xuICAgICAgICBjb25zdCB0aW1lbGluZSA9IHRoaXMudGltZWxpbmVTZXJ2aWNlLmdldFRpbWVsaW5lKGV2ZW50cyk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGltZWxpbmUubWFwKHRyYWNrID0+IHRyYWNrLmV2ZW50cy5tYXAoZXYgPT4gKHsgZXZlbnQ6IGV2LCBpbmRleDogdHJhY2suaW5kZXggfSkpKVxuICAgICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pXG4gICAgICAgICAgLm1hcCgoZXZpKSA9PiBldmVudFBhcnRzLmZpbHRlcihwID0+IHAuZXZlbnQgPT09IGV2aS5ldmVudCkubWFwKHAgPT4gKHsgcGFydDogcCwgaW5kZXg6IGV2aS5pbmRleCB9KSkpXG4gICAgICAgICAgLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0b3RhbDogdGltZWxpbmUubGVuZ3RoLFxuICAgICAgICAgIHBhcnRzOiByZXN1bHRcbiAgICAgICAgfTtcbiAgICAgIH0pKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubW9kZSQsIHRoaXMuc2hvd25EYXlzJCwgdGhpcy50aW1lU2xvdER1cmF0aW9uJF0pXG4gICAgICAucGlwZShmaWx0ZXIoKFttb2RlLCBzaG93bkRheXMsIGR1cmF0aW9uXSkgPT4gbW9kZSAhPT0gbnVsbCkpXG4gICAgICAucGlwZShtYXAoKFttb2RlLCBzaG93bkRheXMsIGR1cmF0aW9uXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVTbG90c1BlckRheSA9IE1hdGguZmxvb3IoKDYwICogNjAgKiAyNCkgLyBkdXJhdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShBcnJheSh0aW1lU2xvdHNQZXJEYXkpLmtleXMoKSkubWFwKChpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB0aW1lc2xvdEZvck1vbmRheSA9IHRoaXMuY3JlYXRlVGltZXNsb3Qoc2hvd25EYXlzWzBdLCBpbmRleCwgZHVyYXRpb24pO1xuXG4gICAgICAgICAgICAgIHJldHVybiA8U2NoZWR1bGVyU3RhbXBXaXRoU2xvdHM+e1xuICAgICAgICAgICAgICAgIHNsb3RzOiBzaG93bkRheXMubWFwKChkYXkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoZGF5KTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldEhvdXJzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldEhvdXJzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0TWludXRlcyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRNaW51dGVzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0U2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRTZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0TWlsbGlzZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LnN0YXJ0LmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgIFxuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gbmV3IERhdGUoZGF5KTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRIb3Vycyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0SG91cnMoKSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0TWludXRlcyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0TWludXRlcygpKTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRTZWNvbmRzKHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXRTZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldE1pbGxpc2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldERhdGUoZW5kLmdldERhdGUoKSArIHRpbWVzbG90Rm9yTW9uZGF5LmVuZC5nZXREYXRlKCkgLSB0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXREYXRlKCkpO1xuICAgICAgXG4gICAgICAgICAgICAgICAgICByZXR1cm4gPFRpbWVTbG90Pnsgc3RhcnQsIGVuZCB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YW1wOiB0aW1lc2xvdEZvck1vbmRheS5zdGFydFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgRVNjaGVkdWxlck1vZGUudGltZWxpbmU6IHtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsVGltZXNsb3RzID0gKDI0ICogNjAgKiA2MCkgLyBkdXJhdGlvbjtcbiAgICAgICAgICAgIHJldHVybiBzaG93bkRheXMubWFwKChkYXkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIDxTY2hlZHVsZXJTdGFtcFdpdGhTbG90cz57XG4gICAgICAgICAgICAgICAgc2xvdHM6IEFycmF5LmZyb20oQXJyYXkodG90YWxUaW1lc2xvdHMpLmtleXMoKSlcbiAgICAgICAgICAgICAgICAgIC5tYXAoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRpbWVzbG90KGRheSwgaW5kZXgsIGR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YW1wOiBkYXlcbiAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0aHJvdyAnVW5rbm93biB2YWx1ZSBmb3IgTW9kZTogJyArIG1vZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSlcbiAgICAgIC5zdWJzY3JpYmUoKHRpbWVzbG90cykgPT4ge1xuICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgd2UncmUgbm90IHVzaW5nIGFuIG9ic2VydmFibGUgaGVyZSwgYnV0IHBlcnNpc3QgdGhlIHRpbWVzbG90cyBpbiBhIEJlaGF2aW9yU3ViamVjdC5cbiAgICAgICAgdGhpcy50aW1lU2xvdHMkLm5leHQodGltZXNsb3RzKTtcbiAgICAgIH0pO1xuICAgIFxuICAgICAgdGhpcy53ZWVrT3B0aW9ucyRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgod2Vla09wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy53ZWVrT3B0aW9uc0NoYW5nZS5lbWl0KHdlZWtPcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIHRoaXMudGltZWxpbmVPcHRpb25zJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKCh0aW1lbGluZU9wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy50aW1lbGluZU9wdGlvbnNDaGFuZ2UuZW1pdCh0aW1lbGluZU9wdGlvbnMpO1xuICAgICAgfSk7XG5cbiAgICAvLyBjb21iaW5lTGF0ZXN0KFt0aGlzLm1vZGUkLCB0aGlzLnNjYWxlJF0pXG4gICAgLy8gICAucGlwZShmaWx0ZXIoKFttb2RlLCBzY2FsZV0pID0+IG1vZGUgPT09IEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lKSlcblxuICB9XG5cbiAgcmVzb3VyY2VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8KFJlc291cmNlIHwgUmVzb3VyY2VHcm91cClbXT4oW10pO1xuICBldmVudHMkOiBPYnNlcnZhYmxlPFNjaGVkdWxlckV2ZW50W10+O1xuICBldmVudFBhcnRzJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFdpdGhQYXJ0c1tdPjtcbiAgZXZlbnRQYXJ0c0ZvclRoaXNXZWVrJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFBhcnRbXT47XG4gIHRpbWVsaW5lZEV2ZW50UGFydHNGb3JUaGlzV2VlayQ6IE9ic2VydmFibGU8eyB0b3RhbDogbnVtYmVyLCBwYXJ0czogeyBwYXJ0OiBTY2hlZHVsZXJFdmVudFBhcnQsIGluZGV4OiBudW1iZXJ9W10gfT47XG4gIHdlZWtPcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2Vla09wdGlvbnM+KHsgdW5pdEhlaWdodDogMzAgfSk7XG4gIHRpbWVsaW5lT3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpbWVsaW5lT3B0aW9ucz4oeyB1bml0V2lkdGg6IDUwIH0pO1xuICBcbiAgcHJldmlld0V2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHJldmlld0V2ZW50IHwgbnVsbD4obnVsbCk7XG4gIHByZXZpZXdFdmVudFBhcnRzJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFdpdGhQYXJ0cyB8IG51bGw+O1xuICBwcmV2aWV3RXZlbnRQYXJ0c0ZvclRoaXNXZWVrJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFBhcnRbXT47XG4gIFxuICBjdXJyZW50V2Vla09yTW9udGgkOiBCZWhhdmlvclN1YmplY3Q8RGF0ZT47XG4gIHNob3duRGF5cyQ6IE9ic2VydmFibGU8RGF0ZVtdPjtcbiAgZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJDogT2JzZXJ2YWJsZTx7c3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXJ9PjtcbiAgdGltZVNsb3REdXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMTgwMCk7XG4gIHRpbWVTbG90cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzW10+KFtdKTtcbiAgbW91c2VTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaG92ZXJlZFRpbWVTbG90JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGltZVNsb3QgfCBudWxsPihudWxsKTtcbiAgaG92ZXJlZEV2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2NoZWR1bGVyRXZlbnQgfCBudWxsPihudWxsKTtcbiAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQFZpZXdDaGlsZHJlbignc2xvdCcpIHRpbWVTbG90RWxlbWVudHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuXG4gIGNyZWF0ZVRpbWVzbG90KGRhdGU6IERhdGUsIGluZGV4OiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIpIHtcbiAgICBjb25zdCB0aW1lU2xvdFN0YXJ0ID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgdGltZVNsb3RTdGFydC5zZXRUaW1lKCt0aW1lU2xvdFN0YXJ0LmdldFRpbWUoKSArIGluZGV4ICogZHVyYXRpb24gKiAxMDAwKTtcbiAgICBjb25zdCB0aW1lU2xvdEVuZCA9IG5ldyBEYXRlKHRpbWVTbG90U3RhcnQpO1xuICAgIHRpbWVTbG90RW5kLnNldFRpbWUoK3RpbWVTbG90RW5kLmdldFRpbWUoKSArIGR1cmF0aW9uICogMTAwMCk7XG5cbiAgICByZXR1cm4gPFRpbWVTbG90Pnsgc3RhcnQ6IHRpbWVTbG90U3RhcnQsIGVuZDogdGltZVNsb3RFbmQgfTtcbiAgfVxuXG4gIGdldFJlc291cmNlc0Zvckdyb3VwKHJlc291cmNlT3JHcm91cDogUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKSA6IFJlc291cmNlW10ge1xuICAgIGlmICgnY2hpbGRyZW4nIGluIHJlc291cmNlT3JHcm91cCkge1xuICAgICAgcmV0dXJuIHJlc291cmNlT3JHcm91cC5jaGlsZHJlblxuICAgICAgICAubWFwKChjaGlsZCkgPT4gdGhpcy5nZXRSZXNvdXJjZXNGb3JHcm91cChjaGlsZCkpXG4gICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3Jlc291cmNlT3JHcm91cF07XG4gICAgfVxuICB9XG5cbiAgLy8jcmVnaW9uIE1vZGVcbiAgbW9kZXMgPSBFU2NoZWR1bGVyTW9kZTtcbiAgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVTY2hlZHVsZXJNb2RlPihFU2NoZWR1bGVyTW9kZS53ZWVrKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFU2NoZWR1bGVyTW9kZT4oKTtcbiAgcHVibGljIGdldCBtb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogRVNjaGVkdWxlck1vZGUpIHtcbiAgICB0aGlzLm1vZGUkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICAvLyAvLyNyZWdpb24gU2NhbGVcbiAgLy8gc2NhbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY2hlZHVsZXJTY2FsZT4oYXZhaWxhYmxlU2NhbGVzWzRdKTtcbiAgLy8gQE91dHB1dCgpIHB1YmxpYyBzY2FsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2NoZWR1bGVyU2NhbGU+KCk7XG4gIC8vIHB1YmxpYyBnZXQgc2NhbGUoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuc2NhbGUkLnZhbHVlO1xuICAvLyB9XG4gIC8vIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2NhbGUodmFsdWU6IFNjaGVkdWxlclNjYWxlKSB7XG4gIC8vICAgdGhpcy5zY2FsZSQubmV4dCh2YWx1ZSk7XG4gIC8vIH1cbiAgLy8gLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBXZWVrT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHdlZWtPcHRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxXZWVrT3B0aW9ucz4oKTtcbiAgcHVibGljIGdldCB3ZWVrT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy53ZWVrT3B0aW9ucyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCB3ZWVrT3B0aW9ucyh2YWx1ZTogV2Vla09wdGlvbnMpIHtcbiAgICB0aGlzLndlZWtPcHRpb25zJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFRpbWVsaW5lT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHRpbWVsaW5lT3B0aW9uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGltZWxpbmVPcHRpb25zPigpO1xuICBwdWJsaWMgZ2V0IHRpbWVsaW5lT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50aW1lbGluZU9wdGlvbnMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdGltZWxpbmVPcHRpb25zKHZhbHVlOiBUaW1lbGluZU9wdGlvbnMpIHtcbiAgICB0aGlzLnRpbWVsaW5lT3B0aW9ucyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBtYXhJbm5lckhlaWdodFxuICBASW5wdXQoKSBwdWJsaWMgbWF4SW5uZXJIZWlnaHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFJlc291cmNlc1xuICBwdWJsaWMgZ2V0IHJlc291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVzb3VyY2VzKHZhbHVlOiAoUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKVtdKSB7XG4gICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHByaXZhdGUgYWRkRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICByZXN1bHQuc2V0RGF0ZShyZXN1bHQuZ2V0RGF0ZSgpICsgZGF5cyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9uUHJldmlvdXNXZWVrT3JNb250aCgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlV2Vla09yTW9udGgoZmFsc2UpO1xuICB9XG5cbiAgb25OZXh0V2Vla09yTW9udGgoKSB7XG4gICAgdGhpcy5vbkNoYW5nZVdlZWtPck1vbnRoKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZVdlZWtPck1vbnRoKG5leHQ6IGJvb2xlYW4pIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQsIHRoaXMubW9kZSRdKVxuICAgICAgLnBpcGUobWFwKChbY3VycmVudFdlZWtPck1vbnRoLCBtb2RlXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZERheXMoY3VycmVudFdlZWtPck1vbnRoLCAobmV4dCA/IDcgOiAtNykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoY3VycmVudFdlZWtPck1vbnRoLmdldEZ1bGxZZWFyKCksIGN1cnJlbnRXZWVrT3JNb250aC5nZXRNb250aCgpICsgKG5leHQgPyAxIDogLTEpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgodykgPT4gdGhpcy5jdXJyZW50V2Vla09yTW9udGgkLm5leHQodykpO1xuICB9XG5cbiAgb25Ib3ZlckV2ZW50KGV2OiBTY2hlZHVsZXJFdmVudCB8IG51bGwpIHtcbiAgICB0aGlzLmhvdmVyZWRFdmVudCQubmV4dChldik7XG4gIH1cblxuICBvbkxlYXZlRXZlbnQoZXY6IFNjaGVkdWxlckV2ZW50IHwgbnVsbCkge1xuICAgIHRoaXMuaG92ZXJlZEV2ZW50JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgb3BlcmF0aW9uOiBEcmFnT3BlcmF0aW9uIHwgbnVsbCA9IG51bGw7XG4gIGRyYWdTdGFydFRpbWVzbG90OiBUaW1lU2xvdCB8IG51bGwgPSBudWxsO1xuICBvbkNyZWF0ZUV2ZW50KGV2OiBNb3VzZUV2ZW50LCBzbG90OiBUaW1lU2xvdCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5tb3VzZVN0YXRlJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgPSBzbG90O1xuICAgIHRoaXMub3BlcmF0aW9uID0ge1xuICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudCxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHN0YXJ0OiBzbG90LnN0YXJ0LFxuICAgICAgICBlbmQ6IHNsb3QuZW5kLFxuICAgICAgICBjb2xvcjogJyNGMDAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Rlc3QgZXZlbnQnLFxuICAgICAgfSxcbiAgICAgIG1ldGE6IG51bGwsXG4gICAgfTtcbiAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBzbG90LnN0YXJ0LCBlbmQ6IHNsb3QuZW5kIH0pO1xuICB9XG5cbiAgcmFuZG9tQ29sb3IoKSB7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IDEyODtcbiAgICByZXR1cm4gJyMnICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpO1xuICB9XG4gIHJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzczogbnVtYmVyKXtcbiAgICBjb25zdCByID0gMjU1LWJyaWdodG5lc3M7XG4gICAgY29uc3QgbiA9IDB8KChNYXRoLnJhbmRvbSgpICogcikgKyBicmlnaHRuZXNzKTtcbiAgICBjb25zdCBzID0gbi50b1N0cmluZygxNik7XG4gICAgcmV0dXJuIChzLmxlbmd0aD09MSkgPyAnMCcrcyA6IHM7XG4gIH1cblxuICBvblN0YXJ0RHJhZ0V2ZW50KGV2ZW50UGFydDogU2NoZWR1bGVyRXZlbnRQYXJ0LCBldjogTW91c2VFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5ob3ZlcmVkVGltZVNsb3QkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChob3ZlcmVkVGltZVNsb3QpID0+IHtcbiAgICAgIGlmIChldmVudFBhcnQuZXZlbnQpIHtcbiAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWRUaW1lU2xvdDtcbiAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQsXG4gICAgICAgICAgZXZlbnQ6IGV2ZW50UGFydC5ldmVudCxcbiAgICAgICAgICBtZXRhOiBudWxsLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudFBhcnQuZXZlbnQuc3RhcnQsIGVuZDogZXZlbnRQYXJ0LmV2ZW50LmVuZCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uU3RhcnRSZXNpemVFdmVudChldmVudDogU2NoZWR1bGVyRXZlbnQgfCBudWxsLCBwb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJykge1xuICAgIGlmIChldmVudCkge1xuICAgICAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgICAgICBjYXNlICd0b3AnOiB7XG4gICAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLnJlc2l6ZUV2ZW50LFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgbWV0YTogeyBwb3NpdGlvbiB9LFxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudC5zdGFydCwgZW5kOiBldmVudC5lbmQgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6IHtcbiAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQsXG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBtZXRhOiB7IHBvc2l0aW9uIH0sXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IGV2ZW50LnN0YXJ0LCBlbmQ6IGV2ZW50LmVuZCB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyNyZWdpb24gaG92ZXJlZFRpbWVzbG90JFxuICBwcml2YXRlIGdldEhvdmVyZWRUaW1lc2xvdChldjogTW91c2VFdmVudCwgdGltZVNsb3RzOiBTY2hlZHVsZXJTdGFtcFdpdGhTbG90c1tdKSB7XG4gICAgY29uc3QgaG92ZXJlZFNsb3RzID0gdGhpcy50aW1lU2xvdEVsZW1lbnRzLmZpbHRlcigoZWwpID0+IHtcbiAgICAgIGNvbnN0IHJjdCA9IGVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAocmN0LmxlZnQgPD0gZXYueCAmJiBldi54IDw9IHJjdC5yaWdodCAmJiByY3QudG9wIDw9IGV2LnkgJiYgZXYueSA8PSByY3QuYm90dG9tKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFob3ZlcmVkU2xvdHMgfHwgaG92ZXJlZFNsb3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2xvdEVsZW1lbnQgPSBob3ZlcmVkU2xvdHNbMF0ubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHN0clJvdyA9IHNsb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yb3cnKTtcbiAgICBpZiAoIXN0clJvdykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJvdyA9IHBhcnNlSW50KHN0clJvdyk7XG5cbiAgICBjb25zdCBzdHJDb2x1bW4gPSBzbG90RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sdW1uJyk7XG4gICAgaWYgKCFzdHJDb2x1bW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW4gPSBwYXJzZUludChzdHJDb2x1bW4pO1xuXG4gICAgY29uc3Qgc2xvdCA9IHRpbWVTbG90c1tyb3ddLnNsb3RzW2NvbHVtbl07XG4gICAgcmV0dXJuIHNsb3Q7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBvbk1vdXNlbW92ZShldjogTW91c2VFdmVudCkge1xuICAgIHRoaXMudGltZVNsb3RzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodGltZVNsb3RzKSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkID0gdGhpcy5nZXRIb3ZlcmVkVGltZXNsb3QoZXYsIHRpbWVTbG90cyk7XG4gICAgICB0aGlzLmhvdmVyZWRUaW1lU2xvdCQubmV4dChob3ZlcmVkKTtcblxuICAgICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5vcGVyYXRpb24ub3BlcmF0aW9uKSB7XG4gICAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uLmV2ZW50ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgJiYgaG92ZXJlZCAmJiAodGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kLmdldFRpbWUoKSAhPSBob3ZlcmVkLmVuZC5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA9PT0gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyAxIHNsb3RcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA8IGhvdmVyZWQuc3RhcnQuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgLy8gRHJhZyBkb3duXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IGhvdmVyZWQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpID4gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBEcmFnIHVwXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSBob3ZlcmVkLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLm1vdmVFdmVudDoge1xuICAgICAgICAgICAgaWYgKGhvdmVyZWQgJiYgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkge1xuICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKChldikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gIDxQcmV2aWV3RXZlbnQ+e1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZShldi5zdGFydC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5ldyBEYXRlKGV2LmVuZC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXYgPT4gdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQoZXYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICAgIGlmIChob3ZlcmVkKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JFxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLm9wZXJhdGlvbiAmJiB0aGlzLm9wZXJhdGlvbi5ldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24ubWV0YS5wb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IGhvdmVyZWQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuZW5kID0gdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3BlcmF0aW9uLm1ldGEucG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLm9wZXJhdGlvbi5ldmVudC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICBldi5lbmQgPSBob3ZlcmVkLmVuZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXYpID0+IHRoaXMucHJldmlld0V2ZW50JC5uZXh0KGV2KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VVcChldjogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLm9wZXJhdGlvbikge1xuICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdGlvbi5vcGVyYXRpb24pIHtcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucHJldmlld0V2ZW50JF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW3ByZXZpZXdFdmVudF0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHByZXZpZXdFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc291cmNlcyQubmV4dChbXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnJlc291cmNlcyQudmFsdWUsXG4gICAgICAgICAgICAgICAgICA8UmVzb3VyY2U+e1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05ldyByZXNvdXJjZSBncm91cCcsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50czogW3tcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydDogcHJldmlld0V2ZW50LnN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgIGVuZDogcHJldmlld0V2ZW50LmVuZCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5yYW5kb21Db2xvcigpLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IGV2ZW50J1xuICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQ6XG4gICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByZXZpZXdFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24gJiYgdGhpcy5vcGVyYXRpb24uZXZlbnQgJiYgcHJldmlld0V2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuc3RhcnQgPSBwcmV2aWV3RXZlbnQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kID0gcHJldmlld0V2ZW50LmVuZDtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodGhpcy5yZXNvdXJjZXMkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQodHJ1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gdy0xMDAgb3ZlcmZsb3cteS1hdXRvIG1iLTAgd2Vlay1zY2hlZHVsZVwiIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cIm51bGxcIlxuICAgICpuZ0lmPVwiKG1vZGUkIHwgYXN5bmMpID09PSBtb2Rlcy53ZWVrXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjYWxlbmRhci1sZWZ0IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBmbGV4LXN0YXJ0XCIgKGNsaWNrKT1cIm9uUHJldmlvdXNXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLWxlZnQnXCIgY2xhc3M9XCJweC0wXCI+PC9icy1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgZmxleC1lbmRcIiAoY2xpY2spPVwib25OZXh0V2Vla09yTW9udGgoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnMtaWNvbiBbaWNvbl09XCInY2hldnJvbi1yaWdodCdcIiBjbGFzcz1cInB4LTBcIj48L2JzLWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBjYWxlbmRhci1oZWFkLWNlbGxcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIChzaG93bkRheXMkIHwgYXN5bmMpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIGNvbC1mb3JtLWxhYmVsIHRleHQtY2VudGVyIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRheSB8IGRhdGU6ICdkZC1NTScgfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJkLW5vbmUgZC1sZy1pbmxpbmUtYmxvY2tcIj4te3sgZGF5IHwgZGF0ZTogJ3l5eXknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiIFtzdHlsZS5oZWlnaHQucHhdPVwibWF4SW5uZXJIZWlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgKm5nSWY9XCIodGltZVNsb3RzJCB8IGFzeW5jKSBhcyByb3dcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIod2Vla09wdGlvbnMkIHwgYXN5bmMpIGFzIHdlZWtPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBUaW1lc2xvdHMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGltZXNsb3RzIG9mIHJvdzsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IHAtMCB0aW1lc2xvdFwiIFtzdHlsZS5oZWlnaHQucHhdPVwid2Vla09wdGlvbnMudW5pdEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY2VsbCBjYWxlbmRhci1sZWZ0IGFsaWduLXRvcCBweC0yIHB5LTBcIj57eyB0aW1lc2xvdHMuc2xvdHNbMF0uc3RhcnQgfCBkYXRlOiAnSEg6bW06c3MnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsIGZsZXgtZ3Jvdy0xXCIgKm5nRm9yPVwibGV0IHNsb3Qgb2YgdGltZXNsb3RzLnNsb3RzOyBsZXQgaiA9IGluZGV4XCIgI3Nsb3QgKG1vdXNlZG93bik9XCJvbkNyZWF0ZUV2ZW50KCRldmVudCwgc2xvdClcIiBbYXR0ci5kYXRhLXJvd109XCJpXCIgW2F0dHIuZGF0YS1jb2x1bW5dPVwialwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBFdmVudHMgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0aW1lU2xvdER1cmF0aW9uJCB8IGFzeW5jKSBhcyB0aW1lU2xvdER1cmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZWxpbmVkRXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCB8IGFzeW5jKSBhcyBwYXJ0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnRQYXJ0IG9mIHBhcnREYXRhLnBhcnRzXCIgY2xhc3M9XCJldmVudCBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiKGV2ZW50UGFydC5wYXJ0IHwgYnNTZWNvbmRzVG9kYXlPZmZzZXQpIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKGV2ZW50UGFydC5wYXJ0IHwgYnNTZWNvbmRzVGltZXNwYW4pIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIidjYWxjKDkwcHggKyAoKDEwMCUgLSA5MHB4KSAvIDcgKiAnICsgKChldmVudFBhcnQucGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5uZXJcIiBbY2xhc3MuaG92ZXJdPVwiKGhvdmVyZWRFdmVudCQgfCBhc3luYykgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIidjYWxjKDEwMCUgLyAnICsgcGFydERhdGEudG90YWwgKyAnKSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQucGFydCB8IGJzU2Vjb25kc1RpbWVzcGFuKSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1hcmdpbi1sZWZ0XT1cIidjYWxjKDEwMCUgLyAnICsgcGFydERhdGEudG90YWwgKyAnICogJyArIGV2ZW50UGFydC5pbmRleCArICcpJ1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1yZXNpemUgdG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXZlbnRQYXJ0LnBhcnQuc3RhcnQgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50Py5zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRSZXNpemVFdmVudChldmVudFBhcnQucGFydC5ldmVudCwgJ3RvcCcpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1ib3JkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXdyYXBwZXJcIiAqbmdJZj1cImV2ZW50UGFydC5wYXJ0LmV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25TdGFydERyYWdFdmVudChldmVudFBhcnQucGFydCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbkhvdmVyRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTGVhdmVFdmVudChldmVudFBhcnQucGFydC5ldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1iZ1wiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImV2ZW50UGFydC5wYXJ0LmV2ZW50LmNvbG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtbGFiZWxcIj57eyBldmVudFBhcnQucGFydC5ldmVudC5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXJlc2l6ZSBib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJldmVudFBhcnQucGFydC5lbmQgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50Py5lbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0UmVzaXplRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQsICdib3R0b20nKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHByZXZpZXdFdmVudFBhcnRzRm9yVGhpc1dlZWskIHwgYXN5bmMpIGFzIHByZXZpZXdQYXJ0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnRQYXJ0IG9mIHByZXZpZXdQYXJ0RGF0YVwiIGNsYXNzPVwiZXZlbnQgcHJldmlldyBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiKGV2ZW50UGFydCB8IGJzU2Vjb25kc1RvZGF5T2Zmc2V0KSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnRdPVwiJ2NhbGMoOTBweCArICgoMTAwJSAtIDkwcHgpIC8gNyAqICcgKyAoKGV2ZW50UGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5uZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uLTEwMCBvdmVyZmxvdy15LWF1dG8gbWItMCBiZy13aGl0ZSB0aW1lbGluZVwiICpuZ0lmPVwiKG1vZGUkIHwgYXN5bmMpID09PSBtb2Rlcy50aW1lbGluZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkIGQtZmxleFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGZsZXgtc3RhcnRcIiAoY2xpY2spPVwib25QcmV2aW91c1dlZWtPck1vbnRoKClcIj5cbiAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLWxlZnQnXCIgY2xhc3M9XCJweC0wXCI+PC9icy1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGgzIHB5LTIgbWItMCB0ZXh0LWNlbnRlclwiPnt7IGN1cnJlbnRXZWVrT3JNb250aCQgfCBhc3luYyB8IGRhdGU6ICdNTU1NIHl5eXknIH19PC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZmxleC1zdGFydFwiIChjbGljayk9XCJvbk5leHRXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICA8YnMtaWNvbiBbaWNvbl09XCInY2hldnJvbi1yaWdodCdcIiBjbGFzcz1cInB4LTBcIj48L2JzLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5IHRhYmxlLXJlc3BvbnNpdmUgb3ZlcmZsb3cteC1hdXRvXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG1iLTBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZVNsb3RzJCB8IGFzeW5jKSBhcyB0aW1lU2xvdHNcIj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGRheSBvZiB0aW1lU2xvdHNcIiBbYXR0ci5jb2xzcGFuXT1cImRheS5zbG90cy5sZW5ndGhcIiBjbGFzcz1cInRleHQtY2VudGVyIHB4LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicG9zaXRpb24tc3RpY2t5IGRheS1sYWJlbFwiPnt7IGRheS5zdGFtcCB8IGRhdGU6ICdkIEVFJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZWxpbmVPcHRpb25zJCB8IGFzeW5jKSBhcyB0aW1lbGluZU9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRheSBvZiB0aW1lU2xvdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IHNsb3Qgb2YgZGF5LnNsb3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9jayBwLTAgdGV4dC1jZW50ZXJcIiBbc3R5bGUud2lkdGgucHhdPVwidGltZWxpbmVPcHRpb25zLnVuaXRXaWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2xvdC5zdGFydCB8IGRhdGU6ICdISDptbScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8YnMtcmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyICpuZ0Zvcj1cImxldCBncm91cCBvZiAocmVzb3VyY2VzJCB8IGFzeW5jKVwiIFtyZXNvdXJjZUdyb3VwXT1cImdyb3VwXCIgW3RpbWVTbG90c109XCJ0aW1lU2xvdHNcIj48L2JzLXJlc291cmNlLWdyb3VwLXByZXNlbnRlcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
539
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9jb21wb25lbnRzL3NjaGVkdWxlci9zY2hlZHVsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zY2hlZHVsZXIvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGVyL3NjaGVkdWxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU81RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7OztBQVk3RSxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW9CLG9CQUE0QyxFQUFVLGVBQWtDO1FBQXhGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBd0I7UUFBVSxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUE2SjVHLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBK0IsRUFBRSxDQUFDLENBQUM7UUFLbkUsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FB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R0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUM7Z0NBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dDQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2dDQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dDQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs2QkFDL0I7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7cUJBQ047b0JBQUMsTUFBTTthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7O2lIQWxoQlUsb0JBQW9CO3FHQUFwQixvQkFBb0IsbWhCQ3ZCakMsNjBPQTRHTTsyRkRyRk8sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGNBQWM7NklBeUxGLGdCQUFnQjtzQkFBckMsWUFBWTt1QkFBQyxNQUFNO2dCQXdCSCxVQUFVO3NCQUExQixNQUFNO2dCQUlhLElBQUk7c0JBQXZCLEtBQUs7Z0JBZVcsaUJBQWlCO3NCQUFqQyxNQUFNO2dCQUlhLFdBQVc7c0JBQTlCLEtBQUs7Z0JBS1cscUJBQXFCO3NCQUFyQyxNQUFNO2dCQUlhLGVBQWU7c0JBQWxDLEtBQUs7Z0JBS1UsY0FBYztzQkFBN0IsS0FBSztnQkFNYyxTQUFTO3NCQUE1QixLQUFLO2dCQWdKTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkY5QyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJzQ2FsZW5kYXJNb250aFNlcnZpY2UgfSBmcm9tICdAbWludHBsYXllci9uZy1ib290c3RyYXAvY2FsZW5kYXItbW9udGgnO1xuaW1wb3J0IHsgRVNjaGVkdWxlck1vZGUgfSBmcm9tICcuLi8uLi9lbnVtcy9zY2hlZHVsZXItbW9kZSc7XG5pbXBvcnQgeyBFRHJhZ09wZXJhdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zL2RyYWctb3BlcmF0aW9uJztcbmltcG9ydCB7IERyYWdPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RyYWctb3BlcmF0aW9uJztcbmltcG9ydCB7IFByZXZpZXdFdmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcHJldmlldy1ldmVudCc7XG5pbXBvcnQgeyBTY2hlZHVsZXJFdmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLWV2ZW50JztcbmltcG9ydCB7IFNjaGVkdWxlckV2ZW50UGFydCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLWV2ZW50LXBhcnQnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnRXaXRoUGFydHMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjaGVkdWxlci1ldmVudC13aXRoLXBhcnRzJztcbmltcG9ydCB7IFRpbWVTbG90IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90aW1lLXNsb3QnO1xuaW1wb3J0IHsgQnNUaW1lbGluZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aW1lbGluZS90aW1lbGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Jlc291cmNlLWdyb3VwJztcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXNvdXJjZSc7XG5pbXBvcnQgeyBTY2hlZHVsZXJTdGFtcFdpdGhTbG90cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLXN0YW1wLXdpdGgtc2xvdHMnO1xuaW1wb3J0IHsgV2Vla09wdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dlZWstb3B0aW9ucyc7XG5pbXBvcnQgeyBUaW1lbGluZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3RpbWVsaW5lLW9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1zY2hlZHVsZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2NoZWR1bGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2NoZWR1bGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJzU2NoZWR1bGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYWxlbmRhck1vbnRoU2VydmljZTogQnNDYWxlbmRhck1vbnRoU2VydmljZSwgcHJpdmF0ZSB0aW1lbGluZVNlcnZpY2U6IEJzVGltZWxpbmVTZXJ2aWNlKSB7XG4gICAgY29uc3QgbW9uZGF5ID0gdGhpcy5jYWxlbmRhck1vbnRoU2VydmljZS5nZXRNb25kYXlCZWZvcmUobmV3IERhdGUoKSk7XG4gICAgdGhpcy5jdXJyZW50V2Vla09yTW9udGgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihtb25kYXkpO1xuXG4gICAgdGhpcy5zaG93bkRheXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5jdXJyZW50V2Vla09yTW9udGgkLCB0aGlzLm1vZGUkXSlcbiAgICAgIC5waXBlKG1hcCgoW2N1cnJlbnREYXksIG1vZGVdKSA9PiB7XG4gICAgICAgIGN1cnJlbnREYXkuc2V0SG91cnMoMCk7XG4gICAgICAgIGN1cnJlbnREYXkuc2V0TWludXRlcygwKTtcbiAgICAgICAgY3VycmVudERheS5zZXRTZWNvbmRzKDApO1xuICAgICAgICBjdXJyZW50RGF5LnNldE1pbGxpc2Vjb25kcygwKTtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgY2FzZSBFU2NoZWR1bGVyTW9kZS53ZWVrOiB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShBcnJheSg3KS5rZXlzKCkpLm1hcCgoeCkgPT4gdGhpcy5hZGREYXlzKGN1cnJlbnREYXksIHgpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBFU2NoZWR1bGVyTW9kZS50aW1lbGluZToge1xuICAgICAgICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZShjdXJyZW50RGF5LmdldEZ1bGxZZWFyKCksIGN1cnJlbnREYXkuZ2V0TW9udGgoKSwgMSk7XG4gICAgICAgICAgICBjb25zdCBkYXlzT2ZNb250aCA9IG5ldyBEYXRlKGN1cnJlbnREYXkuZ2V0RnVsbFllYXIoKSwgY3VycmVudERheS5nZXRNb250aCgpICsgMSwgMCkuZ2V0RGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oQXJyYXkoZGF5c09mTW9udGgpLmtleXMoKSkubWFwKCh4KSA9PiB0aGlzLmFkZERheXMoZmlyc3REYXksIHgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJCA9IHRoaXMuc2hvd25EYXlzJFxuICAgICAgLnBpcGUobWFwKChzaG93bkRheXMpID0+ICh7IHN0YXJ0OiBzaG93bkRheXNbMF0uZ2V0VGltZSgpLCBlbmQ6IHNob3duRGF5c1tzaG93bkRheXMubGVuZ3RoIC0gMV0uZ2V0VGltZSgpICsgMjQgKiA2MCAqIDYwICogMTAwMCB9KSkpO1xuICAgIFxuICAgIHRoaXMuZXZlbnRzJCA9IHRoaXMucmVzb3VyY2VzJFxuICAgICAgLnBpcGUobWFwKChyZXNvdXJjZXNPckdyb3VwcykgPT4gcmVzb3VyY2VzT3JHcm91cHMubWFwKHJlc09yR3JvdXAgPT4gdGhpcy5nZXRSZXNvdXJjZXNGb3JHcm91cChyZXNPckdyb3VwKSkpKVxuICAgICAgLnBpcGUobWFwKGphZ2dlZFJlc291cmNlcyA9PiBqYWdnZWRSZXNvdXJjZXMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKSkpXG4gICAgICAucGlwZShtYXAocmVzb3VyY2VzID0+IHJlc291cmNlcy5tYXAocmVzID0+IHJlcy5ldmVudHMpKSlcbiAgICAgIC5waXBlKG1hcChqYWdnZWRFdmVudHMgPT4gamFnZ2VkRXZlbnRzLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSkpKTtcblxuICAgICAgLy8gZ3JvdXBzLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4uY2hpbGRyZW4pLCBbXSlcbiAgICB0aGlzLmV2ZW50UGFydHMkID0gdGhpcy5ldmVudHMkLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50cykgPT4gIGV2ZW50cy5tYXAoKGV2KSA9PiB0aGlzLnRpbWVsaW5lU2VydmljZS5zcGxpdEluUGFydHMoZXYpKSlcbiAgICApO1xuXG4gICAgdGhpcy5ldmVudFBhcnRzRm9yVGhpc1dlZWskID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmRheXNPZldlZWtXaXRoVGltZXN0YW1wcyQsXG4gICAgICB0aGlzLmV2ZW50UGFydHMkXG4gICAgICAgIC5waXBlKG1hcChldmVudFBhcnRzID0+IGV2ZW50UGFydHMubWFwKGV2cCA9PiBldnAucGFydHMpKSlcbiAgICAgICAgLnBpcGUobWFwKGphZ2dlZFBhcnRzID0+ICBqYWdnZWRQYXJ0cy5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pKSlcbiAgICAgIF0pXG4gICAgICAucGlwZShtYXAoKFtzdGFydEFuZEVuZCwgZXZlbnRQYXJ0c10pID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50UGFydHMuZmlsdGVyKGV2ZW50UGFydCA9PiB7XG4gICAgICAgICAgcmV0dXJuICEoKGV2ZW50UGFydC5lbmQuZ2V0VGltZSgpIDw9IHN0YXJ0QW5kRW5kLnN0YXJ0KSB8fCAoZXZlbnRQYXJ0LnN0YXJ0LmdldFRpbWUoKSA+PSBzdGFydEFuZEVuZC5lbmQpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnByZXZpZXdFdmVudFBhcnRzJCA9IHRoaXMucHJldmlld0V2ZW50JC5waXBlKFxuICAgICAgbWFwKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50aW1lbGluZVNlcnZpY2Uuc3BsaXRJblBhcnRzKGV2ZW50KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5wcmV2aWV3RXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJCwgdGhpcy5wcmV2aWV3RXZlbnRQYXJ0cyRdKVxuICAgICAgLnBpcGUobWFwKChbc3RhcnRBbmRFbmQsIHByZXZpZXdFdmVudFBhcnRzXSkgPT4ge1xuICAgICAgICBpZiAocHJldmlld0V2ZW50UGFydHMpIHtcbiAgICAgICAgICByZXR1cm4gcHJldmlld0V2ZW50UGFydHMucGFydHMuZmlsdGVyKGV2ZW50UGFydCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISgoZXZlbnRQYXJ0LmVuZC5nZXRUaW1lKCkgPD0gc3RhcnRBbmRFbmQuc3RhcnQpIHx8IChldmVudFBhcnQuc3RhcnQuZ2V0VGltZSgpID49IHN0YXJ0QW5kRW5kLmVuZCkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuXG4gICAgdGhpcy50aW1lbGluZWRFdmVudFBhcnRzRm9yVGhpc1dlZWskID0gdGhpcy5ldmVudFBhcnRzRm9yVGhpc1dlZWskXG4gICAgICAucGlwZShtYXAoZXZlbnRQYXJ0cyA9PiB7XG4gICAgICAgIC8vIFdlJ2xsIG9ubHkgdXNlIHRoZSBldmVudHMgZm9yIHRoaXMgd2Vla1xuICAgICAgICBjb25zdCBldmVudHMgPSBldmVudFBhcnRzLm1hcChlcCA9PiBlcC5ldmVudClcbiAgICAgICAgICAuZmlsdGVyKChlLCBpLCBsaXN0KSA9PiBsaXN0LmluZGV4T2YoZSkgPT09IGkpXG4gICAgICAgICAgLmZpbHRlcigoZSkgPT4gISFlKVxuICAgICAgICAgIC5tYXAoKGUpID0+IDxTY2hlZHVsZXJFdmVudD5lKTtcbiAgICAgICAgY29uc3QgdGltZWxpbmUgPSB0aGlzLnRpbWVsaW5lU2VydmljZS5nZXRUaW1lbGluZShldmVudHMpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRpbWVsaW5lLm1hcCh0cmFjayA9PiB0cmFjay5ldmVudHMubWFwKGV2ID0+ICh7IGV2ZW50OiBldiwgaW5kZXg6IHRyYWNrLmluZGV4IH0pKSlcbiAgICAgICAgICAucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKVxuICAgICAgICAgIC5tYXAoKGV2aSkgPT4gZXZlbnRQYXJ0cy5maWx0ZXIocCA9PiBwLmV2ZW50ID09PSBldmkuZXZlbnQpLm1hcChwID0+ICh7IHBhcnQ6IHAsIGluZGV4OiBldmkuaW5kZXggfSkpKVxuICAgICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdG90YWw6IHRpbWVsaW5lLmxlbmd0aCxcbiAgICAgICAgICBwYXJ0czogcmVzdWx0XG4gICAgICAgIH07XG4gICAgICB9KSk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm1vZGUkLCB0aGlzLnNob3duRGF5cyQsIHRoaXMudGltZVNsb3REdXJhdGlvbiRdKVxuICAgICAgLnBpcGUoZmlsdGVyKChbbW9kZSwgc2hvd25EYXlzLCBkdXJhdGlvbl0pID0+IG1vZGUgIT09IG51bGwpKVxuICAgICAgLnBpcGUobWFwKChbbW9kZSwgc2hvd25EYXlzLCBkdXJhdGlvbl0pID0+IHtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgY2FzZSBFU2NoZWR1bGVyTW9kZS53ZWVrOiB7XG4gICAgICAgICAgICBjb25zdCB0aW1lU2xvdHNQZXJEYXkgPSBNYXRoLmZsb29yKCg2MCAqIDYwICogMjQpIC8gZHVyYXRpb24pO1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oQXJyYXkodGltZVNsb3RzUGVyRGF5KS5rZXlzKCkpLm1hcCgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdGltZXNsb3RGb3JNb25kYXkgPSB0aGlzLmNyZWF0ZVRpbWVzbG90KHNob3duRGF5c1swXSwgaW5kZXgsIGR1cmF0aW9uKTtcblxuICAgICAgICAgICAgICByZXR1cm4gPFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzPntcbiAgICAgICAgICAgICAgICBzbG90czogc2hvd25EYXlzLm1hcCgoZGF5KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGRheSk7XG4gICAgICAgICAgICAgICAgICBzdGFydC5zZXRIb3Vycyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRIb3VycygpKTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldE1pbnV0ZXModGltZXNsb3RGb3JNb25kYXkuc3RhcnQuZ2V0TWludXRlcygpKTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldFNlY29uZHModGltZXNsb3RGb3JNb25kYXkuc3RhcnQuZ2V0U2Vjb25kcygpKTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldE1pbGxpc2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICBcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKGRheSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0SG91cnModGltZXNsb3RGb3JNb25kYXkuZW5kLmdldEhvdXJzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldE1pbnV0ZXModGltZXNsb3RGb3JNb25kYXkuZW5kLmdldE1pbnV0ZXMoKSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0U2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0U2Vjb25kcygpKTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRNaWxsaXNlY29uZHModGltZXNsb3RGb3JNb25kYXkuZW5kLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXREYXRlKGVuZC5nZXREYXRlKCkgKyB0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0RGF0ZSgpIC0gdGltZXNsb3RGb3JNb25kYXkuc3RhcnQuZ2V0RGF0ZSgpKTtcbiAgICAgIFxuICAgICAgICAgICAgICAgICAgcmV0dXJuIDxUaW1lU2xvdD57IHN0YXJ0LCBlbmQgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFtcDogdGltZXNsb3RGb3JNb25kYXkuc3RhcnRcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbFRpbWVzbG90cyA9ICgyNCAqIDYwICogNjApIC8gZHVyYXRpb247XG4gICAgICAgICAgICByZXR1cm4gc2hvd25EYXlzLm1hcCgoZGF5KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiA8U2NoZWR1bGVyU3RhbXBXaXRoU2xvdHM+e1xuICAgICAgICAgICAgICAgIHNsb3RzOiBBcnJheS5mcm9tKEFycmF5KHRvdGFsVGltZXNsb3RzKS5rZXlzKCkpXG4gICAgICAgICAgICAgICAgICAubWFwKChpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUaW1lc2xvdChkYXksIGluZGV4LCBkdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFtcDogZGF5XG4gICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdGhyb3cgJ1Vua25vd24gdmFsdWUgZm9yIE1vZGU6ICcgKyBtb2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpXG4gICAgICAuc3Vic2NyaWJlKCh0aW1lc2xvdHMpID0+IHtcbiAgICAgICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHdlJ3JlIG5vdCB1c2luZyBhbiBvYnNlcnZhYmxlIGhlcmUsIGJ1dCBwZXJzaXN0IHRoZSB0aW1lc2xvdHMgaW4gYSBCZWhhdmlvclN1YmplY3QuXG4gICAgICAgIHRoaXMudGltZVNsb3RzJC5uZXh0KHRpbWVzbG90cyk7XG4gICAgICB9KTtcbiAgICBcbiAgICAgIHRoaXMud2Vla09wdGlvbnMkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHdlZWtPcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMud2Vla09wdGlvbnNDaGFuZ2UuZW1pdCh3ZWVrT3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB0aGlzLnRpbWVsaW5lT3B0aW9ucyRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgodGltZWxpbmVPcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMudGltZWxpbmVPcHRpb25zQ2hhbmdlLmVtaXQodGltZWxpbmVPcHRpb25zKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gY29tYmluZUxhdGVzdChbdGhpcy5tb2RlJCwgdGhpcy5zY2FsZSRdKVxuICAgIC8vICAgLnBpcGUoZmlsdGVyKChbbW9kZSwgc2NhbGVdKSA9PiBtb2RlID09PSBFU2NoZWR1bGVyTW9kZS50aW1lbGluZSkpXG5cbiAgfVxuXG4gIHJlc291cmNlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PChSZXNvdXJjZSB8IFJlc291cmNlR3JvdXApW10+KFtdKTtcbiAgZXZlbnRzJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFtdPjtcbiAgZXZlbnRQYXJ0cyQ6IE9ic2VydmFibGU8U2NoZWR1bGVyRXZlbnRXaXRoUGFydHNbXT47XG4gIGV2ZW50UGFydHNGb3JUaGlzV2VlayQ6IE9ic2VydmFibGU8U2NoZWR1bGVyRXZlbnRQYXJ0W10+O1xuICB0aW1lbGluZWRFdmVudFBhcnRzRm9yVGhpc1dlZWskOiBPYnNlcnZhYmxlPHsgdG90YWw6IG51bWJlciwgcGFydHM6IHsgcGFydDogU2NoZWR1bGVyRXZlbnRQYXJ0LCBpbmRleDogbnVtYmVyfVtdIH0+O1xuICB3ZWVrT3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdlZWtPcHRpb25zPih7IHVuaXRIZWlnaHQ6IDMwIH0pO1xuICB0aW1lbGluZU9wdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaW1lbGluZU9wdGlvbnM+KHsgdW5pdFdpZHRoOiA1MCB9KTtcbiAgXG4gIHByZXZpZXdFdmVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByZXZpZXdFdmVudCB8IG51bGw+KG51bGwpO1xuICBwcmV2aWV3RXZlbnRQYXJ0cyQ6IE9ic2VydmFibGU8U2NoZWR1bGVyRXZlbnRXaXRoUGFydHMgfCBudWxsPjtcbiAgcHJldmlld0V2ZW50UGFydHNGb3JUaGlzV2VlayQ6IE9ic2VydmFibGU8U2NoZWR1bGVyRXZlbnRQYXJ0W10+O1xuICBcbiAgY3VycmVudFdlZWtPck1vbnRoJDogQmVoYXZpb3JTdWJqZWN0PERhdGU+O1xuICBzaG93bkRheXMkOiBPYnNlcnZhYmxlPERhdGVbXT47XG4gIGRheXNPZldlZWtXaXRoVGltZXN0YW1wcyQ6IE9ic2VydmFibGU8e3N0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyfT47XG4gIHRpbWVTbG90RHVyYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDE4MDApO1xuICB0aW1lU2xvdHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY2hlZHVsZXJTdGFtcFdpdGhTbG90c1tdPihbXSk7XG4gIG1vdXNlU3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGhvdmVyZWRUaW1lU2xvdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpbWVTbG90IHwgbnVsbD4obnVsbCk7XG4gIGhvdmVyZWRFdmVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjaGVkdWxlckV2ZW50IHwgbnVsbD4obnVsbCk7XG4gIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuICByZXNvdXJjZUdyb3VwUHJlc2VudGVyQ291bnRlciA9IDE7XG5cbiAgQFZpZXdDaGlsZHJlbignc2xvdCcpIHRpbWVTbG90RWxlbWVudHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuXG4gIGNyZWF0ZVRpbWVzbG90KGRhdGU6IERhdGUsIGluZGV4OiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIpIHtcbiAgICBjb25zdCB0aW1lU2xvdFN0YXJ0ID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgdGltZVNsb3RTdGFydC5zZXRUaW1lKCt0aW1lU2xvdFN0YXJ0LmdldFRpbWUoKSArIGluZGV4ICogZHVyYXRpb24gKiAxMDAwKTtcbiAgICBjb25zdCB0aW1lU2xvdEVuZCA9IG5ldyBEYXRlKHRpbWVTbG90U3RhcnQpO1xuICAgIHRpbWVTbG90RW5kLnNldFRpbWUoK3RpbWVTbG90RW5kLmdldFRpbWUoKSArIGR1cmF0aW9uICogMTAwMCk7XG5cbiAgICByZXR1cm4gPFRpbWVTbG90Pnsgc3RhcnQ6IHRpbWVTbG90U3RhcnQsIGVuZDogdGltZVNsb3RFbmQgfTtcbiAgfVxuXG4gIGdldFJlc291cmNlc0Zvckdyb3VwKHJlc291cmNlT3JHcm91cDogUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKSA6IFJlc291cmNlW10ge1xuICAgIGlmICgnY2hpbGRyZW4nIGluIHJlc291cmNlT3JHcm91cCkge1xuICAgICAgcmV0dXJuIHJlc291cmNlT3JHcm91cC5jaGlsZHJlblxuICAgICAgICAubWFwKChjaGlsZCkgPT4gdGhpcy5nZXRSZXNvdXJjZXNGb3JHcm91cChjaGlsZCkpXG4gICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3Jlc291cmNlT3JHcm91cF07XG4gICAgfVxuICB9XG5cbiAgLy8jcmVnaW9uIE1vZGVcbiAgbW9kZXMgPSBFU2NoZWR1bGVyTW9kZTtcbiAgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVTY2hlZHVsZXJNb2RlPihFU2NoZWR1bGVyTW9kZS53ZWVrKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFU2NoZWR1bGVyTW9kZT4oKTtcbiAgcHVibGljIGdldCBtb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogRVNjaGVkdWxlck1vZGUpIHtcbiAgICB0aGlzLm1vZGUkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICAvLyAvLyNyZWdpb24gU2NhbGVcbiAgLy8gc2NhbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY2hlZHVsZXJTY2FsZT4oYXZhaWxhYmxlU2NhbGVzWzRdKTtcbiAgLy8gQE91dHB1dCgpIHB1YmxpYyBzY2FsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2NoZWR1bGVyU2NhbGU+KCk7XG4gIC8vIHB1YmxpYyBnZXQgc2NhbGUoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuc2NhbGUkLnZhbHVlO1xuICAvLyB9XG4gIC8vIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2NhbGUodmFsdWU6IFNjaGVkdWxlclNjYWxlKSB7XG4gIC8vICAgdGhpcy5zY2FsZSQubmV4dCh2YWx1ZSk7XG4gIC8vIH1cbiAgLy8gLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBXZWVrT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHdlZWtPcHRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxXZWVrT3B0aW9ucz4oKTtcbiAgcHVibGljIGdldCB3ZWVrT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy53ZWVrT3B0aW9ucyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCB3ZWVrT3B0aW9ucyh2YWx1ZTogV2Vla09wdGlvbnMpIHtcbiAgICB0aGlzLndlZWtPcHRpb25zJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFRpbWVsaW5lT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHRpbWVsaW5lT3B0aW9uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGltZWxpbmVPcHRpb25zPigpO1xuICBwdWJsaWMgZ2V0IHRpbWVsaW5lT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50aW1lbGluZU9wdGlvbnMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdGltZWxpbmVPcHRpb25zKHZhbHVlOiBUaW1lbGluZU9wdGlvbnMpIHtcbiAgICB0aGlzLnRpbWVsaW5lT3B0aW9ucyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBtYXhJbm5lckhlaWdodFxuICBASW5wdXQoKSBwdWJsaWMgbWF4SW5uZXJIZWlnaHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFJlc291cmNlc1xuICBwdWJsaWMgZ2V0IHJlc291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVzb3VyY2VzKHZhbHVlOiAoUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKVtdKSB7XG4gICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHByaXZhdGUgYWRkRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICByZXN1bHQuc2V0RGF0ZShyZXN1bHQuZ2V0RGF0ZSgpICsgZGF5cyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9uUHJldmlvdXNXZWVrT3JNb250aCgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlV2Vla09yTW9udGgoZmFsc2UpO1xuICB9XG5cbiAgb25OZXh0V2Vla09yTW9udGgoKSB7XG4gICAgdGhpcy5vbkNoYW5nZVdlZWtPck1vbnRoKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZVdlZWtPck1vbnRoKG5leHQ6IGJvb2xlYW4pIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQsIHRoaXMubW9kZSRdKVxuICAgICAgLnBpcGUobWFwKChbY3VycmVudFdlZWtPck1vbnRoLCBtb2RlXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZERheXMoY3VycmVudFdlZWtPck1vbnRoLCAobmV4dCA/IDcgOiAtNykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoY3VycmVudFdlZWtPck1vbnRoLmdldEZ1bGxZZWFyKCksIGN1cnJlbnRXZWVrT3JNb250aC5nZXRNb250aCgpICsgKG5leHQgPyAxIDogLTEpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgodykgPT4gdGhpcy5jdXJyZW50V2Vla09yTW9udGgkLm5leHQodykpO1xuICB9XG5cbiAgb25Ib3ZlckV2ZW50KGV2OiBTY2hlZHVsZXJFdmVudCB8IG51bGwpIHtcbiAgICB0aGlzLmhvdmVyZWRFdmVudCQubmV4dChldik7XG4gIH1cblxuICBvbkxlYXZlRXZlbnQoZXY6IFNjaGVkdWxlckV2ZW50IHwgbnVsbCkge1xuICAgIHRoaXMuaG92ZXJlZEV2ZW50JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgb3BlcmF0aW9uOiBEcmFnT3BlcmF0aW9uIHwgbnVsbCA9IG51bGw7XG4gIGRyYWdTdGFydFRpbWVzbG90OiBUaW1lU2xvdCB8IG51bGwgPSBudWxsO1xuICBvbkNyZWF0ZUV2ZW50KGV2OiBNb3VzZUV2ZW50LCBzbG90OiBUaW1lU2xvdCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5tb3VzZVN0YXRlJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgPSBzbG90O1xuICAgIHRoaXMub3BlcmF0aW9uID0ge1xuICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudCxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHN0YXJ0OiBzbG90LnN0YXJ0LFxuICAgICAgICBlbmQ6IHNsb3QuZW5kLFxuICAgICAgICBjb2xvcjogJyNGMDAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Rlc3QgZXZlbnQnLFxuICAgICAgfSxcbiAgICAgIG1ldGE6IG51bGwsXG4gICAgfTtcbiAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBzbG90LnN0YXJ0LCBlbmQ6IHNsb3QuZW5kIH0pO1xuICB9XG5cbiAgcmFuZG9tQ29sb3IoKSB7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IDEyODtcbiAgICByZXR1cm4gJyMnICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpO1xuICB9XG4gIHJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzczogbnVtYmVyKXtcbiAgICBjb25zdCByID0gMjU1LWJyaWdodG5lc3M7XG4gICAgY29uc3QgbiA9IDB8KChNYXRoLnJhbmRvbSgpICogcikgKyBicmlnaHRuZXNzKTtcbiAgICBjb25zdCBzID0gbi50b1N0cmluZygxNik7XG4gICAgcmV0dXJuIChzLmxlbmd0aD09MSkgPyAnMCcrcyA6IHM7XG4gIH1cblxuICBvblN0YXJ0RHJhZ0V2ZW50KGV2ZW50UGFydDogU2NoZWR1bGVyRXZlbnRQYXJ0LCBldjogTW91c2VFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5ob3ZlcmVkVGltZVNsb3QkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChob3ZlcmVkVGltZVNsb3QpID0+IHtcbiAgICAgIGlmIChldmVudFBhcnQuZXZlbnQpIHtcbiAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWRUaW1lU2xvdDtcbiAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQsXG4gICAgICAgICAgZXZlbnQ6IGV2ZW50UGFydC5ldmVudCxcbiAgICAgICAgICBtZXRhOiBudWxsLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudFBhcnQuZXZlbnQuc3RhcnQsIGVuZDogZXZlbnRQYXJ0LmV2ZW50LmVuZCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uU3RhcnRSZXNpemVFdmVudChldmVudDogU2NoZWR1bGVyRXZlbnQgfCBudWxsLCBwb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJykge1xuICAgIGlmIChldmVudCkge1xuICAgICAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgICAgICBjYXNlICd0b3AnOiB7XG4gICAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLnJlc2l6ZUV2ZW50LFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgbWV0YTogeyBwb3NpdGlvbiB9LFxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudC5zdGFydCwgZW5kOiBldmVudC5lbmQgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6IHtcbiAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQsXG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBtZXRhOiB7IHBvc2l0aW9uIH0sXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IGV2ZW50LnN0YXJ0LCBlbmQ6IGV2ZW50LmVuZCB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyNyZWdpb24gaG92ZXJlZFRpbWVzbG90JFxuICBwcml2YXRlIGdldEhvdmVyZWRUaW1lc2xvdChldjogTW91c2VFdmVudCwgdGltZVNsb3RzOiBTY2hlZHVsZXJTdGFtcFdpdGhTbG90c1tdKSB7XG4gICAgY29uc3QgaG92ZXJlZFNsb3RzID0gdGhpcy50aW1lU2xvdEVsZW1lbnRzLmZpbHRlcigoZWwpID0+IHtcbiAgICAgIGNvbnN0IHJjdCA9IGVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAocmN0LmxlZnQgPD0gZXYueCAmJiBldi54IDw9IHJjdC5yaWdodCAmJiByY3QudG9wIDw9IGV2LnkgJiYgZXYueSA8PSByY3QuYm90dG9tKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFob3ZlcmVkU2xvdHMgfHwgaG92ZXJlZFNsb3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2xvdEVsZW1lbnQgPSBob3ZlcmVkU2xvdHNbMF0ubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHN0clJvdyA9IHNsb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yb3cnKTtcbiAgICBpZiAoIXN0clJvdykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJvdyA9IHBhcnNlSW50KHN0clJvdyk7XG5cbiAgICBjb25zdCBzdHJDb2x1bW4gPSBzbG90RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sdW1uJyk7XG4gICAgaWYgKCFzdHJDb2x1bW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW4gPSBwYXJzZUludChzdHJDb2x1bW4pO1xuXG4gICAgY29uc3Qgc2xvdCA9IHRpbWVTbG90c1tyb3ddLnNsb3RzW2NvbHVtbl07XG4gICAgcmV0dXJuIHNsb3Q7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBvbk1vdXNlbW92ZShldjogTW91c2VFdmVudCkge1xuICAgIHRoaXMudGltZVNsb3RzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodGltZVNsb3RzKSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkID0gdGhpcy5nZXRIb3ZlcmVkVGltZXNsb3QoZXYsIHRpbWVTbG90cyk7XG4gICAgICB0aGlzLmhvdmVyZWRUaW1lU2xvdCQubmV4dChob3ZlcmVkKTtcblxuICAgICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5vcGVyYXRpb24ub3BlcmF0aW9uKSB7XG4gICAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uLmV2ZW50ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgJiYgaG92ZXJlZCAmJiAodGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kLmdldFRpbWUoKSAhPSBob3ZlcmVkLmVuZC5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA9PT0gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyAxIHNsb3RcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA8IGhvdmVyZWQuc3RhcnQuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgLy8gRHJhZyBkb3duXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IGhvdmVyZWQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpID4gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBEcmFnIHVwXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSBob3ZlcmVkLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLm1vdmVFdmVudDoge1xuICAgICAgICAgICAgaWYgKGhvdmVyZWQgJiYgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkge1xuICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKChldikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gIDxQcmV2aWV3RXZlbnQ+e1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZShldi5zdGFydC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5ldyBEYXRlKGV2LmVuZC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXYgPT4gdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQoZXYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICAgIGlmIChob3ZlcmVkKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JFxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLm9wZXJhdGlvbiAmJiB0aGlzLm9wZXJhdGlvbi5ldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24ubWV0YS5wb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IGhvdmVyZWQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuZW5kID0gdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3BlcmF0aW9uLm1ldGEucG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLm9wZXJhdGlvbi5ldmVudC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICBldi5lbmQgPSBob3ZlcmVkLmVuZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXYpID0+IHRoaXMucHJldmlld0V2ZW50JC5uZXh0KGV2KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VVcChldjogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLm9wZXJhdGlvbikge1xuICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdGlvbi5vcGVyYXRpb24pIHtcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucHJldmlld0V2ZW50JF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW3ByZXZpZXdFdmVudF0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHByZXZpZXdFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc291cmNlcyQubmV4dChbXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnJlc291cmNlcyQudmFsdWUsXG4gICAgICAgICAgICAgICAgICA8UmVzb3VyY2U+e1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05ldyByZXNvdXJjZSBncm91cCcsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50czogW3tcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydDogcHJldmlld0V2ZW50LnN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgIGVuZDogcHJldmlld0V2ZW50LmVuZCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5yYW5kb21Db2xvcigpLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IGV2ZW50J1xuICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQ6XG4gICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByZXZpZXdFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24gJiYgdGhpcy5vcGVyYXRpb24uZXZlbnQgJiYgcHJldmlld0V2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuc3RhcnQgPSBwcmV2aWV3RXZlbnQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kID0gcHJldmlld0V2ZW50LmVuZDtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodGhpcy5yZXNvdXJjZXMkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQodHJ1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gdy0xMDAgb3ZlcmZsb3cteS1hdXRvIG1iLTAgd2Vlay1zY2hlZHVsZVwiIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cIm51bGxcIlxuICAgICpuZ0lmPVwiKG1vZGUkIHwgYXN5bmMpID09PSBtb2Rlcy53ZWVrXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjYWxlbmRhci1sZWZ0IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBmbGV4LXN0YXJ0XCIgKGNsaWNrKT1cIm9uUHJldmlvdXNXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLWxlZnQnXCIgY2xhc3M9XCJweC0wXCI+PC9icy1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgZmxleC1lbmRcIiAoY2xpY2spPVwib25OZXh0V2Vla09yTW9udGgoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnMtaWNvbiBbaWNvbl09XCInY2hldnJvbi1yaWdodCdcIiBjbGFzcz1cInB4LTBcIj48L2JzLWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBjYWxlbmRhci1oZWFkLWNlbGxcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIChzaG93bkRheXMkIHwgYXN5bmMpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIGNvbC1mb3JtLWxhYmVsIHRleHQtY2VudGVyIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRheSB8IGRhdGU6ICdkZC1NTScgfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJkLW5vbmUgZC1sZy1pbmxpbmUtYmxvY2tcIj4te3sgZGF5IHwgZGF0ZTogJ3l5eXknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiIFtzdHlsZS5oZWlnaHQucHhdPVwibWF4SW5uZXJIZWlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgKm5nSWY9XCIodGltZVNsb3RzJCB8IGFzeW5jKSBhcyByb3dcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIod2Vla09wdGlvbnMkIHwgYXN5bmMpIGFzIHdlZWtPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBUaW1lc2xvdHMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGltZXNsb3RzIG9mIHJvdzsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IHAtMCB0aW1lc2xvdFwiIFtzdHlsZS5oZWlnaHQucHhdPVwid2Vla09wdGlvbnMudW5pdEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY2VsbCBjYWxlbmRhci1sZWZ0IGFsaWduLXRvcCBweC0yIHB5LTBcIj57eyB0aW1lc2xvdHMuc2xvdHNbMF0uc3RhcnQgfCBkYXRlOiAnSEg6bW06c3MnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsIGZsZXgtZ3Jvdy0xXCIgKm5nRm9yPVwibGV0IHNsb3Qgb2YgdGltZXNsb3RzLnNsb3RzOyBsZXQgaiA9IGluZGV4XCIgI3Nsb3QgKG1vdXNlZG93bik9XCJvbkNyZWF0ZUV2ZW50KCRldmVudCwgc2xvdClcIiBbYXR0ci5kYXRhLXJvd109XCJpXCIgW2F0dHIuZGF0YS1jb2x1bW5dPVwialwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBFdmVudHMgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0aW1lU2xvdER1cmF0aW9uJCB8IGFzeW5jKSBhcyB0aW1lU2xvdER1cmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZWxpbmVkRXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCB8IGFzeW5jKSBhcyBwYXJ0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnRQYXJ0IG9mIHBhcnREYXRhLnBhcnRzXCIgY2xhc3M9XCJldmVudCBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiKGV2ZW50UGFydC5wYXJ0IHwgYnNTZWNvbmRzVG9kYXlPZmZzZXQpIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKGV2ZW50UGFydC5wYXJ0IHwgYnNTZWNvbmRzVGltZXNwYW4pIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIidjYWxjKDkwcHggKyAoKDEwMCUgLSA5MHB4KSAvIDcgKiAnICsgKChldmVudFBhcnQucGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5uZXJcIiBbY2xhc3MuaG92ZXJdPVwiKGhvdmVyZWRFdmVudCQgfCBhc3luYykgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIidjYWxjKDEwMCUgLyAnICsgcGFydERhdGEudG90YWwgKyAnKSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQucGFydCB8IGJzU2Vjb25kc1RpbWVzcGFuKSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1hcmdpbi1sZWZ0XT1cIidjYWxjKDEwMCUgLyAnICsgcGFydERhdGEudG90YWwgKyAnICogJyArIGV2ZW50UGFydC5pbmRleCArICcpJ1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1yZXNpemUgdG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXZlbnRQYXJ0LnBhcnQuc3RhcnQgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50Py5zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRSZXNpemVFdmVudChldmVudFBhcnQucGFydC5ldmVudCwgJ3RvcCcpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1ib3JkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXdyYXBwZXJcIiAqbmdJZj1cImV2ZW50UGFydC5wYXJ0LmV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25TdGFydERyYWdFdmVudChldmVudFBhcnQucGFydCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbkhvdmVyRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTGVhdmVFdmVudChldmVudFBhcnQucGFydC5ldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1iZ1wiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImV2ZW50UGFydC5wYXJ0LmV2ZW50LmNvbG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtbGFiZWxcIj57eyBldmVudFBhcnQucGFydC5ldmVudC5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXJlc2l6ZSBib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJldmVudFBhcnQucGFydC5lbmQgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50Py5lbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0UmVzaXplRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQsICdib3R0b20nKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHByZXZpZXdFdmVudFBhcnRzRm9yVGhpc1dlZWskIHwgYXN5bmMpIGFzIHByZXZpZXdQYXJ0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnRQYXJ0IG9mIHByZXZpZXdQYXJ0RGF0YVwiIGNsYXNzPVwiZXZlbnQgcHJldmlldyBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiKGV2ZW50UGFydCB8IGJzU2Vjb25kc1RvZGF5T2Zmc2V0KSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnRdPVwiJ2NhbGMoOTBweCArICgoMTAwJSAtIDkwcHgpIC8gNyAqICcgKyAoKGV2ZW50UGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5uZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uLTEwMCBvdmVyZmxvdy15LWF1dG8gbWItMCBiZy13aGl0ZSB0aW1lbGluZVwiICpuZ0lmPVwiKG1vZGUkIHwgYXN5bmMpID09PSBtb2Rlcy50aW1lbGluZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkIGQtZmxleFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGZsZXgtc3RhcnRcIiAoY2xpY2spPVwib25QcmV2aW91c1dlZWtPck1vbnRoKClcIj5cbiAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLWxlZnQnXCIgY2xhc3M9XCJweC0wXCI+PC9icy1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGgzIHB5LTIgbWItMCB0ZXh0LWNlbnRlclwiPnt7IGN1cnJlbnRXZWVrT3JNb250aCQgfCBhc3luYyB8IGRhdGU6ICdNTU1NIHl5eXknIH19PC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZmxleC1zdGFydFwiIChjbGljayk9XCJvbk5leHRXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICA8YnMtaWNvbiBbaWNvbl09XCInY2hldnJvbi1yaWdodCdcIiBjbGFzcz1cInB4LTBcIj48L2JzLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5IHRhYmxlLXJlc3BvbnNpdmUgb3ZlcmZsb3cteC1hdXRvXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG1iLTBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZVNsb3RzJCB8IGFzeW5jKSBhcyB0aW1lU2xvdHNcIj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGRheSBvZiB0aW1lU2xvdHNcIiBbYXR0ci5jb2xzcGFuXT1cImRheS5zbG90cy5sZW5ndGhcIiBjbGFzcz1cInRleHQtY2VudGVyIHB4LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicG9zaXRpb24tc3RpY2t5IGRheS1sYWJlbFwiPnt7IGRheS5zdGFtcCB8IGRhdGU6ICdkIEVFJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZWxpbmVPcHRpb25zJCB8IGFzeW5jKSBhcyB0aW1lbGluZU9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRheSBvZiB0aW1lU2xvdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IHNsb3Qgb2YgZGF5LnNsb3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9jayBwLTAgdGV4dC1jZW50ZXJcIiBbc3R5bGUud2lkdGgucHhdPVwidGltZWxpbmVPcHRpb25zLnVuaXRXaWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2xvdC5zdGFydCB8IGRhdGU6ICdISDptbScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8YnMtcmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyICpuZ0Zvcj1cImxldCBncm91cCBvZiAocmVzb3VyY2VzJCB8IGFzeW5jKVwiIFtyZXNvdXJjZUdyb3VwXT1cImdyb3VwXCIgW3RpbWVTbG90c109XCJ0aW1lU2xvdHNcIj48L2JzLXJlc291cmNlLWdyb3VwLXByZXNlbnRlcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -6,7 +6,8 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
import * as i1 from "@angular/common";
|
|
7
7
|
import * as i2 from "@angular/cdk/portal";
|
|
8
8
|
import * as i3 from "@mintplayer/ng-bootstrap/let";
|
|
9
|
-
import * as i4 from "
|
|
9
|
+
import * as i4 from "@mintplayer/ng-bootstrap/user-agent";
|
|
10
|
+
import * as i5 from "../element-at/element-at.pipe";
|
|
10
11
|
export class BsSplitterComponent {
|
|
11
12
|
constructor() {
|
|
12
13
|
//#region Orientation
|
|
@@ -105,9 +106,12 @@ export class BsSplitterComponent {
|
|
|
105
106
|
this.startResize(indexBefore, indexAfter, { x: ev.clientX, y: ev.clientY });
|
|
106
107
|
}
|
|
107
108
|
startResizeTouch(ev, indexBefore, indexAfter, divider) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
console.log('start touch', divider);
|
|
110
|
+
if (ev.cancelable) {
|
|
111
|
+
ev.preventDefault();
|
|
112
|
+
this.touchedDivider$.next(divider);
|
|
113
|
+
this.startResize(indexBefore, indexAfter, { x: ev.touches[0].clientX, y: ev.touches[0].clientY });
|
|
114
|
+
}
|
|
111
115
|
}
|
|
112
116
|
startResize(indexBefore, indexAfter, pt) {
|
|
113
117
|
const sizes = this.computeSizes();
|
|
@@ -165,6 +169,7 @@ export class BsSplitterComponent {
|
|
|
165
169
|
onTouchEnd(ev) {
|
|
166
170
|
this.touchedDivider$.next(null);
|
|
167
171
|
this.onResizeUp();
|
|
172
|
+
console.log('end touch', null);
|
|
168
173
|
}
|
|
169
174
|
onResizeUp() {
|
|
170
175
|
this.isResizing$.next(false);
|
|
@@ -172,10 +177,10 @@ export class BsSplitterComponent {
|
|
|
172
177
|
}
|
|
173
178
|
}
|
|
174
179
|
BsSplitterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsSplitterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
175
|
-
BsSplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsSplitterComponent, selector: "bs-splitter", inputs: { orientation: "orientation" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.w-100": "this.classes", "class.h-100": "this.classes", "class.d-flex": "this.classes" } }, queries: [{ propertyName: "panels", predicate: BsSplitPanelComponent }], viewQueries: [{ propertyName: "splitPanels", predicate: ["splitPanel"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>", styles: [".split-panel{flex-grow:1}.divider{flex-shrink:0;transition:background-color .15s ease-in-out;z-index:3}.divider:before{background-position:center center;background-repeat:no-repeat}.divider:hover:before
|
|
180
|
+
BsSplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsSplitterComponent, selector: "bs-splitter", inputs: { orientation: "orientation" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.w-100": "this.classes", "class.h-100": "this.classes", "class.d-flex": "this.classes" } }, queries: [{ propertyName: "panels", predicate: BsSplitPanelComponent }], viewQueries: [{ propertyName: "splitPanels", predicate: ["splitPanel"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex w-100 root\" [class]=\"[directionClass$ | async, splitterClass$ | async]\" bsUserAgent>\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" bsUserAgent [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>", styles: [".root{--thumb-margin: 3px}.root.os-android{--thumb-margin: 20px}.split-panel{flex-grow:1}.divider{flex-shrink:0;transition:background-color .15s ease-in-out;z-index:3}.divider:before{background-position:center center;background-repeat:no-repeat}.divider:not(.os-android):hover:before{background-color:#1389fd;border-radius:4px}.divider.os-android.hover:before{background-color:#1389fd;border-radius:4px}.divider:before{content:\"\";display:block;background-color:#eee}.split-hor>.divider{width:calc(8px + 2 * var(--thumb-margin));height:100%;cursor:col-resize;border-left:var(--thumb-margin) solid transparent;border-right:var(--thumb-margin) solid transparent}.split-hor>.divider:before{height:100%;width:8px;margin:0 auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)}.split-hor>.split-panel:not(:first-child){margin-left:calc(-1 * var(--thumb-margin))}.split-hor>.split-panel:not(:last-child){margin-right:calc(-1 * var(--thumb-margin))}.split-ver>.divider{width:100%;height:calc(8px + 2 * var(--thumb-margin));cursor:row-resize;border-top:var(--thumb-margin) solid transparent;border-bottom:var(--thumb-margin) solid transparent}.split-ver>.divider:before{height:8px;margin:auto 0;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC)}.split-ver>.split-panel:not(:first-child){margin-top:calc(-1 * var(--thumb-margin))}.split-ver>.split-panel:not(:last-child){margin-bottom:calc(-1 * var(--thumb-margin))}.flex-none{flex:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i3.BsLetDirective, selector: "[bsLet]", inputs: ["bsLet"] }, { kind: "directive", type: i4.BsUserAgentDirective, selector: "[bsUserAgent]", outputs: ["detected"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.BsElementAtPipe, name: "bsElementAt" }] });
|
|
176
181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsSplitterComponent, decorators: [{
|
|
177
182
|
type: Component,
|
|
178
|
-
args: [{ selector: 'bs-splitter', template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>", styles: [".split-panel{flex-grow:1}.divider{flex-shrink:0;transition:background-color .15s ease-in-out;z-index:3}.divider:before{background-position:center center;background-repeat:no-repeat}.divider:hover:before
|
|
183
|
+
args: [{ selector: 'bs-splitter', template: "<div class=\"d-flex w-100 root\" [class]=\"[directionClass$ | async, splitterClass$ | async]\" bsUserAgent>\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" bsUserAgent [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>", styles: [".root{--thumb-margin: 3px}.root.os-android{--thumb-margin: 20px}.split-panel{flex-grow:1}.divider{flex-shrink:0;transition:background-color .15s ease-in-out;z-index:3}.divider:before{background-position:center center;background-repeat:no-repeat}.divider:not(.os-android):hover:before{background-color:#1389fd;border-radius:4px}.divider.os-android.hover:before{background-color:#1389fd;border-radius:4px}.divider:before{content:\"\";display:block;background-color:#eee}.split-hor>.divider{width:calc(8px + 2 * var(--thumb-margin));height:100%;cursor:col-resize;border-left:var(--thumb-margin) solid transparent;border-right:var(--thumb-margin) solid transparent}.split-hor>.divider:before{height:100%;width:8px;margin:0 auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)}.split-hor>.split-panel:not(:first-child){margin-left:calc(-1 * var(--thumb-margin))}.split-hor>.split-panel:not(:last-child){margin-right:calc(-1 * var(--thumb-margin))}.split-ver>.divider{width:100%;height:calc(8px + 2 * var(--thumb-margin));cursor:row-resize;border-top:var(--thumb-margin) solid transparent;border-bottom:var(--thumb-margin) solid transparent}.split-ver>.divider:before{height:8px;margin:auto 0;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC)}.split-ver>.split-panel:not(:first-child){margin-top:calc(-1 * var(--thumb-margin))}.split-ver>.split-panel:not(:last-child){margin-bottom:calc(-1 * var(--thumb-margin))}.flex-none{flex:none}\n"] }]
|
|
179
184
|
}], ctorParameters: function () { return []; }, propDecorators: { orientation: [{
|
|
180
185
|
type: Input
|
|
181
186
|
}], panels: [{
|
|
@@ -200,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
200
205
|
type: HostListener,
|
|
201
206
|
args: ['document:mouseup', ['$event']]
|
|
202
207
|
}] } });
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcGxpdHRlci9zcmMvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcGxpdHRlci9zcmMvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7OztBQVE3RSxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCO1FBcURBLHFCQUFxQjtRQUNyQixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFZLFlBQVksQ0FBQyxDQUFDO1FBTzVELFlBQVk7UUFFWixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFrQixJQUFJLENBQUMsQ0FBQztRQUUzRCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBUzNELFlBQU8sR0FBRyxJQUFJLENBQUM7UUFNZixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xELG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQXdCLElBQUksQ0FBQyxDQUFDO1FBQ25FLGNBQVMsR0FBeUIsSUFBSSxDQUFDO1FBakZy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aEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQzs7Z0hBdExVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLCtVQW9FYixxQkFBcUIsMkhDaEZ4Qyx1cENBYU07MkZERE8sbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWE7MEVBZ0VILFdBQVc7c0JBQTlCLEtBQUs7Z0JBUXNDLE1BQU07c0JBQWpELGVBQWU7dUJBQUMscUJBQXFCO2dCQUdWLFdBQVc7c0JBQXRDLFlBQVk7dUJBQUMsWUFBWTtnQkFLMUIsT0FBTztzQkFITixXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixXQUFXO3VCQUFDLGNBQWM7Z0JBdUQzQixXQUFXO3NCQURWLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBeUM5QyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBIb3N0QmluZGluZywgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHJhZ09wZXJhdGlvbiwgRURyYWdPcGVyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RyYWctb3BlcmF0aW9uJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBCc1NwbGl0UGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9zcGxpdC1wYW5lbC9zcGxpdC1wYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMvZGlyZWN0aW9uLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1zcGxpdHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcGxpdHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NwbGl0dGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJzU3BsaXR0ZXJDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZGlyZWN0aW9uQ2xhc3MkID0gdGhpcy5vcmllbnRhdGlvbiQucGlwZShtYXAoKG9yaWVudGF0aW9uKSA9PiB7XG4gICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2hvcml6b250YWwnOiByZXR1cm4gJ2ZsZXgtcm93JztcbiAgICAgICAgY2FzZSAndmVydGljYWwnOiByZXR1cm4gJ2ZsZXgtY29sdW1uJztcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgdGhpcy5zcGxpdHRlckNsYXNzJCA9IHRoaXMub3JpZW50YXRpb24kLnBpcGUobWFwKChvcmllbnRhdGlvbikgPT4ge1xuICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgICAgICBjYXNlICdob3Jpem9udGFsJzogcmV0dXJuICdzcGxpdC1ob3InO1xuICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6IHJldHVybiAnc3BsaXQtdmVyJztcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgdGhpcy53aWR0aFN0eWxlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9yaWVudGF0aW9uJCwgdGhpcy5wcmV2aWV3U2l6ZXMkLCB0aGlzLnBhbmVscyRdKVxuICAgICAgLnBpcGUobWFwKChbb3JpZW50YXRpb24sIHByZXZpZXdTaXplcywgcGFuZWxzXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6XG4gICAgICAgICAgICBpZiAocHJldmlld1NpemVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbLi4uQXJyYXkocGFuZWxzLmxlbmd0aCkua2V5cygpXS5tYXAoKHYsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaSA8IHByZXZpZXdTaXplcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aWV3U2l6ZXNbaV0gKyAncHgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gJzEwMCUnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gQXJyYXkocGFuZWxzLmxlbmd0aCkubWFwKCh2LCBpKSA9PiAnMTAwJScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgdGhpcy5oZWlnaHRTdHlsZXMkID0gIGNvbWJpbmVMYXRlc3QoW3RoaXMub3JpZW50YXRpb24kLCB0aGlzLnByZXZpZXdTaXplcyQsIHRoaXMucGFuZWxzJF0pXG4gICAgICAucGlwZShtYXAoKFtvcmllbnRhdGlvbiwgcHJldmlld1NpemVzLCBwYW5lbHNdKSA9PiB7XG4gICAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHtcbiAgICAgICAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgICAgIGlmIChwcmV2aWV3U2l6ZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFsuLi5BcnJheShwYW5lbHMubGVuZ3RoKS5rZXlzKCldLm1hcCgodiwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpIDwgcHJldmlld1NpemVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpZXdTaXplc1tpXSArICdweCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAnMTAwJSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBBcnJheShwYW5lbHMubGVuZ3RoKS5tYXAoKHYsIGkpID0+ICcxMDAlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBPcmllbnRhdGlvblxuICBvcmllbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERpcmVjdGlvbj4oJ2hvcml6b250YWwnKTtcbiAgcHVibGljIGdldCBvcmllbnRhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBvcmllbnRhdGlvbih2YWx1ZTogRGlyZWN0aW9uKSB7XG4gICAgdGhpcy5vcmllbnRhdGlvbiQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJldmlld1NpemVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyW10gfCBudWxsPihudWxsKTtcblxuICBwYW5lbHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCc1NwbGl0UGFuZWxDb21wb25lbnRbXT4oW10pO1xuICBAQ29udGVudENoaWxkcmVuKEJzU3BsaXRQYW5lbENvbXBvbmVudCkgc2V0IHBhbmVscyh2YWx1ZTogUXVlcnlMaXN0PEJzU3BsaXRQYW5lbENvbXBvbmVudD4pIHtcbiAgICB0aGlzLnBhbmVscyQubmV4dCh2YWx1ZS50b0FycmF5KCkpO1xuICB9XG4gIEBWaWV3Q2hpbGRyZW4oJ3NwbGl0UGFuZWwnKSBzcGxpdFBhbmVscyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj47XG4gIFxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnctMTAwJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oLTEwMCcpXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZC1mbGV4JylcbiAgY2xhc3NlcyA9IHRydWU7XG5cbiAgZGlyZWN0aW9uQ2xhc3MkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHNwbGl0dGVyQ2xhc3MkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHdpZHRoU3R5bGVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXSB8IG51bGw+O1xuICBoZWlnaHRTdHlsZXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdIHwgbnVsbD47XG4gIGlzUmVzaXppbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHRvdWNoZWREaXZpZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgb3BlcmF0aW9uOiBEcmFnT3BlcmF0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgY29tcHV0ZVNpemVzKCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3Qgc2l6ZXMgPSB0aGlzLnNwbGl0UGFuZWxzXG4gICAgICAgIC5tYXAoKHNwKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoc3AubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgc3dpdGNoICh0aGlzLm9yaWVudGF0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdob3Jpem9udGFsJzogcmV0dXJuIHN0eWxlcy53aWR0aDtcbiAgICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzogcmV0dXJuIHN0eWxlcy5oZWlnaHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAubWFwKChzaXplKSA9PiBzaXplLnNsaWNlKDAsIC0yKSlcbiAgICAgICAgLm1hcCgoc2l6ZSkgPT4gcGFyc2VGbG9hdChzaXplKSk7XG4gICAgICByZXR1cm4gc2l6ZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNwbGl0UGFuZWxzLm1hcChwID0+IDUwKTtcbiAgICB9XG4gIH1cbiAgXG4gIHN0YXJ0UmVzaXplTW91c2UoZXY6IE1vdXNlRXZlbnQsIGluZGV4QmVmb3JlOiBudW1iZXIsIGluZGV4QWZ0ZXI6IG51bWJlcikge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5zdGFydFJlc2l6ZShpbmRleEJlZm9yZSwgaW5kZXhBZnRlciwgeyB4OiBldi5jbGllbnRYLCB5OiBldi5jbGllbnRZIH0pO1xuICB9XG5cbiAgc3RhcnRSZXNpemVUb3VjaChldjogVG91Y2hFdmVudCwgaW5kZXhCZWZvcmU6IG51bWJlciwgaW5kZXhBZnRlcjogbnVtYmVyLCBkaXZpZGVyOiBIVE1MRGl2RWxlbWVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy50b3VjaGVkRGl2aWRlciQubmV4dChkaXZpZGVyKTtcbiAgICB0aGlzLnN0YXJ0UmVzaXplKGluZGV4QmVmb3JlLCBpbmRleEFmdGVyLCB7IHg6IGV2LnRvdWNoZXNbMF0uY2xpZW50WCwgeTogZXYudG91Y2hlc1swXS5jbGllbnRZIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFJlc2l6ZShpbmRleEJlZm9yZTogbnVtYmVyLCBpbmRleEFmdGVyOiBudW1iZXIsIHB0OiBQb2ludCkge1xuICAgIGNvbnN0IHNpemVzID0gdGhpcy5jb21wdXRlU2l6ZXMoKTtcbiAgICB0aGlzLnByZXZpZXdTaXplcyQubmV4dChzaXplcyk7XG4gICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLnJlc2l6ZVNwbGl0dGVyLFxuICAgICAgc3RhcnRQb3NpdGlvbjogcHQsXG4gICAgICBzaXplcyxcbiAgICAgIGluZGV4QmVmb3JlLFxuICAgICAgaW5kZXhBZnRlcixcbiAgICB9O1xuXG4gICAgdGhpcy5pc1Jlc2l6aW5nJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZU1vdmUoZXY6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLm9uUmVzaXplTW92ZSh7IHg6IGV2LmNsaWVudFgsIHk6IGV2LmNsaWVudFkgfSk7XG4gIH1cblxuICBvblRvdWNoTW92ZShldjogVG91Y2hFdmVudCkge1xuICAgIHRoaXMub25SZXNpemVNb3ZlKHsgeDogZXYudG91Y2hlc1swXS5jbGllbnRYLCB5OiBldi50b3VjaGVzWzBdLmNsaWVudFkgfSk7XG4gIH1cblxuICBvblJlc2l6ZU1vdmUocHQ6IFBvaW50KSB7XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMub3BlcmF0aW9uLm9wZXJhdGlvbikge1xuICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLnJlc2l6ZVNwbGl0dGVyOiB7XG4gICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5vcmllbnRhdGlvbiRdKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtvcmllbnRhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgICAgICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IHB0LnggLSB0aGlzLm9wZXJhdGlvbi5zdGFydFBvc2l0aW9uLng7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN4ID0gQXJyYXkuZnJvbSh0aGlzLm9wZXJhdGlvbi5zaXplcyk7XG4gICAgICAgICAgICAgICAgICAgIHN4W3RoaXMub3BlcmF0aW9uLmluZGV4QmVmb3JlXSA9IHRoaXMub3BlcmF0aW9uLnNpemVzW3RoaXMub3BlcmF0aW9uLmluZGV4QmVmb3JlXSArIGRlbHRhWDtcbiAgICAgICAgICAgICAgICAgICAgc3hbdGhpcy5vcGVyYXRpb24uaW5kZXhBZnRlcl0gPSB0aGlzLm9wZXJhdGlvbi5zaXplc1t0aGlzLm9wZXJhdGlvbi5pbmRleEFmdGVyXSAtIGRlbHRhWDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3U2l6ZXMkLm5leHQoc3gpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsdGFZID0gcHQueSAtIHRoaXMub3BlcmF0aW9uLnN0YXJ0UG9zaXRpb24ueTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3kgPSBBcnJheS5mcm9tKHRoaXMub3BlcmF0aW9uLnNpemVzKTtcbiAgICAgICAgICAgICAgICAgICAgc3lbdGhpcy5vcGVyYXRpb24uaW5kZXhCZWZvcmVdID0gdGhpcy5vcGVyYXRpb24uc2l6ZXNbdGhpcy5vcGVyYXRpb24uaW5kZXhCZWZvcmVdICsgZGVsdGFZO1xuICAgICAgICAgICAgICAgICAgICBzeVt0aGlzLm9wZXJhdGlvbi5pbmRleEFmdGVyXSA9IHRoaXMub3BlcmF0aW9uLnNpemVzW3RoaXMub3BlcmF0aW9uLmluZGV4QWZ0ZXJdIC0gZGVsdGFZO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdTaXplcyQubmV4dChzeSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VVcChldjogTW91c2VFdmVudCkge1xuICAgIHRoaXMub25SZXNpemVVcCgpO1xuICB9XG5cbiAgb25Ub3VjaEVuZChldjogVG91Y2hFdmVudCkge1xuICAgIHRoaXMudG91Y2hlZERpdmlkZXIkLm5leHQobnVsbCk7XG4gICAgdGhpcy5vblJlc2l6ZVVwKCk7XG4gIH1cblxuICBvblJlc2l6ZVVwKCkge1xuICAgIHRoaXMuaXNSZXNpemluZyQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5vcGVyYXRpb24gPSBudWxsO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IHctMTAwXCIgW2NsYXNzXT1cIltkaXJlY3Rpb25DbGFzcyQgfCBhc3luYywgc3BsaXR0ZXJDbGFzcyQgfCBhc3luY11cIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFuZWwgb2YgKHBhbmVscyQgfCBhc3luYyk7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqYnNMZXQ9XCIod2lkdGhTdHlsZXMkIHwgYXN5bmMpIGFzIHdpZHRoU3R5bGVzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpic0xldD1cIihoZWlnaHRTdHlsZXMkIHwgYXN5bmMpIGFzIGhlaWdodFN0eWxlc1wiPlxuICAgICAgICAgICAgICAgIDwhLS0gIFtzdHlsZS53aWR0aC4lXT1cIjEwMFwiIFtzdHlsZS5oZWlnaHQuJV09XCIxMDBcIiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BsaXQtcGFuZWwgb3ZlcmZsb3ctaGlkZGVuXCIgW2NsYXNzLmZsZXgtbm9uZV09XCJpc1Jlc2l6aW5nJCB8IGFzeW5jXCIgI3NwbGl0UGFuZWwgW3N0eWxlLndpZHRoXT1cIndpZHRoU3R5bGVzIHwgYnNFbGVtZW50QXQ6aW5kZXhcIiBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFN0eWxlcyB8IGJzRWxlbWVudEF0OmluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInBhbmVsLnBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCIgW2NsYXNzLmhvdmVyXT1cIih0b3VjaGVkRGl2aWRlciQgfCBhc3luYykgPT09IGRpdmlkZXJcIiAjZGl2aWRlciAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplTW91c2UoJGV2ZW50LCBpbmRleCwgaW5kZXggKyAxKVwiICh0b3VjaHN0YXJ0KT1cInN0YXJ0UmVzaXplVG91Y2goJGV2ZW50LCBpbmRleCwgaW5kZXggKyAxLCBkaXZpZGVyKVwiICh0b3VjaG1vdmUpPVwib25Ub3VjaE1vdmUoJGV2ZW50KVwiICh0b3VjaGVuZCk9XCJvblRvdWNoRW5kKCRldmVudClcIiAqbmdJZj1cIiFsYXN0XCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj4iXX0=
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcGxpdHRlci9zcmMvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcGxpdHRlci9zcmMvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7QUFRN0UsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QjtRQXFEQSxxQkFBcUI7UUFDckIsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBWSxZQUFZLENBQUMsQ0FBQztRQU81RCxZQUFZO1FBRVosa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsSUFBSSxDQUFDLENBQUM7UUFFM0QsWUFBTyxHQUFHLElBQUksZUFBZSxDQUEwQixFQUFFLENBQUMsQ0FBQztRQVMzRCxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBTWYsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsRCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF3QixJQUFJLENBQUMsQ0FBQztRQUNuRSxjQUFTLEdBQXlCLElBQUksQ0FBQztRQWpG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QUM7SUFDcEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFjO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7O2dIQTFMVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiwrVUFvRWIscUJBQXFCLDJIQ2hGeEMsb3JDQWFNOzJGRERPLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxhQUFhOzBFQWdFSCxXQUFXO3NCQUE5QixLQUFLO2dCQVFzQyxNQUFNO3NCQUFqRCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFHVixXQUFXO3NCQUF0QyxZQUFZO3VCQUFDLFlBQVk7Z0JBSzFCLE9BQU87c0JBSE4sV0FBVzt1QkFBQyxhQUFhOztzQkFDekIsV0FBVzt1QkFBQyxhQUFhOztzQkFDekIsV0FBVzt1QkFBQyxjQUFjO2dCQTBEM0IsV0FBVztzQkFEVixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXlDOUMsU0FBUztzQkFEUixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSG9zdEJpbmRpbmcsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERyYWdPcGVyYXRpb24sIEVEcmFnT3BlcmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kcmFnLW9wZXJhdGlvbic7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgQnNTcGxpdFBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vc3BsaXQtcGFuZWwvc3BsaXQtcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJy4uL3R5cGVzL2RpcmVjdGlvbi50eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnMtc3BsaXR0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3BsaXR0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zcGxpdHRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCc1NwbGl0dGVyQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRpcmVjdGlvbkNsYXNzJCA9IHRoaXMub3JpZW50YXRpb24kLnBpcGUobWFwKChvcmllbnRhdGlvbikgPT4ge1xuICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgICAgICBjYXNlICdob3Jpem9udGFsJzogcmV0dXJuICdmbGV4LXJvdyc7XG4gICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzogcmV0dXJuICdmbGV4LWNvbHVtbic7XG4gICAgICB9XG4gICAgfSkpO1xuICAgIHRoaXMuc3BsaXR0ZXJDbGFzcyQgPSB0aGlzLm9yaWVudGF0aW9uJC5waXBlKG1hcCgob3JpZW50YXRpb24pID0+IHtcbiAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHtcbiAgICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6IHJldHVybiAnc3BsaXQtaG9yJztcbiAgICAgICAgY2FzZSAndmVydGljYWwnOiByZXR1cm4gJ3NwbGl0LXZlcic7XG4gICAgICB9XG4gICAgfSkpO1xuICAgIHRoaXMud2lkdGhTdHlsZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5vcmllbnRhdGlvbiQsIHRoaXMucHJldmlld1NpemVzJCwgdGhpcy5wYW5lbHMkXSlcbiAgICAgIC5waXBlKG1hcCgoW29yaWVudGF0aW9uLCBwcmV2aWV3U2l6ZXMsIHBhbmVsc10pID0+IHtcbiAgICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgICAgICAgIGNhc2UgJ2hvcml6b250YWwnOlxuICAgICAgICAgICAgaWYgKHByZXZpZXdTaXplcykge1xuICAgICAgICAgICAgICByZXR1cm4gWy4uLkFycmF5KHBhbmVscy5sZW5ndGgpLmtleXMoKV0ubWFwKCh2LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPCBwcmV2aWV3U2l6ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlld1NpemVzW2ldICsgJ3B4JztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuICcxMDAlJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIEFycmF5KHBhbmVscy5sZW5ndGgpLm1hcCgodiwgaSkgPT4gJzEwMCUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIHRoaXMuaGVpZ2h0U3R5bGVzJCA9ICBjb21iaW5lTGF0ZXN0KFt0aGlzLm9yaWVudGF0aW9uJCwgdGhpcy5wcmV2aWV3U2l6ZXMkLCB0aGlzLnBhbmVscyRdKVxuICAgICAgLnBpcGUobWFwKChbb3JpZW50YXRpb24sIHByZXZpZXdTaXplcywgcGFuZWxzXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6XG4gICAgICAgICAgICBpZiAocHJldmlld1NpemVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbLi4uQXJyYXkocGFuZWxzLmxlbmd0aCkua2V5cygpXS5tYXAoKHYsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaSA8IHByZXZpZXdTaXplcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aWV3U2l6ZXNbaV0gKyAncHgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gJzEwMCUnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gQXJyYXkocGFuZWxzLmxlbmd0aCkubWFwKCh2LCBpKSA9PiAnMTAwJScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gIH1cblxuICAvLyNyZWdpb24gT3JpZW50YXRpb25cbiAgb3JpZW50YXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEaXJlY3Rpb24+KCdob3Jpem9udGFsJyk7XG4gIHB1YmxpYyBnZXQgb3JpZW50YXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMub3JpZW50YXRpb24kLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgb3JpZW50YXRpb24odmFsdWU6IERpcmVjdGlvbikge1xuICAgIHRoaXMub3JpZW50YXRpb24kLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHByZXZpZXdTaXplcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcltdIHwgbnVsbD4obnVsbCk7XG5cbiAgcGFuZWxzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnNTcGxpdFBhbmVsQ29tcG9uZW50W10+KFtdKTtcbiAgQENvbnRlbnRDaGlsZHJlbihCc1NwbGl0UGFuZWxDb21wb25lbnQpIHNldCBwYW5lbHModmFsdWU6IFF1ZXJ5TGlzdDxCc1NwbGl0UGFuZWxDb21wb25lbnQ+KSB7XG4gICAgdGhpcy5wYW5lbHMkLm5leHQodmFsdWUudG9BcnJheSgpKTtcbiAgfVxuICBAVmlld0NoaWxkcmVuKCdzcGxpdFBhbmVsJykgc3BsaXRQYW5lbHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuICBcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53LTEwMCcpXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaC0xMDAnKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmQtZmxleCcpXG4gIGNsYXNzZXMgPSB0cnVlO1xuXG4gIGRpcmVjdGlvbkNsYXNzJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBzcGxpdHRlckNsYXNzJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICB3aWR0aFN0eWxlcyQ6IE9ic2VydmFibGU8c3RyaW5nW10gfCBudWxsPjtcbiAgaGVpZ2h0U3R5bGVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXSB8IG51bGw+O1xuICBpc1Jlc2l6aW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICB0b3VjaGVkRGl2aWRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIG9wZXJhdGlvbjogRHJhZ09wZXJhdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbXB1dGVTaXplcygpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IHNpemVzID0gdGhpcy5zcGxpdFBhbmVsc1xuICAgICAgICAubWFwKChzcCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHNwLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIHN3aXRjaCAodGhpcy5vcmllbnRhdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6IHJldHVybiBzdHlsZXMud2lkdGg7XG4gICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6IHJldHVybiBzdHlsZXMuaGVpZ2h0O1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLm1hcCgoc2l6ZSkgPT4gc2l6ZS5zbGljZSgwLCAtMikpXG4gICAgICAgIC5tYXAoKHNpemUpID0+IHBhcnNlRmxvYXQoc2l6ZSkpO1xuICAgICAgcmV0dXJuIHNpemVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5zcGxpdFBhbmVscy5tYXAocCA9PiA1MCk7XG4gICAgfVxuICB9XG4gIFxuICBzdGFydFJlc2l6ZU1vdXNlKGV2OiBNb3VzZUV2ZW50LCBpbmRleEJlZm9yZTogbnVtYmVyLCBpbmRleEFmdGVyOiBudW1iZXIpIHtcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc3RhcnRSZXNpemUoaW5kZXhCZWZvcmUsIGluZGV4QWZ0ZXIsIHsgeDogZXYuY2xpZW50WCwgeTogZXYuY2xpZW50WSB9KTtcbiAgfVxuXG4gIHN0YXJ0UmVzaXplVG91Y2goZXY6IFRvdWNoRXZlbnQsIGluZGV4QmVmb3JlOiBudW1iZXIsIGluZGV4QWZ0ZXI6IG51bWJlciwgZGl2aWRlcjogSFRNTERpdkVsZW1lbnQpIHtcbiAgICBjb25zb2xlLmxvZygnc3RhcnQgdG91Y2gnLCBkaXZpZGVyKTtcbiAgICBpZiAoZXYuY2FuY2VsYWJsZSkge1xuICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudG91Y2hlZERpdmlkZXIkLm5leHQoZGl2aWRlcik7XG4gICAgICB0aGlzLnN0YXJ0UmVzaXplKGluZGV4QmVmb3JlLCBpbmRleEFmdGVyLCB7IHg6IGV2LnRvdWNoZXNbMF0uY2xpZW50WCwgeTogZXYudG91Y2hlc1swXS5jbGllbnRZIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRSZXNpemUoaW5kZXhCZWZvcmU6IG51bWJlciwgaW5kZXhBZnRlcjogbnVtYmVyLCBwdDogUG9pbnQpIHtcbiAgICBjb25zdCBzaXplcyA9IHRoaXMuY29tcHV0ZVNpemVzKCk7XG4gICAgdGhpcy5wcmV2aWV3U2l6ZXMkLm5leHQoc2l6ZXMpO1xuICAgIHRoaXMub3BlcmF0aW9uID0ge1xuICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5yZXNpemVTcGxpdHRlcixcbiAgICAgIHN0YXJ0UG9zaXRpb246IHB0LFxuICAgICAgc2l6ZXMsXG4gICAgICBpbmRleEJlZm9yZSxcbiAgICAgIGluZGV4QWZ0ZXIsXG4gICAgfTtcblxuICAgIHRoaXMuaXNSZXNpemluZyQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VNb3ZlKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5vblJlc2l6ZU1vdmUoeyB4OiBldi5jbGllbnRYLCB5OiBldi5jbGllbnRZIH0pO1xuICB9XG5cbiAgb25Ub3VjaE1vdmUoZXY6IFRvdWNoRXZlbnQpIHtcbiAgICB0aGlzLm9uUmVzaXplTW92ZSh7IHg6IGV2LnRvdWNoZXNbMF0uY2xpZW50WCwgeTogZXYudG91Y2hlc1swXS5jbGllbnRZIH0pO1xuICB9XG5cbiAgb25SZXNpemVNb3ZlKHB0OiBQb2ludCkge1xuICAgIGlmICh0aGlzLm9wZXJhdGlvbikge1xuICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdGlvbi5vcGVyYXRpb24pIHtcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5yZXNpemVTcGxpdHRlcjoge1xuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMub3JpZW50YXRpb24kXSlcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbb3JpZW50YXRpb25dKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9wZXJhdGlvbikge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvcml6b250YWwnOlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWx0YVggPSBwdC54IC0gdGhpcy5vcGVyYXRpb24uc3RhcnRQb3NpdGlvbi54O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzeCA9IEFycmF5LmZyb20odGhpcy5vcGVyYXRpb24uc2l6ZXMpO1xuICAgICAgICAgICAgICAgICAgICBzeFt0aGlzLm9wZXJhdGlvbi5pbmRleEJlZm9yZV0gPSB0aGlzLm9wZXJhdGlvbi5zaXplc1t0aGlzLm9wZXJhdGlvbi5pbmRleEJlZm9yZV0gKyBkZWx0YVg7XG4gICAgICAgICAgICAgICAgICAgIHN4W3RoaXMub3BlcmF0aW9uLmluZGV4QWZ0ZXJdID0gdGhpcy5vcGVyYXRpb24uc2l6ZXNbdGhpcy5vcGVyYXRpb24uaW5kZXhBZnRlcl0gLSBkZWx0YVg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmlld1NpemVzJC5uZXh0KHN4KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhWSA9IHB0LnkgLSB0aGlzLm9wZXJhdGlvbi5zdGFydFBvc2l0aW9uLnk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN5ID0gQXJyYXkuZnJvbSh0aGlzLm9wZXJhdGlvbi5zaXplcyk7XG4gICAgICAgICAgICAgICAgICAgIHN5W3RoaXMub3BlcmF0aW9uLmluZGV4QmVmb3JlXSA9IHRoaXMub3BlcmF0aW9uLnNpemVzW3RoaXMub3BlcmF0aW9uLmluZGV4QmVmb3JlXSArIGRlbHRhWTtcbiAgICAgICAgICAgICAgICAgICAgc3lbdGhpcy5vcGVyYXRpb24uaW5kZXhBZnRlcl0gPSB0aGlzLm9wZXJhdGlvbi5zaXplc1t0aGlzLm9wZXJhdGlvbi5pbmRleEFmdGVyXSAtIGRlbHRhWTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3U2l6ZXMkLm5leHQoc3kpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNldXAnLCBbJyRldmVudCddKVxuICBvbk1vdXNlVXAoZXY6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLm9uUmVzaXplVXAoKTtcbiAgfVxuXG4gIG9uVG91Y2hFbmQoZXY6IFRvdWNoRXZlbnQpIHtcbiAgICB0aGlzLnRvdWNoZWREaXZpZGVyJC5uZXh0KG51bGwpO1xuICAgIHRoaXMub25SZXNpemVVcCgpO1xuICAgIGNvbnNvbGUubG9nKCdlbmQgdG91Y2gnLCBudWxsKTtcbiAgfVxuXG4gIG9uUmVzaXplVXAoKSB7XG4gICAgdGhpcy5pc1Jlc2l6aW5nJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLm9wZXJhdGlvbiA9IG51bGw7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggdy0xMDAgcm9vdFwiIFtjbGFzc109XCJbZGlyZWN0aW9uQ2xhc3MkIHwgYXN5bmMsIHNwbGl0dGVyQ2xhc3MkIHwgYXN5bmNdXCIgYnNVc2VyQWdlbnQ+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhbmVsIG9mIChwYW5lbHMkIHwgYXN5bmMpOyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmJzTGV0PVwiKHdpZHRoU3R5bGVzJCB8IGFzeW5jKSBhcyB3aWR0aFN0eWxlc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqYnNMZXQ9XCIoaGVpZ2h0U3R5bGVzJCB8IGFzeW5jKSBhcyBoZWlnaHRTdHlsZXNcIj5cbiAgICAgICAgICAgICAgICA8IS0tICBbc3R5bGUud2lkdGguJV09XCIxMDBcIiBbc3R5bGUuaGVpZ2h0LiVdPVwiMTAwXCIgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwbGl0LXBhbmVsIG92ZXJmbG93LWhpZGRlblwiIFtjbGFzcy5mbGV4LW5vbmVdPVwiaXNSZXNpemluZyQgfCBhc3luY1wiICNzcGxpdFBhbmVsIFtzdHlsZS53aWR0aF09XCJ3aWR0aFN0eWxlcyB8IGJzRWxlbWVudEF0OmluZGV4XCIgW3N0eWxlLmhlaWdodF09XCJoZWlnaHRTdHlsZXMgfCBic0VsZW1lbnRBdDppbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJwYW5lbC5wb3J0YWxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiIGJzVXNlckFnZW50IFtjbGFzcy5ob3Zlcl09XCIodG91Y2hlZERpdmlkZXIkIHwgYXN5bmMpID09PSBkaXZpZGVyXCIgI2RpdmlkZXIgKG1vdXNlZG93bik9XCJzdGFydFJlc2l6ZU1vdXNlKCRldmVudCwgaW5kZXgsIGluZGV4ICsgMSlcIiAodG91Y2hzdGFydCk9XCJzdGFydFJlc2l6ZVRvdWNoKCRldmVudCwgaW5kZXgsIGluZGV4ICsgMSwgZGl2aWRlcilcIiAodG91Y2htb3ZlKT1cIm9uVG91Y2hNb3ZlKCRldmVudClcIiAodG91Y2hlbmQpPVwib25Ub3VjaEVuZCgkZXZlbnQpXCIgKm5nSWY9XCIhbGFzdFwiPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
|
|
@@ -2,6 +2,7 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { PortalModule } from '@angular/cdk/portal';
|
|
4
4
|
import { BsLetModule } from '@mintplayer/ng-bootstrap/let';
|
|
5
|
+
import { BsUserAgentModule } from '@mintplayer/ng-bootstrap/user-agent';
|
|
5
6
|
import { BsSplitterComponent } from './splitter/splitter.component';
|
|
6
7
|
import { BsSplitPanelComponent } from './split-panel/split-panel.component';
|
|
7
8
|
import { BsElementAtPipe } from './element-at/element-at.pipe';
|
|
@@ -9,14 +10,14 @@ import * as i0 from "@angular/core";
|
|
|
9
10
|
export class BsSplitterModule {
|
|
10
11
|
}
|
|
11
12
|
BsSplitterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsSplitterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
-
BsSplitterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: BsSplitterModule, declarations: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe], imports: [CommonModule, PortalModule, BsLetModule], exports: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe] });
|
|
13
|
-
BsSplitterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsSplitterModule, imports: [CommonModule, PortalModule, BsLetModule] });
|
|
13
|
+
BsSplitterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: BsSplitterModule, declarations: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe], imports: [CommonModule, PortalModule, BsLetModule, BsUserAgentModule], exports: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe] });
|
|
14
|
+
BsSplitterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsSplitterModule, imports: [CommonModule, PortalModule, BsLetModule, BsUserAgentModule] });
|
|
14
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsSplitterModule, decorators: [{
|
|
15
16
|
type: NgModule,
|
|
16
17
|
args: [{
|
|
17
18
|
declarations: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe],
|
|
18
|
-
imports: [CommonModule, PortalModule, BsLetModule],
|
|
19
|
+
imports: [CommonModule, PortalModule, BsLetModule, BsUserAgentModule],
|
|
19
20
|
exports: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe],
|
|
20
21
|
}]
|
|
21
22
|
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcGxpdHRlci9zcmMvc3BsaXR0ZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQU8vRCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBSlosbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxhQUNoRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsYUFDMUQsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsZUFBZTs4R0FFMUQsZ0JBQWdCLFlBSGpCLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGlCQUFpQjsyRkFHekQsZ0JBQWdCO2tCQUw1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsQ0FBQztvQkFDM0UsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsaUJBQWlCLENBQUM7b0JBQ3JFLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsQ0FBQztpQkFDdkUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQnNMZXRNb2R1bGUgfSBmcm9tICdAbWludHBsYXllci9uZy1ib290c3RyYXAvbGV0JztcbmltcG9ydCB7IEJzVXNlckFnZW50TW9kdWxlIH0gZnJvbSAnQG1pbnRwbGF5ZXIvbmctYm9vdHN0cmFwL3VzZXItYWdlbnQnO1xuaW1wb3J0IHsgQnNTcGxpdHRlckNvbXBvbmVudCB9IGZyb20gJy4vc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJzU3BsaXRQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vc3BsaXQtcGFuZWwvc3BsaXQtcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEJzRWxlbWVudEF0UGlwZSB9IGZyb20gJy4vZWxlbWVudC1hdC9lbGVtZW50LWF0LnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtCc1NwbGl0dGVyQ29tcG9uZW50LCBCc1NwbGl0UGFuZWxDb21wb25lbnQsIEJzRWxlbWVudEF0UGlwZV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFBvcnRhbE1vZHVsZSwgQnNMZXRNb2R1bGUsIEJzVXNlckFnZW50TW9kdWxlXSxcbiAgZXhwb3J0czogW0JzU3BsaXR0ZXJDb21wb25lbnQsIEJzU3BsaXRQYW5lbENvbXBvbmVudCwgQnNFbGVtZW50QXRQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgQnNTcGxpdHRlck1vZHVsZSB7fVxuIl19
|
|
@@ -91,12 +91,18 @@ class BsCalendarComponent {
|
|
|
91
91
|
this.selectedDate$.next(day.date);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
+
trackByWeekDay(index, item) {
|
|
95
|
+
return item.long;
|
|
96
|
+
}
|
|
97
|
+
trackByWeek(index, item) {
|
|
98
|
+
return item.number;
|
|
99
|
+
}
|
|
94
100
|
}
|
|
95
101
|
BsCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsCalendarComponent, deps: [{ token: i1.BsCalendarMonthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
96
|
-
BsCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsCalendarComponent, selector: "bs-calendar", inputs: { currentMonth: "currentMonth", selectedDate: "selectedDate" }, outputs: { currentMonthChange: "currentMonthChange", selectedDateChange: "selectedDateChange" }, ngImport: i0, template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth$ | async | monthName | ucFirst }}\n {{ (currentMonth$ | async)?.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of shownDays$ | async\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n </tr>\n <tr *ngFor=\"let week of (weeks$ | async)\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate$ | async, day.date)\" *ngFor=\"let day of week.days\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\" [class.text-muted]=\"!day.isInMonth\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125);background:#fff}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BsIconComponent, selector: "bs-icon", inputs: ["icon"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.UcFirstPipe, name: "ucFirst" }, { kind: "pipe", type: i1.MonthNamePipe, name: "monthName" }] });
|
|
102
|
+
BsCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: BsCalendarComponent, selector: "bs-calendar", inputs: { currentMonth: "currentMonth", selectedDate: "selectedDate" }, outputs: { currentMonthChange: "currentMonthChange", selectedDateChange: "selectedDateChange" }, ngImport: i0, template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth$ | async | monthName | ucFirst }}\n {{ (currentMonth$ | async)?.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of shownDays$ | async; trackBy: trackByWeekDay\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n </tr>\n <tr *ngFor=\"let week of (weeks$ | async); trackBy: trackByWeek\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate$ | async, day.date)\" *ngFor=\"let day of week.days\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\" [class.text-muted]=\"!day.isInMonth\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125);background:#fff}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BsIconComponent, selector: "bs-icon", inputs: ["icon"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.UcFirstPipe, name: "ucFirst" }, { kind: "pipe", type: i1.MonthNamePipe, name: "monthName" }] });
|
|
97
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BsCalendarComponent, decorators: [{
|
|
98
104
|
type: Component,
|
|
99
|
-
args: [{ selector: 'bs-calendar', template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth$ | async | monthName | ucFirst }}\n {{ (currentMonth$ | async)?.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of shownDays$ | async\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n </tr>\n <tr *ngFor=\"let week of (weeks$ | async)\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate$ | async, day.date)\" *ngFor=\"let day of week.days\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\" [class.text-muted]=\"!day.isInMonth\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125);background:#fff}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"] }]
|
|
105
|
+
args: [{ selector: 'bs-calendar', template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button class=\"btn btn-default\" (click)=\"previousMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth$ | async | monthName | ucFirst }}\n {{ (currentMonth$ | async)?.getFullYear() }}\n </td>\n <td>\n <button class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"fw-bolder\"></bs-icon>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n <th *ngFor=\"let dayOfWeek of shownDays$ | async; trackBy: trackByWeekDay\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n </tr>\n <tr *ngFor=\"let week of (weeks$ | async); trackBy: trackByWeek\">\n <th>\n {{ week.number }}\n </th>\n <td [class.selected]=\"day === null ? false : isSameDate(selectedDate$ | async, day.date)\" *ngFor=\"let day of week.days\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\" [class.text-muted]=\"!day.isInMonth\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid rgba(0,0,0,.125);background:#fff}table td,table th{width:40px;height:40px;text-align:center}table td span,table th span{cursor:pointer;white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid rgba(0,0,0,.125)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid rgba(0,0,0,.125)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid rgba(0,0,0,.125)}\n"] }]
|
|
100
106
|
}], ctorParameters: function () { return [{ type: i1.BsCalendarMonthService }]; }, propDecorators: { currentMonthChange: [{
|
|
101
107
|
type: Output
|
|
102
108
|
}], currentMonth: [{
|