@worktile/gantt 15.1.0-next.1 → 15.1.0-next.11

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.
@@ -34,6 +34,10 @@ export class NgxGanttBarComponent extends GanttItemUpper {
34
34
  super.ngOnChanges(changes);
35
35
  if (!this.firstChange) {
36
36
  this.drag.updateItem(this.item);
37
+ if (changes.item.currentValue.refs?.width !== changes.item.previousValue.refs?.width ||
38
+ changes.item.currentValue.color !== changes.item.previousValue.color) {
39
+ this.setContentBackground();
40
+ }
37
41
  }
38
42
  }
39
43
  ngAfterViewInit() {
@@ -61,30 +65,32 @@ export class NgxGanttBarComponent extends GanttItemUpper {
61
65
  this.barClick.emit({ event, item: this.item.origin });
62
66
  }
63
67
  setContentBackground() {
64
- const contentElement = this.contentElementRef.nativeElement;
65
- const color = this.item.color || barBackground;
66
- const style = this.item.barStyle || {};
67
- if (this.item.origin.start && this.item.origin.end) {
68
- style.background = color;
69
- style.borderRadius = '';
70
- }
71
- if (this.item.origin.start && !this.item.origin.end) {
72
- style.background = linearGradient('to left', hexToRgb(color, 0.55), hexToRgb(color, 1));
73
- style.borderRadius = '4px 12.5px 12.5px 4px';
74
- }
75
- if (!this.item.origin.start && this.item.origin.end) {
76
- style.background = linearGradient('to right', hexToRgb(color, 0.55), hexToRgb(color, 1));
77
- style.borderRadius = '12.5px 4px 4px 12.5px';
78
- }
79
- if (this.item.progress >= 0) {
80
- const contentProgressElement = contentElement.querySelector('.gantt-bar-content-progress');
81
- style.background = hexToRgb(color, 0.3);
82
- style.borderRadius = '';
83
- contentProgressElement.style.background = color;
84
- }
85
- for (const key in style) {
86
- if (style.hasOwnProperty(key)) {
87
- contentElement.style[key] = style[key];
68
+ if (this.item.refs?.width) {
69
+ const contentElement = this.contentElementRef.nativeElement;
70
+ const color = this.item.color || barBackground;
71
+ const style = this.item.barStyle || {};
72
+ if (this.item.origin.start && this.item.origin.end) {
73
+ style.background = color;
74
+ style.borderRadius = '';
75
+ }
76
+ if (this.item.origin.start && !this.item.origin.end) {
77
+ style.background = linearGradient('to left', hexToRgb(color, 0.55), hexToRgb(color, 1));
78
+ style.borderRadius = '4px 12.5px 12.5px 4px';
79
+ }
80
+ if (!this.item.origin.start && this.item.origin.end) {
81
+ style.background = linearGradient('to right', hexToRgb(color, 0.55), hexToRgb(color, 1));
82
+ style.borderRadius = '12.5px 4px 4px 12.5px';
83
+ }
84
+ if (this.item.progress >= 0) {
85
+ const contentProgressElement = contentElement.querySelector('.gantt-bar-content-progress');
86
+ style.background = hexToRgb(color, 0.3);
87
+ style.borderRadius = '';
88
+ contentProgressElement.style.background = color;
89
+ }
90
+ for (const key in style) {
91
+ if (style.hasOwnProperty(key)) {
92
+ contentElement.style[key] = style[key];
93
+ }
88
94
  }
89
95
  }
90
96
  }
@@ -93,10 +99,10 @@ export class NgxGanttBarComponent extends GanttItemUpper {
93
99
  }
94
100
  }
95
101
  NgxGanttBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgxGanttBarComponent, deps: [{ token: i1.GanttDragContainer }, { token: i2.GanttBarDrag }, { token: i0.ElementRef }, { token: GANTT_UPPER_TOKEN }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
96
- NgxGanttBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgxGanttBarComponent, selector: "ngx-gantt-bar,gantt-bar", outputs: { barClick: "barClick" }, host: { properties: { "class.gantt-bar": "this.ganttItemClass" } }, providers: [GanttBarDrag], viewQueries: [{ propertyName: "contentElementRef", first: true, predicate: ["content"], descendants: true }, { propertyName: "handles", predicate: ["handle"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"gantt-bar-layer\">\n <div class=\"drag-handles\">\n <ng-container *ngIf=\"item.draggable && ganttUpper.draggable\">\n <span class=\"handle\" #handle></span>\n <span class=\"handle\" #handle></span>\n </ng-container>\n </div>\n <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
102
+ NgxGanttBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgxGanttBarComponent, selector: "ngx-gantt-bar,gantt-bar", outputs: { barClick: "barClick" }, host: { properties: { "class.gantt-bar": "this.ganttItemClass" } }, providers: [GanttBarDrag], viewQueries: [{ propertyName: "contentElementRef", first: true, predicate: ["content"], descendants: true }, { propertyName: "handles", predicate: ["handle"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"gantt-bar-layer\">\n <div class=\"drag-handles\">\n <ng-container *ngIf=\"item.draggable && ganttUpper.draggable\">\n <span class=\"handle\" #handle></span>\n <span class=\"handle\" #handle></span>\n </ng-container>\n </div>\n <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"> </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
97
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgxGanttBarComponent, decorators: [{
98
104
  type: Component,
99
- args: [{ selector: 'ngx-gantt-bar,gantt-bar', providers: [GanttBarDrag], template: "<div class=\"gantt-bar-layer\">\n <div class=\"drag-handles\">\n <ng-container *ngIf=\"item.draggable && ganttUpper.draggable\">\n <span class=\"handle\" #handle></span>\n <span class=\"handle\" #handle></span>\n </ng-container>\n </div>\n <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</div>\n" }]
105
+ args: [{ selector: 'ngx-gantt-bar,gantt-bar', providers: [GanttBarDrag], template: "<div class=\"gantt-bar-layer\">\n <div class=\"drag-handles\">\n <ng-container *ngIf=\"item.draggable && ganttUpper.draggable\">\n <span class=\"handle\" #handle></span>\n <span class=\"handle\" #handle></span>\n </ng-container>\n </div>\n <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"> </ng-template>\n</div>\n" }]
100
106
  }], ctorParameters: function () { return [{ type: i1.GanttDragContainer }, { type: i2.GanttBarDrag }, { type: i0.ElementRef }, { type: i4.GanttUpper, decorators: [{
101
107
  type: Inject,
102
108
  args: [GANTT_UPPER_TOKEN]
@@ -112,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
112
118
  type: ViewChildren,
113
119
  args: ['handle']
114
120
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2Jhci9iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvYmFyL2Jhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFdBQVcsRUFJWCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBRVosWUFBWSxFQUlmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUV4RCxTQUFTLGNBQWMsQ0FBQyxZQUFvQixFQUFFLEtBQWEsRUFBRSxJQUFZO0lBQ3JFLE9BQU8sbUJBQW1CLFlBQVksSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUM7QUFDdEUsQ0FBQztBQU9ELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxjQUFjO0lBU3BELFlBQ1ksYUFBaUMsRUFDakMsSUFBa0IsRUFDMUIsVUFBc0MsRUFDSyxVQUFzQixFQUN6RCxNQUFjO1FB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O1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUU7WUFDekIsTUFBTSxzQkFBc0IsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFtQixDQUFDO1lBQzdHLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4QyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN4QixzQkFBc0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUNuRDtRQUVELEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFO1lBQ3JCLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDM0IsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDMUM7U0FDSjtJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBWTtRQUN4QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7aUhBekdRLG9CQUFvQiwwR0FhakIsaUJBQWlCO3FHQWJwQixvQkFBb0IseUpBRmxCLENBQUMsWUFBWSxDQUFDLDJQQ2xDN0IsKzFCQWlCQTsyRkRtQmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNJLHlCQUF5QixhQUV4QixDQUFDLFlBQVksQ0FBQzs7MEJBZXBCLE1BQU07MkJBQUMsaUJBQWlCO2lFQVpuQixRQUFRO3NCQUFqQixNQUFNO2dCQUVlLGlCQUFpQjtzQkFBdEMsU0FBUzt1QkFBQyxTQUFTO2dCQUVZLGNBQWM7c0JBQTdDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUVOLE9BQU87c0JBQTlCLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5qZWN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBOZ1pvbmUsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb20sIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHYW50dEJhckRyYWcgfSBmcm9tICcuL2Jhci1kcmFnJztcbmltcG9ydCB7IGhleFRvUmdiIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBHYW50dERyYWdDb250YWluZXIgfSBmcm9tICcuLi8uLi9nYW50dC1kcmFnLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBiYXJCYWNrZ3JvdW5kIH0gZnJvbSAnLi4vLi4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IEdhbnR0QmFyQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL2NsYXNzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRJdGVtVXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC1pdGVtLXVwcGVyJztcblxuZnVuY3Rpb24gbGluZWFyR3JhZGllbnQoc2lkZU9yQ29ybmVyOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcsIHN0b3A6IHN0cmluZykge1xuICAgIHJldHVybiBgbGluZWFyLWdyYWRpZW50KCR7c2lkZU9yQ29ybmVyfSwke2NvbG9yfSAwJSwke3N0b3B9IDQwJSlgO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1nYW50dC1iYXIsZ2FudHQtYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtHYW50dEJhckRyYWddXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbnR0QmFyQ29tcG9uZW50IGV4dGVuZHMgR2FudHRJdGVtVXBwZXIgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBAT3V0cHV0KCkgYmFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0QmFyQ2xpY2tFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnKSBjb250ZW50RWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LWJhcicpIGdhbnR0SXRlbUNsYXNzID0gdHJ1ZTtcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2hhbmRsZScpIGhhbmRsZXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkcmFnQ29udGFpbmVyOiBHYW50dERyYWdDb250YWluZXIsXG4gICAgICAgIHByaXZhdGUgZHJhZzogR2FudHRCYXJEcmFnLFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcbiAgICAgICAgQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIG92ZXJyaWRlIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZ2FudHRVcHBlcik7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5kcmFnRW5kZWQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50QmFja2dyb3VuZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBpZiAoIXRoaXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZy51cGRhdGVJdGVtKHRoaXMuaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIC8vIE5vdGU6IHRoZSB6b25lIG1heSBiZSBub29wZWQgdGhyb3VnaCBgQm9vdHN0cmFwT3B0aW9uc2Agd2hlbiBib290c3RyYXBwaW5nIHRoZSByb290IG1vZHVsZS4gVGhpcyBtZWFuc1xuICAgICAgICAvLyB0aGUgYG9uU3RhYmxlYCB3aWxsIG5ldmVyIGVtaXQgYW55IHZhbHVlLlxuICAgICAgICBjb25zdCBvblN0YWJsZSQgPSB0aGlzLm5nWm9uZS5pc1N0YWJsZSA/IGZyb20oUHJvbWlzZS5yZXNvbHZlKCkpIDogdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKTtcbiAgICAgICAgLy8gTm9ybWFsbHkgdGhpcyBpc24ndCBpbiB0aGUgem9uZSwgYnV0IGl0IGNhbiBjYXVzZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucyBmb3IgYXBwc1xuICAgICAgICAvLyB1c2luZyBgem9uZS1wYXRjaC1yeGpzYCBiZWNhdXNlIGl0J2xsIHRyaWdnZXIgYSBjaGFuZ2UgZGV0ZWN0aW9uIHdoZW4gaXQgdW5zdWJzY3JpYmVzLlxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBvblN0YWJsZSQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZy5jcmVhdGVEcmFncyh0aGlzLmVsZW1lbnRSZWYsIHRoaXMuaXRlbSwgdGhpcy5nYW50dFVwcGVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNldENvbnRlbnRCYWNrZ3JvdW5kKCk7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVzLmNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLmhhbmRsZXMpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChcbiAgICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IHdlIG5lZWQgdG8gZXhwbGljaXRseSBzdWJzY3JpYmUgb3V0c2lkZSBvZiB0aGUgQW5ndWxhciB6b25lIHNpbmNlIGBhZGRFdmVudExpc3RlbmVyYFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgY2FsbGVkIHdoZW4gdGhlIGBmcm9tRXZlbnRgIGlzIHN1YnNjcmliZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JzZXJ2YWJsZTxFdmVudD4oKHN1YnNjcmliZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2UoLi4udGhpcy5oYW5kbGVzLnRvQXJyYXkoKS5tYXAoKGhhbmRsZSkgPT4gZnJvbUV2ZW50KGhhbmRsZS5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJykpKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25CYXJDbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5iYXJDbGljay5lbWl0KHsgZXZlbnQsIGl0ZW06IHRoaXMuaXRlbS5vcmlnaW4gfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDb250ZW50QmFja2dyb3VuZCgpIHtcbiAgICAgICAgY29uc3QgY29udGVudEVsZW1lbnQgPSB0aGlzLmNvbnRlbnRFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5pdGVtLmNvbG9yIHx8IGJhckJhY2tncm91bmQ7XG4gICAgICAgIGNvbnN0IHN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+ID0gdGhpcy5pdGVtLmJhclN0eWxlIHx8IHt9O1xuICAgICAgICBpZiAodGhpcy5pdGVtLm9yaWdpbi5zdGFydCAmJiB0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgc3R5bGUuYmFja2dyb3VuZCA9IGNvbG9yO1xuICAgICAgICAgICAgc3R5bGUuYm9yZGVyUmFkaXVzID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXRlbS5vcmlnaW4uc3RhcnQgJiYgIXRoaXMuaXRlbS5vcmlnaW4uZW5kKSB7XG4gICAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kID0gbGluZWFyR3JhZGllbnQoJ3RvIGxlZnQnLCBoZXhUb1JnYihjb2xvciwgMC41NSksIGhleFRvUmdiKGNvbG9yLCAxKSk7XG4gICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSAnNHB4IDEyLjVweCAxMi41cHggNHB4JztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXRlbS5vcmlnaW4uc3RhcnQgJiYgdGhpcy5pdGVtLm9yaWdpbi5lbmQpIHtcbiAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBsaW5lYXJHcmFkaWVudCgndG8gcmlnaHQnLCBoZXhUb1JnYihjb2xvciwgMC41NSksIGhleFRvUmdiKGNvbG9yLCAxKSk7XG4gICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSAnMTIuNXB4IDRweCA0cHggMTIuNXB4JztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pdGVtLnByb2dyZXNzID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQcm9ncmVzc0VsZW1lbnQgPSBjb250ZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZ2FudHQtYmFyLWNvbnRlbnQtcHJvZ3Jlc3MnKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBoZXhUb1JnYihjb2xvciwgMC4zKTtcbiAgICAgICAgICAgIHN0eWxlLmJvcmRlclJhZGl1cyA9ICcnO1xuICAgICAgICAgICAgY29udGVudFByb2dyZXNzRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgaWYgKHN0eWxlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50RWxlbWVudC5zdHlsZVtrZXldID0gc3R5bGVba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdhbnR0LWJhci1sYXllclwiPlxuICA8ZGl2IGNsYXNzPVwiZHJhZy1oYW5kbGVzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uZHJhZ2dhYmxlICYmIGdhbnR0VXBwZXIuZHJhZ2dhYmxlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImhhbmRsZVwiICNoYW5kbGU+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJoYW5kbGVcIiAjaGFuZGxlPjwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpdGVtLmxpbmthYmxlICYmIGdhbnR0VXBwZXIubGlua2FibGVcIiBjbGFzcz1cImxpbmstaGFuZGxlc1wiPlxuICAgIDxzcGFuIGNsYXNzPVwiaGFuZGxlXCI+PHNwYW4gY2xhc3M9XCJwb2ludFwiPjwvc3Bhbj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJoYW5kbGVcIj4gPHNwYW4gY2xhc3M9XCJwb2ludFwiPjwvc3Bhbj48L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ2FudHQtYmFyLWJvcmRlclwiPjwvZGl2PlxuPGRpdiAjY29udGVudCBjbGFzcz1cImdhbnR0LWJhci1jb250ZW50XCIgKGNsaWNrKT1cIm9uQmFyQ2xpY2soJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwiZ2FudHQtYmFyLWNvbnRlbnQtcHJvZ3Jlc3NcIiAqbmdJZj1cIml0ZW0ucHJvZ3Jlc3MgPj0gMFwiIFtzdHlsZS53aWR0aC4lXT1cIml0ZW0ucHJvZ3Jlc3MgKiAxMDBcIj48L2Rpdj5cbiAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogaXRlbS5vcmlnaW4sIHJlZnM6IGl0ZW0ucmVmcyB9XCI+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dhbnR0L3NyYy9jb21wb25lbnRzL2Jhci9iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvYmFyL2Jhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFdBQVcsRUFJWCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBRVosWUFBWSxFQUlmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUV4RCxTQUFTLGNBQWMsQ0FBQyxZQUFvQixFQUFFLEtBQWEsRUFBRSxJQUFZO0lBQ3JFLE9BQU8sbUJBQW1CLFlBQVksSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUM7QUFDdEUsQ0FBQztBQU9ELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxjQUFjO0lBU3BELFlBQ1ksYUFBaUMsRUFDakMsSUFBa0IsRUFDMUIsVUFBc0MsRUFDSyxVQUFzQixFQUN6RCxNQUFjO1FB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OytCQUNJLHlCQUF5QixhQUV4QixDQUFDLFlBQVksQ0FBQzs7MEJBZXBCLE1BQU07MkJBQUMsaUJBQWlCO2lFQVpuQixRQUFRO3NCQUFqQixNQUFNO2dCQUVlLGlCQUFpQjtzQkFBdEMsU0FBUzt1QkFBQyxTQUFTO2dCQUVZLGNBQWM7c0JBQTdDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUVOLE9BQU87c0JBQTlCLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5qZWN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBOZ1pvbmUsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb20sIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHYW50dEJhckRyYWcgfSBmcm9tICcuL2Jhci1kcmFnJztcbmltcG9ydCB7IGhleFRvUmdiIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgeyBHYW50dERyYWdDb250YWluZXIgfSBmcm9tICcuLi8uLi9nYW50dC1kcmFnLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBiYXJCYWNrZ3JvdW5kIH0gZnJvbSAnLi4vLi4vZ2FudHQuc3R5bGVzJztcbmltcG9ydCB7IEdhbnR0QmFyQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL2NsYXNzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuaW1wb3J0IHsgR2FudHRJdGVtVXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC1pdGVtLXVwcGVyJztcblxuZnVuY3Rpb24gbGluZWFyR3JhZGllbnQoc2lkZU9yQ29ybmVyOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcsIHN0b3A6IHN0cmluZykge1xuICAgIHJldHVybiBgbGluZWFyLWdyYWRpZW50KCR7c2lkZU9yQ29ybmVyfSwke2NvbG9yfSAwJSwke3N0b3B9IDQwJSlgO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1nYW50dC1iYXIsZ2FudHQtYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtHYW50dEJhckRyYWddXG59KVxuZXhwb3J0IGNsYXNzIE5neEdhbnR0QmFyQ29tcG9uZW50IGV4dGVuZHMgR2FudHRJdGVtVXBwZXIgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBAT3V0cHV0KCkgYmFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0QmFyQ2xpY2tFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnKSBjb250ZW50RWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LWJhcicpIGdhbnR0SXRlbUNsYXNzID0gdHJ1ZTtcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2hhbmRsZScpIGhhbmRsZXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkcmFnQ29udGFpbmVyOiBHYW50dERyYWdDb250YWluZXIsXG4gICAgICAgIHByaXZhdGUgZHJhZzogR2FudHRCYXJEcmFnLFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcbiAgICAgICAgQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIG92ZXJyaWRlIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZ2FudHRVcHBlcik7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuZHJhZ0NvbnRhaW5lci5kcmFnRW5kZWQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50QmFja2dyb3VuZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBpZiAoIXRoaXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZy51cGRhdGVJdGVtKHRoaXMuaXRlbSk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjaGFuZ2VzLml0ZW0uY3VycmVudFZhbHVlLnJlZnM/LndpZHRoICE9PSBjaGFuZ2VzLml0ZW0ucHJldmlvdXNWYWx1ZS5yZWZzPy53aWR0aCB8fFxuICAgICAgICAgICAgICAgIGNoYW5nZXMuaXRlbS5jdXJyZW50VmFsdWUuY29sb3IgIT09IGNoYW5nZXMuaXRlbS5wcmV2aW91c1ZhbHVlLmNvbG9yXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvbnRlbnRCYWNrZ3JvdW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIC8vIE5vdGU6IHRoZSB6b25lIG1heSBiZSBub29wZWQgdGhyb3VnaCBgQm9vdHN0cmFwT3B0aW9uc2Agd2hlbiBib290c3RyYXBwaW5nIHRoZSByb290IG1vZHVsZS4gVGhpcyBtZWFuc1xuICAgICAgICAvLyB0aGUgYG9uU3RhYmxlYCB3aWxsIG5ldmVyIGVtaXQgYW55IHZhbHVlLlxuICAgICAgICBjb25zdCBvblN0YWJsZSQgPSB0aGlzLm5nWm9uZS5pc1N0YWJsZSA/IGZyb20oUHJvbWlzZS5yZXNvbHZlKCkpIDogdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKTtcbiAgICAgICAgLy8gTm9ybWFsbHkgdGhpcyBpc24ndCBpbiB0aGUgem9uZSwgYnV0IGl0IGNhbiBjYXVzZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucyBmb3IgYXBwc1xuICAgICAgICAvLyB1c2luZyBgem9uZS1wYXRjaC1yeGpzYCBiZWNhdXNlIGl0J2xsIHRyaWdnZXIgYSBjaGFuZ2UgZGV0ZWN0aW9uIHdoZW4gaXQgdW5zdWJzY3JpYmVzLlxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBvblN0YWJsZSQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZy5jcmVhdGVEcmFncyh0aGlzLmVsZW1lbnRSZWYsIHRoaXMuaXRlbSwgdGhpcy5nYW50dFVwcGVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNldENvbnRlbnRCYWNrZ3JvdW5kKCk7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVzLmNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLmhhbmRsZXMpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChcbiAgICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IHdlIG5lZWQgdG8gZXhwbGljaXRseSBzdWJzY3JpYmUgb3V0c2lkZSBvZiB0aGUgQW5ndWxhciB6b25lIHNpbmNlIGBhZGRFdmVudExpc3RlbmVyYFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgY2FsbGVkIHdoZW4gdGhlIGBmcm9tRXZlbnRgIGlzIHN1YnNjcmliZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JzZXJ2YWJsZTxFdmVudD4oKHN1YnNjcmliZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2UoLi4udGhpcy5oYW5kbGVzLnRvQXJyYXkoKS5tYXAoKGhhbmRsZSkgPT4gZnJvbUV2ZW50KGhhbmRsZS5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJykpKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25CYXJDbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5iYXJDbGljay5lbWl0KHsgZXZlbnQsIGl0ZW06IHRoaXMuaXRlbS5vcmlnaW4gfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDb250ZW50QmFja2dyb3VuZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5yZWZzPy53aWR0aCkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudEVsZW1lbnQgPSB0aGlzLmNvbnRlbnRFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBjb2xvciA9IHRoaXMuaXRlbS5jb2xvciB8fCBiYXJCYWNrZ3JvdW5kO1xuICAgICAgICAgICAgY29uc3Qgc3R5bGU6IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gPSB0aGlzLml0ZW0uYmFyU3R5bGUgfHwge307XG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtLm9yaWdpbi5zdGFydCAmJiB0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBjb2xvcjtcbiAgICAgICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLml0ZW0ub3JpZ2luLnN0YXJ0ICYmICF0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBsaW5lYXJHcmFkaWVudCgndG8gbGVmdCcsIGhleFRvUmdiKGNvbG9yLCAwLjU1KSwgaGV4VG9SZ2IoY29sb3IsIDEpKTtcbiAgICAgICAgICAgICAgICBzdHlsZS5ib3JkZXJSYWRpdXMgPSAnNHB4IDEyLjVweCAxMi41cHggNHB4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5pdGVtLm9yaWdpbi5zdGFydCAmJiB0aGlzLml0ZW0ub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBsaW5lYXJHcmFkaWVudCgndG8gcmlnaHQnLCBoZXhUb1JnYihjb2xvciwgMC41NSksIGhleFRvUmdiKGNvbG9yLCAxKSk7XG4gICAgICAgICAgICAgICAgc3R5bGUuYm9yZGVyUmFkaXVzID0gJzEyLjVweCA0cHggNHB4IDEyLjVweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtLnByb2dyZXNzID49IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50UHJvZ3Jlc3NFbGVtZW50ID0gY29udGVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmdhbnR0LWJhci1jb250ZW50LXByb2dyZXNzJykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgc3R5bGUuYmFja2dyb3VuZCA9IGhleFRvUmdiKGNvbG9yLCAwLjMpO1xuICAgICAgICAgICAgICAgIHN0eWxlLmJvcmRlclJhZGl1cyA9ICcnO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRQcm9ncmVzc0VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9IGNvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgICAgIGlmIChzdHlsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRFbGVtZW50LnN0eWxlW2tleV0gPSBzdHlsZVtrZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdhbnR0LWJhci1sYXllclwiPlxuICA8ZGl2IGNsYXNzPVwiZHJhZy1oYW5kbGVzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uZHJhZ2dhYmxlICYmIGdhbnR0VXBwZXIuZHJhZ2dhYmxlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImhhbmRsZVwiICNoYW5kbGU+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJoYW5kbGVcIiAjaGFuZGxlPjwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpdGVtLmxpbmthYmxlICYmIGdhbnR0VXBwZXIubGlua2FibGVcIiBjbGFzcz1cImxpbmstaGFuZGxlc1wiPlxuICAgIDxzcGFuIGNsYXNzPVwiaGFuZGxlXCI+PHNwYW4gY2xhc3M9XCJwb2ludFwiPjwvc3Bhbj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJoYW5kbGVcIj4gPHNwYW4gY2xhc3M9XCJwb2ludFwiPjwvc3Bhbj48L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ2FudHQtYmFyLWJvcmRlclwiPjwvZGl2PlxuPGRpdiAjY29udGVudCBjbGFzcz1cImdhbnR0LWJhci1jb250ZW50XCIgKGNsaWNrKT1cIm9uQmFyQ2xpY2soJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwiZ2FudHQtYmFyLWNvbnRlbnQtcHJvZ3Jlc3NcIiAqbmdJZj1cIml0ZW0ucHJvZ3Jlc3MgPj0gMFwiIFtzdHlsZS53aWR0aC4lXT1cIml0ZW0ucHJvZ3Jlc3MgKiAxMDBcIj48L2Rpdj5cbiAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogaXRlbS5vcmlnaW4sIHJlZnM6IGl0ZW0ucmVmcyB9XCI+IDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==