@ethlete/cdk 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -61,10 +61,10 @@ export class SliderComponent {
61
61
  this._step$ = new BehaviorSubject(1);
62
62
  this._vertical$ = new BehaviorSubject(false);
63
63
  this._inverted$ = new BehaviorSubject(false);
64
+ this._renderValueTooltip$ = new BehaviorSubject(false);
64
65
  this._dir$ = this._dirService.change.pipe(startWith(this._dirService.value));
65
66
  this._value$ = combineLatest([this._input.value$, this._min$, this._max$]).pipe(map(([value, min, max]) => clamp(value ?? 0, min, max)));
66
67
  this._roundToDecimal$ = this._step$.pipe(map((step) => Math.round(Math.log10(step)) * -1));
67
- this._valueText$ = combineLatest([this._value$, this._roundToDecimal$]).pipe(map(([value, roundToDecimal]) => value.toFixed(roundToDecimal)));
68
68
  this._percent$ = combineLatest([this._value$, this._min$, this._max$]).pipe(map(([value, min, max]) => (value - min) / (max - min)));
69
69
  this._shouldInvertAxis$ = combineLatest([this._vertical$, this._inverted$]).pipe(map(([vertical, inverted]) => (vertical ? !inverted : inverted)));
70
70
  this._shouldInvertMouseCoords$ = combineLatest([
@@ -73,6 +73,7 @@ export class SliderComponent {
73
73
  this._dir$,
74
74
  ]).pipe(map(([vertical, shouldInvertAxis, dir]) => (dir === 'rtl' && !vertical ? !shouldInvertAxis : shouldInvertAxis)));
75
75
  this._sliderDimensions$ = new BehaviorSubject(this._elementRef.nativeElement.getBoundingClientRect());
76
+ this.valueText$ = combineLatest([this._value$, this._roundToDecimal$]).pipe(map(([value, roundToDecimal]) => value.toFixed(roundToDecimal)));
76
77
  this.trackBackgroundStyles$ = combineLatest([this._percent$, this._vertical$]).pipe(map(([percent, vertical]) => {
77
78
  const scale = vertical ? `1, ${1 - percent}, 1` : `${1 - percent}, 1, 1`;
78
79
  return {
@@ -124,7 +125,7 @@ export class SliderComponent {
124
125
  observable: this._max$.pipe(map((value) => ({ render: true, value }))),
125
126
  }, {
126
127
  attribute: 'aria-valuetext',
127
- observable: this._valueText$.pipe(map((value) => ({ render: true, value }))),
128
+ observable: this.valueText$.pipe(map((value) => ({ render: true, value }))),
128
129
  }, {
129
130
  attribute: 'tabindex',
130
131
  observable: this._input.disabled$.pipe(map((disabled) => ({ render: true, value: disabled ? -1 : 0 }))),
@@ -197,6 +198,12 @@ export class SliderComponent {
197
198
  set inverted(value) {
198
199
  this._inverted$.next(booleanAttribute(value));
199
200
  }
201
+ get renderValueTooltip() {
202
+ return this._renderValueTooltip$.value;
203
+ }
204
+ set renderValueTooltip(value) {
205
+ this._renderValueTooltip$.next(value);
206
+ }
200
207
  ngOnInit() {
201
208
  merge(this._mouseDown$, this._touchStart$)
202
209
  .pipe(filter((event) => {
@@ -318,7 +325,7 @@ export class SliderComponent {
318
325
  return this._sliderDimensions$;
319
326
  }
320
327
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
321
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SliderComponent, isStandalone: true, selector: "et-slider", inputs: { min: "min", max: "max", step: "step", vertical: "vertical", inverted: "inverted" }, host: { attributes: { "role": "slider" }, properties: { "id": "_input.id" }, classAttribute: "et-slider" }, hostDirectives: [{ directive: i1.InputDirective, inputs: ["autocomplete", "autocomplete"] }], ngImport: i0, template: "<div class=\"et-slider-track-container\">\n <div\n *ngIf=\"trackBackgroundStyles$ | async as trackBackgroundStyles\"\n [style.transform]=\"trackBackgroundStyles.transform\"\n class=\"et-slider-track-background\"\n ></div>\n <div\n *ngIf=\"trackFillStyles$ | async as trackFillStyles\"\n [style.transform]=\"trackFillStyles.transform\"\n [style.display]=\"trackFillStyles.display\"\n class=\"et-slider-track-fill\"\n ></div>\n</div>\n\n<div\n *ngIf=\"thumbContainerStyles$ | async as thumbContainerStyles\"\n [style.transform]=\"thumbContainerStyles.transform\"\n class=\"et-slider-thumb-container\"\n>\n <div class=\"et-slider-thumb\"></div>\n</div>\n", styles: [":where(.et-slider){--et-slider-track-block-size: 2px;--et-slider-track-border-radius: 0;--et-slider-inactive-track-color: #646464;--et-slider-active-track-color: #ffffff;--et-slider-block-size: 32px;--et-slider-min-inline-size: 112px;--et-slider-thumb-target-size: 32px;--et-slider-thumb-size: 12px;--et-slider-thumb-border-radius: 9999px;--et-slider-thumb-color: #ffffff;--et-slider-transition-duration: 80ms;outline:none}.et-slider{position:relative;display:block}.et-slider.et-slider--disable-animations{--et-slider-transition-duration: 0ms}.et-slider[aria-orientation=horizontal]{block-size:var(--et-slider-block-size);min-inline-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=horizontal] .et-slider-track-container{inset-block-start:calc(50% - var(--et-slider-track-block-size) / 2);inset-inline-start:0;block-size:var(--et-slider-track-block-size);inline-size:100%}.et-slider[aria-orientation=horizontal] .et-slider-track-fill{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:0 0}.et-slider[aria-orientation=horizontal] .et-slider-track-background{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=horizontal] .et-slider-thumb-container{inline-size:100%;block-size:0;inset-block-start:50%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:100% 100%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:0 0}.et-slider[aria-orientation=vertical]{inline-size:var(--et-slider-block-size);min-block-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=vertical] .et-slider-track-container{inset-block-start:0;inset-inline-start:calc(50% - var(--et-slider-track-block-size) / 2);block-size:100%;inline-size:var(--et-slider-track-block-size)}.et-slider[aria-orientation=vertical] .et-slider-track-fill{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=vertical] .et-slider-track-background{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:0 0}.et-slider[aria-orientation=vertical] .et-slider-thumb-container{inline-size:0;block-size:100%;inset-inline-start:50%}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:100% 100%}.et-slider .et-slider-track-container{position:absolute;overflow:hidden}.et-slider .et-slider-track-fill{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-active-track-color)}.et-slider .et-slider-track-background{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-inactive-track-color)}.et-slider .et-slider-thumb-container{position:absolute;z-index:1;transition:transform var(--et-slider-transition-duration)}.et-slider .et-slider-thumb{position:absolute;inset-inline-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inset-block-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inline-size:var(--et-slider-thumb-target-size);block-size:var(--et-slider-thumb-target-size);transition:transform var(--et-slider-transition-duration);display:flex;justify-content:center;align-items:center}.et-slider .et-slider-thumb:after{content:\"\";position:relative;inline-size:var(--et-slider-thumb-size);block-size:var(--et-slider-thumb-size);background-color:var(--et-slider-thumb-color);border-radius:var(--et-slider-thumb-border-radius);cursor:grab}.et-slider.et-slider--is-sliding .et-slider-thumb:after{cursor:grabbing}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
328
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SliderComponent, isStandalone: true, selector: "et-slider", inputs: { min: "min", max: "max", step: "step", vertical: "vertical", inverted: "inverted", renderValueTooltip: ["renderValueTooltip", "renderValueTooltip", booleanAttribute] }, host: { attributes: { "role": "slider" }, properties: { "id": "_input.id" }, classAttribute: "et-slider" }, hostDirectives: [{ directive: i1.InputDirective, inputs: ["autocomplete", "autocomplete"] }], ngImport: i0, template: "<div class=\"et-slider-track-container\">\n <div\n *ngIf=\"trackBackgroundStyles$ | async as trackBackgroundStyles\"\n [style.transform]=\"trackBackgroundStyles.transform\"\n class=\"et-slider-track-background\"\n ></div>\n <div\n *ngIf=\"trackFillStyles$ | async as trackFillStyles\"\n [style.transform]=\"trackFillStyles.transform\"\n [style.display]=\"trackFillStyles.display\"\n class=\"et-slider-track-fill\"\n ></div>\n</div>\n\n<div\n *ngIf=\"thumbContainerStyles$ | async as thumbContainerStyles\"\n [style.transform]=\"thumbContainerStyles.transform\"\n class=\"et-slider-thumb-container\"\n>\n <div class=\"et-slider-thumb\">\n <div *ngIf=\"renderValueTooltip\" class=\"et-slider-value-tooltip\">{{ valueText$ | async }}</div>\n </div>\n</div>\n", styles: [":where(.et-slider){--et-slider-track-block-size: 2px;--et-slider-track-border-radius: 0;--et-slider-inactive-track-color: #646464;--et-slider-active-track-color: #ffffff;--et-slider-block-size: 32px;--et-slider-min-inline-size: 112px;--et-slider-thumb-target-size: 32px;--et-slider-thumb-size: 12px;--et-slider-thumb-border-radius: 9999px;--et-slider-thumb-color: #ffffff;--et-slider-transition-duration: 80ms;--et-slider-tooltip-arrow-size: 10px;--et-slider-tooltip-arrow-radius: 2px;--et-slider-tooltip-background-color: hsl(0 0% 20%);--et-slider-tooltip-border-radius: 4px;--et-slider-tooltip-foreground-color: CanvasText;--et-slider-tooltip-padding-inline: 1.5ch;--et-slider-tooltip-padding-block: .75ch;--et-slider-tooltip-inline-min-size: 2ch;--et-slider-tooltip-inline-max-size: 10ch;outline:none}.et-slider{position:relative;display:block}.et-slider.et-slider--disable-animations{--et-slider-transition-duration: 0ms}.et-slider[aria-orientation=horizontal]{block-size:var(--et-slider-block-size);min-inline-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=horizontal] .et-slider-track-container{inset-block-start:calc(50% - var(--et-slider-track-block-size) / 2);inset-inline-start:0;block-size:var(--et-slider-track-block-size);inline-size:100%}.et-slider[aria-orientation=horizontal] .et-slider-track-fill{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:0 0}.et-slider[aria-orientation=horizontal] .et-slider-track-background{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=horizontal] .et-slider-thumb-container{inline-size:100%;block-size:0;inset-block-start:50%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:100% 100%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:0 0}.et-slider[aria-orientation=vertical]{inline-size:var(--et-slider-block-size);min-block-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=vertical] .et-slider-track-container{inset-block-start:0;inset-inline-start:calc(50% - var(--et-slider-track-block-size) / 2);block-size:100%;inline-size:var(--et-slider-track-block-size)}.et-slider[aria-orientation=vertical] .et-slider-track-fill{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=vertical] .et-slider-track-background{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:0 0}.et-slider[aria-orientation=vertical] .et-slider-thumb-container{inline-size:0;block-size:100%;inset-inline-start:50%}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:100% 100%}.et-slider .et-slider-track-container{position:absolute;overflow:hidden}.et-slider .et-slider-track-fill{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-active-track-color)}.et-slider .et-slider-track-background{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-inactive-track-color)}.et-slider .et-slider-thumb-container{position:absolute;z-index:1;transition:transform var(--et-slider-transition-duration)}.et-slider .et-slider-thumb{position:absolute;inset-inline-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inset-block-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inline-size:var(--et-slider-thumb-target-size);block-size:var(--et-slider-thumb-target-size);transition:transform var(--et-slider-transition-duration);display:flex;justify-content:center;align-items:center}.et-slider .et-slider-thumb:after{content:\"\";position:relative;inline-size:var(--et-slider-thumb-size);block-size:var(--et-slider-thumb-size);background-color:var(--et-slider-thumb-color);border-radius:var(--et-slider-thumb-border-radius);cursor:grab}.et-slider.et-slider--is-sliding .et-slider-thumb:after{cursor:grabbing}.et-slider .et-slider-value-tooltip{box-sizing:border-box;position:absolute;padding-inline:var(--et-slider-tooltip-padding-inline);padding-block:var(--et-slider-tooltip-padding-block);background-color:var(--et-slider-tooltip-background-color);border-radius:var(--et-slider-tooltip-border-radius);min-inline-size:var(--et-slider-tooltip-inline-min-size);max-inline-size:var(--et-slider-tooltip-inline-max-size);color:var(--et-slider-tooltip-foreground-color);text-align:center;top:-100%}.et-slider .et-slider-value-tooltip:before{inline-size:var(--et-slider-tooltip-arrow-size);block-size:var(--et-slider-tooltip-arrow-size);border-radius:var(--et-slider-tooltip-arrow-radius);position:absolute;z-index:-1;transform:translate(-50%) rotate(45deg);background:var(--et-slider-tooltip-background-color);bottom:-4px;left:50%;content:\"\"}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
322
329
  }
323
330
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SliderComponent, decorators: [{
324
331
  type: Component,
@@ -326,7 +333,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
326
333
  class: 'et-slider',
327
334
  role: 'slider',
328
335
  '[id]': '_input.id',
329
- }, imports: [LetDirective, AsyncPipe, NgIf], hostDirectives: [{ directive: InputDirective, inputs: ['autocomplete'] }], template: "<div class=\"et-slider-track-container\">\n <div\n *ngIf=\"trackBackgroundStyles$ | async as trackBackgroundStyles\"\n [style.transform]=\"trackBackgroundStyles.transform\"\n class=\"et-slider-track-background\"\n ></div>\n <div\n *ngIf=\"trackFillStyles$ | async as trackFillStyles\"\n [style.transform]=\"trackFillStyles.transform\"\n [style.display]=\"trackFillStyles.display\"\n class=\"et-slider-track-fill\"\n ></div>\n</div>\n\n<div\n *ngIf=\"thumbContainerStyles$ | async as thumbContainerStyles\"\n [style.transform]=\"thumbContainerStyles.transform\"\n class=\"et-slider-thumb-container\"\n>\n <div class=\"et-slider-thumb\"></div>\n</div>\n", styles: [":where(.et-slider){--et-slider-track-block-size: 2px;--et-slider-track-border-radius: 0;--et-slider-inactive-track-color: #646464;--et-slider-active-track-color: #ffffff;--et-slider-block-size: 32px;--et-slider-min-inline-size: 112px;--et-slider-thumb-target-size: 32px;--et-slider-thumb-size: 12px;--et-slider-thumb-border-radius: 9999px;--et-slider-thumb-color: #ffffff;--et-slider-transition-duration: 80ms;outline:none}.et-slider{position:relative;display:block}.et-slider.et-slider--disable-animations{--et-slider-transition-duration: 0ms}.et-slider[aria-orientation=horizontal]{block-size:var(--et-slider-block-size);min-inline-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=horizontal] .et-slider-track-container{inset-block-start:calc(50% - var(--et-slider-track-block-size) / 2);inset-inline-start:0;block-size:var(--et-slider-track-block-size);inline-size:100%}.et-slider[aria-orientation=horizontal] .et-slider-track-fill{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:0 0}.et-slider[aria-orientation=horizontal] .et-slider-track-background{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=horizontal] .et-slider-thumb-container{inline-size:100%;block-size:0;inset-block-start:50%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:100% 100%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:0 0}.et-slider[aria-orientation=vertical]{inline-size:var(--et-slider-block-size);min-block-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=vertical] .et-slider-track-container{inset-block-start:0;inset-inline-start:calc(50% - var(--et-slider-track-block-size) / 2);block-size:100%;inline-size:var(--et-slider-track-block-size)}.et-slider[aria-orientation=vertical] .et-slider-track-fill{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=vertical] .et-slider-track-background{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:0 0}.et-slider[aria-orientation=vertical] .et-slider-thumb-container{inline-size:0;block-size:100%;inset-inline-start:50%}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:100% 100%}.et-slider .et-slider-track-container{position:absolute;overflow:hidden}.et-slider .et-slider-track-fill{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-active-track-color)}.et-slider .et-slider-track-background{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-inactive-track-color)}.et-slider .et-slider-thumb-container{position:absolute;z-index:1;transition:transform var(--et-slider-transition-duration)}.et-slider .et-slider-thumb{position:absolute;inset-inline-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inset-block-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inline-size:var(--et-slider-thumb-target-size);block-size:var(--et-slider-thumb-target-size);transition:transform var(--et-slider-transition-duration);display:flex;justify-content:center;align-items:center}.et-slider .et-slider-thumb:after{content:\"\";position:relative;inline-size:var(--et-slider-thumb-size);block-size:var(--et-slider-thumb-size);background-color:var(--et-slider-thumb-color);border-radius:var(--et-slider-thumb-border-radius);cursor:grab}.et-slider.et-slider--is-sliding .et-slider-thumb:after{cursor:grabbing}\n"] }]
336
+ }, imports: [LetDirective, AsyncPipe, NgIf], hostDirectives: [{ directive: InputDirective, inputs: ['autocomplete'] }], template: "<div class=\"et-slider-track-container\">\n <div\n *ngIf=\"trackBackgroundStyles$ | async as trackBackgroundStyles\"\n [style.transform]=\"trackBackgroundStyles.transform\"\n class=\"et-slider-track-background\"\n ></div>\n <div\n *ngIf=\"trackFillStyles$ | async as trackFillStyles\"\n [style.transform]=\"trackFillStyles.transform\"\n [style.display]=\"trackFillStyles.display\"\n class=\"et-slider-track-fill\"\n ></div>\n</div>\n\n<div\n *ngIf=\"thumbContainerStyles$ | async as thumbContainerStyles\"\n [style.transform]=\"thumbContainerStyles.transform\"\n class=\"et-slider-thumb-container\"\n>\n <div class=\"et-slider-thumb\">\n <div *ngIf=\"renderValueTooltip\" class=\"et-slider-value-tooltip\">{{ valueText$ | async }}</div>\n </div>\n</div>\n", styles: [":where(.et-slider){--et-slider-track-block-size: 2px;--et-slider-track-border-radius: 0;--et-slider-inactive-track-color: #646464;--et-slider-active-track-color: #ffffff;--et-slider-block-size: 32px;--et-slider-min-inline-size: 112px;--et-slider-thumb-target-size: 32px;--et-slider-thumb-size: 12px;--et-slider-thumb-border-radius: 9999px;--et-slider-thumb-color: #ffffff;--et-slider-transition-duration: 80ms;--et-slider-tooltip-arrow-size: 10px;--et-slider-tooltip-arrow-radius: 2px;--et-slider-tooltip-background-color: hsl(0 0% 20%);--et-slider-tooltip-border-radius: 4px;--et-slider-tooltip-foreground-color: CanvasText;--et-slider-tooltip-padding-inline: 1.5ch;--et-slider-tooltip-padding-block: .75ch;--et-slider-tooltip-inline-min-size: 2ch;--et-slider-tooltip-inline-max-size: 10ch;outline:none}.et-slider{position:relative;display:block}.et-slider.et-slider--disable-animations{--et-slider-transition-duration: 0ms}.et-slider[aria-orientation=horizontal]{block-size:var(--et-slider-block-size);min-inline-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=horizontal] .et-slider-track-container{inset-block-start:calc(50% - var(--et-slider-track-block-size) / 2);inset-inline-start:0;block-size:var(--et-slider-track-block-size);inline-size:100%}.et-slider[aria-orientation=horizontal] .et-slider-track-fill{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:0 0}.et-slider[aria-orientation=horizontal] .et-slider-track-background{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=horizontal] .et-slider-thumb-container{inline-size:100%;block-size:0;inset-block-start:50%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:100% 100%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:0 0}.et-slider[aria-orientation=vertical]{inline-size:var(--et-slider-block-size);min-block-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=vertical] .et-slider-track-container{inset-block-start:0;inset-inline-start:calc(50% - var(--et-slider-track-block-size) / 2);block-size:100%;inline-size:var(--et-slider-track-block-size)}.et-slider[aria-orientation=vertical] .et-slider-track-fill{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=vertical] .et-slider-track-background{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:0 0}.et-slider[aria-orientation=vertical] .et-slider-thumb-container{inline-size:0;block-size:100%;inset-inline-start:50%}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:100% 100%}.et-slider .et-slider-track-container{position:absolute;overflow:hidden}.et-slider .et-slider-track-fill{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-active-track-color)}.et-slider .et-slider-track-background{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-inactive-track-color)}.et-slider .et-slider-thumb-container{position:absolute;z-index:1;transition:transform var(--et-slider-transition-duration)}.et-slider .et-slider-thumb{position:absolute;inset-inline-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inset-block-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inline-size:var(--et-slider-thumb-target-size);block-size:var(--et-slider-thumb-target-size);transition:transform var(--et-slider-transition-duration);display:flex;justify-content:center;align-items:center}.et-slider .et-slider-thumb:after{content:\"\";position:relative;inline-size:var(--et-slider-thumb-size);block-size:var(--et-slider-thumb-size);background-color:var(--et-slider-thumb-color);border-radius:var(--et-slider-thumb-border-radius);cursor:grab}.et-slider.et-slider--is-sliding .et-slider-thumb:after{cursor:grabbing}.et-slider .et-slider-value-tooltip{box-sizing:border-box;position:absolute;padding-inline:var(--et-slider-tooltip-padding-inline);padding-block:var(--et-slider-tooltip-padding-block);background-color:var(--et-slider-tooltip-background-color);border-radius:var(--et-slider-tooltip-border-radius);min-inline-size:var(--et-slider-tooltip-inline-min-size);max-inline-size:var(--et-slider-tooltip-inline-max-size);color:var(--et-slider-tooltip-foreground-color);text-align:center;top:-100%}.et-slider .et-slider-value-tooltip:before{inline-size:var(--et-slider-tooltip-arrow-size);block-size:var(--et-slider-tooltip-arrow-size);border-radius:var(--et-slider-tooltip-arrow-radius);position:absolute;z-index:-1;transform:translate(-50%) rotate(45deg);background:var(--et-slider-tooltip-background-color);bottom:-4px;left:50%;content:\"\"}\n"] }]
330
337
  }], propDecorators: { min: [{
331
338
  type: Input
332
339
  }], max: [{
@@ -337,5 +344,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
337
344
  type: Input
338
345
  }], inverted: [{
339
346
  type: Input
347
+ }], renderValueTooltip: [{
348
+ type: Input,
349
+ args: [{ transform: booleanAttribute }]
340
350
  }] } });
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NsaWRlci9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2xpZGVyL2NvbXBvbmVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEVBQ0wsRUFBRSxFQUNGLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ0gsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FB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QURQLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBET0NVTUVOVCwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxuICBudW1iZXJBdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGV0RGlyZWN0aXZlLCBjbGFtcCwgY3JlYXRlRGVzdHJveSwgY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmaWx0ZXIsXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBtZXJnZSxcbiAgb2YsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSU5QVVRfVE9LRU4sIElucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBGb3JtRmllbGRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbmNvbnN0IGlzVG91Y2hFdmVudCA9IChldmVudDogRXZlbnQpOiBldmVudCBpcyBUb3VjaEV2ZW50ID0+IHtcbiAgcmV0dXJuIGV2ZW50LnR5cGVbMF0gPT09ICd0Jztcbn07XG5cbmNvbnN0IGdldFRvdWNoSWRGb3JTbGlkZXIgPSAoZXZlbnQ6IFRvdWNoRXZlbnQsIHNsaWRlcjogSFRNTEVsZW1lbnQpID0+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBldmVudC50b3VjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudG91Y2hlc1tpXS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoc2xpZGVyID09PSB0YXJnZXQgfHwgc2xpZGVyLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBldmVudC50b3VjaGVzW2ldLmlkZW50aWZpZXI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBmaW5kTWF0Y2hpbmdUb3VjaCA9ICh0b3VjaGVzOiBUb3VjaExpc3QsIGlkOiBudW1iZXIpID0+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b3VjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRvdWNoZXNbaV0uaWRlbnRpZmllciA9PT0gaWQpIHtcbiAgICAgIHJldHVybiB0b3VjaGVzW2ldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuY29uc3QgZ2V0UG9pbnRlclBvc2l0aW9uT25QYWdlID0gKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgaWQ6IG51bWJlciB8IG51bGwpID0+IHtcbiAgbGV0IHBvaW50OiB7IGNsaWVudFg6IG51bWJlcjsgY2xpZW50WTogbnVtYmVyIH0gfCBudWxsO1xuXG4gIGlmIChpc1RvdWNoRXZlbnQoZXZlbnQpKSB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHBvaW50ID0gZmluZE1hdGNoaW5nVG91Y2goZXZlbnQudG91Y2hlcywgaWQpIHx8IGZpbmRNYXRjaGluZ1RvdWNoKGV2ZW50LmNoYW5nZWRUb3VjaGVzLCBpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvaW50ID0gZXZlbnQudG91Y2hlc1swXSB8fCBldmVudC5jaGFuZ2VkVG91Y2hlc1swXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcG9pbnQgPSBldmVudDtcbiAgfVxuXG4gIHJldHVybiBwb2ludCA/IHsgeDogcG9pbnQuY2xpZW50WCwgeTogcG9pbnQuY2xpZW50WSB9IDogbnVsbDtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LXNsaWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LXNsaWRlcicsXG4gICAgcm9sZTogJ3NsaWRlcicsXG4gICAgJ1tpZF0nOiAnX2lucHV0LmlkJyxcbiAgfSxcbiAgaW1wb3J0czogW0xldERpcmVjdGl2ZSwgQXN5bmNQaXBlLCBOZ0lmXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFt7IGRpcmVjdGl2ZTogSW5wdXREaXJlY3RpdmUsIGlucHV0czogWydhdXRvY29tcGxldGUnXSB9XSxcbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RpclNlcnZpY2UgPSBpbmplY3QoRGlyZWN0aW9uYWxpdHkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21vdXNlRG93biQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJywgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG91Y2hTdGFydCQgPSBmcm9tRXZlbnQ8VG91Y2hFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG91Y2hzdGFydCcsIHtcbiAgICBwYXNzaXZlOiBmYWxzZSxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2tleURvd24kID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9rZXlVcCQgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5dXAnLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lucHV0ID0gaW5qZWN0PElucHV0RGlyZWN0aXZlPG51bWJlcj4+KElOUFVUX1RPS0VOKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUZpZWxkU3RhdGVTZXJ2aWNlID0gaW5qZWN0KEZvcm1GaWVsZFN0YXRlU2VydmljZSk7XG5cbiAgQElucHV0KClcbiAgZ2V0IG1pbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW4kLnZhbHVlO1xuICB9XG4gIHNldCBtaW4odmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9taW4kLm5leHQobnVtYmVyQXR0cmlidXRlKHZhbHVlLCAwKSk7XG4gIH1cbiAgcHJpdmF0ZSBfbWluJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXgkLnZhbHVlO1xuICB9XG4gIHNldCBtYXgodmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9tYXgkLm5leHQobnVtYmVyQXR0cmlidXRlKHZhbHVlLCAxMDApKTtcbiAgfVxuICBwcml2YXRlIF9tYXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgxMDApO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzdGVwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXAkLnZhbHVlO1xuICB9XG4gIHNldCBzdGVwKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fc3RlcCQubmV4dChudW1iZXJBdHRyaWJ1dGUodmFsdWUsIDEpKTtcbiAgfVxuICBwcml2YXRlIF9zdGVwJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMSk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92ZXJ0aWNhbCQudmFsdWU7XG4gIH1cbiAgc2V0IHZlcnRpY2FsKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fdmVydGljYWwkLm5leHQoYm9vbGVhbkF0dHJpYnV0ZSh2YWx1ZSkpO1xuICB9XG4gIHByaXZhdGUgX3ZlcnRpY2FsJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpbnZlcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW52ZXJ0ZWQkLnZhbHVlO1xuICB9XG4gIHNldCBpbnZlcnRlZCh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2ludmVydGVkJC5uZXh0KGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpKTtcbiAgfVxuICBwcml2YXRlIF9pbnZlcnRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kaXIkID0gdGhpcy5fZGlyU2VydmljZS5jaGFuZ2UucGlwZShzdGFydFdpdGgodGhpcy5fZGlyU2VydmljZS52YWx1ZSkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZhbHVlJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2lucHV0LnZhbHVlJCwgdGhpcy5fbWluJCwgdGhpcy5fbWF4JF0pLnBpcGUoXG4gICAgbWFwKChbdmFsdWUsIG1pbiwgbWF4XSkgPT4gY2xhbXAodmFsdWUgPz8gMCwgbWluLCBtYXgpKSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yb3VuZFRvRGVjaW1hbCQgPSB0aGlzLl9zdGVwJC5waXBlKG1hcCgoc3RlcCkgPT4gTWF0aC5yb3VuZChNYXRoLmxvZzEwKHN0ZXApKSAqIC0xKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZhbHVlVGV4dCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl92YWx1ZSQsIHRoaXMuX3JvdW5kVG9EZWNpbWFsJF0pLnBpcGUoXG4gICAgbWFwKChbdmFsdWUsIHJvdW5kVG9EZWNpbWFsXSkgPT4gdmFsdWUudG9GaXhlZChyb3VuZFRvRGVjaW1hbCkpLFxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZXJjZW50JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX3ZhbHVlJCwgdGhpcy5fbWluJCwgdGhpcy5fbWF4JF0pLnBpcGUoXG4gICAgbWFwKChbdmFsdWUsIG1pbiwgbWF4XSkgPT4gKHZhbHVlIC0gbWluKSAvIChtYXggLSBtaW4pKSxcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2hvdWxkSW52ZXJ0QXhpcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl92ZXJ0aWNhbCQsIHRoaXMuX2ludmVydGVkJF0pLnBpcGUoXG4gICAgbWFwKChbdmVydGljYWwsIGludmVydGVkXSkgPT4gKHZlcnRpY2FsID8gIWludmVydGVkIDogaW52ZXJ0ZWQpKSxcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fdmVydGljYWwkLFxuICAgIHRoaXMuX3Nob3VsZEludmVydEF4aXMkLFxuICAgIHRoaXMuX2RpciQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbdmVydGljYWwsIHNob3VsZEludmVydEF4aXMsIGRpcl0pID0+IChkaXIgPT09ICdydGwnICYmICF2ZXJ0aWNhbCA/ICFzaG91bGRJbnZlcnRBeGlzIDogc2hvdWxkSW52ZXJ0QXhpcykpLFxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zbGlkZXJEaW1lbnNpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhY2tCYWNrZ3JvdW5kU3R5bGVzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX3BlcmNlbnQkLCB0aGlzLl92ZXJ0aWNhbCRdKS5waXBlKFxuICAgIG1hcCgoW3BlcmNlbnQsIHZlcnRpY2FsXSkgPT4ge1xuICAgICAgY29uc3Qgc2NhbGUgPSB2ZXJ0aWNhbCA/IGAxLCAkezEgLSBwZXJjZW50fSwgMWAgOiBgJHsxIC0gcGVyY2VudH0sIDEsIDFgO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGBzY2FsZTNkKCR7c2NhbGV9KWAsXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFja0ZpbGxTdHlsZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fcGVyY2VudCQsIHRoaXMuX3ZlcnRpY2FsJF0pLnBpcGUoXG4gICAgbWFwKChbcGVyY2VudCwgdmVydGljYWxdKSA9PiB7XG4gICAgICBjb25zdCBzY2FsZSA9IHZlcnRpY2FsID8gYDEsICR7cGVyY2VudH0sIDFgIDogYCR7cGVyY2VudH0sIDEsIDFgO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGBzY2FsZTNkKCR7c2NhbGV9KWAsXG4gICAgICAgIGRpc3BsYXk6IHBlcmNlbnQgPT09IDAgPyAnbm9uZScgOiAnJyxcbiAgICAgIH07XG4gICAgfSksXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRodW1iQ29udGFpbmVyU3R5bGVzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX3BlcmNlbnQkLFxuICAgIHRoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzJCxcbiAgICB0aGlzLl92ZXJ0aWNhbCQsXG4gICAgdGhpcy5fZGlyJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtwZXJjZW50LCBzaG91bGRJbnZlcnRNb3VzZUNvb3JkcywgdmVydGljYWwsIGRpcl0pID0+IHtcbiAgICAgIGNvbnN0IGF4aXMgPSB2ZXJ0aWNhbCA/ICdZJyA6ICdYJztcbiAgICAgIGNvbnN0IGludmVydE9mZnNldCA9IGRpciA9PT0gJ3J0bCcgJiYgIXZlcnRpY2FsID8gIXNob3VsZEludmVydE1vdXNlQ29vcmRzIDogc2hvdWxkSW52ZXJ0TW91c2VDb29yZHM7XG4gICAgICBjb25zdCBvZmZzZXQgPSAoaW52ZXJ0T2Zmc2V0ID8gcGVyY2VudCA6IDEgLSBwZXJjZW50KSAqIDEwMDtcbiAgICAgIGNvbnN0IHNpZ24gPSB2ZXJ0aWNhbCA/ICctJyA6IGRpciA9PT0gJ3J0bCcgPyAnJyA6ICctJztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlJHtheGlzfSgke3NpZ259JHtvZmZzZXR9JSlgLFxuICAgICAgfTtcbiAgICB9KSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNTbGlkaW5nVmlhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8J2tleWJvYXJkJyB8ICdwb2ludGVyJyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYWJsZUFuaW1hdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0b3VjaElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsYXN0UG9pbnRlckV2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TW91c2VFdmVudCB8IFRvdWNoRXZlbnQgfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBfYmluZGluZ3MgPSBjcmVhdGVSZWFjdGl2ZUJpbmRpbmdzKFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2FyaWEtb3JpZW50YXRpb24nLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fdmVydGljYWwkLnBpcGUoXG4gICAgICAgIG1hcCgodmVydGljYWwpID0+ICh7XG4gICAgICAgICAgcmVuZGVyOiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiB2ZXJ0aWNhbCA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCcsXG4gICAgICAgIH0pKSxcbiAgICAgICksXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdhcmlhLWRpc2FibGVkJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuX2lucHV0LmRpc2FibGVkJCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2FyaWEtdmFsdWVub3cnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fdmFsdWUkLnBpcGUobWFwKCh2YWx1ZSkgPT4gKHsgcmVuZGVyOiB0cnVlLCB2YWx1ZSB9KSkpLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnYXJpYS12YWx1ZW1pbicsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9taW4kLnBpcGUobWFwKCh2YWx1ZSkgPT4gKHsgcmVuZGVyOiB0cnVlLCB2YWx1ZSB9KSkpLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnYXJpYS12YWx1ZW1heCcsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9tYXgkLnBpcGUobWFwKCh2YWx1ZSkgPT4gKHsgcmVuZGVyOiB0cnVlLCB2YWx1ZSB9KSkpLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnYXJpYS12YWx1ZXRleHQnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fdmFsdWVUZXh0JC5waXBlKG1hcCgodmFsdWUpID0+ICh7IHJlbmRlcjogdHJ1ZSwgdmFsdWUgfSkpKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ3RhYmluZGV4JyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuX2lucHV0LmRpc2FibGVkJC5waXBlKG1hcCgoZGlzYWJsZWQpID0+ICh7IHJlbmRlcjogdHJ1ZSwgdmFsdWU6IGRpc2FibGVkID8gLTEgOiAwIH0pKSksXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1zbGlkZXItLWlzLXNsaWRpbmcnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5pc1NsaWRpbmdWaWEkLnBpcGUobWFwKChpc1NsaWRpbmdWaWEpID0+ICEhaXNTbGlkaW5nVmlhKSksXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1zbGlkZXItLWludmVydGVkJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuX2ludmVydGVkJCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2NsYXNzLmV0LXNsaWRlci0tZGlzYWJsZS1hbmltYXRpb25zJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuZGlzYWJsZUFuaW1hdGlvbnMkLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnYXJpYS1sYWJlbGVkYnknLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fZm9ybUZpZWxkU3RhdGVTZXJ2aWNlLmxhYmVsSWQkLnBpcGUoXG4gICAgICAgIG1hcCgobGFiZWxJZCkgPT4gKHsgcmVuZGVyOiAhIWxhYmVsSWQsIHZhbHVlOiBsYWJlbElkID8/ICcnIH0pKSxcbiAgICAgICksXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdhcmlhLWRlc2NyaWJlZGJ5JyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuX2Zvcm1GaWVsZFN0YXRlU2VydmljZS5kZXNjcmliZWRCeSQucGlwZShcbiAgICAgICAgbWFwKChkZXNjcmliZWRCeSkgPT4gKHsgcmVuZGVyOiAhIWRlc2NyaWJlZEJ5LCB2YWx1ZTogZGVzY3JpYmVkQnkgPz8gJycgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICApO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIG1lcmdlKHRoaXMuX21vdXNlRG93biQsIHRoaXMuX3RvdWNoU3RhcnQkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5faW5wdXQuZGlzYWJsZWQ7XG4gICAgICAgICAgY29uc3QgaXNTbGlkaW5nID0gISF0aGlzLmlzU2xpZGluZ1ZpYSQudmFsdWU7XG4gICAgICAgICAgY29uc3QgaXNJbnZhbGlkTW91c2VCdXR0b24gPSAhaXNUb3VjaEV2ZW50KGV2ZW50KSAmJiBldmVudC5idXR0b24gIT09IDA7XG5cbiAgICAgICAgICByZXR1cm4gIWlzRGlzYWJsZWQgJiYgIWlzU2xpZGluZyAmJiAhaXNJbnZhbGlkTW91c2VCdXR0b247XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKGV2ZW50KSA9PlxuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW29mKGV2ZW50KSwgdGhpcy5fZnJlc2hTbGlkZXJEaW1lbnNpb25zKCksIHRoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzJF0pLnBpcGUoXG4gICAgICAgICAgICB0YXAoKFtldmVudCwgc2xpZGVyRGltZW5zaW9ucywgc2hvdWxkSW52ZXJ0TW91c2VDb29yZHNdKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVTbGlkZShldmVudCwgc2xpZGVyRGltZW5zaW9ucywgc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2tleURvd24kXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLl9pbnB1dC5kaXNhYmxlZDtcbiAgICAgICAgICBjb25zdCBpc1NsaWRpbmcgPSB0aGlzLmlzU2xpZGluZ1ZpYSQudmFsdWUgJiYgdGhpcy5pc1NsaWRpbmdWaWEkLnZhbHVlICE9PSAna2V5Ym9hcmQnO1xuICAgICAgICAgIGNvbnN0IGlzTW9kaWZpZXJQcmVzc2VkID0gZXZlbnQuYWx0S2V5IHx8IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5zaGlmdEtleSB8fCBldmVudC5tZXRhS2V5O1xuXG4gICAgICAgICAgcmV0dXJuICFpc0Rpc2FibGVkICYmICFpc1NsaWRpbmcgJiYgIWlzTW9kaWZpZXJQcmVzc2VkO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5fZGlyJCksXG4gICAgICAgIHRhcCgoW2V2ZW50LCBkaXJdKSA9PiB0aGlzLl91cGRhdGVTbGlkZXJWaWFLZXlib2FyZChldmVudCwgZGlyKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9rZXlVcCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5pc1NsaWRpbmdWaWEkLnZhbHVlID09PSAna2V5Ym9hcmQnKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuaXNTbGlkaW5nVmlhJC5uZXh0KG51bGwpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGZyb21FdmVudCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdibHVyJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2lucHV0Ll9tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy5faW5wdXQuX3NldFNob3VsZERpc3BsYXlFcnJvcih0cnVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplU2xpZGUoXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LFxuICAgIHNsaWRlckRpbWVuc2lvbnM6IERPTVJlY3QsXG4gICAgc2hvdWxkSW52ZXJ0TW91c2VDb29yZHM6IGJvb2xlYW4sXG4gICkge1xuICAgIGlmIChpc1RvdWNoRXZlbnQoZXZlbnQpKSB7XG4gICAgICB0aGlzLnRvdWNoSWQkLm5leHQoZ2V0VG91Y2hJZEZvclNsaWRlcihldmVudCwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSk7XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRlclBvc2l0aW9uID0gZ2V0UG9pbnRlclBvc2l0aW9uT25QYWdlKGV2ZW50LCB0aGlzLnRvdWNoSWQkLnZhbHVlKTtcblxuICAgIGlmICghcG9pbnRlclBvc2l0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1NsaWRpbmdWaWEkLm5leHQoJ3BvaW50ZXInKTtcblxuICAgIHRoaXMuX2JpbmRHbG9iYWxFdmVudHMoZXZlbnQpO1xuICAgIHRoaXMuX3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uKHBvaW50ZXJQb3NpdGlvbiwgc2xpZGVyRGltZW5zaW9ucywgc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMpO1xuICAgIHRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnZ3JhYmJpbmcnO1xuXG4gICAgaWYgKGV2ZW50LmNhbmNlbGFibGUpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYmluZEdsb2JhbEV2ZW50cyhldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBjb25zdCBpc1RvdWNoID0gaXNUb3VjaEV2ZW50KGV2ZW50KTtcbiAgICBjb25zdCBtb3ZlRXZlbnROYW1lID0gaXNUb3VjaCA/ICd0b3VjaG1vdmUnIDogJ21vdXNlbW92ZSc7XG4gICAgY29uc3QgZW5kRXZlbnROYW1lID0gaXNUb3VjaCA/ICd0b3VjaGVuZCcgOiAnbW91c2V1cCc7XG5cbiAgICBjb25zdCBldmVudENvbmZpZyA9IHsgcGFzc2l2ZTogZmFsc2UgfTtcblxuICAgIGNvbnN0IHBvaW50ZXJVcCQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudCB8IFRvdWNoRXZlbnQ+KHdpbmRvdywgZW5kRXZlbnROYW1lLCBldmVudENvbmZpZyk7XG4gICAgY29uc3QgdG91Y2hDYW5jZWwkID0gZnJvbUV2ZW50PFRvdWNoRXZlbnQ+KHdpbmRvdywgJ3RvdWNoY2FuY2VsJywgZXZlbnRDb25maWcpO1xuICAgIGNvbnN0IHdpbmRvd0JsdXIkID0gZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KHdpbmRvdywgJ2JsdXInKTtcblxuICAgIGNvbnN0IHNsaWRlRW5kJCA9IG1lcmdlKHBvaW50ZXJVcCQsIHRvdWNoQ2FuY2VsJCwgd2luZG93Qmx1ciQpO1xuXG4gICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50Pih3aW5kb3csIG1vdmVFdmVudE5hbWUsIGV2ZW50Q29uZmlnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbChzbGlkZUVuZCQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLl9zbGlkZXJEaW1lbnNpb25zJCwgdGhpcy5fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMkKSxcbiAgICAgICAgdGFwKChbZXZlbnQsIHNsaWRlckRpbWVuc2lvbnMsIHNob3VsZEludmVydE1vdXNlQ29vcmRzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBvaW50ZXJQb3NpdGlvbiA9IGdldFBvaW50ZXJQb3NpdGlvbk9uUGFnZShldmVudCwgdGhpcy50b3VjaElkJC52YWx1ZSk7XG5cbiAgICAgICAgICBpZiAoIXBvaW50ZXJQb3NpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlQW5pbWF0aW9ucyQudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZUFuaW1hdGlvbnMkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fdXBkYXRlVmFsdWVGcm9tUG9zaXRpb24ocG9pbnRlclBvc2l0aW9uLCBzbGlkZXJEaW1lbnNpb25zLCBzaG91bGRJbnZlcnRNb3VzZUNvb3Jkcyk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgc2xpZGVFbmQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFwKChldmVudCkgPT4ge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5pc1NsaWRpbmdWaWEkLm5leHQobnVsbCk7XG4gICAgICAgICAgdGhpcy50b3VjaElkJC5uZXh0KG51bGwpO1xuICAgICAgICAgIHRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnJztcbiAgICAgICAgICB0aGlzLmRpc2FibGVBbmltYXRpb25zJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWYWx1ZUZyb21Qb3NpdGlvbiA9IChcbiAgICBwb3M6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSxcbiAgICBzbGlkZXJEaW1lbnNpb25zOiBET01SZWN0LFxuICAgIHNob3VsZEludmVydE1vdXNlQ29vcmRzOiBib29sZWFuLFxuICApID0+IHtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnZlcnRpY2FsID8gc2xpZGVyRGltZW5zaW9ucy50b3AgOiBzbGlkZXJEaW1lbnNpb25zLmxlZnQ7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMudmVydGljYWwgPyBzbGlkZXJEaW1lbnNpb25zLmhlaWdodCA6IHNsaWRlckRpbWVuc2lvbnMud2lkdGg7XG4gICAgY29uc3QgcG9zQ29tcG9uZW50ID0gdGhpcy52ZXJ0aWNhbCA/IHBvcy55IDogcG9zLng7XG5cbiAgICBsZXQgcGVyY2VudCA9IGNsYW1wKChwb3NDb21wb25lbnQgLSBvZmZzZXQpIC8gc2l6ZSwgMCwgMSk7XG5cbiAgICBpZiAoc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMpIHtcbiAgICAgIHBlcmNlbnQgPSAxIC0gcGVyY2VudDtcbiAgICB9XG5cbiAgICBpZiAocGVyY2VudCA9PT0gMCkge1xuICAgICAgdGhpcy5faW5wdXQuX3VwZGF0ZVZhbHVlKHRoaXMubWluKTtcbiAgICB9IGVsc2UgaWYgKHBlcmNlbnQgPT09IDEpIHtcbiAgICAgIHRoaXMuX2lucHV0Ll91cGRhdGVWYWx1ZSh0aGlzLm1heCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4YWN0VmFsdWUgPSBwZXJjZW50ICogKHRoaXMubWF4IC0gdGhpcy5taW4pICsgdGhpcy5taW47XG4gICAgICBjb25zdCBjbG9zZXN0VmFsdWUgPSBNYXRoLnJvdW5kKChleGFjdFZhbHVlIC0gdGhpcy5taW4pIC8gdGhpcy5zdGVwKSAqIHRoaXMuc3RlcCArIHRoaXMubWluO1xuICAgICAgdGhpcy5faW5wdXQuX3VwZGF0ZVZhbHVlKGNsYW1wKGNsb3Nlc3RWYWx1ZSwgdGhpcy5taW4sIHRoaXMubWF4KSk7XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLl9pbnB1dC5fc2V0U2hvdWxkRGlzcGxheUVycm9yKHRydWUpO1xuICB9O1xuXG4gIHByaXZhdGUgX3VwZGF0ZVNsaWRlclZpYUtleWJvYXJkKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkaXI6IHN0cmluZykge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICB0aGlzLl91cGRhdGVTbGlkZXJWYWx1ZUJ5KDEwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlclZhbHVlQnkoLTEwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgICB0aGlzLl9pbnB1dC5fdXBkYXRlVmFsdWUodGhpcy5tYXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICB0aGlzLl9pbnB1dC5fdXBkYXRlVmFsdWUodGhpcy5taW4pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlclZhbHVlQnkoZGlyID09PSAncnRsJyA/IDEgOiAtMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlclZhbHVlQnkoMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlclZhbHVlQnkoZGlyID09PSAncnRsJyA/IC0xIDogMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5fdXBkYXRlU2xpZGVyVmFsdWVCeSgtMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc1NsaWRpbmdWaWEkLm5leHQoJ2tleWJvYXJkJyk7XG5cbiAgICB0aGlzLl9pbnB1dC5fbWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuX2lucHV0Ll9zZXRTaG91bGREaXNwbGF5RXJyb3IodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF91cGRhdGVTbGlkZXJWYWx1ZUJ5KG9mZnNldDogbnVtYmVyKSB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5faW5wdXQudmFsdWUgfHwgMDtcbiAgICBjb25zdCB2YWx1ZSA9IGNsYW1wKGN1cnJlbnRWYWx1ZSArIHRoaXMuc3RlcCAqIG9mZnNldCwgdGhpcy5taW4sIHRoaXMubWF4KTtcblxuICAgIHRoaXMuX2lucHV0Ll91cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9mcmVzaFNsaWRlckRpbWVuc2lvbnMoKSB7XG4gICAgdGhpcy5fc2xpZGVyRGltZW5zaW9ucyQubmV4dCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3NsaWRlckRpbWVuc2lvbnMkO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZXQtc2xpZGVyLXRyYWNrLWNvbnRhaW5lclwiPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJ0cmFja0JhY2tncm91bmRTdHlsZXMkIHwgYXN5bmMgYXMgdHJhY2tCYWNrZ3JvdW5kU3R5bGVzXCJcbiAgICBbc3R5bGUudHJhbnNmb3JtXT1cInRyYWNrQmFja2dyb3VuZFN0eWxlcy50cmFuc2Zvcm1cIlxuICAgIGNsYXNzPVwiZXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRcIlxuICA+PC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cInRyYWNrRmlsbFN0eWxlcyQgfCBhc3luYyBhcyB0cmFja0ZpbGxTdHlsZXNcIlxuICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwidHJhY2tGaWxsU3R5bGVzLnRyYW5zZm9ybVwiXG4gICAgW3N0eWxlLmRpc3BsYXldPVwidHJhY2tGaWxsU3R5bGVzLmRpc3BsYXlcIlxuICAgIGNsYXNzPVwiZXQtc2xpZGVyLXRyYWNrLWZpbGxcIlxuICA+PC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICAqbmdJZj1cInRodW1iQ29udGFpbmVyU3R5bGVzJCB8IGFzeW5jIGFzIHRodW1iQ29udGFpbmVyU3R5bGVzXCJcbiAgW3N0eWxlLnRyYW5zZm9ybV09XCJ0aHVtYkNvbnRhaW5lclN0eWxlcy50cmFuc2Zvcm1cIlxuICBjbGFzcz1cImV0LXNsaWRlci10aHVtYi1jb250YWluZXJcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZXQtc2xpZGVyLXRodW1iXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NsaWRlci9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2xpZGVyL2NvbXBvbmVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEVBQ0wsRUFBRSxFQUNGLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ0gsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FB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QVc7d0JBQ2xCLElBQUksRUFBRSxRQUFRO3dCQUNkLE1BQU0sRUFBRSxXQUFXO3FCQUNwQixXQUNRLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQ3hCLENBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7OEJBbUJyRSxHQUFHO3NCQUROLEtBQUs7Z0JBVUYsR0FBRztzQkFETixLQUFLO2dCQVVGLElBQUk7c0JBRFAsS0FBSztnQkFVRixRQUFRO3NCQURYLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLGtCQUFrQjtzQkFEckIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBET0NVTUVOVCwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxuICBudW1iZXJBdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGV0RGlyZWN0aXZlLCBjbGFtcCwgY3JlYXRlRGVzdHJveSwgY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmaWx0ZXIsXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBtZXJnZSxcbiAgb2YsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSU5QVVRfVE9LRU4sIElucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBGb3JtRmllbGRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbmNvbnN0IGlzVG91Y2hFdmVudCA9IChldmVudDogRXZlbnQpOiBldmVudCBpcyBUb3VjaEV2ZW50ID0+IHtcbiAgcmV0dXJuIGV2ZW50LnR5cGVbMF0gPT09ICd0Jztcbn07XG5cbmNvbnN0IGdldFRvdWNoSWRGb3JTbGlkZXIgPSAoZXZlbnQ6IFRvdWNoRXZlbnQsIHNsaWRlcjogSFRNTEVsZW1lbnQpID0+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBldmVudC50b3VjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudG91Y2hlc1tpXS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoc2xpZGVyID09PSB0YXJnZXQgfHwgc2xpZGVyLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBldmVudC50b3VjaGVzW2ldLmlkZW50aWZpZXI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBmaW5kTWF0Y2hpbmdUb3VjaCA9ICh0b3VjaGVzOiBUb3VjaExpc3QsIGlkOiBudW1iZXIpID0+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b3VjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRvdWNoZXNbaV0uaWRlbnRpZmllciA9PT0gaWQpIHtcbiAgICAgIHJldHVybiB0b3VjaGVzW2ldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuY29uc3QgZ2V0UG9pbnRlclBvc2l0aW9uT25QYWdlID0gKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgaWQ6IG51bWJlciB8IG51bGwpID0+IHtcbiAgbGV0IHBvaW50OiB7IGNsaWVudFg6IG51bWJlcjsgY2xpZW50WTogbnVtYmVyIH0gfCBudWxsO1xuXG4gIGlmIChpc1RvdWNoRXZlbnQoZXZlbnQpKSB7XG4gICAgaWYgKHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHBvaW50ID0gZmluZE1hdGNoaW5nVG91Y2goZXZlbnQudG91Y2hlcywgaWQpIHx8IGZpbmRNYXRjaGluZ1RvdWNoKGV2ZW50LmNoYW5nZWRUb3VjaGVzLCBpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvaW50ID0gZXZlbnQudG91Y2hlc1swXSB8fCBldmVudC5jaGFuZ2VkVG91Y2hlc1swXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcG9pbnQgPSBldmVudDtcbiAgfVxuXG4gIHJldHVybiBwb2ludCA/IHsgeDogcG9pbnQuY2xpZW50WCwgeTogcG9pbnQuY2xpZW50WSB9IDogbnVsbDtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LXNsaWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LXNsaWRlcicsXG4gICAgcm9sZTogJ3NsaWRlcicsXG4gICAgJ1tpZF0nOiAnX2lucHV0LmlkJyxcbiAgfSxcbiAgaW1wb3J0czogW0xldERpcmVjdGl2ZSwgQXN5bmNQaXBlLCBOZ0lmXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFt7IGRpcmVjdGl2ZTogSW5wdXREaXJlY3RpdmUsIGlucHV0czogWydhdXRvY29tcGxldGUnXSB9XSxcbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RpclNlcnZpY2UgPSBpbmplY3QoRGlyZWN0aW9uYWxpdHkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21vdXNlRG93biQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJywgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG91Y2hTdGFydCQgPSBmcm9tRXZlbnQ8VG91Y2hFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG91Y2hzdGFydCcsIHtcbiAgICBwYXNzaXZlOiBmYWxzZSxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2tleURvd24kID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9rZXlVcCQgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5dXAnLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lucHV0ID0gaW5qZWN0PElucHV0RGlyZWN0aXZlPG51bWJlcj4+KElOUFVUX1RPS0VOKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUZpZWxkU3RhdGVTZXJ2aWNlID0gaW5qZWN0KEZvcm1GaWVsZFN0YXRlU2VydmljZSk7XG5cbiAgQElucHV0KClcbiAgZ2V0IG1pbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW4kLnZhbHVlO1xuICB9XG4gIHNldCBtaW4odmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9taW4kLm5leHQobnVtYmVyQXR0cmlidXRlKHZhbHVlLCAwKSk7XG4gIH1cbiAgcHJpdmF0ZSBfbWluJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXgkLnZhbHVlO1xuICB9XG4gIHNldCBtYXgodmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9tYXgkLm5leHQobnVtYmVyQXR0cmlidXRlKHZhbHVlLCAxMDApKTtcbiAgfVxuICBwcml2YXRlIF9tYXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgxMDApO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzdGVwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXAkLnZhbHVlO1xuICB9XG4gIHNldCBzdGVwKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fc3RlcCQubmV4dChudW1iZXJBdHRyaWJ1dGUodmFsdWUsIDEpKTtcbiAgfVxuICBwcml2YXRlIF9zdGVwJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMSk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92ZXJ0aWNhbCQudmFsdWU7XG4gIH1cbiAgc2V0IHZlcnRpY2FsKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fdmVydGljYWwkLm5leHQoYm9vbGVhbkF0dHJpYnV0ZSh2YWx1ZSkpO1xuICB9XG4gIHByaXZhdGUgX3ZlcnRpY2FsJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpbnZlcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW52ZXJ0ZWQkLnZhbHVlO1xuICB9XG4gIHNldCBpbnZlcnRlZCh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2ludmVydGVkJC5uZXh0KGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpKTtcbiAgfVxuICBwcml2YXRlIF9pbnZlcnRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgZ2V0IHJlbmRlclZhbHVlVG9vbHRpcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVuZGVyVmFsdWVUb29sdGlwJC52YWx1ZTtcbiAgfVxuICBzZXQgcmVuZGVyVmFsdWVUb29sdGlwKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVuZGVyVmFsdWVUb29sdGlwJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9yZW5kZXJWYWx1ZVRvb2x0aXAkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlyJCA9IHRoaXMuX2RpclNlcnZpY2UuY2hhbmdlLnBpcGUoc3RhcnRXaXRoKHRoaXMuX2RpclNlcnZpY2UudmFsdWUpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pbnB1dC52YWx1ZSQsIHRoaXMuX21pbiQsIHRoaXMuX21heCRdKS5waXBlKFxuICAgIG1hcCgoW3ZhbHVlLCBtaW4sIG1heF0pID0+IGNsYW1wKHZhbHVlID8/IDAsIG1pbiwgbWF4KSksXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcm91bmRUb0RlY2ltYWwkID0gdGhpcy5fc3RlcCQucGlwZShtYXAoKHN0ZXApID0+IE1hdGgucm91bmQoTWF0aC5sb2cxMChzdGVwKSkgKiAtMSkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlcmNlbnQkID0gY29tYmluZUxhdGVzdChbdGhpcy5fdmFsdWUkLCB0aGlzLl9taW4kLCB0aGlzLl9tYXgkXSkucGlwZShcbiAgICBtYXAoKFt2YWx1ZSwgbWluLCBtYXhdKSA9PiAodmFsdWUgLSBtaW4pIC8gKG1heCAtIG1pbikpLFxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zaG91bGRJbnZlcnRBeGlzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX3ZlcnRpY2FsJCwgdGhpcy5faW52ZXJ0ZWQkXSkucGlwZShcbiAgICBtYXAoKFt2ZXJ0aWNhbCwgaW52ZXJ0ZWRdKSA9PiAodmVydGljYWwgPyAhaW52ZXJ0ZWQgOiBpbnZlcnRlZCkpLFxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl92ZXJ0aWNhbCQsXG4gICAgdGhpcy5fc2hvdWxkSW52ZXJ0QXhpcyQsXG4gICAgdGhpcy5fZGlyJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt2ZXJ0aWNhbCwgc2hvdWxkSW52ZXJ0QXhpcywgZGlyXSkgPT4gKGRpciA9PT0gJ3J0bCcgJiYgIXZlcnRpY2FsID8gIXNob3VsZEludmVydEF4aXMgOiBzaG91bGRJbnZlcnRBeGlzKSksXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NsaWRlckRpbWVuc2lvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB2YWx1ZVRleHQkID0gY29tYmluZUxhdGVzdChbdGhpcy5fdmFsdWUkLCB0aGlzLl9yb3VuZFRvRGVjaW1hbCRdKS5waXBlKFxuICAgIG1hcCgoW3ZhbHVlLCByb3VuZFRvRGVjaW1hbF0pID0+IHZhbHVlLnRvRml4ZWQocm91bmRUb0RlY2ltYWwpKSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhY2tCYWNrZ3JvdW5kU3R5bGVzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX3BlcmNlbnQkLCB0aGlzLl92ZXJ0aWNhbCRdKS5waXBlKFxuICAgIG1hcCgoW3BlcmNlbnQsIHZlcnRpY2FsXSkgPT4ge1xuICAgICAgY29uc3Qgc2NhbGUgPSB2ZXJ0aWNhbCA/IGAxLCAkezEgLSBwZXJjZW50fSwgMWAgOiBgJHsxIC0gcGVyY2VudH0sIDEsIDFgO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGBzY2FsZTNkKCR7c2NhbGV9KWAsXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFja0ZpbGxTdHlsZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fcGVyY2VudCQsIHRoaXMuX3ZlcnRpY2FsJF0pLnBpcGUoXG4gICAgbWFwKChbcGVyY2VudCwgdmVydGljYWxdKSA9PiB7XG4gICAgICBjb25zdCBzY2FsZSA9IHZlcnRpY2FsID8gYDEsICR7cGVyY2VudH0sIDFgIDogYCR7cGVyY2VudH0sIDEsIDFgO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGBzY2FsZTNkKCR7c2NhbGV9KWAsXG4gICAgICAgIGRpc3BsYXk6IHBlcmNlbnQgPT09IDAgPyAnbm9uZScgOiAnJyxcbiAgICAgIH07XG4gICAgfSksXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRodW1iQ29udGFpbmVyU3R5bGVzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX3BlcmNlbnQkLFxuICAgIHRoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzJCxcbiAgICB0aGlzLl92ZXJ0aWNhbCQsXG4gICAgdGhpcy5fZGlyJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtwZXJjZW50LCBzaG91bGRJbnZlcnRNb3VzZUNvb3JkcywgdmVydGljYWwsIGRpcl0pID0+IHtcbiAgICAgIGNvbnN0IGF4aXMgPSB2ZXJ0aWNhbCA/ICdZJyA6ICdYJztcbiAgICAgIGNvbnN0IGludmVydE9mZnNldCA9IGRpciA9PT0gJ3J0bCcgJiYgIXZlcnRpY2FsID8gIXNob3VsZEludmVydE1vdXNlQ29vcmRzIDogc2hvdWxkSW52ZXJ0TW91c2VDb29yZHM7XG4gICAgICBjb25zdCBvZmZzZXQgPSAoaW52ZXJ0T2Zmc2V0ID8gcGVyY2VudCA6IDEgLSBwZXJjZW50KSAqIDEwMDtcbiAgICAgIGNvbnN0IHNpZ24gPSB2ZXJ0aWNhbCA/ICctJyA6IGRpciA9PT0gJ3J0bCcgPyAnJyA6ICctJztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlJHtheGlzfSgke3NpZ259JHtvZmZzZXR9JSlgLFxuICAgICAgfTtcbiAgICB9KSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNTbGlkaW5nVmlhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8J2tleWJvYXJkJyB8ICdwb2ludGVyJyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYWJsZUFuaW1hdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0b3VjaElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsYXN0UG9pbnRlckV2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TW91c2VFdmVudCB8IFRvdWNoRXZlbnQgfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBfYmluZGluZ3MgPSBjcmVhdGVSZWFjdGl2ZUJpbmRpbmdzKFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2FyaWEtb3JpZW50YXRpb24nLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fdmVydGljYWwkLnBpcGUoXG4gICAgICAgIG1hcCgodmVydGljYWwpID0+ICh7XG4gICAgICAgICAgcmVuZGVyOiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiB2ZXJ0aWNhbCA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCcsXG4gICAgICAgIH0pKSxcbiAgICAgICksXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdhcmlhLWRpc2FibGVkJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuX2lucHV0LmRpc2FibGVkJCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2FyaWEtdmFsdWVub3cnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fdmFsdWUkLnBpcGUobWFwKCh2YWx1ZSkgPT4gKHsgcmVuZGVyOiB0cnVlLCB2YWx1ZSB9KSkpLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnYXJpYS12YWx1ZW1pbicsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9taW4kLnBpcGUobWFwKCh2YWx1ZSkgPT4gKHsgcmVuZGVyOiB0cnVlLCB2YWx1ZSB9KSkpLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnYXJpYS12YWx1ZW1heCcsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9tYXgkLnBpcGUobWFwKCh2YWx1ZSkgPT4gKHsgcmVuZGVyOiB0cnVlLCB2YWx1ZSB9KSkpLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnYXJpYS12YWx1ZXRleHQnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy52YWx1ZVRleHQkLnBpcGUobWFwKCh2YWx1ZSkgPT4gKHsgcmVuZGVyOiB0cnVlLCB2YWx1ZSB9KSkpLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAndGFiaW5kZXgnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5faW5wdXQuZGlzYWJsZWQkLnBpcGUobWFwKChkaXNhYmxlZCkgPT4gKHsgcmVuZGVyOiB0cnVlLCB2YWx1ZTogZGlzYWJsZWQgPyAtMSA6IDAgfSkpKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2NsYXNzLmV0LXNsaWRlci0taXMtc2xpZGluZycsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLmlzU2xpZGluZ1ZpYSQucGlwZShtYXAoKGlzU2xpZGluZ1ZpYSkgPT4gISFpc1NsaWRpbmdWaWEpKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2NsYXNzLmV0LXNsaWRlci0taW52ZXJ0ZWQnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5faW52ZXJ0ZWQkLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtc2xpZGVyLS1kaXNhYmxlLWFuaW1hdGlvbnMnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5kaXNhYmxlQW5pbWF0aW9ucyQsXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdhcmlhLWxhYmVsZWRieScsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9mb3JtRmllbGRTdGF0ZVNlcnZpY2UubGFiZWxJZCQucGlwZShcbiAgICAgICAgbWFwKChsYWJlbElkKSA9PiAoeyByZW5kZXI6ICEhbGFiZWxJZCwgdmFsdWU6IGxhYmVsSWQgPz8gJycgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2FyaWEtZGVzY3JpYmVkYnknLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fZm9ybUZpZWxkU3RhdGVTZXJ2aWNlLmRlc2NyaWJlZEJ5JC5waXBlKFxuICAgICAgICBtYXAoKGRlc2NyaWJlZEJ5KSA9PiAoeyByZW5kZXI6ICEhZGVzY3JpYmVkQnksIHZhbHVlOiBkZXNjcmliZWRCeSA/PyAnJyB9KSksXG4gICAgICApLFxuICAgIH0sXG4gICk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgbWVyZ2UodGhpcy5fbW91c2VEb3duJCwgdGhpcy5fdG91Y2hTdGFydCQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLl9pbnB1dC5kaXNhYmxlZDtcbiAgICAgICAgICBjb25zdCBpc1NsaWRpbmcgPSAhIXRoaXMuaXNTbGlkaW5nVmlhJC52YWx1ZTtcbiAgICAgICAgICBjb25zdCBpc0ludmFsaWRNb3VzZUJ1dHRvbiA9ICFpc1RvdWNoRXZlbnQoZXZlbnQpICYmIGV2ZW50LmJ1dHRvbiAhPT0gMDtcblxuICAgICAgICAgIHJldHVybiAhaXNEaXNhYmxlZCAmJiAhaXNTbGlkaW5nICYmICFpc0ludmFsaWRNb3VzZUJ1dHRvbjtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoZXZlbnQpID0+XG4gICAgICAgICAgY29tYmluZUxhdGVzdChbb2YoZXZlbnQpLCB0aGlzLl9mcmVzaFNsaWRlckRpbWVuc2lvbnMoKSwgdGhpcy5fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMkXSkucGlwZShcbiAgICAgICAgICAgIHRhcCgoW2V2ZW50LCBzbGlkZXJEaW1lbnNpb25zLCBzaG91bGRJbnZlcnRNb3VzZUNvb3Jkc10pID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNsaWRlKGV2ZW50LCBzbGlkZXJEaW1lbnNpb25zLCBzaG91bGRJbnZlcnRNb3VzZUNvb3Jkcyk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fa2V5RG93biRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMuX2lucHV0LmRpc2FibGVkO1xuICAgICAgICAgIGNvbnN0IGlzU2xpZGluZyA9IHRoaXMuaXNTbGlkaW5nVmlhJC52YWx1ZSAmJiB0aGlzLmlzU2xpZGluZ1ZpYSQudmFsdWUgIT09ICdrZXlib2FyZCc7XG4gICAgICAgICAgY29uc3QgaXNNb2RpZmllclByZXNzZWQgPSBldmVudC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50Lm1ldGFLZXk7XG5cbiAgICAgICAgICByZXR1cm4gIWlzRGlzYWJsZWQgJiYgIWlzU2xpZGluZyAmJiAhaXNNb2RpZmllclByZXNzZWQ7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLl9kaXIkKSxcbiAgICAgICAgdGFwKChbZXZlbnQsIGRpcl0pID0+IHRoaXMuX3VwZGF0ZVNsaWRlclZpYUtleWJvYXJkKGV2ZW50LCBkaXIpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2tleVVwJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzU2xpZGluZ1ZpYSQudmFsdWUgPT09ICdrZXlib2FyZCcpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5pc1NsaWRpbmdWaWEkLm5leHQobnVsbCkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2JsdXInKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICB0aGlzLl9pbnB1dC5fc2V0U2hvdWxkRGlzcGxheUVycm9yKHRydWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVTbGlkZShcbiAgICBldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQsXG4gICAgc2xpZGVyRGltZW5zaW9uczogRE9NUmVjdCxcbiAgICBzaG91bGRJbnZlcnRNb3VzZUNvb3JkczogYm9vbGVhbixcbiAgKSB7XG4gICAgaWYgKGlzVG91Y2hFdmVudChldmVudCkpIHtcbiAgICAgIHRoaXMudG91Y2hJZCQubmV4dChnZXRUb3VjaElkRm9yU2xpZGVyKGV2ZW50LCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKTtcbiAgICB9XG5cbiAgICBjb25zdCBwb2ludGVyUG9zaXRpb24gPSBnZXRQb2ludGVyUG9zaXRpb25PblBhZ2UoZXZlbnQsIHRoaXMudG91Y2hJZCQudmFsdWUpO1xuXG4gICAgaWYgKCFwb2ludGVyUG9zaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzU2xpZGluZ1ZpYSQubmV4dCgncG9pbnRlcicpO1xuXG4gICAgdGhpcy5fYmluZEdsb2JhbEV2ZW50cyhldmVudCk7XG4gICAgdGhpcy5fdXBkYXRlVmFsdWVGcm9tUG9zaXRpb24ocG9pbnRlclBvc2l0aW9uLCBzbGlkZXJEaW1lbnNpb25zLCBzaG91bGRJbnZlcnRNb3VzZUNvb3Jkcyk7XG4gICAgdGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdncmFiYmluZyc7XG5cbiAgICBpZiAoZXZlbnQuY2FuY2VsYWJsZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9iaW5kR2xvYmFsRXZlbnRzKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkge1xuICAgIGNvbnN0IGlzVG91Y2ggPSBpc1RvdWNoRXZlbnQoZXZlbnQpO1xuICAgIGNvbnN0IG1vdmVFdmVudE5hbWUgPSBpc1RvdWNoID8gJ3RvdWNobW92ZScgOiAnbW91c2Vtb3ZlJztcbiAgICBjb25zdCBlbmRFdmVudE5hbWUgPSBpc1RvdWNoID8gJ3RvdWNoZW5kJyA6ICdtb3VzZXVwJztcblxuICAgIGNvbnN0IGV2ZW50Q29uZmlnID0geyBwYXNzaXZlOiBmYWxzZSB9O1xuXG4gICAgY29uc3QgcG9pbnRlclVwJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50IHwgVG91Y2hFdmVudD4od2luZG93LCBlbmRFdmVudE5hbWUsIGV2ZW50Q29uZmlnKTtcbiAgICBjb25zdCB0b3VjaENhbmNlbCQgPSBmcm9tRXZlbnQ8VG91Y2hFdmVudD4od2luZG93LCAndG91Y2hjYW5jZWwnLCBldmVudENvbmZpZyk7XG4gICAgY29uc3Qgd2luZG93Qmx1ciQgPSBmcm9tRXZlbnQ8Rm9jdXNFdmVudD4od2luZG93LCAnYmx1cicpO1xuXG4gICAgY29uc3Qgc2xpZGVFbmQkID0gbWVyZ2UocG9pbnRlclVwJCwgdG91Y2hDYW5jZWwkLCB3aW5kb3dCbHVyJCk7XG5cbiAgICBmcm9tRXZlbnQ8TW91c2VFdmVudCB8IFRvdWNoRXZlbnQ+KHdpbmRvdywgbW92ZUV2ZW50TmFtZSwgZXZlbnRDb25maWcpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHNsaWRlRW5kJCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuX3NsaWRlckRpbWVuc2lvbnMkLCB0aGlzLl9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcyQpLFxuICAgICAgICB0YXAoKFtldmVudCwgc2xpZGVyRGltZW5zaW9ucywgc2hvdWxkSW52ZXJ0TW91c2VDb29yZHNdKSA9PiB7XG4gICAgICAgICAgY29uc3QgcG9pbnRlclBvc2l0aW9uID0gZ2V0UG9pbnRlclBvc2l0aW9uT25QYWdlKGV2ZW50LCB0aGlzLnRvdWNoSWQkLnZhbHVlKTtcblxuICAgICAgICAgIGlmICghcG9pbnRlclBvc2l0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVBbmltYXRpb25zJC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlQW5pbWF0aW9ucyQubmV4dCh0cnVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZUZyb21Qb3NpdGlvbihwb2ludGVyUG9zaXRpb24sIHNsaWRlckRpbWVuc2lvbnMsIHNob3VsZEludmVydE1vdXNlQ29vcmRzKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBzbGlkZUVuZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLmlzU2xpZGluZ1ZpYSQubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLnRvdWNoSWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgdGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmN1cnNvciA9ICcnO1xuICAgICAgICAgIHRoaXMuZGlzYWJsZUFuaW1hdGlvbnMkLm5leHQoZmFsc2UpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uID0gKFxuICAgIHBvczogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9LFxuICAgIHNsaWRlckRpbWVuc2lvbnM6IERPTVJlY3QsXG4gICAgc2hvdWxkSW52ZXJ0TW91c2VDb29yZHM6IGJvb2xlYW4sXG4gICkgPT4ge1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMudmVydGljYWwgPyBzbGlkZXJEaW1lbnNpb25zLnRvcCA6IHNsaWRlckRpbWVuc2lvbnMubGVmdDtcbiAgICBjb25zdCBzaXplID0gdGhpcy52ZXJ0aWNhbCA/IHNsaWRlckRpbWVuc2lvbnMuaGVpZ2h0IDogc2xpZGVyRGltZW5zaW9ucy53aWR0aDtcbiAgICBjb25zdCBwb3NDb21wb25lbnQgPSB0aGlzLnZlcnRpY2FsID8gcG9zLnkgOiBwb3MueDtcblxuICAgIGxldCBwZXJjZW50ID0gY2xhbXAoKHBvc0NvbXBvbmVudCAtIG9mZnNldCkgLyBzaXplLCAwLCAxKTtcblxuICAgIGlmIChzaG91bGRJbnZlcnRNb3VzZUNvb3Jkcykge1xuICAgICAgcGVyY2VudCA9IDEgLSBwZXJjZW50O1xuICAgIH1cblxuICAgIGlmIChwZXJjZW50ID09PSAwKSB7XG4gICAgICB0aGlzLl9pbnB1dC5fdXBkYXRlVmFsdWUodGhpcy5taW4pO1xuICAgIH0gZWxzZSBpZiAocGVyY2VudCA9PT0gMSkge1xuICAgICAgdGhpcy5faW5wdXQuX3VwZGF0ZVZhbHVlKHRoaXMubWF4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXhhY3RWYWx1ZSA9IHBlcmNlbnQgKiAodGhpcy5tYXggLSB0aGlzLm1pbikgKyB0aGlzLm1pbjtcbiAgICAgIGNvbnN0IGNsb3Nlc3RWYWx1ZSA9IE1hdGgucm91bmQoKGV4YWN0VmFsdWUgLSB0aGlzLm1pbikgLyB0aGlzLnN0ZXApICogdGhpcy5zdGVwICsgdGhpcy5taW47XG4gICAgICB0aGlzLl9pbnB1dC5fdXBkYXRlVmFsdWUoY2xhbXAoY2xvc2VzdFZhbHVlLCB0aGlzLm1pbiwgdGhpcy5tYXgpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dC5fbWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuX2lucHV0Ll9zZXRTaG91bGREaXNwbGF5RXJyb3IodHJ1ZSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfdXBkYXRlU2xpZGVyVmlhS2V5Ym9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRpcjogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ1BhZ2VVcCc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlclZhbHVlQnkoMTApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1BhZ2VEb3duJzpcbiAgICAgICAgdGhpcy5fdXBkYXRlU2xpZGVyVmFsdWVCeSgtMTApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIHRoaXMuX2lucHV0Ll91cGRhdGVWYWx1ZSh0aGlzLm1heCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgIHRoaXMuX2lucHV0Ll91cGRhdGVWYWx1ZSh0aGlzLm1pbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgdGhpcy5fdXBkYXRlU2xpZGVyVmFsdWVCeShkaXIgPT09ICdydGwnID8gMSA6IC0xKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5fdXBkYXRlU2xpZGVyVmFsdWVCeSgxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgdGhpcy5fdXBkYXRlU2xpZGVyVmFsdWVCeShkaXIgPT09ICdydGwnID8gLTEgOiAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICB0aGlzLl91cGRhdGVTbGlkZXJWYWx1ZUJ5KC0xKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmlzU2xpZGluZ1ZpYSQubmV4dCgna2V5Ym9hcmQnKTtcblxuICAgIHRoaXMuX2lucHV0Ll9tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5faW5wdXQuX3NldFNob3VsZERpc3BsYXlFcnJvcih0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3VwZGF0ZVNsaWRlclZhbHVlQnkob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLl9pbnB1dC52YWx1ZSB8fCAwO1xuICAgIGNvbnN0IHZhbHVlID0gY2xhbXAoY3VycmVudFZhbHVlICsgdGhpcy5zdGVwICogb2Zmc2V0LCB0aGlzLm1pbiwgdGhpcy5tYXgpO1xuXG4gICAgdGhpcy5faW5wdXQuX3VwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZyZXNoU2xpZGVyRGltZW5zaW9ucygpIHtcbiAgICB0aGlzLl9zbGlkZXJEaW1lbnNpb25zJC5uZXh0KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG5cbiAgICByZXR1cm4gdGhpcy5fc2xpZGVyRGltZW5zaW9ucyQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJldC1zbGlkZXItdHJhY2stY29udGFpbmVyXCI+XG4gIDxkaXZcbiAgICAqbmdJZj1cInRyYWNrQmFja2dyb3VuZFN0eWxlcyQgfCBhc3luYyBhcyB0cmFja0JhY2tncm91bmRTdHlsZXNcIlxuICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwidHJhY2tCYWNrZ3JvdW5kU3R5bGVzLnRyYW5zZm9ybVwiXG4gICAgY2xhc3M9XCJldC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFwiXG4gID48L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwidHJhY2tGaWxsU3R5bGVzJCB8IGFzeW5jIGFzIHRyYWNrRmlsbFN0eWxlc1wiXG4gICAgW3N0eWxlLnRyYW5zZm9ybV09XCJ0cmFja0ZpbGxTdHlsZXMudHJhbnNmb3JtXCJcbiAgICBbc3R5bGUuZGlzcGxheV09XCJ0cmFja0ZpbGxTdHlsZXMuZGlzcGxheVwiXG4gICAgY2xhc3M9XCJldC1zbGlkZXItdHJhY2stZmlsbFwiXG4gID48L2Rpdj5cbjwvZGl2PlxuXG48ZGl2XG4gICpuZ0lmPVwidGh1bWJDb250YWluZXJTdHlsZXMkIHwgYXN5bmMgYXMgdGh1bWJDb250YWluZXJTdHlsZXNcIlxuICBbc3R5bGUudHJhbnNmb3JtXT1cInRodW1iQ29udGFpbmVyU3R5bGVzLnRyYW5zZm9ybVwiXG4gIGNsYXNzPVwiZXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lclwiXG4+XG4gIDxkaXYgY2xhc3M9XCJldC1zbGlkZXItdGh1bWJcIj5cbiAgICA8ZGl2ICpuZ0lmPVwicmVuZGVyVmFsdWVUb29sdGlwXCIgY2xhc3M9XCJldC1zbGlkZXItdmFsdWUtdG9vbHRpcFwiPnt7IHZhbHVlVGV4dCQgfCBhc3luYyB9fTwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -3878,7 +3878,7 @@ class ComboboxComponent extends DecoratedInputBase {
3878
3878
  }))
3879
3879
  .subscribe();
3880
3880
  this.input.nativeInputRef$
3881
- .pipe(takeUntil(this._destroy$), filter((ref) => !!ref?.element.nativeElement), tap(() => this._updateFilter(this._currentFilter)), take(1))
3881
+ .pipe(takeUntil(this._destroy$), debounceTime(0), filter((ref) => !!ref?.element.nativeElement), tap(() => this._updateFilter(this._currentFilter)), take(1))
3882
3882
  .subscribe();
3883
3883
  }
3884
3884
  //#endregion
@@ -4129,7 +4129,7 @@ class ComboboxComponent extends DecoratedInputBase {
4129
4129
  provide: COMBOBOX_TOKEN,
4130
4130
  useExisting: ComboboxComponent,
4131
4131
  },
4132
- ], queries: [{ propertyName: "optionTemplate", first: true, predicate: COMBOBOX_OPTION_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "selectedOptionTemplate", first: true, predicate: COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }], usesInheritance: true, hostDirectives: [{ directive: InputDirective }, { directive: i1$1.AnimatedOverlayDirective }], ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\n<!-- eslint-disable @angular-eslint/template/use-track-by-function -->\n<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-combobox-wrapper\">\n <ul *ngIf=\"multiple$ | async\" class=\"et-combobox-selected-options\">\n <li *ngFor=\"let item of selectedOptions$ | async\" class=\"et-combobox-selected-option\">\n <ng-container\n *ngIf=\"customSelectedOptionTpl$ | async as customSelectedOptionTpl; else defaultSelectedOptionLabelTpl\"\n >\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n </ng-container>\n\n <ng-template #defaultSelectedOptionLabelTpl>\n {{ getOptionLabel(item) | async }}\n </ng-template>\n\n <span\n (click)=\"removeSelectedOption(item); $event.stopPropagation()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n >\n x\n </span>\n </li>\n </ul>\n\n <input\n (keydown)=\"processKeydownEvent($event)\"\n (click)=\"open()\"\n (blur)=\"handleBlurEvent()\"\n (input)=\"processInputEvent($event)\"\n type=\"text\"\n etNativeInputRef\n />\n\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{opacity:0;transform:scaleY(0)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:transform 125ms var(--ease-out-5),opacity 125ms var(--ease-out-5)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:transform 50ms var(--ease-in-5),opacity 50ms var(--ease-in-5)}.et-combobox-body.et-with-default-animation[et-floating-placement^=top] .et-combobox-body-container{transform-origin:bottom}.et-combobox-body.et-with-default-animation[et-floating-placement^=bottom] .et-combobox-body-container{transform-origin:top}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:min(200px,var(--et-floating-max-height, 200px));overflow:auto}@supports (overflow: overlay){.et-combobox-body-container{overflow:overlay}}.et-combobox-body{width:100%;display:grid;transform:var(--et-floating-translate);will-change:transform}.et-combobox-option{display:block}:where(.et-combobox-option--active){background-color:#1e1e1e}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NativeInputRefDirective, selector: "input[etNativeInputRef], textarea[etNativeInputRef], select[etNativeInputRef], button[etNativeInputRef]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4132
+ ], queries: [{ propertyName: "optionTemplate", first: true, predicate: COMBOBOX_OPTION_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }, { propertyName: "selectedOptionTemplate", first: true, predicate: COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN, descendants: true, read: TemplateRef }], usesInheritance: true, hostDirectives: [{ directive: InputDirective }, { directive: i1$1.AnimatedOverlayDirective }], ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\n<!-- eslint-disable @angular-eslint/template/use-track-by-function -->\n<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-combobox-wrapper\">\n <ul *ngIf=\"multiple$ | async\" class=\"et-combobox-selected-options\">\n <li *ngFor=\"let item of selectedOptions$ | async\" class=\"et-combobox-selected-option\">\n <ng-container\n *ngIf=\"customSelectedOptionTpl$ | async as customSelectedOptionTpl; else defaultSelectedOptionLabelTpl\"\n >\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n </ng-container>\n\n <ng-template #defaultSelectedOptionLabelTpl>\n {{ getOptionLabel(item) | async }}\n </ng-template>\n\n <span\n (click)=\"removeSelectedOption(item); $event.stopPropagation()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n >\n x\n </span>\n </li>\n <li class=\"et-combobox-muliple-input\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </li>\n </ul>\n\n <ng-template #inputTpl>\n <input\n (keydown)=\"processKeydownEvent($event)\"\n (click)=\"open()\"\n (blur)=\"handleBlurEvent()\"\n (input)=\"processInputEvent($event)\"\n type=\"text\"\n etNativeInputRef\n />\n </ng-template>\n\n <ng-container *ngIf=\"(multiple$ | async) === false\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </ng-container>\n\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{opacity:0;transform:scaleY(0)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:transform 125ms var(--ease-out-5),opacity 125ms var(--ease-out-5)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:transform 50ms var(--ease-in-5),opacity 50ms var(--ease-in-5)}.et-combobox-body.et-with-default-animation[et-floating-placement^=top] .et-combobox-body-container{transform-origin:bottom}.et-combobox-body.et-with-default-animation[et-floating-placement^=bottom] .et-combobox-body-container{transform-origin:top}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:min(200px,var(--et-floating-max-height, 200px));overflow:auto}@supports (overflow: overlay){.et-combobox-body-container{overflow:overlay}}.et-combobox-body{width:100%;display:grid;transform:var(--et-floating-translate);will-change:transform}.et-combobox-option{display:block}:where(.et-combobox-option--active){background-color:#1e1e1e}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NativeInputRefDirective, selector: "input[etNativeInputRef], textarea[etNativeInputRef], select[etNativeInputRef], button[etNativeInputRef]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4133
4133
  }
4134
4134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ComboboxComponent, decorators: [{
4135
4135
  type: Component,
@@ -4141,7 +4141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
4141
4141
  provide: COMBOBOX_TOKEN,
4142
4142
  useExisting: ComboboxComponent,
4143
4143
  },
4144
- ], template: "<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\n<!-- eslint-disable @angular-eslint/template/use-track-by-function -->\n<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-combobox-wrapper\">\n <ul *ngIf=\"multiple$ | async\" class=\"et-combobox-selected-options\">\n <li *ngFor=\"let item of selectedOptions$ | async\" class=\"et-combobox-selected-option\">\n <ng-container\n *ngIf=\"customSelectedOptionTpl$ | async as customSelectedOptionTpl; else defaultSelectedOptionLabelTpl\"\n >\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n </ng-container>\n\n <ng-template #defaultSelectedOptionLabelTpl>\n {{ getOptionLabel(item) | async }}\n </ng-template>\n\n <span\n (click)=\"removeSelectedOption(item); $event.stopPropagation()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n >\n x\n </span>\n </li>\n </ul>\n\n <input\n (keydown)=\"processKeydownEvent($event)\"\n (click)=\"open()\"\n (blur)=\"handleBlurEvent()\"\n (input)=\"processInputEvent($event)\"\n type=\"text\"\n etNativeInputRef\n />\n\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{opacity:0;transform:scaleY(0)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:transform 125ms var(--ease-out-5),opacity 125ms var(--ease-out-5)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:transform 50ms var(--ease-in-5),opacity 50ms var(--ease-in-5)}.et-combobox-body.et-with-default-animation[et-floating-placement^=top] .et-combobox-body-container{transform-origin:bottom}.et-combobox-body.et-with-default-animation[et-floating-placement^=bottom] .et-combobox-body-container{transform-origin:top}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:min(200px,var(--et-floating-max-height, 200px));overflow:auto}@supports (overflow: overlay){.et-combobox-body-container{overflow:overlay}}.et-combobox-body{width:100%;display:grid;transform:var(--et-floating-translate);will-change:transform}.et-combobox-option{display:block}:where(.et-combobox-option--active){background-color:#1e1e1e}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}\n"] }]
4144
+ ], template: "<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\n<!-- eslint-disable @angular-eslint/template/use-track-by-function -->\n<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-combobox-wrapper\">\n <ul *ngIf=\"multiple$ | async\" class=\"et-combobox-selected-options\">\n <li *ngFor=\"let item of selectedOptions$ | async\" class=\"et-combobox-selected-option\">\n <ng-container\n *ngIf=\"customSelectedOptionTpl$ | async as customSelectedOptionTpl; else defaultSelectedOptionLabelTpl\"\n >\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n </ng-container>\n\n <ng-template #defaultSelectedOptionLabelTpl>\n {{ getOptionLabel(item) | async }}\n </ng-template>\n\n <span\n (click)=\"removeSelectedOption(item); $event.stopPropagation()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n >\n x\n </span>\n </li>\n <li class=\"et-combobox-muliple-input\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </li>\n </ul>\n\n <ng-template #inputTpl>\n <input\n (keydown)=\"processKeydownEvent($event)\"\n (click)=\"open()\"\n (blur)=\"handleBlurEvent()\"\n (input)=\"processInputEvent($event)\"\n type=\"text\"\n etNativeInputRef\n />\n </ng-template>\n\n <ng-container *ngIf=\"(multiple$ | async) === false\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </ng-container>\n\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{opacity:0;transform:scaleY(0)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:transform 125ms var(--ease-out-5),opacity 125ms var(--ease-out-5)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:transform 50ms var(--ease-in-5),opacity 50ms var(--ease-in-5)}.et-combobox-body.et-with-default-animation[et-floating-placement^=top] .et-combobox-body-container{transform-origin:bottom}.et-combobox-body.et-with-default-animation[et-floating-placement^=bottom] .et-combobox-body-container{transform-origin:top}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:min(200px,var(--et-floating-max-height, 200px));overflow:auto}@supports (overflow: overlay){.et-combobox-body-container{overflow:overlay}}.et-combobox-body{width:100%;display:grid;transform:var(--et-floating-translate);will-change:transform}.et-combobox-option{display:block}:where(.et-combobox-option--active){background-color:#1e1e1e}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}\n"] }]
4145
4145
  }], ctorParameters: function () { return []; }, propDecorators: { options: [{
4146
4146
  type: Input,
4147
4147
  args: [{ required: true }]
@@ -5221,10 +5221,10 @@ class SliderComponent {
5221
5221
  this._step$ = new BehaviorSubject(1);
5222
5222
  this._vertical$ = new BehaviorSubject(false);
5223
5223
  this._inverted$ = new BehaviorSubject(false);
5224
+ this._renderValueTooltip$ = new BehaviorSubject(false);
5224
5225
  this._dir$ = this._dirService.change.pipe(startWith(this._dirService.value));
5225
5226
  this._value$ = combineLatest([this._input.value$, this._min$, this._max$]).pipe(map(([value, min, max]) => clamp(value ?? 0, min, max)));
5226
5227
  this._roundToDecimal$ = this._step$.pipe(map((step) => Math.round(Math.log10(step)) * -1));
5227
- this._valueText$ = combineLatest([this._value$, this._roundToDecimal$]).pipe(map(([value, roundToDecimal]) => value.toFixed(roundToDecimal)));
5228
5228
  this._percent$ = combineLatest([this._value$, this._min$, this._max$]).pipe(map(([value, min, max]) => (value - min) / (max - min)));
5229
5229
  this._shouldInvertAxis$ = combineLatest([this._vertical$, this._inverted$]).pipe(map(([vertical, inverted]) => (vertical ? !inverted : inverted)));
5230
5230
  this._shouldInvertMouseCoords$ = combineLatest([
@@ -5233,6 +5233,7 @@ class SliderComponent {
5233
5233
  this._dir$,
5234
5234
  ]).pipe(map(([vertical, shouldInvertAxis, dir]) => (dir === 'rtl' && !vertical ? !shouldInvertAxis : shouldInvertAxis)));
5235
5235
  this._sliderDimensions$ = new BehaviorSubject(this._elementRef.nativeElement.getBoundingClientRect());
5236
+ this.valueText$ = combineLatest([this._value$, this._roundToDecimal$]).pipe(map(([value, roundToDecimal]) => value.toFixed(roundToDecimal)));
5236
5237
  this.trackBackgroundStyles$ = combineLatest([this._percent$, this._vertical$]).pipe(map(([percent, vertical]) => {
5237
5238
  const scale = vertical ? `1, ${1 - percent}, 1` : `${1 - percent}, 1, 1`;
5238
5239
  return {
@@ -5284,7 +5285,7 @@ class SliderComponent {
5284
5285
  observable: this._max$.pipe(map((value) => ({ render: true, value }))),
5285
5286
  }, {
5286
5287
  attribute: 'aria-valuetext',
5287
- observable: this._valueText$.pipe(map((value) => ({ render: true, value }))),
5288
+ observable: this.valueText$.pipe(map((value) => ({ render: true, value }))),
5288
5289
  }, {
5289
5290
  attribute: 'tabindex',
5290
5291
  observable: this._input.disabled$.pipe(map((disabled) => ({ render: true, value: disabled ? -1 : 0 }))),
@@ -5357,6 +5358,12 @@ class SliderComponent {
5357
5358
  set inverted(value) {
5358
5359
  this._inverted$.next(booleanAttribute(value));
5359
5360
  }
5361
+ get renderValueTooltip() {
5362
+ return this._renderValueTooltip$.value;
5363
+ }
5364
+ set renderValueTooltip(value) {
5365
+ this._renderValueTooltip$.next(value);
5366
+ }
5360
5367
  ngOnInit() {
5361
5368
  merge(this._mouseDown$, this._touchStart$)
5362
5369
  .pipe(filter((event) => {
@@ -5478,7 +5485,7 @@ class SliderComponent {
5478
5485
  return this._sliderDimensions$;
5479
5486
  }
5480
5487
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5481
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SliderComponent, isStandalone: true, selector: "et-slider", inputs: { min: "min", max: "max", step: "step", vertical: "vertical", inverted: "inverted" }, host: { attributes: { "role": "slider" }, properties: { "id": "_input.id" }, classAttribute: "et-slider" }, hostDirectives: [{ directive: InputDirective, inputs: ["autocomplete", "autocomplete"] }], ngImport: i0, template: "<div class=\"et-slider-track-container\">\n <div\n *ngIf=\"trackBackgroundStyles$ | async as trackBackgroundStyles\"\n [style.transform]=\"trackBackgroundStyles.transform\"\n class=\"et-slider-track-background\"\n ></div>\n <div\n *ngIf=\"trackFillStyles$ | async as trackFillStyles\"\n [style.transform]=\"trackFillStyles.transform\"\n [style.display]=\"trackFillStyles.display\"\n class=\"et-slider-track-fill\"\n ></div>\n</div>\n\n<div\n *ngIf=\"thumbContainerStyles$ | async as thumbContainerStyles\"\n [style.transform]=\"thumbContainerStyles.transform\"\n class=\"et-slider-thumb-container\"\n>\n <div class=\"et-slider-thumb\"></div>\n</div>\n", styles: [":where(.et-slider){--et-slider-track-block-size: 2px;--et-slider-track-border-radius: 0;--et-slider-inactive-track-color: #646464;--et-slider-active-track-color: #ffffff;--et-slider-block-size: 32px;--et-slider-min-inline-size: 112px;--et-slider-thumb-target-size: 32px;--et-slider-thumb-size: 12px;--et-slider-thumb-border-radius: 9999px;--et-slider-thumb-color: #ffffff;--et-slider-transition-duration: 80ms;outline:none}.et-slider{position:relative;display:block}.et-slider.et-slider--disable-animations{--et-slider-transition-duration: 0ms}.et-slider[aria-orientation=horizontal]{block-size:var(--et-slider-block-size);min-inline-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=horizontal] .et-slider-track-container{inset-block-start:calc(50% - var(--et-slider-track-block-size) / 2);inset-inline-start:0;block-size:var(--et-slider-track-block-size);inline-size:100%}.et-slider[aria-orientation=horizontal] .et-slider-track-fill{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:0 0}.et-slider[aria-orientation=horizontal] .et-slider-track-background{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=horizontal] .et-slider-thumb-container{inline-size:100%;block-size:0;inset-block-start:50%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:100% 100%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:0 0}.et-slider[aria-orientation=vertical]{inline-size:var(--et-slider-block-size);min-block-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=vertical] .et-slider-track-container{inset-block-start:0;inset-inline-start:calc(50% - var(--et-slider-track-block-size) / 2);block-size:100%;inline-size:var(--et-slider-track-block-size)}.et-slider[aria-orientation=vertical] .et-slider-track-fill{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=vertical] .et-slider-track-background{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:0 0}.et-slider[aria-orientation=vertical] .et-slider-thumb-container{inline-size:0;block-size:100%;inset-inline-start:50%}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:100% 100%}.et-slider .et-slider-track-container{position:absolute;overflow:hidden}.et-slider .et-slider-track-fill{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-active-track-color)}.et-slider .et-slider-track-background{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-inactive-track-color)}.et-slider .et-slider-thumb-container{position:absolute;z-index:1;transition:transform var(--et-slider-transition-duration)}.et-slider .et-slider-thumb{position:absolute;inset-inline-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inset-block-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inline-size:var(--et-slider-thumb-target-size);block-size:var(--et-slider-thumb-target-size);transition:transform var(--et-slider-transition-duration);display:flex;justify-content:center;align-items:center}.et-slider .et-slider-thumb:after{content:\"\";position:relative;inline-size:var(--et-slider-thumb-size);block-size:var(--et-slider-thumb-size);background-color:var(--et-slider-thumb-color);border-radius:var(--et-slider-thumb-border-radius);cursor:grab}.et-slider.et-slider--is-sliding .et-slider-thumb:after{cursor:grabbing}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
5488
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SliderComponent, isStandalone: true, selector: "et-slider", inputs: { min: "min", max: "max", step: "step", vertical: "vertical", inverted: "inverted", renderValueTooltip: ["renderValueTooltip", "renderValueTooltip", booleanAttribute] }, host: { attributes: { "role": "slider" }, properties: { "id": "_input.id" }, classAttribute: "et-slider" }, hostDirectives: [{ directive: InputDirective, inputs: ["autocomplete", "autocomplete"] }], ngImport: i0, template: "<div class=\"et-slider-track-container\">\n <div\n *ngIf=\"trackBackgroundStyles$ | async as trackBackgroundStyles\"\n [style.transform]=\"trackBackgroundStyles.transform\"\n class=\"et-slider-track-background\"\n ></div>\n <div\n *ngIf=\"trackFillStyles$ | async as trackFillStyles\"\n [style.transform]=\"trackFillStyles.transform\"\n [style.display]=\"trackFillStyles.display\"\n class=\"et-slider-track-fill\"\n ></div>\n</div>\n\n<div\n *ngIf=\"thumbContainerStyles$ | async as thumbContainerStyles\"\n [style.transform]=\"thumbContainerStyles.transform\"\n class=\"et-slider-thumb-container\"\n>\n <div class=\"et-slider-thumb\">\n <div *ngIf=\"renderValueTooltip\" class=\"et-slider-value-tooltip\">{{ valueText$ | async }}</div>\n </div>\n</div>\n", styles: [":where(.et-slider){--et-slider-track-block-size: 2px;--et-slider-track-border-radius: 0;--et-slider-inactive-track-color: #646464;--et-slider-active-track-color: #ffffff;--et-slider-block-size: 32px;--et-slider-min-inline-size: 112px;--et-slider-thumb-target-size: 32px;--et-slider-thumb-size: 12px;--et-slider-thumb-border-radius: 9999px;--et-slider-thumb-color: #ffffff;--et-slider-transition-duration: 80ms;--et-slider-tooltip-arrow-size: 10px;--et-slider-tooltip-arrow-radius: 2px;--et-slider-tooltip-background-color: hsl(0 0% 20%);--et-slider-tooltip-border-radius: 4px;--et-slider-tooltip-foreground-color: CanvasText;--et-slider-tooltip-padding-inline: 1.5ch;--et-slider-tooltip-padding-block: .75ch;--et-slider-tooltip-inline-min-size: 2ch;--et-slider-tooltip-inline-max-size: 10ch;outline:none}.et-slider{position:relative;display:block}.et-slider.et-slider--disable-animations{--et-slider-transition-duration: 0ms}.et-slider[aria-orientation=horizontal]{block-size:var(--et-slider-block-size);min-inline-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=horizontal] .et-slider-track-container{inset-block-start:calc(50% - var(--et-slider-track-block-size) / 2);inset-inline-start:0;block-size:var(--et-slider-track-block-size);inline-size:100%}.et-slider[aria-orientation=horizontal] .et-slider-track-fill{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:0 0}.et-slider[aria-orientation=horizontal] .et-slider-track-background{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=horizontal] .et-slider-thumb-container{inline-size:100%;block-size:0;inset-block-start:50%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:100% 100%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:0 0}.et-slider[aria-orientation=vertical]{inline-size:var(--et-slider-block-size);min-block-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=vertical] .et-slider-track-container{inset-block-start:0;inset-inline-start:calc(50% - var(--et-slider-track-block-size) / 2);block-size:100%;inline-size:var(--et-slider-track-block-size)}.et-slider[aria-orientation=vertical] .et-slider-track-fill{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=vertical] .et-slider-track-background{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:0 0}.et-slider[aria-orientation=vertical] .et-slider-thumb-container{inline-size:0;block-size:100%;inset-inline-start:50%}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:100% 100%}.et-slider .et-slider-track-container{position:absolute;overflow:hidden}.et-slider .et-slider-track-fill{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-active-track-color)}.et-slider .et-slider-track-background{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-inactive-track-color)}.et-slider .et-slider-thumb-container{position:absolute;z-index:1;transition:transform var(--et-slider-transition-duration)}.et-slider .et-slider-thumb{position:absolute;inset-inline-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inset-block-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inline-size:var(--et-slider-thumb-target-size);block-size:var(--et-slider-thumb-target-size);transition:transform var(--et-slider-transition-duration);display:flex;justify-content:center;align-items:center}.et-slider .et-slider-thumb:after{content:\"\";position:relative;inline-size:var(--et-slider-thumb-size);block-size:var(--et-slider-thumb-size);background-color:var(--et-slider-thumb-color);border-radius:var(--et-slider-thumb-border-radius);cursor:grab}.et-slider.et-slider--is-sliding .et-slider-thumb:after{cursor:grabbing}.et-slider .et-slider-value-tooltip{box-sizing:border-box;position:absolute;padding-inline:var(--et-slider-tooltip-padding-inline);padding-block:var(--et-slider-tooltip-padding-block);background-color:var(--et-slider-tooltip-background-color);border-radius:var(--et-slider-tooltip-border-radius);min-inline-size:var(--et-slider-tooltip-inline-min-size);max-inline-size:var(--et-slider-tooltip-inline-max-size);color:var(--et-slider-tooltip-foreground-color);text-align:center;top:-100%}.et-slider .et-slider-value-tooltip:before{inline-size:var(--et-slider-tooltip-arrow-size);block-size:var(--et-slider-tooltip-arrow-size);border-radius:var(--et-slider-tooltip-arrow-radius);position:absolute;z-index:-1;transform:translate(-50%) rotate(45deg);background:var(--et-slider-tooltip-background-color);bottom:-4px;left:50%;content:\"\"}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
5482
5489
  }
5483
5490
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SliderComponent, decorators: [{
5484
5491
  type: Component,
@@ -5486,7 +5493,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
5486
5493
  class: 'et-slider',
5487
5494
  role: 'slider',
5488
5495
  '[id]': '_input.id',
5489
- }, imports: [LetDirective, AsyncPipe, NgIf], hostDirectives: [{ directive: InputDirective, inputs: ['autocomplete'] }], template: "<div class=\"et-slider-track-container\">\n <div\n *ngIf=\"trackBackgroundStyles$ | async as trackBackgroundStyles\"\n [style.transform]=\"trackBackgroundStyles.transform\"\n class=\"et-slider-track-background\"\n ></div>\n <div\n *ngIf=\"trackFillStyles$ | async as trackFillStyles\"\n [style.transform]=\"trackFillStyles.transform\"\n [style.display]=\"trackFillStyles.display\"\n class=\"et-slider-track-fill\"\n ></div>\n</div>\n\n<div\n *ngIf=\"thumbContainerStyles$ | async as thumbContainerStyles\"\n [style.transform]=\"thumbContainerStyles.transform\"\n class=\"et-slider-thumb-container\"\n>\n <div class=\"et-slider-thumb\"></div>\n</div>\n", styles: [":where(.et-slider){--et-slider-track-block-size: 2px;--et-slider-track-border-radius: 0;--et-slider-inactive-track-color: #646464;--et-slider-active-track-color: #ffffff;--et-slider-block-size: 32px;--et-slider-min-inline-size: 112px;--et-slider-thumb-target-size: 32px;--et-slider-thumb-size: 12px;--et-slider-thumb-border-radius: 9999px;--et-slider-thumb-color: #ffffff;--et-slider-transition-duration: 80ms;outline:none}.et-slider{position:relative;display:block}.et-slider.et-slider--disable-animations{--et-slider-transition-duration: 0ms}.et-slider[aria-orientation=horizontal]{block-size:var(--et-slider-block-size);min-inline-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=horizontal] .et-slider-track-container{inset-block-start:calc(50% - var(--et-slider-track-block-size) / 2);inset-inline-start:0;block-size:var(--et-slider-track-block-size);inline-size:100%}.et-slider[aria-orientation=horizontal] .et-slider-track-fill{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:0 0}.et-slider[aria-orientation=horizontal] .et-slider-track-background{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=horizontal] .et-slider-thumb-container{inline-size:100%;block-size:0;inset-block-start:50%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:100% 100%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:0 0}.et-slider[aria-orientation=vertical]{inline-size:var(--et-slider-block-size);min-block-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=vertical] .et-slider-track-container{inset-block-start:0;inset-inline-start:calc(50% - var(--et-slider-track-block-size) / 2);block-size:100%;inline-size:var(--et-slider-track-block-size)}.et-slider[aria-orientation=vertical] .et-slider-track-fill{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=vertical] .et-slider-track-background{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:0 0}.et-slider[aria-orientation=vertical] .et-slider-thumb-container{inline-size:0;block-size:100%;inset-inline-start:50%}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:100% 100%}.et-slider .et-slider-track-container{position:absolute;overflow:hidden}.et-slider .et-slider-track-fill{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-active-track-color)}.et-slider .et-slider-track-background{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-inactive-track-color)}.et-slider .et-slider-thumb-container{position:absolute;z-index:1;transition:transform var(--et-slider-transition-duration)}.et-slider .et-slider-thumb{position:absolute;inset-inline-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inset-block-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inline-size:var(--et-slider-thumb-target-size);block-size:var(--et-slider-thumb-target-size);transition:transform var(--et-slider-transition-duration);display:flex;justify-content:center;align-items:center}.et-slider .et-slider-thumb:after{content:\"\";position:relative;inline-size:var(--et-slider-thumb-size);block-size:var(--et-slider-thumb-size);background-color:var(--et-slider-thumb-color);border-radius:var(--et-slider-thumb-border-radius);cursor:grab}.et-slider.et-slider--is-sliding .et-slider-thumb:after{cursor:grabbing}\n"] }]
5496
+ }, imports: [LetDirective, AsyncPipe, NgIf], hostDirectives: [{ directive: InputDirective, inputs: ['autocomplete'] }], template: "<div class=\"et-slider-track-container\">\n <div\n *ngIf=\"trackBackgroundStyles$ | async as trackBackgroundStyles\"\n [style.transform]=\"trackBackgroundStyles.transform\"\n class=\"et-slider-track-background\"\n ></div>\n <div\n *ngIf=\"trackFillStyles$ | async as trackFillStyles\"\n [style.transform]=\"trackFillStyles.transform\"\n [style.display]=\"trackFillStyles.display\"\n class=\"et-slider-track-fill\"\n ></div>\n</div>\n\n<div\n *ngIf=\"thumbContainerStyles$ | async as thumbContainerStyles\"\n [style.transform]=\"thumbContainerStyles.transform\"\n class=\"et-slider-thumb-container\"\n>\n <div class=\"et-slider-thumb\">\n <div *ngIf=\"renderValueTooltip\" class=\"et-slider-value-tooltip\">{{ valueText$ | async }}</div>\n </div>\n</div>\n", styles: [":where(.et-slider){--et-slider-track-block-size: 2px;--et-slider-track-border-radius: 0;--et-slider-inactive-track-color: #646464;--et-slider-active-track-color: #ffffff;--et-slider-block-size: 32px;--et-slider-min-inline-size: 112px;--et-slider-thumb-target-size: 32px;--et-slider-thumb-size: 12px;--et-slider-thumb-border-radius: 9999px;--et-slider-thumb-color: #ffffff;--et-slider-transition-duration: 80ms;--et-slider-tooltip-arrow-size: 10px;--et-slider-tooltip-arrow-radius: 2px;--et-slider-tooltip-background-color: hsl(0 0% 20%);--et-slider-tooltip-border-radius: 4px;--et-slider-tooltip-foreground-color: CanvasText;--et-slider-tooltip-padding-inline: 1.5ch;--et-slider-tooltip-padding-block: .75ch;--et-slider-tooltip-inline-min-size: 2ch;--et-slider-tooltip-inline-max-size: 10ch;outline:none}.et-slider{position:relative;display:block}.et-slider.et-slider--disable-animations{--et-slider-transition-duration: 0ms}.et-slider[aria-orientation=horizontal]{block-size:var(--et-slider-block-size);min-inline-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=horizontal] .et-slider-track-container{inset-block-start:calc(50% - var(--et-slider-track-block-size) / 2);inset-inline-start:0;block-size:var(--et-slider-track-block-size);inline-size:100%}.et-slider[aria-orientation=horizontal] .et-slider-track-fill{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:0 0}.et-slider[aria-orientation=horizontal] .et-slider-track-background{block-size:var(--et-slider-track-block-size);inline-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=horizontal] .et-slider-thumb-container{inline-size:100%;block-size:0;inset-block-start:50%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:100% 100%}.et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:0 0}.et-slider[aria-orientation=vertical]{inline-size:var(--et-slider-block-size);min-block-size:var(--et-slider-min-inline-size)}.et-slider[aria-orientation=vertical] .et-slider-track-container{inset-block-start:0;inset-inline-start:calc(50% - var(--et-slider-track-block-size) / 2);block-size:100%;inline-size:var(--et-slider-track-block-size)}.et-slider[aria-orientation=vertical] .et-slider-track-fill{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:100% 100%}.et-slider[aria-orientation=vertical] .et-slider-track-background{inline-size:var(--et-slider-track-block-size);block-size:100%;transform-origin:0 0}.et-slider[aria-orientation=vertical] .et-slider-thumb-container{inline-size:0;block-size:100%;inset-inline-start:50%}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}.et-slider[aria-orientation=vertical].et-slider--inverted .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .et-slider[aria-orientation=horizontal] .et-slider-track-background,[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-fill{transform-origin:0 0}[dir=rtl] .et-slider[aria-orientation=horizontal].et-slider--inverted .et-slider-track-background{transform-origin:100% 100%}.et-slider .et-slider-track-container{position:absolute;overflow:hidden}.et-slider .et-slider-track-fill{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-active-track-color)}.et-slider .et-slider-track-background{position:absolute;transition:transform var(--et-slider-transition-duration);background-color:var(--et-slider-inactive-track-color)}.et-slider .et-slider-thumb-container{position:absolute;z-index:1;transition:transform var(--et-slider-transition-duration)}.et-slider .et-slider-thumb{position:absolute;inset-inline-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inset-block-end:calc(var(--et-slider-thumb-target-size) / 2 * -1);inline-size:var(--et-slider-thumb-target-size);block-size:var(--et-slider-thumb-target-size);transition:transform var(--et-slider-transition-duration);display:flex;justify-content:center;align-items:center}.et-slider .et-slider-thumb:after{content:\"\";position:relative;inline-size:var(--et-slider-thumb-size);block-size:var(--et-slider-thumb-size);background-color:var(--et-slider-thumb-color);border-radius:var(--et-slider-thumb-border-radius);cursor:grab}.et-slider.et-slider--is-sliding .et-slider-thumb:after{cursor:grabbing}.et-slider .et-slider-value-tooltip{box-sizing:border-box;position:absolute;padding-inline:var(--et-slider-tooltip-padding-inline);padding-block:var(--et-slider-tooltip-padding-block);background-color:var(--et-slider-tooltip-background-color);border-radius:var(--et-slider-tooltip-border-radius);min-inline-size:var(--et-slider-tooltip-inline-min-size);max-inline-size:var(--et-slider-tooltip-inline-max-size);color:var(--et-slider-tooltip-foreground-color);text-align:center;top:-100%}.et-slider .et-slider-value-tooltip:before{inline-size:var(--et-slider-tooltip-arrow-size);block-size:var(--et-slider-tooltip-arrow-size);border-radius:var(--et-slider-tooltip-arrow-radius);position:absolute;z-index:-1;transform:translate(-50%) rotate(45deg);background:var(--et-slider-tooltip-background-color);bottom:-4px;left:50%;content:\"\"}\n"] }]
5490
5497
  }], propDecorators: { min: [{
5491
5498
  type: Input
5492
5499
  }], max: [{
@@ -5497,6 +5504,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
5497
5504
  type: Input
5498
5505
  }], inverted: [{
5499
5506
  type: Input
5507
+ }], renderValueTooltip: [{
5508
+ type: Input,
5509
+ args: [{ transform: booleanAttribute }]
5500
5510
  }] } });
5501
5511
 
5502
5512
  const SliderImports = [SliderComponent, SliderFieldComponent, LabelComponent];