igniteui-angular 18.2.11 → 18.2.12

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.
@@ -1,5 +1,5 @@
1
1
  import { Component, HostListener, ViewChild, HostBinding, Input, } from "@angular/core";
2
- import { NgIf, NgStyle, NgTemplateOutlet, DatePipe } from "@angular/common";
2
+ import { NgIf, NgTemplateOutlet, DatePipe } from "@angular/common";
3
3
  import { NG_VALUE_ACCESSOR } from "@angular/forms";
4
4
  import { IgxMonthsViewComponent } from "../months-view/months-view.component";
5
5
  import { IgxYearsViewComponent } from "../years-view/years-view.component";
@@ -391,7 +391,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
391
391
  },
392
392
  ], selector: "igx-month-picker", standalone: true, imports: [
393
393
  NgIf,
394
- NgStyle,
395
394
  NgTemplateOutlet,
396
395
  DatePipe,
397
396
  IgxIconComponent,
@@ -431,4 +430,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
431
430
  type: HostListener,
432
431
  args: ['mousedown', ['$event']]
433
432
  }] } });
434
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9tb250aC1waWNrZXIvbW9udGgtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9tb250aC1waWNrZXIvbW9udGgtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUtSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FB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QUUsS0FBSzs0QkFDWixPQUFPLEVBQUUseUJBQXlCO3lCQUNyQztxQkFDSixZQUNTLGtCQUFrQixjQUVoQixJQUFJLFdBQ1A7d0JBQ0wsSUFBSTt3QkFDSixPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsUUFBUTt3QkFDUixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIscUJBQXFCO3FCQUN4Qjs4QkFTTSxFQUFFO3NCQUZSLFdBQVc7dUJBQUMsU0FBUzs7c0JBQ3JCLEtBQUs7Z0JBY0MsT0FBTztzQkFEYixTQUFTO3VCQUFDLFNBQVM7Z0JBU2IsVUFBVTtzQkFEaEIsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBTzlCLFVBQVU7c0JBRGhCLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFO2dCQU85QyxVQUFVO3NCQURoQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTtnQkFPN0MsUUFBUTtzQkFEZCxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRTtnQkFPMUMsUUFBUTtzQkFEZCxTQUFTO3VCQUFDLFVBQVU7Z0JBT2QsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF1Qm5DLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF5SmxDLFdBQVc7c0JBRHBCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQsIERhdGVQaXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IHsgSWd4TW9udGhzVmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9tb250aHMtdmlldy9tb250aHMtdmlldy5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneFllYXJzVmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi95ZWFycy12aWV3L3llYXJzLXZpZXcuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJZ3hEYXlzVmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9kYXlzLXZpZXcvZGF5cy12aWV3LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4SWNvbkNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9pY29uL2ljb24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJZ3hDYWxlbmRhclZpZXcgfSBmcm9tIFwiLi4vY2FsZW5kYXJcIjtcbmltcG9ydCB7IENhbGVuZGFyRGF5IH0gZnJvbSBcIi4uL2NvbW1vbi9tb2RlbFwiO1xuaW1wb3J0IHsgSWd4Q2FsZW5kYXJCYXNlRGlyZWN0aXZlIH0gZnJvbSBcIi4uL2NhbGVuZGFyLWJhc2VcIjtcbmltcG9ydCB7IEtleWJvYXJkTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vY2FsZW5kYXIuc2VydmljZXNcIjtcbmltcG9ydCB7IGZvcm1hdFRvUGFydHMgfSBmcm9tIFwiLi4vY29tbW9uL2hlbHBlcnNcIjtcblxubGV0IE5FWFRfSUQgPSAwO1xuQENvbXBvbmVudCh7XG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWd4TW9udGhQaWNrZXJDb21wb25lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpOiBmYWxzZSxcbiAgICAgICAgICAgIHByb3ZpZGU6IEtleWJvYXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIHNlbGVjdG9yOiBcImlneC1tb250aC1waWNrZXJcIixcbiAgICB0ZW1wbGF0ZVVybDogXCJtb250aC1waWNrZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgRGF0ZVBpcGUsXG4gICAgICAgIElneEljb25Db21wb25lbnQsXG4gICAgICAgIElneE1vbnRoc1ZpZXdDb21wb25lbnQsXG4gICAgICAgIElneFllYXJzVmlld0NvbXBvbmVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hNb250aFBpY2tlckNvbXBvbmVudCBleHRlbmRzIElneENhbGVuZGFyQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGBpZGAgb2YgdGhlIG1vbnRoIHBpY2tlci5cbiAgICAgKiBJZiBub3Qgc2V0LCB0aGUgYGlkYCB3aWxsIGhhdmUgdmFsdWUgYFwiaWd4LW1vbnRoLXBpY2tlci0wXCJgLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZyhcImF0dHIuaWRcIilcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtbW9udGgtcGlja2VyLSR7TkVYVF9JRCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYWN0aXZlRGVzY2VuZGFudDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoXCJ3cmFwcGVyXCIpXG4gICAgcHVibGljIHdyYXBwZXI6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGVmYXVsdCBjc3MgY2xhc3MgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmlneC1tb250aC1waWNrZXJcIilcbiAgICBwdWJsaWMgc3R5bGVDbGFzcyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZChcIm1vbnRoc1wiLCB7IHJlYWQ6IElneE1vbnRoc1ZpZXdDb21wb25lbnQgfSlcbiAgICBwdWJsaWMgbW9udGhzVmlldzogSWd4TW9udGhzVmlld0NvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKFwiZGVjYWRlXCIsIHsgcmVhZDogSWd4WWVhcnNWaWV3Q29tcG9uZW50IH0pXG4gICAgcHVibGljIGRhY2FkZVZpZXc6IElneFllYXJzVmlld0NvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKFwiZGF5c1wiLCB7IHJlYWQ6IElneERheXNWaWV3Q29tcG9uZW50IH0pXG4gICAgcHVibGljIGRheXNWaWV3OiBJZ3hEYXlzVmlld0NvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKFwieWVhcnNCdG5cIilcbiAgICBwdWJsaWMgeWVhcnNCdG46IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24ucGFnZXVwXCIsIFtcIiRldmVudFwiXSlcbiAgICBwdWJsaWMgcHJldmlvdXNQYWdlKGV2ZW50PzogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcmV2aW91c1ZpZXdEYXRlID0gdGhpcy52aWV3RGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdEYXRlID0gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCAtMSkubmF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWNhZGVWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdEYXRlID0gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCAtMTUpLm5hdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmlld0RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogdGhpcy5wcmV2aW91c1ZpZXdEYXRlLFxuICAgICAgICAgICAgY3VycmVudFZhbHVlOiB0aGlzLnZpZXdEYXRlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24ucGFnZWRvd25cIiwgW1wiJGV2ZW50XCJdKVxuICAgIHB1YmxpYyBuZXh0UGFnZShldmVudD86IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMucHJldmlvdXNWaWV3RGF0ZSA9IHRoaXMudmlld0RhdGU7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0Vmlldykge1xuICAgICAgICAgICAgdGhpcy52aWV3RGF0ZSA9IENhbGVuZGFyRGF5LmZyb20odGhpcy52aWV3RGF0ZSkuYWRkKCd5ZWFyJywgMSkubmF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWNhZGVWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdEYXRlID0gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCAxNSkubmF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52aWV3RGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlOiB0aGlzLnByZXZpb3VzVmlld0RhdGUsXG4gICAgICAgICAgICBjdXJyZW50VmFsdWU6IHRoaXMudmlld0RhdGUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuXHQvKipcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHB1YmxpYyBvbkFjdGl2ZVZpZXdEZWNhZGVLQihkYXRlOiBEYXRlLCBldmVudDogS2V5Ym9hcmRFdmVudCwgYWN0aXZlVmlld0lkeDogbnVtYmVyKSB7XG5cdFx0c3VwZXIuYWN0aXZlVmlld0RlY2FkZUtCKGV2ZW50LCBhY3RpdmVWaWV3SWR4KTtcblxuXHRcdGlmICh0aGlzLnBsYXRmb3JtLmlzQWN0aXZhdGlvbktleShldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0RhdGUgPSBkYXRlO1xuICAgICAgICAgICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHB1YmxpYyBvbkFjdGl2ZVZpZXdEZWNhZGUoZXZlbnQ6IE1vdXNlRXZlbnQsIGRhdGU6IERhdGUsIGFjdGl2ZVZpZXdJZHg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0c3VwZXIuYWN0aXZlVmlld0RlY2FkZShhY3RpdmVWaWV3SWR4KTtcbiAgICAgICAgdGhpcy52aWV3RGF0ZSA9IGRhdGU7XG5cdH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWN0aXZlVmlld0RlY2FkZUtCKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHN1cGVyLmFjdGl2ZVZpZXdEZWNhZGVLQihldmVudCk7XG5cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybS5LRVlNQVAuQVJST1dfUklHSFQpIHtcbiAgICAgICAgICAgIHRoaXMubmV4dFBhZ2UoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybS5LRVlNQVAuQVJST1dfTEVGVCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBhY3RpdmVWaWV3RGVjYWRlKCkge1xuICAgICAgICBzdXBlci5hY3RpdmVWaWV3RGVjYWRlKCk7XG5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2hhbmdlUGFnZUtCKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBuZXh0ID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5pc0FjdGl2YXRpb25LZXkoZXZlbnQpKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRQYWdlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNQYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdFllYXIoZXZlbnQ6IERhdGUpIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1ZpZXdEYXRlID0gdGhpcy52aWV3RGF0ZTtcblxuICAgICAgICB0aGlzLnZpZXdEYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICBldmVudC5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgZXZlbnQuZ2V0TW9udGgoKSxcbiAgICAgICAgICAgIGV2ZW50LmdldERhdGUoKSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmFjdGl2ZVZpZXcgPSBJZ3hDYWxlbmRhclZpZXcuWWVhcjtcbiAgICAgICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdE1vbnRoKGV2ZW50OiBEYXRlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0RGF0ZShldmVudCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgYSBkYXRlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgdGhpcy5tb250aFBpY2tlci5zZWxlY3REYXRlKG5ldyBEYXRlKGAyMDE4LTA2LTEyYCkpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBzZWxlY3REYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIuc2VsZWN0RGF0ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldE5leHRZZWFyKCkge1xuICAgICAgICByZXR1cm4gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCAxKS55ZWFyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJldmlvdXNZZWFyKCkge1xuICAgICAgICByZXR1cm4gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCAtMSkueWVhcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZURhdGUoZGF0ZTogRGF0ZSkge1xuICAgICAgICB0aGlzLnByZXZpb3VzVmlld0RhdGUgPSB0aGlzLnZpZXdEYXRlO1xuICAgICAgICB0aGlzLnZpZXdEYXRlID0gQ2FsZW5kYXJEYXkuZnJvbShkYXRlKS5hZGQoJ3llYXInLCAtdGhpcy5hY3RpdmVWaWV3SWR4KS5uYXRpdmU7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0Vmlldykge1xuICAgICAgICAgICAgdGhpcy52aWV3RGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogdGhpcy5wcmV2aW91c1ZpZXdEYXRlLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZTogdGhpcy52aWV3RGF0ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBwcm90ZWN0ZWQgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2hvd0FjdGl2ZURheTogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG4gICAgcHJvdGVjdGVkIHNldCBzaG93QWN0aXZlRGF5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Nob3dBY3RpdmVEYXkgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgc2hvd0FjdGl2ZURheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dBY3RpdmVEYXk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBhY3RpdmVEZXNjZW5kYW50KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy52YWx1ZSBhcyBEYXRlKT8uZ2V0VGltZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZURlc2NlbmRhbnQgPz8gdGhpcy52aWV3RGF0ZS5nZXRUaW1lKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldCBhY3RpdmVEZXNjZW5kYW50KGRhdGU6IERhdGUpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlRGVzY2VuZGFudCA9IGRhdGUuZ2V0VGltZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgaXNEZWZhdWx0VmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gSWd4Q2FsZW5kYXJWaWV3LlllYXI7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmFjdGl2ZVZpZXcgPSBJZ3hDYWxlbmRhclZpZXcuWWVhcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvblxuICAgICAgICAgICAgLmF0dGFjaEtleWJvYXJkSGFuZGxlcnModGhpcy53cmFwcGVyLCB0aGlzKVxuICAgICAgICAgICAgLnNldChcIkFycm93VXBcIiwgdGhpcy5vbkFycm93VXApXG4gICAgICAgICAgICAuc2V0KFwiQXJyb3dEb3duXCIsIHRoaXMub25BcnJvd0Rvd24pXG4gICAgICAgICAgICAuc2V0KFwiQXJyb3dMZWZ0XCIsIHRoaXMub25BcnJvd0xlZnQpXG4gICAgICAgICAgICAuc2V0KFwiQXJyb3dSaWdodFwiLCB0aGlzLm9uQXJyb3dSaWdodClcbiAgICAgICAgICAgIC5zZXQoXCJFbnRlclwiLCB0aGlzLm9uRW50ZXIpXG4gICAgICAgICAgICAuc2V0KFwiIFwiLCB0aGlzLm9uRW50ZXIpXG4gICAgICAgICAgICAuc2V0KFwiSG9tZVwiLCB0aGlzLm9uSG9tZSlcbiAgICAgICAgICAgIC5zZXQoXCJFbmRcIiwgdGhpcy5vbkVuZClcbiAgICAgICAgICAgIC5zZXQoXCJQYWdlVXBcIiwgdGhpcy5oYW5kbGVQYWdlVXApXG4gICAgICAgICAgICAuc2V0KFwiUGFnZURvd25cIiwgdGhpcy5oYW5kbGVQYWdlRG93bik7XG5cbiAgICAgICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHRoaXMub25XcmFwcGVyRm9jdXMoZXZlbnQpKTtcbiAgICAgICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIChldmVudDogRm9jdXNFdmVudCkgPT4gdGhpcy5vbldyYXBwZXJCbHVyKGV2ZW50KSk7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3JC5zdWJzY3JpYmUoKHZpZXcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVmlld0NoYW5nZWQuZW1pdCh2aWV3KTtcblxuICAgICAgICAgICAgdGhpcy52aWV3RGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogdGhpcy5wcmV2aW91c1ZpZXdEYXRlLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZTogdGhpcy52aWV3RGF0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25XcmFwcGVyRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2hvd0FjdGl2ZURheSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbldyYXBwZXJCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuc2hvd0FjdGl2ZURheSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUGFnZVVwRG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgZGVsdGE6IG51bWJlcikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdEYXRlID0gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCBkZWx0YSkubmF0aXZlO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVsdGEgPiAwID8gdGhpcy5uZXh0UGFnZSgpIDogdGhpcy5wcmV2aW91c1BhZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUGFnZVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlUGFnZVVwRG93bihldmVudCwgLTEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUGFnZURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVQYWdlVXBEb3duKGV2ZW50LCAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQXJyb3dVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoc1ZpZXcub25LZXlkb3duQXJyb3dVcChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0RlY2FkZVZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5vbktleWRvd25BcnJvd1VwKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25BcnJvd0Rvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0Vmlldykge1xuICAgICAgICAgICAgdGhpcy5tb250aHNWaWV3Lm9uS2V5ZG93bkFycm93RG93bihldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0RlY2FkZVZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5vbktleWRvd25BcnJvd0Rvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkFycm93TGVmdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoc1ZpZXcub25LZXlkb3duQXJyb3dMZWZ0KGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRGVjYWRlVmlldykge1xuICAgICAgICAgICAgdGhpcy5kYWNhZGVWaWV3Lm9uS2V5ZG93bkFycm93TGVmdChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQXJyb3dSaWdodChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoc1ZpZXcub25LZXlkb3duQXJyb3dSaWdodChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0RlY2FkZVZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5vbktleWRvd25BcnJvd1JpZ2h0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25FbnRlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoc1ZpZXcub25LZXlkb3duRW50ZXIoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWNhZGVWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLmRhY2FkZVZpZXcub25LZXlkb3duRW50ZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkhvbWUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmlzRGVmYXVsdFZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMubW9udGhzVmlldy5vbktleWRvd25Ib21lKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRGVjYWRlVmlldykge1xuICAgICAgICAgICAgdGhpcy5kYWNhZGVWaWV3Lm9uS2V5ZG93bkhvbWUoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkVuZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0Vmlldykge1xuICAgICAgICAgICAgdGhpcy5tb250aHNWaWV3Lm9uS2V5ZG93bkVuZChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0RlY2FkZVZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5vbktleWRvd25FbmQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG5cdC8qKlxuXHQgKiBAaGlkZGVuXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbi5kZXRhY2hLZXlib2FyZEhhbmRsZXJzKCk7XG4gICAgICAgIHRoaXMud3JhcHBlcj8ubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMub25XcmFwcGVyRm9jdXMpO1xuICAgICAgICB0aGlzLndyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMub25XcmFwcGVyQmx1cik7XG5cdH1cblxuXHQvKipcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHB1YmxpYyBnZXRQcmV2WWVhckRhdGUoZGF0ZTogRGF0ZSk6IERhdGUge1xuXHRcdHJldHVybiBDYWxlbmRhckRheS5mcm9tKGRhdGUpLmFkZCgneWVhcicsIC0xKS5uYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHB1YmxpYyBnZXROZXh0WWVhckRhdGUoZGF0ZTogRGF0ZSk6IERhdGUge1xuICAgICAgICByZXR1cm4gQ2FsZW5kYXJEYXkuZnJvbShkYXRlKS5hZGQoJ3llYXInLCAxKS5uYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0dGVyIGZvciB0aGUgY29udGV4dCBvYmplY3QgaW5zaWRlIHRoZSBjYWxlbmRhciB0ZW1wbGF0ZXMuXG5cdCAqXG5cdCAqIEBoaWRkZW5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Q29udGV4dChpOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IENhbGVuZGFyRGF5LmZyb20odGhpcy52aWV3RGF0ZSkuYWRkKCdtb250aCcsIGkpLm5hdGl2ZTtcblx0XHRyZXR1cm4gdGhpcy5nZW5lcmF0ZUNvbnRleHQoZGF0ZSwgaSk7XG5cdH1cblxuXHQvKipcblx0ICogSGVscGVyIG1ldGhvZCBidWlsZGluZyBhbmQgcmV0dXJuaW5nIHRoZSBjb250ZXh0IG9iamVjdCBpbnNpZGUgdGhlIGNhbGVuZGFyIHRlbXBsYXRlcy5cblx0ICpcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHByaXZhdGUgZ2VuZXJhdGVDb250ZXh0KHZhbHVlOiBEYXRlIHwgRGF0ZVtdLCBpPzogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cnVjdCA9IChkYXRlOiBEYXRlLCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIC4uLmZvcm1hdFRvUGFydHMoZGF0ZSwgdGhpcy5sb2NhbGUsIHRoaXMuZm9ybWF0T3B0aW9ucywgW1xuICAgICAgICAgICAgICAgIFwiZXJhXCIsXG4gICAgICAgICAgICAgICAgXCJ5ZWFyXCIsXG4gICAgICAgICAgICAgICAgXCJtb250aFwiLFxuICAgICAgICAgICAgICAgIFwiZGF5XCIsXG4gICAgICAgICAgICAgICAgXCJ3ZWVrZGF5XCIsXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZm9ybWF0T2JqZWN0ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgID8gdmFsdWUubWFwKChkYXRlLCBpbmRleCkgPT4gY29uc3RydWN0KGRhdGUsIGluZGV4KSlcbiAgICAgICAgICAgIDogY29uc3RydWN0KHZhbHVlLCBpKTtcblxuICAgICAgICByZXR1cm4geyAkaW1wbGljaXQ6IGZvcm1hdE9iamVjdCB9O1xuXHR9XG59XG4iLCI8IS0tIFByZXZpb3VzIGFycm93IGljb24gLS0+XG48bmctdGVtcGxhdGUgI3ByZXZBcnJvdyBsZXQtb2JqPlxuICAgIDxpZ3gtaWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBmYW1pbHk9XCJkZWZhdWx0XCIgbmFtZT1cImFycm93X3ByZXZcIj48L2lneC1pY29uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBOZXh0IGFycm93IGljb24gLS0+XG48bmctdGVtcGxhdGUgI25leHRBcnJvdyBsZXQtb2JqPlxuICAgIDxpZ3gtaWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBmYW1pbHk9XCJkZWZhdWx0XCIgbmFtZT1cImFycm93X25leHRcIj48L2lneC1pY29uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBQcmV2aW91cyBwaWNrZXIgYnV0dG9uIC0tPlxuPG5nLXRlbXBsYXRlICNwcmV2UGFnZUJ1dHRvbiBsZXQtb2JqPlxuICAgIDxkaXZcbiAgICAgICAgI3ByZXZQYWdlQnRuXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fcHJldlwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByZXZOYXZMYWJlbCgoZ2V0UHJldlllYXJEYXRlKHZpZXdEYXRlKSB8IGRhdGU6ICdZWVlZJykpXCJcbiAgICAgICAgZGF0YS1hY3Rpb249XCJwcmV2XCJcbiAgICAgICAgaWd4Q2FsZW5kYXJTY3JvbGxQYWdlXG4gICAgICAgIChtb3VzZWRvd24pPVwicHJldmlvdXNQYWdlKClcIlxuICAgICAgICAoa2V5ZG93bik9XCJjaGFuZ2VQYWdlS0IoJGV2ZW50LCBmYWxzZSlcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZBcnJvd1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBOZXh0IHBpY2tlciBidXR0b24gLS0+XG48bmctdGVtcGxhdGUgI25leHRQYWdlQnV0dG9uIGxldC1vYmo+XG4gICAgPGRpdlxuICAgICAgICAjbmV4dFBhZ2VCdG5cbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgY2xhc3M9XCJpZ3gtY2FsZW5kYXItcGlja2VyX19uZXh0XCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibmV4dE5hdkxhYmVsKChnZXROZXh0WWVhckRhdGUodmlld0RhdGUpIHwgZGF0ZTogJ1lZWVknKSlcIlxuICAgICAgICBkYXRhLWFjdGlvbj1cIm5leHRcIlxuICAgICAgICBpZ3hDYWxlbmRhclNjcm9sbFBhZ2VcbiAgICAgICAgKG1vdXNlZG93bik9XCJuZXh0UGFnZSgpXCJcbiAgICAgICAgKGtleWRvd24pPVwiY2hhbmdlUGFnZUtCKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5leHRBcnJvd1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBZZWFyIC0tPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0WWVhciBsZXQtb2JqPlxuICAgIDxzcGFuICpuZ0lmPVwiYWN0aXZlVmlldyA9PT0gJ3llYXInXCIgY2xhc3M9XCJpZ3gtY2FsZW5kYXJfX2FyaWEtb2ZmLXNjcmVlblwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPnt7IGZvcm1hdHRlZFllYXIob2JqLmRhdGUpIH19PC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICAgICN5ZWFyc0J0blxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIob2JqLmRhdGUgfCBkYXRlOiAneXl5eScpICsgJywgJyArIHJlc291cmNlU3RyaW5ncy5pZ3hfY2FsZW5kYXJfc2VsZWN0X3llYXJcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbkFjdGl2ZVZpZXdEZWNhZGVLQihvYmouZGF0ZSwgJGV2ZW50LCBvYmouaW5kZXgpXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkFjdGl2ZVZpZXdEZWNhZGUoJGV2ZW50LCBvYmouZGF0ZSwgb2JqLmluZGV4KVwiXG4gICAgICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fZGF0ZVwiPlxuICAgICAgICB7eyBmb3JtYXR0ZWRZZWFyKG9iai5kYXRlKSB9fVxuICAgIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRGVjYWRlIC0tPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0RGVjYWRlPlxuICAgIDxzcGFuPnt7IGdldERlY2FkZVJhbmdlKCkuc3RhcnQgfX0gLSB7eyBnZXREZWNhZGVSYW5nZSgpLmVuZCB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUElDS0VSIElOIE1PTlRIUyAtLT5cbjxuZy10ZW1wbGF0ZSAjY2FsZW5kYXJZZWFyUGlja2VyPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fZGF0ZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRlZmF1bHRZZWFyOyBjb250ZXh0OiBnZXRDb250ZXh0KDApXCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtY2FsZW5kYXItcGlja2VyX19uYXZcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmV2UGFnZUJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5leHRQYWdlQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUElDS0VSIElOIFlFQVJTIC0tPlxuPG5nLXRlbXBsYXRlICNjYWxlbmRhckRlY2FkZVBpY2tlcj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImlneC1jYWxlbmRhci1waWNrZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1jYWxlbmRhci1waWNrZXJfX2RhdGVzXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVmYXVsdERlY2FkZTtcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1jYWxlbmRhci1waWNrZXJfX25hdlwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZQYWdlQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibmV4dFBhZ2VCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdlxuICAgICN3cmFwcGVyXG4gICAgW3RhYkluZGV4XT1cIjBcIlxuICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyX193cmFwcGVyXCJcbiAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiYWN0aXZlRGVzY2VuZGFudFwiXG4gICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPVwic2VsZWN0aW9uICE9PSAnc2luZ2xlJ1wiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiY2FsZW5kYXItZGVzY1wiXG4gICAgcm9sZT1cImdyaWRcIlxuICAgID5cbiAgICA8Y2FwdGlvbiBpZD1cImNhbGVuZGFyLWRlc2NcIiB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJpZ3gtY2FsZW5kYXJfX2FyaWEtb2ZmLXNjcmVlblwiPlxuICAgICAgICB7eyByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3Npbmd1bGFyX3NpbmdsZV9zZWxlY3Rpb259fVxuICAgIDwvY2FwdGlvbj5cblxuICAgIDxzZWN0aW9uIGNsYXNzPVwiaWd4LWNhbGVuZGFyX19waWNrZXJzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RlZmF1bHRWaWV3XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FsZW5kYXJZZWFyUGlja2VyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RlY2FkZVZpZXdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYWxlbmRhckRlY2FkZVBpY2tlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImlneC1jYWxlbmRhcl9fYm9keVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNEZWZhdWx0Vmlld1wiPlxuICAgICAgICAgICAgPGlneC1tb250aHMtdmlld1xuICAgICAgICAgICAgICAgICNtb250aHNcbiAgICAgICAgICAgICAgICByb2xlPVwicm93Z3JvdXBcIlxuICAgICAgICAgICAgICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgW2RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgICAgICAgICBbZm9ybWF0Vmlld109XCJmb3JtYXRWaWV3cy5tb250aFwiXG4gICAgICAgICAgICAgICAgW21vbnRoRm9ybWF0XT1cImZvcm1hdE9wdGlvbnMubW9udGhcIlxuICAgICAgICAgICAgICAgIFtzaG93QWN0aXZlXT1cInNob3dBY3RpdmVEYXlcIlxuICAgICAgICAgICAgICAgIFtzdGFuZGFsb25lXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAoc3dpcGVyaWdodCk9XCJwcmV2aW91c1BhZ2UoKVwiXG4gICAgICAgICAgICAgICAgKHN3aXBlbGVmdCk9XCJuZXh0UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2VkKT1cInVwZGF0ZURhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9pZ3gtbW9udGhzLXZpZXc+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RlY2FkZVZpZXdcIj5cbiAgICAgICAgICAgIDxpZ3gteWVhcnMtdmlld1xuICAgICAgICAgICAgICAgICNkZWNhZGVcbiAgICAgICAgICAgICAgICByb2xlPVwicm93Z3JvdXBcIlxuICAgICAgICAgICAgICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgW2RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgICAgICAgICBbZm9ybWF0Vmlld109XCJmb3JtYXRWaWV3cy55ZWFyXCJcbiAgICAgICAgICAgICAgICBbeWVhckZvcm1hdF09XCJmb3JtYXRPcHRpb25zLnllYXJcIlxuICAgICAgICAgICAgICAgIFtzaG93QWN0aXZlXT1cInNob3dBY3RpdmVEYXlcIlxuICAgICAgICAgICAgICAgIFtzdGFuZGFsb25lXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAoc3dpcGVyaWdodCk9XCJwcmV2aW91c1BhZ2UoKVwiXG4gICAgICAgICAgICAgICAgKHN3aXBlbGVmdCk9XCJuZXh0UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwic2VsZWN0WWVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocGFnZUNoYW5nZWQpPVwidXBkYXRlRGF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvaWd4LXllYXJzLXZpZXc+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19
433
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9tb250aC1waWNrZXIvbW9udGgtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9tb250aC1waWNrZXIvbW9udGgtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUtSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVsRCxJ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QUNaLE9BQU8sRUFBRSx5QkFBeUI7eUJBQ3JDO3FCQUNKLFlBQ1Msa0JBQWtCLGNBRWhCLElBQUksV0FDUDt3QkFDTCxJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIsUUFBUTt3QkFDUixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIscUJBQXFCO3FCQUN4Qjs4QkFTTSxFQUFFO3NCQUZSLFdBQVc7dUJBQUMsU0FBUzs7c0JBQ3JCLEtBQUs7Z0JBY0MsT0FBTztzQkFEYixTQUFTO3VCQUFDLFNBQVM7Z0JBU2IsVUFBVTtzQkFEaEIsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBTzlCLFVBQVU7c0JBRGhCLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFO2dCQU85QyxVQUFVO3NCQURoQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTtnQkFPN0MsUUFBUTtzQkFEZCxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRTtnQkFPMUMsUUFBUTtzQkFEZCxTQUFTO3VCQUFDLFVBQVU7Z0JBT2QsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF1Qm5DLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF5SmxDLFdBQVc7c0JBRHBCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIERhdGVQaXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IHsgSWd4TW9udGhzVmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9tb250aHMtdmlldy9tb250aHMtdmlldy5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneFllYXJzVmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi95ZWFycy12aWV3L3llYXJzLXZpZXcuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJZ3hEYXlzVmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9kYXlzLXZpZXcvZGF5cy12aWV3LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4SWNvbkNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9pY29uL2ljb24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJZ3hDYWxlbmRhclZpZXcgfSBmcm9tIFwiLi4vY2FsZW5kYXJcIjtcbmltcG9ydCB7IENhbGVuZGFyRGF5IH0gZnJvbSBcIi4uL2NvbW1vbi9tb2RlbFwiO1xuaW1wb3J0IHsgSWd4Q2FsZW5kYXJCYXNlRGlyZWN0aXZlIH0gZnJvbSBcIi4uL2NhbGVuZGFyLWJhc2VcIjtcbmltcG9ydCB7IEtleWJvYXJkTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vY2FsZW5kYXIuc2VydmljZXNcIjtcbmltcG9ydCB7IGZvcm1hdFRvUGFydHMgfSBmcm9tIFwiLi4vY29tbW9uL2hlbHBlcnNcIjtcblxubGV0IE5FWFRfSUQgPSAwO1xuQENvbXBvbmVudCh7XG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWd4TW9udGhQaWNrZXJDb21wb25lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpOiBmYWxzZSxcbiAgICAgICAgICAgIHByb3ZpZGU6IEtleWJvYXJkTmF2aWdhdGlvblNlcnZpY2VcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIHNlbGVjdG9yOiBcImlneC1tb250aC1waWNrZXJcIixcbiAgICB0ZW1wbGF0ZVVybDogXCJtb250aC1waWNrZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgRGF0ZVBpcGUsXG4gICAgICAgIElneEljb25Db21wb25lbnQsXG4gICAgICAgIElneE1vbnRoc1ZpZXdDb21wb25lbnQsXG4gICAgICAgIElneFllYXJzVmlld0NvbXBvbmVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hNb250aFBpY2tlckNvbXBvbmVudCBleHRlbmRzIElneENhbGVuZGFyQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGBpZGAgb2YgdGhlIG1vbnRoIHBpY2tlci5cbiAgICAgKiBJZiBub3Qgc2V0LCB0aGUgYGlkYCB3aWxsIGhhdmUgdmFsdWUgYFwiaWd4LW1vbnRoLXBpY2tlci0wXCJgLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZyhcImF0dHIuaWRcIilcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtbW9udGgtcGlja2VyLSR7TkVYVF9JRCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYWN0aXZlRGVzY2VuZGFudDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoXCJ3cmFwcGVyXCIpXG4gICAgcHVibGljIHdyYXBwZXI6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGVmYXVsdCBjc3MgY2xhc3MgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmlneC1tb250aC1waWNrZXJcIilcbiAgICBwdWJsaWMgc3R5bGVDbGFzcyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZChcIm1vbnRoc1wiLCB7IHJlYWQ6IElneE1vbnRoc1ZpZXdDb21wb25lbnQgfSlcbiAgICBwdWJsaWMgbW9udGhzVmlldzogSWd4TW9udGhzVmlld0NvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKFwiZGVjYWRlXCIsIHsgcmVhZDogSWd4WWVhcnNWaWV3Q29tcG9uZW50IH0pXG4gICAgcHVibGljIGRhY2FkZVZpZXc6IElneFllYXJzVmlld0NvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKFwiZGF5c1wiLCB7IHJlYWQ6IElneERheXNWaWV3Q29tcG9uZW50IH0pXG4gICAgcHVibGljIGRheXNWaWV3OiBJZ3hEYXlzVmlld0NvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKFwieWVhcnNCdG5cIilcbiAgICBwdWJsaWMgeWVhcnNCdG46IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24ucGFnZXVwXCIsIFtcIiRldmVudFwiXSlcbiAgICBwdWJsaWMgcHJldmlvdXNQYWdlKGV2ZW50PzogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5wcmV2aW91c1ZpZXdEYXRlID0gdGhpcy52aWV3RGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdEYXRlID0gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCAtMSkubmF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWNhZGVWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdEYXRlID0gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCAtMTUpLm5hdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmlld0RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogdGhpcy5wcmV2aW91c1ZpZXdEYXRlLFxuICAgICAgICAgICAgY3VycmVudFZhbHVlOiB0aGlzLnZpZXdEYXRlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24ucGFnZWRvd25cIiwgW1wiJGV2ZW50XCJdKVxuICAgIHB1YmxpYyBuZXh0UGFnZShldmVudD86IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMucHJldmlvdXNWaWV3RGF0ZSA9IHRoaXMudmlld0RhdGU7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0Vmlldykge1xuICAgICAgICAgICAgdGhpcy52aWV3RGF0ZSA9IENhbGVuZGFyRGF5LmZyb20odGhpcy52aWV3RGF0ZSkuYWRkKCd5ZWFyJywgMSkubmF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWNhZGVWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdEYXRlID0gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCAxNSkubmF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52aWV3RGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlOiB0aGlzLnByZXZpb3VzVmlld0RhdGUsXG4gICAgICAgICAgICBjdXJyZW50VmFsdWU6IHRoaXMudmlld0RhdGUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuXHQvKipcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHB1YmxpYyBvbkFjdGl2ZVZpZXdEZWNhZGVLQihkYXRlOiBEYXRlLCBldmVudDogS2V5Ym9hcmRFdmVudCwgYWN0aXZlVmlld0lkeDogbnVtYmVyKSB7XG5cdFx0c3VwZXIuYWN0aXZlVmlld0RlY2FkZUtCKGV2ZW50LCBhY3RpdmVWaWV3SWR4KTtcblxuXHRcdGlmICh0aGlzLnBsYXRmb3JtLmlzQWN0aXZhdGlvbktleShldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMudmlld0RhdGUgPSBkYXRlO1xuICAgICAgICAgICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHB1YmxpYyBvbkFjdGl2ZVZpZXdEZWNhZGUoZXZlbnQ6IE1vdXNlRXZlbnQsIGRhdGU6IERhdGUsIGFjdGl2ZVZpZXdJZHg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0c3VwZXIuYWN0aXZlVmlld0RlY2FkZShhY3RpdmVWaWV3SWR4KTtcbiAgICAgICAgdGhpcy52aWV3RGF0ZSA9IGRhdGU7XG5cdH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWN0aXZlVmlld0RlY2FkZUtCKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHN1cGVyLmFjdGl2ZVZpZXdEZWNhZGVLQihldmVudCk7XG5cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybS5LRVlNQVAuQVJST1dfUklHSFQpIHtcbiAgICAgICAgICAgIHRoaXMubmV4dFBhZ2UoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gdGhpcy5wbGF0Zm9ybS5LRVlNQVAuQVJST1dfTEVGVCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBhY3RpdmVWaWV3RGVjYWRlKCkge1xuICAgICAgICBzdXBlci5hY3RpdmVWaWV3RGVjYWRlKCk7XG5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2hhbmdlUGFnZUtCKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBuZXh0ID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5pc0FjdGl2YXRpb25LZXkoZXZlbnQpKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRQYWdlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNQYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdFllYXIoZXZlbnQ6IERhdGUpIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1ZpZXdEYXRlID0gdGhpcy52aWV3RGF0ZTtcblxuICAgICAgICB0aGlzLnZpZXdEYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICBldmVudC5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgZXZlbnQuZ2V0TW9udGgoKSxcbiAgICAgICAgICAgIGV2ZW50LmdldERhdGUoKSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmFjdGl2ZVZpZXcgPSBJZ3hDYWxlbmRhclZpZXcuWWVhcjtcbiAgICAgICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdE1vbnRoKGV2ZW50OiBEYXRlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0RGF0ZShldmVudCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgYSBkYXRlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgdGhpcy5tb250aFBpY2tlci5zZWxlY3REYXRlKG5ldyBEYXRlKGAyMDE4LTA2LTEyYCkpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBzZWxlY3REYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIuc2VsZWN0RGF0ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldE5leHRZZWFyKCkge1xuICAgICAgICByZXR1cm4gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCAxKS55ZWFyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJldmlvdXNZZWFyKCkge1xuICAgICAgICByZXR1cm4gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCAtMSkueWVhcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZURhdGUoZGF0ZTogRGF0ZSkge1xuICAgICAgICB0aGlzLnByZXZpb3VzVmlld0RhdGUgPSB0aGlzLnZpZXdEYXRlO1xuICAgICAgICB0aGlzLnZpZXdEYXRlID0gQ2FsZW5kYXJEYXkuZnJvbShkYXRlKS5hZGQoJ3llYXInLCAtdGhpcy5hY3RpdmVWaWV3SWR4KS5uYXRpdmU7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0Vmlldykge1xuICAgICAgICAgICAgdGhpcy52aWV3RGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogdGhpcy5wcmV2aW91c1ZpZXdEYXRlLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZTogdGhpcy52aWV3RGF0ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBwcm90ZWN0ZWQgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2hvd0FjdGl2ZURheTogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG4gICAgcHJvdGVjdGVkIHNldCBzaG93QWN0aXZlRGF5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Nob3dBY3RpdmVEYXkgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgc2hvd0FjdGl2ZURheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dBY3RpdmVEYXk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBhY3RpdmVEZXNjZW5kYW50KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy52YWx1ZSBhcyBEYXRlKT8uZ2V0VGltZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZURlc2NlbmRhbnQgPz8gdGhpcy52aWV3RGF0ZS5nZXRUaW1lKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldCBhY3RpdmVEZXNjZW5kYW50KGRhdGU6IERhdGUpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlRGVzY2VuZGFudCA9IGRhdGUuZ2V0VGltZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgaXNEZWZhdWx0VmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gSWd4Q2FsZW5kYXJWaWV3LlllYXI7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmFjdGl2ZVZpZXcgPSBJZ3hDYWxlbmRhclZpZXcuWWVhcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvblxuICAgICAgICAgICAgLmF0dGFjaEtleWJvYXJkSGFuZGxlcnModGhpcy53cmFwcGVyLCB0aGlzKVxuICAgICAgICAgICAgLnNldChcIkFycm93VXBcIiwgdGhpcy5vbkFycm93VXApXG4gICAgICAgICAgICAuc2V0KFwiQXJyb3dEb3duXCIsIHRoaXMub25BcnJvd0Rvd24pXG4gICAgICAgICAgICAuc2V0KFwiQXJyb3dMZWZ0XCIsIHRoaXMub25BcnJvd0xlZnQpXG4gICAgICAgICAgICAuc2V0KFwiQXJyb3dSaWdodFwiLCB0aGlzLm9uQXJyb3dSaWdodClcbiAgICAgICAgICAgIC5zZXQoXCJFbnRlclwiLCB0aGlzLm9uRW50ZXIpXG4gICAgICAgICAgICAuc2V0KFwiIFwiLCB0aGlzLm9uRW50ZXIpXG4gICAgICAgICAgICAuc2V0KFwiSG9tZVwiLCB0aGlzLm9uSG9tZSlcbiAgICAgICAgICAgIC5zZXQoXCJFbmRcIiwgdGhpcy5vbkVuZClcbiAgICAgICAgICAgIC5zZXQoXCJQYWdlVXBcIiwgdGhpcy5oYW5kbGVQYWdlVXApXG4gICAgICAgICAgICAuc2V0KFwiUGFnZURvd25cIiwgdGhpcy5oYW5kbGVQYWdlRG93bik7XG5cbiAgICAgICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHRoaXMub25XcmFwcGVyRm9jdXMoZXZlbnQpKTtcbiAgICAgICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIChldmVudDogRm9jdXNFdmVudCkgPT4gdGhpcy5vbldyYXBwZXJCbHVyKGV2ZW50KSk7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3JC5zdWJzY3JpYmUoKHZpZXcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVmlld0NoYW5nZWQuZW1pdCh2aWV3KTtcblxuICAgICAgICAgICAgdGhpcy52aWV3RGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogdGhpcy5wcmV2aW91c1ZpZXdEYXRlLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZTogdGhpcy52aWV3RGF0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25XcmFwcGVyRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2hvd0FjdGl2ZURheSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbldyYXBwZXJCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuc2hvd0FjdGl2ZURheSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUGFnZVVwRG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgZGVsdGE6IG51bWJlcikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdEYXRlID0gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLnZpZXdEYXRlKS5hZGQoJ3llYXInLCBkZWx0YSkubmF0aXZlO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVsdGEgPiAwID8gdGhpcy5uZXh0UGFnZSgpIDogdGhpcy5wcmV2aW91c1BhZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUGFnZVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlUGFnZVVwRG93bihldmVudCwgLTEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUGFnZURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVQYWdlVXBEb3duKGV2ZW50LCAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQXJyb3dVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoc1ZpZXcub25LZXlkb3duQXJyb3dVcChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0RlY2FkZVZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5vbktleWRvd25BcnJvd1VwKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25BcnJvd0Rvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0Vmlldykge1xuICAgICAgICAgICAgdGhpcy5tb250aHNWaWV3Lm9uS2V5ZG93bkFycm93RG93bihldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0RlY2FkZVZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5vbktleWRvd25BcnJvd0Rvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkFycm93TGVmdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoc1ZpZXcub25LZXlkb3duQXJyb3dMZWZ0KGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRGVjYWRlVmlldykge1xuICAgICAgICAgICAgdGhpcy5kYWNhZGVWaWV3Lm9uS2V5ZG93bkFycm93TGVmdChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQXJyb3dSaWdodChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoc1ZpZXcub25LZXlkb3duQXJyb3dSaWdodChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0RlY2FkZVZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5vbktleWRvd25BcnJvd1JpZ2h0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25FbnRlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpZiAodGhpcy5pc0RlZmF1bHRWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoc1ZpZXcub25LZXlkb3duRW50ZXIoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWNhZGVWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLmRhY2FkZVZpZXcub25LZXlkb3duRW50ZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkhvbWUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmlzRGVmYXVsdFZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMubW9udGhzVmlldy5vbktleWRvd25Ib21lKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRGVjYWRlVmlldykge1xuICAgICAgICAgICAgdGhpcy5kYWNhZGVWaWV3Lm9uS2V5ZG93bkhvbWUoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkVuZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0Vmlldykge1xuICAgICAgICAgICAgdGhpcy5tb250aHNWaWV3Lm9uS2V5ZG93bkVuZChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0RlY2FkZVZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5vbktleWRvd25FbmQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG5cdC8qKlxuXHQgKiBAaGlkZGVuXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbi5kZXRhY2hLZXlib2FyZEhhbmRsZXJzKCk7XG4gICAgICAgIHRoaXMud3JhcHBlcj8ubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMub25XcmFwcGVyRm9jdXMpO1xuICAgICAgICB0aGlzLndyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMub25XcmFwcGVyQmx1cik7XG5cdH1cblxuXHQvKipcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHB1YmxpYyBnZXRQcmV2WWVhckRhdGUoZGF0ZTogRGF0ZSk6IERhdGUge1xuXHRcdHJldHVybiBDYWxlbmRhckRheS5mcm9tKGRhdGUpLmFkZCgneWVhcicsIC0xKS5uYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHB1YmxpYyBnZXROZXh0WWVhckRhdGUoZGF0ZTogRGF0ZSk6IERhdGUge1xuICAgICAgICByZXR1cm4gQ2FsZW5kYXJEYXkuZnJvbShkYXRlKS5hZGQoJ3llYXInLCAxKS5uYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0dGVyIGZvciB0aGUgY29udGV4dCBvYmplY3QgaW5zaWRlIHRoZSBjYWxlbmRhciB0ZW1wbGF0ZXMuXG5cdCAqXG5cdCAqIEBoaWRkZW5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Q29udGV4dChpOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IENhbGVuZGFyRGF5LmZyb20odGhpcy52aWV3RGF0ZSkuYWRkKCdtb250aCcsIGkpLm5hdGl2ZTtcblx0XHRyZXR1cm4gdGhpcy5nZW5lcmF0ZUNvbnRleHQoZGF0ZSwgaSk7XG5cdH1cblxuXHQvKipcblx0ICogSGVscGVyIG1ldGhvZCBidWlsZGluZyBhbmQgcmV0dXJuaW5nIHRoZSBjb250ZXh0IG9iamVjdCBpbnNpZGUgdGhlIGNhbGVuZGFyIHRlbXBsYXRlcy5cblx0ICpcblx0ICogQGhpZGRlblxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHByaXZhdGUgZ2VuZXJhdGVDb250ZXh0KHZhbHVlOiBEYXRlIHwgRGF0ZVtdLCBpPzogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cnVjdCA9IChkYXRlOiBEYXRlLCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIC4uLmZvcm1hdFRvUGFydHMoZGF0ZSwgdGhpcy5sb2NhbGUsIHRoaXMuZm9ybWF0T3B0aW9ucywgW1xuICAgICAgICAgICAgICAgIFwiZXJhXCIsXG4gICAgICAgICAgICAgICAgXCJ5ZWFyXCIsXG4gICAgICAgICAgICAgICAgXCJtb250aFwiLFxuICAgICAgICAgICAgICAgIFwiZGF5XCIsXG4gICAgICAgICAgICAgICAgXCJ3ZWVrZGF5XCIsXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZm9ybWF0T2JqZWN0ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgID8gdmFsdWUubWFwKChkYXRlLCBpbmRleCkgPT4gY29uc3RydWN0KGRhdGUsIGluZGV4KSlcbiAgICAgICAgICAgIDogY29uc3RydWN0KHZhbHVlLCBpKTtcblxuICAgICAgICByZXR1cm4geyAkaW1wbGljaXQ6IGZvcm1hdE9iamVjdCB9O1xuXHR9XG59XG4iLCI8IS0tIFByZXZpb3VzIGFycm93IGljb24gLS0+XG48bmctdGVtcGxhdGUgI3ByZXZBcnJvdyBsZXQtb2JqPlxuICAgIDxpZ3gtaWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBmYW1pbHk9XCJkZWZhdWx0XCIgbmFtZT1cImFycm93X3ByZXZcIj48L2lneC1pY29uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBOZXh0IGFycm93IGljb24gLS0+XG48bmctdGVtcGxhdGUgI25leHRBcnJvdyBsZXQtb2JqPlxuICAgIDxpZ3gtaWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBmYW1pbHk9XCJkZWZhdWx0XCIgbmFtZT1cImFycm93X25leHRcIj48L2lneC1pY29uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBQcmV2aW91cyBwaWNrZXIgYnV0dG9uIC0tPlxuPG5nLXRlbXBsYXRlICNwcmV2UGFnZUJ1dHRvbiBsZXQtb2JqPlxuICAgIDxkaXZcbiAgICAgICAgI3ByZXZQYWdlQnRuXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fcHJldlwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByZXZOYXZMYWJlbCgoZ2V0UHJldlllYXJEYXRlKHZpZXdEYXRlKSB8IGRhdGU6ICdZWVlZJykpXCJcbiAgICAgICAgZGF0YS1hY3Rpb249XCJwcmV2XCJcbiAgICAgICAgaWd4Q2FsZW5kYXJTY3JvbGxQYWdlXG4gICAgICAgIChtb3VzZWRvd24pPVwicHJldmlvdXNQYWdlKClcIlxuICAgICAgICAoa2V5ZG93bik9XCJjaGFuZ2VQYWdlS0IoJGV2ZW50LCBmYWxzZSlcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZBcnJvd1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBOZXh0IHBpY2tlciBidXR0b24gLS0+XG48bmctdGVtcGxhdGUgI25leHRQYWdlQnV0dG9uIGxldC1vYmo+XG4gICAgPGRpdlxuICAgICAgICAjbmV4dFBhZ2VCdG5cbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgY2xhc3M9XCJpZ3gtY2FsZW5kYXItcGlja2VyX19uZXh0XCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibmV4dE5hdkxhYmVsKChnZXROZXh0WWVhckRhdGUodmlld0RhdGUpIHwgZGF0ZTogJ1lZWVknKSlcIlxuICAgICAgICBkYXRhLWFjdGlvbj1cIm5leHRcIlxuICAgICAgICBpZ3hDYWxlbmRhclNjcm9sbFBhZ2VcbiAgICAgICAgKG1vdXNlZG93bik9XCJuZXh0UGFnZSgpXCJcbiAgICAgICAgKGtleWRvd24pPVwiY2hhbmdlUGFnZUtCKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5leHRBcnJvd1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBZZWFyIC0tPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0WWVhciBsZXQtb2JqPlxuICAgIDxzcGFuICpuZ0lmPVwiYWN0aXZlVmlldyA9PT0gJ3llYXInXCIgY2xhc3M9XCJpZ3gtY2FsZW5kYXJfX2FyaWEtb2ZmLXNjcmVlblwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPnt7IGZvcm1hdHRlZFllYXIob2JqLmRhdGUpIH19PC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICAgICN5ZWFyc0J0blxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIob2JqLmRhdGUgfCBkYXRlOiAneXl5eScpICsgJywgJyArIHJlc291cmNlU3RyaW5ncy5pZ3hfY2FsZW5kYXJfc2VsZWN0X3llYXJcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbkFjdGl2ZVZpZXdEZWNhZGVLQihvYmouZGF0ZSwgJGV2ZW50LCBvYmouaW5kZXgpXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkFjdGl2ZVZpZXdEZWNhZGUoJGV2ZW50LCBvYmouZGF0ZSwgb2JqLmluZGV4KVwiXG4gICAgICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fZGF0ZVwiPlxuICAgICAgICB7eyBmb3JtYXR0ZWRZZWFyKG9iai5kYXRlKSB9fVxuICAgIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRGVjYWRlIC0tPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0RGVjYWRlPlxuICAgIDxzcGFuPnt7IGdldERlY2FkZVJhbmdlKCkuc3RhcnQgfX0gLSB7eyBnZXREZWNhZGVSYW5nZSgpLmVuZCB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUElDS0VSIElOIE1PTlRIUyAtLT5cbjxuZy10ZW1wbGF0ZSAjY2FsZW5kYXJZZWFyUGlja2VyPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fZGF0ZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRlZmF1bHRZZWFyOyBjb250ZXh0OiBnZXRDb250ZXh0KDApXCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtY2FsZW5kYXItcGlja2VyX19uYXZcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmV2UGFnZUJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5leHRQYWdlQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUElDS0VSIElOIFlFQVJTIC0tPlxuPG5nLXRlbXBsYXRlICNjYWxlbmRhckRlY2FkZVBpY2tlcj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImlneC1jYWxlbmRhci1waWNrZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1jYWxlbmRhci1waWNrZXJfX2RhdGVzXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVmYXVsdERlY2FkZTtcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1jYWxlbmRhci1waWNrZXJfX25hdlwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXZQYWdlQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibmV4dFBhZ2VCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdlxuICAgICN3cmFwcGVyXG4gICAgW3RhYkluZGV4XT1cIjBcIlxuICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyX193cmFwcGVyXCJcbiAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiYWN0aXZlRGVzY2VuZGFudFwiXG4gICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPVwic2VsZWN0aW9uICE9PSAnc2luZ2xlJ1wiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiY2FsZW5kYXItZGVzY1wiXG4gICAgcm9sZT1cImdyaWRcIlxuICAgID5cbiAgICA8Y2FwdGlvbiBpZD1cImNhbGVuZGFyLWRlc2NcIiB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJpZ3gtY2FsZW5kYXJfX2FyaWEtb2ZmLXNjcmVlblwiPlxuICAgICAgICB7eyByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3Npbmd1bGFyX3NpbmdsZV9zZWxlY3Rpb259fVxuICAgIDwvY2FwdGlvbj5cblxuICAgIDxzZWN0aW9uIGNsYXNzPVwiaWd4LWNhbGVuZGFyX19waWNrZXJzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RlZmF1bHRWaWV3XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FsZW5kYXJZZWFyUGlja2VyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RlY2FkZVZpZXdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYWxlbmRhckRlY2FkZVBpY2tlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImlneC1jYWxlbmRhcl9fYm9keVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNEZWZhdWx0Vmlld1wiPlxuICAgICAgICAgICAgPGlneC1tb250aHMtdmlld1xuICAgICAgICAgICAgICAgICNtb250aHNcbiAgICAgICAgICAgICAgICByb2xlPVwicm93Z3JvdXBcIlxuICAgICAgICAgICAgICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgW2RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgICAgICAgICBbZm9ybWF0Vmlld109XCJmb3JtYXRWaWV3cy5tb250aFwiXG4gICAgICAgICAgICAgICAgW21vbnRoRm9ybWF0XT1cImZvcm1hdE9wdGlvbnMubW9udGhcIlxuICAgICAgICAgICAgICAgIFtzaG93QWN0aXZlXT1cInNob3dBY3RpdmVEYXlcIlxuICAgICAgICAgICAgICAgIFtzdGFuZGFsb25lXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAoc3dpcGVyaWdodCk9XCJwcmV2aW91c1BhZ2UoKVwiXG4gICAgICAgICAgICAgICAgKHN3aXBlbGVmdCk9XCJuZXh0UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2VkKT1cInVwZGF0ZURhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9pZ3gtbW9udGhzLXZpZXc+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RlY2FkZVZpZXdcIj5cbiAgICAgICAgICAgIDxpZ3gteWVhcnMtdmlld1xuICAgICAgICAgICAgICAgICNkZWNhZGVcbiAgICAgICAgICAgICAgICByb2xlPVwicm93Z3JvdXBcIlxuICAgICAgICAgICAgICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgICAgICAgICAgICAgW2RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgICAgICAgICBbZm9ybWF0Vmlld109XCJmb3JtYXRWaWV3cy55ZWFyXCJcbiAgICAgICAgICAgICAgICBbeWVhckZvcm1hdF09XCJmb3JtYXRPcHRpb25zLnllYXJcIlxuICAgICAgICAgICAgICAgIFtzaG93QWN0aXZlXT1cInNob3dBY3RpdmVEYXlcIlxuICAgICAgICAgICAgICAgIFtzdGFuZGFsb25lXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAoc3dpcGVyaWdodCk9XCJwcmV2aW91c1BhZ2UoKVwiXG4gICAgICAgICAgICAgICAgKHN3aXBlbGVmdCk9XCJuZXh0UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwic2VsZWN0WWVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocGFnZUNoYW5nZWQpPVwidXBkYXRlRGF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvaWd4LXllYXJzLXZpZXc+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19
@@ -1,6 +1,6 @@
1
1
  import { Component, Input, HostBinding, booleanAttribute, Inject, } from "@angular/core";
2
2
  import { IgxCalendarMonthDirective } from "../calendar.directives";
3
- import { NgFor, TitleCasePipe, DatePipe } from "@angular/common";
3
+ import { NgFor, TitleCasePipe } from "@angular/common";
4
4
  import { IgxCalendarViewDirective, DAY_INTERVAL_TOKEN, } from "../common/calendar-view.directive";
5
5
  import { NG_VALUE_ACCESSOR } from "@angular/forms";
6
6
  import { CalendarDay } from "../common/model";
@@ -85,6 +85,14 @@ export class IgxMonthsViewComponent extends IgxCalendarViewDirective {
85
85
  */
86
86
  this._monthFormat = "short";
87
87
  }
88
+ /**
89
+ * @hidden
90
+ */
91
+ onMouseDown() {
92
+ if (this.tabIndex !== -1) {
93
+ this.el.nativeElement.focus();
94
+ }
95
+ }
88
96
  /**
89
97
  * Returns the locale representation of the month in the months view.
90
98
  *
@@ -131,7 +139,7 @@ export class IgxMonthsViewComponent extends IgxCalendarViewDirective {
131
139
  provide: DAY_INTERVAL_TOKEN,
132
140
  useValue: "month",
133
141
  },
134
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"igx-calendar-view__items\" role=\"row\">\n <span\n igxCalendarMonth\n #item=\"igxCalendarMonth\"\n *ngFor=\"let month of range; trackBy: monthTracker\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"month.getTime()\"\n [attr.aria-label]=\"formattedMonth(month).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [value]=\"month\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedMonth(month).formatted | titlecase }}\n </span>\n </span>\n</div>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: IgxCalendarMonthDirective, selector: "[igxCalendarMonth]", exportAs: ["igxCalendarMonth"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }] }); }
142
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"igx-calendar-view__items\" role=\"row\">\n <span\n igxCalendarMonth\n #item=\"igxCalendarMonth\"\n *ngFor=\"let month of range; trackBy: monthTracker\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"month.getTime()\"\n [attr.aria-label]=\"formattedMonth(month).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [value]=\"month\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n (mousedown)=\"onMouseDown()\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedMonth(month).formatted | titlecase }}\n </span>\n </span>\n</div>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: IgxCalendarMonthDirective, selector: "[igxCalendarMonth]", exportAs: ["igxCalendarMonth"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }] }); }
135
143
  }
136
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxMonthsViewComponent, decorators: [{
137
145
  type: Component,
@@ -145,7 +153,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
145
153
  provide: DAY_INTERVAL_TOKEN,
146
154
  useValue: "month",
147
155
  },
148
- ], selector: "igx-months-view", standalone: true, imports: [NgFor, IgxCalendarMonthDirective, TitleCasePipe, DatePipe], template: "<div class=\"igx-calendar-view__items\" role=\"row\">\n <span\n igxCalendarMonth\n #item=\"igxCalendarMonth\"\n *ngFor=\"let month of range; trackBy: monthTracker\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"month.getTime()\"\n [attr.aria-label]=\"formattedMonth(month).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [value]=\"month\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedMonth(month).formatted | titlecase }}\n </span>\n </span>\n</div>\n" }]
156
+ ], selector: "igx-months-view", standalone: true, imports: [NgFor, IgxCalendarMonthDirective, TitleCasePipe], template: "<div class=\"igx-calendar-view__items\" role=\"row\">\n <span\n igxCalendarMonth\n #item=\"igxCalendarMonth\"\n *ngFor=\"let month of range; trackBy: monthTracker\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"month.getTime()\"\n [attr.aria-label]=\"formattedMonth(month).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [value]=\"month\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n (mousedown)=\"onMouseDown()\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedMonth(month).formatted | titlecase }}\n </span>\n </span>\n</div>\n" }]
149
157
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
150
158
  type: Inject,
151
159
  args: [DAY_INTERVAL_TOKEN]
@@ -168,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
168
176
  type: Input,
169
177
  args: [{ transform: booleanAttribute }]
170
178
  }] } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhzLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL21vbnRocy12aWV3L21vbnRocy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9tb250aHMtdmlldy9tb250aHMtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBRVgsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLGtCQUFrQixHQUNyQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVsRCxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFtQmhCLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSx3QkFBd0I7SUFDaEUsV0FBVyxDQUFRO0lBMEJuQjs7T0FFRztJQUNILElBRVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsVUFBVSxDQUFDLEtBQWM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFD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QUFFLE9BQU87YUFDcEI7U0FDSixpRENoQ0wsMnRCQW9CQSw0Q0RnQmMsS0FBSyxtSEFBRSx5QkFBeUIsMEZBQUUsYUFBYTs7MkZBRWhELHNCQUFzQjtrQkFqQmxDLFNBQVM7Z0NBQ0s7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyx3QkFBd0I7NEJBQ25DLEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFFBQVEsRUFBRSxPQUFPO3lCQUNwQjtxQkFDSixZQUNTLGlCQUFpQixjQUVmLElBQUksV0FDUCxDQUFDLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDOzswQkFpRy9ELE1BQU07MkJBQUMsa0JBQWtCO3lDQTlFdkIsRUFBRTtzQkFGUixXQUFXO3VCQUFDLFNBQVM7O3NCQUNyQixLQUFLO2dCQVNVLFNBQVM7c0JBRHhCLFdBQVc7dUJBQUMseUJBQXlCO2dCQVEzQixVQUFVO3NCQUZwQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHFDQUFxQztnQkFnQnZDLFdBQVc7c0JBRHJCLEtBQUs7Z0JBdUJVLFVBQVU7c0JBRHpCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBFbGVtZW50UmVmLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgSW5qZWN0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSWd4Q2FsZW5kYXJNb250aERpcmVjdGl2ZSB9IGZyb20gXCIuLi9jYWxlbmRhci5kaXJlY3RpdmVzXCI7XG5pbXBvcnQgeyBOZ0ZvciwgVGl0bGVDYXNlUGlwZSwgRGF0ZVBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICAgIElneENhbGVuZGFyVmlld0RpcmVjdGl2ZSxcbiAgICBEQVlfSU5URVJWQUxfVE9LRU4sXG59IGZyb20gXCIuLi9jb21tb24vY2FsZW5kYXItdmlldy5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXkgfSBmcm9tIFwiLi4vY29tbW9uL21vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IERheUludGVydmFsIH0gZnJvbSBcIi4uL2NvbW1vbi9tb2RlbFwiO1xuaW1wb3J0IHsgY2FsZW5kYXJSYW5nZSB9IGZyb20gXCIuLi9jb21tb24vaGVscGVyc1wiO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBJZ3hNb250aHNWaWV3Q29tcG9uZW50LFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IERBWV9JTlRFUlZBTF9UT0tFTixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBcIm1vbnRoXCIsXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBzZWxlY3RvcjogXCJpZ3gtbW9udGhzLXZpZXdcIixcbiAgICB0ZW1wbGF0ZVVybDogXCJtb250aHMtdmlldy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nRm9yLCBJZ3hDYWxlbmRhck1vbnRoRGlyZWN0aXZlLCBUaXRsZUNhc2VQaXBlLCBEYXRlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIElneE1vbnRoc1ZpZXdDb21wb25lbnQgZXh0ZW5kcyBJZ3hDYWxlbmRhclZpZXdEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgI3N0YW5kYWxvbmUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgaWRgIG9mIHRoZSBtb250aHMgdmlldy5cbiAgICAgKiBJZiBub3Qgc2V0LCB0aGUgYGlkYCB3aWxsIGhhdmUgdmFsdWUgYFwiaWd4LW1vbnRocy12aWV3LTBcImAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtbW9udGhzLXZpZXcgaWQ9XCJteS1tb250aHMtdmlld1wiPjwvaWd4LW1vbnRocy12aWV3PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgbW9udGhzVmlld0lkID0gIHRoaXMubW9udGhzVmlldy5pZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hNb250aHNWaWV3Q29tcG9uZW50XG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKFwiYXR0ci5pZFwiKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1tb250aHMtdmlldy0ke05FWFRfSUQrK31gO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgY3NzIGNsYXNzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5pZ3gtY2FsZW5kYXItdmlld1wiKVxuICAgIHB1YmxpYyByZWFkb25seSB2aWV3Q2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmlneC1jYWxlbmRhci12aWV3LS1zdGFuZGFsb25lXCIpXG4gICAgcHVibGljIGdldCBzdGFuZGFsb25lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jc3RhbmRhbG9uZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHN0YW5kYWxvbmUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy4jc3RhbmRhbG9uZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG1vbnRoIGZvcm1hdCBvcHRpb24gb2YgdGhlIG1vbnRocyB2aWV3LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgbW9udGhGb3JtYXQgPSB0aGlzLm1vbnRoc1ZpZXcubW9udGhGb3JtYXQuXG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IG1vbnRoRm9ybWF0KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb250aEZvcm1hdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtb250aCBmb3JtYXQgb3B0aW9uIG9mIHRoZSBtb250aHMgdmlldy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1tb250aHMtdmlldz4gW21vbnRoRm9ybWF0XT1cInNob3J0J1wiPC9pZ3gtbW9udGhzLXZpZXc+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4TW9udGhzVmlld0NvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgbW9udGhGb3JtYXQodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl9tb250aEZvcm1hdCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmluaXRGb3JtYXR0ZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciB0aGUgdmlldyBzaG91bGQgYmUgcmVuZGVyZWRcbiAgICAgKiBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSBhbmQgZm9ybWF0LCBpZiBhbnkuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIG92ZXJyaWRlIGZvcm1hdFZpZXcgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBkYXRlIG9iamVjdHMgd2hpY2ggYXJlIHRoZW4gdXNlZCB0b1xuICAgICAqIHByb3Blcmx5IHJlbmRlciB0aGUgbW9udGggbmFtZXMuXG4gICAgICpcbiAgICAgKiBVc2VkIGluIHRoZSB0ZW1wbGF0ZSBvZiB0aGUgY29tcG9uZW50XG4gICAgICpcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcmFuZ2UoKTogRGF0ZVtdIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBDYWxlbmRhckRheS5mcm9tKHRoaXMuZGF0ZSkuc2V0KHsgZGF0ZTogMSwgbW9udGg6IDAgfSk7XG4gICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0LmFkZCh0aGlzLmRheUludGVydmFsLCAxMik7XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICAgICAgICBjYWxlbmRhclJhbmdlKHsgc3RhcnQsIGVuZCwgdW5pdDogdGhpcy5kYXlJbnRlcnZhbCB9KSxcbiAgICAgICAgKS5tYXAoKG0pID0+IG0ubmF0aXZlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbW9udGhGb3JtYXQgPSBcInNob3J0XCI7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KERBWV9JTlRFUlZBTF9UT0tFTikgZGF5SW50ZXJ2YWw6IERheUludGVydmFsLFxuICAgICkge1xuICAgICAgICBzdXBlcihkYXlJbnRlcnZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbG9jYWxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb250aCBpbiB0aGUgbW9udGhzIHZpZXcuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGZvcm1hdHRlZE1vbnRoKHZhbHVlOiBEYXRlKTogeyBsb25nOiBzdHJpbmc7IGZvcm1hdHRlZDogc3RyaW5nIH0ge1xuICAgICAgICBjb25zdCByYXdGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwge1xuICAgICAgICAgICAgbW9udGg6IFwibG9uZ1wiLFxuICAgICAgICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmZvcm1hdFZpZXcpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbG9uZzogcmF3Rm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSksXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkOiB0aGlzLl9mb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9uZzogcmF3Rm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSksXG4gICAgICAgICAgICBmb3JtYXR0ZWQ6IGAke3ZhbHVlLmdldE1vbnRoKCl9YCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG1vbnRoVHJhY2tlcihfOiBudW1iZXIsIGl0ZW06IERhdGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7aXRlbS5nZXRNb250aCgpfX1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5pdEZvcm1hdHRlcigpIHtcbiAgICAgICAgdGhpcy5fZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5fbG9jYWxlLCB7XG4gICAgICAgICAgICBtb250aDogdGhpcy5tb250aEZvcm1hdCxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlneC1jYWxlbmRhci12aWV3X19pdGVtc1wiIHJvbGU9XCJyb3dcIj5cbiAgICA8c3BhblxuICAgICAgICBpZ3hDYWxlbmRhck1vbnRoXG4gICAgICAgICNpdGVtPVwiaWd4Q2FsZW5kYXJNb250aFwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBtb250aCBvZiByYW5nZTsgdHJhY2tCeTogbW9udGhUcmFja2VyXCJcbiAgICAgICAgY2xhc3M9XCJpZ3gtY2FsZW5kYXItdmlld19faXRlbVwiXG4gICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgIFthdHRyLmlkXT1cIm1vbnRoLmdldFRpbWUoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZm9ybWF0dGVkTW9udGgobW9udGgpLmxvbmdcIlxuICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIml0ZW0uaXNTZWxlY3RlZFwiXG4gICAgICAgIFt2YWx1ZV09XCJtb250aFwiXG4gICAgICAgIFtkYXRlXT1cImRhdGVcIlxuICAgICAgICBbc2hvd0FjdGl2ZV09XCJzaG93QWN0aXZlXCJcbiAgICAgICAgKGl0ZW1TZWxlY3Rpb24pPVwic2VsZWN0RGF0ZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXZpZXdfX2l0ZW0taW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZE1vbnRoKG1vbnRoKS5mb3JtYXR0ZWQgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbjwvZGl2PlxuIl19
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhzLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL21vbnRocy12aWV3L21vbnRocy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9tb250aHMtdmlldy9tb250aHMtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBRVgsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFDSCx3QkFBd0IsRUFDeEIsa0JBQWtCLEdBQ3JCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRWxELElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQW1CaEIsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHdCQUF3QjtJQUNoRSxXQUFXLENBQVE7SUEwQm5COztPQUVHO0lBQ0gsSUFFVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxVQUFVLENBQUMsS0FBYztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lB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QkFBZ0IsdUtBcEZ6QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxzQkFBc0I7Z0JBQ25DLEtBQUssRUFBRSxJQUFJO2FBQ2Q7WUFDRDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixRQUFRLEVBQUUsT0FBTzthQUNwQjtTQUNKLGlEQ2hDTCxrd0JBcUJBLDRDRGVjLEtBQUssbUhBQUUseUJBQXlCLDBGQUFFLGFBQWE7OzJGQUVoRCxzQkFBc0I7a0JBakJsQyxTQUFTO2dDQUNLO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsd0JBQXdCOzRCQUNuQyxLQUFLLEVBQUUsSUFBSTt5QkFDZDt3QkFDRDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixRQUFRLEVBQUUsT0FBTzt5QkFDcEI7cUJBQ0osWUFDUyxpQkFBaUIsY0FFZixJQUFJLFdBQ1AsQ0FBQyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxDQUFDOzswQkFpR3JELE1BQU07MkJBQUMsa0JBQWtCO3lDQTlFdkIsRUFBRTtzQkFGUixXQUFXO3VCQUFDLFNBQVM7O3NCQUNyQixLQUFLO2dCQVNVLFNBQVM7c0JBRHhCLFdBQVc7dUJBQUMseUJBQXlCO2dCQVEzQixVQUFVO3NCQUZwQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLHFDQUFxQztnQkFnQnZDLFdBQVc7c0JBRHJCLEtBQUs7Z0JBdUJVLFVBQVU7c0JBRHpCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBFbGVtZW50UmVmLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgSW5qZWN0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSWd4Q2FsZW5kYXJNb250aERpcmVjdGl2ZSB9IGZyb20gXCIuLi9jYWxlbmRhci5kaXJlY3RpdmVzXCI7XG5pbXBvcnQgeyBOZ0ZvciwgVGl0bGVDYXNlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gICAgSWd4Q2FsZW5kYXJWaWV3RGlyZWN0aXZlLFxuICAgIERBWV9JTlRFUlZBTF9UT0tFTixcbn0gZnJvbSBcIi4uL2NvbW1vbi9jYWxlbmRhci12aWV3LmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBDYWxlbmRhckRheSB9IGZyb20gXCIuLi9jb21tb24vbW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRGF5SW50ZXJ2YWwgfSBmcm9tIFwiLi4vY29tbW9uL21vZGVsXCI7XG5pbXBvcnQgeyBjYWxlbmRhclJhbmdlIH0gZnJvbSBcIi4uL2NvbW1vbi9oZWxwZXJzXCI7XG5cbmxldCBORVhUX0lEID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IElneE1vbnRoc1ZpZXdDb21wb25lbnQsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogREFZX0lOVEVSVkFMX1RPS0VOLFxuICAgICAgICAgICAgdXNlVmFsdWU6IFwibW9udGhcIixcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIHNlbGVjdG9yOiBcImlneC1tb250aHMtdmlld1wiLFxuICAgIHRlbXBsYXRlVXJsOiBcIm1vbnRocy12aWV3LmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdGb3IsIElneENhbGVuZGFyTW9udGhEaXJlY3RpdmUsIFRpdGxlQ2FzZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hNb250aHNWaWV3Q29tcG9uZW50IGV4dGVuZHMgSWd4Q2FsZW5kYXJWaWV3RGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgICNzdGFuZGFsb25lID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYGlkYCBvZiB0aGUgbW9udGhzIHZpZXcuXG4gICAgICogSWYgbm90IHNldCwgdGhlIGBpZGAgd2lsbCBoYXZlIHZhbHVlIGBcImlneC1tb250aHMtdmlldy0wXCJgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LW1vbnRocy12aWV3IGlkPVwibXktbW9udGhzLXZpZXdcIj48L2lneC1tb250aHMtdmlldz5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IG1vbnRoc1ZpZXdJZCA9ICB0aGlzLm1vbnRoc1ZpZXcuaWQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4TW9udGhzVmlld0NvbXBvbmVudFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZyhcImF0dHIuaWRcIilcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtbW9udGhzLXZpZXctJHtORVhUX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkZWZhdWx0IGNzcyBjbGFzcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaWd4LWNhbGVuZGFyLXZpZXdcIilcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlld0NsYXNzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5pZ3gtY2FsZW5kYXItdmlldy0tc3RhbmRhbG9uZVwiKVxuICAgIHB1YmxpYyBnZXQgc3RhbmRhbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3N0YW5kYWxvbmU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBzdGFuZGFsb25lKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuI3N0YW5kYWxvbmUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtb250aCBmb3JtYXQgb3B0aW9uIG9mIHRoZSBtb250aHMgdmlldy5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IG1vbnRoRm9ybWF0ID0gdGhpcy5tb250aHNWaWV3Lm1vbnRoRm9ybWF0LlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBtb250aEZvcm1hdCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhGb3JtYXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbW9udGggZm9ybWF0IG9wdGlvbiBvZiB0aGUgbW9udGhzIHZpZXcuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtbW9udGhzLXZpZXc+IFttb250aEZvcm1hdF09XCJzaG9ydCdcIjwvaWd4LW1vbnRocy12aWV3PlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneE1vbnRoc1ZpZXdDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IG1vbnRoRm9ybWF0KHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fbW9udGhGb3JtYXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pbml0Rm9ybWF0dGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgdGhlIHZpZXcgc2hvdWxkIGJlIHJlbmRlcmVkXG4gICAgICogYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgYW5kIGZvcm1hdCwgaWYgYW55LlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBvdmVycmlkZSBmb3JtYXRWaWV3ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgZGF0ZSBvYmplY3RzIHdoaWNoIGFyZSB0aGVuIHVzZWQgdG9cbiAgICAgKiBwcm9wZXJseSByZW5kZXIgdGhlIG1vbnRoIG5hbWVzLlxuICAgICAqXG4gICAgICogVXNlZCBpbiB0aGUgdGVtcGxhdGUgb2YgdGhlIGNvbXBvbmVudFxuICAgICAqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHJhbmdlKCk6IERhdGVbXSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLmRhdGUpLnNldCh7IGRhdGU6IDEsIG1vbnRoOiAwIH0pO1xuICAgICAgICBjb25zdCBlbmQgPSBzdGFydC5hZGQodGhpcy5kYXlJbnRlcnZhbCwgMTIpO1xuXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKFxuICAgICAgICAgICAgY2FsZW5kYXJSYW5nZSh7IHN0YXJ0LCBlbmQsIHVuaXQ6IHRoaXMuZGF5SW50ZXJ2YWwgfSksXG4gICAgICAgICkubWFwKChtKSA9PiBtLm5hdGl2ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX21vbnRoRm9ybWF0ID0gXCJzaG9ydFwiO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICAgICAgQEluamVjdChEQVlfSU5URVJWQUxfVE9LRU4pIGRheUludGVydmFsOiBEYXlJbnRlcnZhbCxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZGF5SW50ZXJ2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25Nb3VzZURvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLnRhYkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBsb2NhbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vbnRoIGluIHRoZSBtb250aHMgdmlldy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybWF0dGVkTW9udGgodmFsdWU6IERhdGUpOiB7IGxvbmc6IHN0cmluZzsgZm9ybWF0dGVkOiBzdHJpbmcgfSB7XG4gICAgICAgIGNvbnN0IHJhd0Zvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLCB7XG4gICAgICAgICAgICBtb250aDogXCJsb25nXCIsXG4gICAgICAgICAgICB5ZWFyOiBcIm51bWVyaWNcIixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9ybWF0Vmlldykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsb25nOiByYXdGb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKSxcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWQ6IHRoaXMuX2Zvcm1hdHRlci5mb3JtYXQodmFsdWUpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb25nOiByYXdGb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKSxcbiAgICAgICAgICAgIGZvcm1hdHRlZDogYCR7dmFsdWUuZ2V0TW9udGgoKX1gLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbW9udGhUcmFja2VyKF86IG51bWJlciwgaXRlbTogRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtpdGVtLmdldE1vbnRoKCl9fWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpbml0Rm9ybWF0dGVyKCkge1xuICAgICAgICB0aGlzLl9mb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLl9sb2NhbGUsIHtcbiAgICAgICAgICAgIG1vbnRoOiB0aGlzLm1vbnRoRm9ybWF0LFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaWd4LWNhbGVuZGFyLXZpZXdfX2l0ZW1zXCIgcm9sZT1cInJvd1wiPlxuICAgIDxzcGFuXG4gICAgICAgIGlneENhbGVuZGFyTW9udGhcbiAgICAgICAgI2l0ZW09XCJpZ3hDYWxlbmRhck1vbnRoXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIHJhbmdlOyB0cmFja0J5OiBtb250aFRyYWNrZXJcIlxuICAgICAgICBjbGFzcz1cImlneC1jYWxlbmRhci12aWV3X19pdGVtXCJcbiAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcbiAgICAgICAgW2F0dHIuaWRdPVwibW9udGguZ2V0VGltZSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmb3JtYXR0ZWRNb250aChtb250aCkubG9uZ1wiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXRlbS5pc1NlbGVjdGVkXCJcbiAgICAgICAgW3ZhbHVlXT1cIm1vbnRoXCJcbiAgICAgICAgW2RhdGVdPVwiZGF0ZVwiXG4gICAgICAgIFtzaG93QWN0aXZlXT1cInNob3dBY3RpdmVcIlxuICAgICAgICAoaXRlbVNlbGVjdGlvbik9XCJzZWxlY3REYXRlKCRldmVudClcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKClcIlxuICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpZ3gtY2FsZW5kYXItdmlld19faXRlbS1pbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTW9udGgobW9udGgpLmZvcm1hdHRlZCB8IHRpdGxlY2FzZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
@@ -106,6 +106,14 @@ export class IgxYearsViewComponent extends IgxCalendarViewDirective {
106
106
  year: this.yearFormat,
107
107
  });
108
108
  }
109
+ /**
110
+ * @hidden
111
+ */
112
+ onMouseDown() {
113
+ if (this.tabIndex !== -1) {
114
+ this.el.nativeElement.focus();
115
+ }
116
+ }
109
117
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxYearsViewComponent, deps: [{ token: i0.ElementRef }, { token: DAY_INTERVAL_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
110
118
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: IgxYearsViewComponent, isStandalone: true, selector: "igx-years-view", inputs: { standalone: "standalone", yearFormat: "yearFormat" }, host: { properties: { "class.igx-calendar-view": "this.viewClass", "class.igx-calendar-view--standalone": "this.standalone" } }, providers: [
111
119
  {
@@ -117,7 +125,7 @@ export class IgxYearsViewComponent extends IgxCalendarViewDirective {
117
125
  provide: DAY_INTERVAL_TOKEN,
118
126
  useValue: "year",
119
127
  },
120
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"igx-calendar-view__items\" role=\"row\">\n <span\n igxCalendarYear\n #item=\"igxCalendarYear\"\n *ngFor=\"let year of range; trackBy: yearTracker\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"year.getTime()\"\n [attr.aria-label]=\"formattedYear(year).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [attr.aria-current]=\"item.isCurrent\"\n [value]=\"year\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedYear(year).formatted }}\n </span>\n </span>\n</div>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: IgxCalendarYearDirective, selector: "[igxCalendarYear]", exportAs: ["igxCalendarYear"] }] }); }
128
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"igx-calendar-view__items\" role=\"row\">\n <span\n igxCalendarYear\n #item=\"igxCalendarYear\"\n *ngFor=\"let year of range; trackBy: yearTracker\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"year.getTime()\"\n [attr.aria-label]=\"formattedYear(year).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [attr.aria-current]=\"item.isCurrent\"\n [value]=\"year\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n (mousedown)=\"onMouseDown()\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedYear(year).formatted }}\n </span>\n </span>\n</div>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: IgxCalendarYearDirective, selector: "[igxCalendarYear]", exportAs: ["igxCalendarYear"] }] }); }
121
129
  }
122
130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxYearsViewComponent, decorators: [{
123
131
  type: Component,
@@ -131,7 +139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
131
139
  provide: DAY_INTERVAL_TOKEN,
132
140
  useValue: "year",
133
141
  },
134
- ], selector: "igx-years-view", standalone: true, imports: [NgFor, IgxCalendarYearDirective], template: "<div class=\"igx-calendar-view__items\" role=\"row\">\n <span\n igxCalendarYear\n #item=\"igxCalendarYear\"\n *ngFor=\"let year of range; trackBy: yearTracker\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"year.getTime()\"\n [attr.aria-label]=\"formattedYear(year).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [attr.aria-current]=\"item.isCurrent\"\n [value]=\"year\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedYear(year).formatted }}\n </span>\n </span>\n</div>\n" }]
142
+ ], selector: "igx-years-view", standalone: true, imports: [NgFor, IgxCalendarYearDirective], template: "<div class=\"igx-calendar-view__items\" role=\"row\">\n <span\n igxCalendarYear\n #item=\"igxCalendarYear\"\n *ngFor=\"let year of range; trackBy: yearTracker\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"year.getTime()\"\n [attr.aria-label]=\"formattedYear(year).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [attr.aria-current]=\"item.isCurrent\"\n [value]=\"year\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n (mousedown)=\"onMouseDown()\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedYear(year).formatted }}\n </span>\n </span>\n</div>\n" }]
135
143
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
136
144
  type: Inject,
137
145
  args: [DAY_INTERVAL_TOKEN]
@@ -146,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
146
154
  }], yearFormat: [{
147
155
  type: Input
148
156
  }] } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhcnMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIveWVhcnMtdmlldy95ZWFycy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci95ZWFycy12aWV3L3llYXJzLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUVYLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUNILHdCQUF3QixFQUN4QixrQkFBa0IsR0FDckIsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFtQmxELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx3QkFBd0I7SUFDL0QsV0FBVyxDQUFRO0lBVW5COztPQUVHO0lBQ0gsSUFFUSxVQUFVO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFSixJQUFXLFVBQVUsQ0FBQyxLQUFjO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFZRDs7Ozs7T0FLRztJQUNILElBQ1csVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFD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d0JBQXdCOzsyRkFFaEMscUJBQXFCO2tCQWpCakMsU0FBUztnQ0FDSzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHVCQUF1Qjs0QkFDbEMsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsUUFBUSxFQUFFLE1BQU07eUJBQ25CO3FCQUNKLFlBQ1MsZ0JBQWdCLGNBRWQsSUFBSSxXQUNQLENBQUMsS0FBSyxFQUFFLHdCQUF3QixDQUFDOzswQkFtRnJDLE1BQU07MkJBQUMsa0JBQWtCO3lDQXhFZCxTQUFTO3NCQUR4QixXQUFXO3VCQUFDLHlCQUF5QjtnQkFROUIsVUFBVTtzQkFGakIsS0FBSzs7c0JBQ1IsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBMEJwQyxVQUFVO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJZ3hDYWxlbmRhclllYXJEaXJlY3RpdmUgfSBmcm9tIFwiLi4vY2FsZW5kYXIuZGlyZWN0aXZlc1wiO1xuaW1wb3J0IHsgTmdGb3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICAgIElneENhbGVuZGFyVmlld0RpcmVjdGl2ZSxcbiAgICBEQVlfSU5URVJWQUxfVE9LRU4sXG59IGZyb20gXCIuLi9jb21tb24vY2FsZW5kYXItdmlldy5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXkgfSBmcm9tIFwiLi4vY29tbW9uL21vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IERheUludGVydmFsIH0gZnJvbSBcIi4uL2NvbW1vbi9tb2RlbFwiO1xuaW1wb3J0IHsgY2FsZW5kYXJSYW5nZSB9IGZyb20gXCIuLi9jb21tb24vaGVscGVyc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWd4WWVhcnNWaWV3Q29tcG9uZW50LFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IERBWV9JTlRFUlZBTF9UT0tFTixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBcInllYXJcIixcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIHNlbGVjdG9yOiBcImlneC15ZWFycy12aWV3XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwieWVhcnMtdmlldy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nRm9yLCBJZ3hDYWxlbmRhclllYXJEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hZZWFyc1ZpZXdDb21wb25lbnQgZXh0ZW5kcyBJZ3hDYWxlbmRhclZpZXdEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgI3N0YW5kYWxvbmUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgY3NzIGNsYXNzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5pZ3gtY2FsZW5kYXItdmlld1wiKVxuICAgIHB1YmxpYyByZWFkb25seSB2aWV3Q2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhci12aWV3LS1zdGFuZGFsb25lJylcblx0cHVibGljIGdldCBzdGFuZGFsb25lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jc3RhbmRhbG9uZTtcbiAgICB9XG5cblx0cHVibGljIHNldCBzdGFuZGFsb25lKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuI3N0YW5kYWxvbmUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfeWVhckZvcm1hdCA9IFwibnVtZXJpY1wiO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX3llYXJzUGVyUGFnZSA9IDE1O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgeWVhciBmb3JtYXQgb3B0aW9uIG9mIHRoZSB5ZWFycyB2aWV3LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgeWVhckZvcm1hdCA9IHRoaXMueWVhcnNWaWV3LnllYXJGb3JtYXQuXG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHllYXJGb3JtYXQoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3llYXJGb3JtYXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgeWVhciBmb3JtYXQgb3B0aW9uIG9mIHRoZSB5ZWFycyB2aWV3LlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXllYXJzLXZpZXcgW3llYXJGb3JtYXRdPVwibnVtZXJpY1wiPjwvaWd4LXllYXJzLXZpZXc+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4WWVhcnNWaWV3Q29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIHNldCB5ZWFyRm9ybWF0KHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5feWVhckZvcm1hdCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmluaXRGb3JtYXR0ZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGRhdGUgb2JqZWN0cyB3aGljaCBhcmUgdGhlbiB1c2VkIHRvIHByb3Blcmx5XG4gICAgICogcmVuZGVyIHRoZSB5ZWFycy5cbiAgICAgKlxuICAgICAqIFVzZWQgaW4gdGhlIHRlbXBsYXRlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcmFuZ2UoKTogRGF0ZVtdIHtcbiAgICAgICAgY29uc3QgeWVhciA9IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBDYWxlbmRhckRheSh7XG4gICAgICAgICAgICB5ZWFyOiBNYXRoLmZsb29yKHllYXIgLyB0aGlzLl95ZWFyc1BlclBhZ2UpICogdGhpcy5feWVhcnNQZXJQYWdlLFxuICAgICAgICAgICAgbW9udGg6IHRoaXMuZGF0ZS5nZXRNb250aCgpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW5kID0gc3RhcnQuYWRkKHRoaXMuZGF5SW50ZXJ2YWwsIHRoaXMuX3llYXJzUGVyUGFnZSk7XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY2FsZW5kYXJSYW5nZSh7IHN0YXJ0LCBlbmQsIHVuaXQ6IHRoaXMuZGF5SW50ZXJ2YWwgfSkpLm1hcChcbiAgICAgICAgICAgIChtKSA9PiBtLm5hdGl2ZSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KERBWV9JTlRFUlZBTF9UT0tFTikgZGF5SW50ZXJ2YWw6IERheUludGVydmFsLFxuICAgICkge1xuICAgICAgICBzdXBlcihkYXlJbnRlcnZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbG9jYWxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB5ZWFyIGluIHRoZSB5ZWFycyB2aWV3LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXR0ZWRZZWFyKHZhbHVlOiBEYXRlKToge2xvbmc6IHN0cmluZywgZm9ybWF0dGVkOiBzdHJpbmd9IHtcbiAgICAgICAgY29uc3QgcmF3Rm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmZvcm1hdFZpZXcpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbG9uZzogcmF3Rm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSksXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkOiB0aGlzLl9mb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvbmc6IHJhd0Zvcm1hdHRlci5mb3JtYXQodmFsdWUpLFxuICAgICAgICAgICAgZm9ybWF0dGVkOiBgJHt2YWx1ZS5nZXRGdWxsWWVhcigpfWBcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgeWVhclRyYWNrZXIoXzogbnVtYmVyLCBpdGVtOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2l0ZW0uZ2V0RnVsbFllYXIoKX19YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGluaXRGb3JtYXR0ZXIoKSB7XG4gICAgICAgIHRoaXMuX2Zvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuX2xvY2FsZSwge1xuICAgICAgICAgICAgeWVhcjogdGhpcy55ZWFyRm9ybWF0LFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaWd4LWNhbGVuZGFyLXZpZXdfX2l0ZW1zXCIgcm9sZT1cInJvd1wiPlxuICAgIDxzcGFuXG4gICAgICAgIGlneENhbGVuZGFyWWVhclxuICAgICAgICAjaXRlbT1cImlneENhbGVuZGFyWWVhclwiXG4gICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIHJhbmdlOyB0cmFja0J5OiB5ZWFyVHJhY2tlclwiXG4gICAgICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXZpZXdfX2l0ZW1cIlxuICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICBbYXR0ci5pZF09XCJ5ZWFyLmdldFRpbWUoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZm9ybWF0dGVkWWVhcih5ZWFyKS5sb25nXCJcbiAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpdGVtLmlzU2VsZWN0ZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXRlbS5pc0N1cnJlbnRcIlxuICAgICAgICBbdmFsdWVdPVwieWVhclwiXG4gICAgICAgIFtkYXRlXT1cImRhdGVcIlxuICAgICAgICBbc2hvd0FjdGl2ZV09XCJzaG93QWN0aXZlXCJcbiAgICAgICAgKGl0ZW1TZWxlY3Rpb24pPVwic2VsZWN0RGF0ZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXZpZXdfX2l0ZW0taW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZFllYXIoeWVhcikuZm9ybWF0dGVkIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG48L2Rpdj5cbiJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhcnMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIveWVhcnMtdmlldy95ZWFycy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci95ZWFycy12aWV3L3llYXJzLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBQ0wsV0FBVyxFQUVYLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUNILHdCQUF3QixFQUN4QixrQkFBa0IsR0FDckIsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFtQmxELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx3QkFBd0I7SUFDL0QsV0FBVyxDQUFRO0lBVW5COztPQUVHO0lBQ0gsSUFFUSxVQUFVO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFSixJQUFXLFVBQVUsQ0FBQyxLQUFjO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFZRDs7Ozs7T0FLRztJQUNILElBQ1csVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFD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Z0JBQzFCLFdBQVcsRUFBRSxxQkFBcUI7Z0JBQ2xDLEtBQUssRUFBRSxJQUFJO2FBQ2Q7WUFDRDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixRQUFRLEVBQUUsTUFBTTthQUNuQjtTQUNKLGlEQzdCTCw0eEJBc0JBLDRDRFdjLEtBQUssbUhBQUUsd0JBQXdCOzsyRkFFaEMscUJBQXFCO2tCQWpCakMsU0FBUztnQ0FDSzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHVCQUF1Qjs0QkFDbEMsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsUUFBUSxFQUFFLE1BQU07eUJBQ25CO3FCQUNKLFlBQ1MsZ0JBQWdCLGNBRWQsSUFBSSxXQUNQLENBQUMsS0FBSyxFQUFFLHdCQUF3QixDQUFDOzswQkFtRnJDLE1BQU07MkJBQUMsa0JBQWtCO3lDQXhFZCxTQUFTO3NCQUR4QixXQUFXO3VCQUFDLHlCQUF5QjtnQkFROUIsVUFBVTtzQkFGakIsS0FBSzs7c0JBQ1IsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBMEJwQyxVQUFVO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJZ3hDYWxlbmRhclllYXJEaXJlY3RpdmUgfSBmcm9tIFwiLi4vY2FsZW5kYXIuZGlyZWN0aXZlc1wiO1xuaW1wb3J0IHsgTmdGb3IgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICAgIElneENhbGVuZGFyVmlld0RpcmVjdGl2ZSxcbiAgICBEQVlfSU5URVJWQUxfVE9LRU4sXG59IGZyb20gXCIuLi9jb21tb24vY2FsZW5kYXItdmlldy5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXkgfSBmcm9tIFwiLi4vY29tbW9uL21vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IERheUludGVydmFsIH0gZnJvbSBcIi4uL2NvbW1vbi9tb2RlbFwiO1xuaW1wb3J0IHsgY2FsZW5kYXJSYW5nZSB9IGZyb20gXCIuLi9jb21tb24vaGVscGVyc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWd4WWVhcnNWaWV3Q29tcG9uZW50LFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IERBWV9JTlRFUlZBTF9UT0tFTixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBcInllYXJcIixcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIHNlbGVjdG9yOiBcImlneC15ZWFycy12aWV3XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwieWVhcnMtdmlldy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nRm9yLCBJZ3hDYWxlbmRhclllYXJEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hZZWFyc1ZpZXdDb21wb25lbnQgZXh0ZW5kcyBJZ3hDYWxlbmRhclZpZXdEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgI3N0YW5kYWxvbmUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgY3NzIGNsYXNzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5pZ3gtY2FsZW5kYXItdmlld1wiKVxuICAgIHB1YmxpYyByZWFkb25seSB2aWV3Q2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhci12aWV3LS1zdGFuZGFsb25lJylcblx0cHVibGljIGdldCBzdGFuZGFsb25lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jc3RhbmRhbG9uZTtcbiAgICB9XG5cblx0cHVibGljIHNldCBzdGFuZGFsb25lKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuI3N0YW5kYWxvbmUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfeWVhckZvcm1hdCA9IFwibnVtZXJpY1wiO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX3llYXJzUGVyUGFnZSA9IDE1O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgeWVhciBmb3JtYXQgb3B0aW9uIG9mIHRoZSB5ZWFycyB2aWV3LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgeWVhckZvcm1hdCA9IHRoaXMueWVhcnNWaWV3LnllYXJGb3JtYXQuXG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHllYXJGb3JtYXQoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3llYXJGb3JtYXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgeWVhciBmb3JtYXQgb3B0aW9uIG9mIHRoZSB5ZWFycyB2aWV3LlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXllYXJzLXZpZXcgW3llYXJGb3JtYXRdPVwibnVtZXJpY1wiPjwvaWd4LXllYXJzLXZpZXc+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4WWVhcnNWaWV3Q29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIHNldCB5ZWFyRm9ybWF0KHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5feWVhckZvcm1hdCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmluaXRGb3JtYXR0ZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGRhdGUgb2JqZWN0cyB3aGljaCBhcmUgdGhlbiB1c2VkIHRvIHByb3Blcmx5XG4gICAgICogcmVuZGVyIHRoZSB5ZWFycy5cbiAgICAgKlxuICAgICAqIFVzZWQgaW4gdGhlIHRlbXBsYXRlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcmFuZ2UoKTogRGF0ZVtdIHtcbiAgICAgICAgY29uc3QgeWVhciA9IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBDYWxlbmRhckRheSh7XG4gICAgICAgICAgICB5ZWFyOiBNYXRoLmZsb29yKHllYXIgLyB0aGlzLl95ZWFyc1BlclBhZ2UpICogdGhpcy5feWVhcnNQZXJQYWdlLFxuICAgICAgICAgICAgbW9udGg6IHRoaXMuZGF0ZS5nZXRNb250aCgpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW5kID0gc3RhcnQuYWRkKHRoaXMuZGF5SW50ZXJ2YWwsIHRoaXMuX3llYXJzUGVyUGFnZSk7XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY2FsZW5kYXJSYW5nZSh7IHN0YXJ0LCBlbmQsIHVuaXQ6IHRoaXMuZGF5SW50ZXJ2YWwgfSkpLm1hcChcbiAgICAgICAgICAgIChtKSA9PiBtLm5hdGl2ZSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KERBWV9JTlRFUlZBTF9UT0tFTikgZGF5SW50ZXJ2YWw6IERheUludGVydmFsLFxuICAgICkge1xuICAgICAgICBzdXBlcihkYXlJbnRlcnZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbG9jYWxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB5ZWFyIGluIHRoZSB5ZWFycyB2aWV3LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXR0ZWRZZWFyKHZhbHVlOiBEYXRlKToge2xvbmc6IHN0cmluZywgZm9ybWF0dGVkOiBzdHJpbmd9IHtcbiAgICAgICAgY29uc3QgcmF3Rm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmZvcm1hdFZpZXcpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbG9uZzogcmF3Rm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSksXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkOiB0aGlzLl9mb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvbmc6IHJhd0Zvcm1hdHRlci5mb3JtYXQodmFsdWUpLFxuICAgICAgICAgICAgZm9ybWF0dGVkOiBgJHt2YWx1ZS5nZXRGdWxsWWVhcigpfWBcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgeWVhclRyYWNrZXIoXzogbnVtYmVyLCBpdGVtOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2l0ZW0uZ2V0RnVsbFllYXIoKX19YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGluaXRGb3JtYXR0ZXIoKSB7XG4gICAgICAgIHRoaXMuX2Zvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuX2xvY2FsZSwge1xuICAgICAgICAgICAgeWVhcjogdGhpcy55ZWFyRm9ybWF0LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uTW91c2VEb3duKCkge1xuICAgICAgICBpZiAodGhpcy50YWJJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlneC1jYWxlbmRhci12aWV3X19pdGVtc1wiIHJvbGU9XCJyb3dcIj5cbiAgICA8c3BhblxuICAgICAgICBpZ3hDYWxlbmRhclllYXJcbiAgICAgICAgI2l0ZW09XCJpZ3hDYWxlbmRhclllYXJcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiByYW5nZTsgdHJhY2tCeTogeWVhclRyYWNrZXJcIlxuICAgICAgICBjbGFzcz1cImlneC1jYWxlbmRhci12aWV3X19pdGVtXCJcbiAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcbiAgICAgICAgW2F0dHIuaWRdPVwieWVhci5nZXRUaW1lKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZvcm1hdHRlZFllYXIoeWVhcikubG9uZ1wiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXRlbS5pc1NlbGVjdGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cIml0ZW0uaXNDdXJyZW50XCJcbiAgICAgICAgW3ZhbHVlXT1cInllYXJcIlxuICAgICAgICBbZGF0ZV09XCJkYXRlXCJcbiAgICAgICAgW3Nob3dBY3RpdmVdPVwic2hvd0FjdGl2ZVwiXG4gICAgICAgIChpdGVtU2VsZWN0aW9uKT1cInNlbGVjdERhdGUoJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oKVwiXG4gICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlneC1jYWxlbmRhci12aWV3X19pdGVtLWlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRZZWFyKHllYXIpLmZvcm1hdHRlZCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=