{"version":3,"file":"mtxColorpicker.mjs","sources":["../../../projects/extensions/colorpicker/colorpicker-input.ts","../../../projects/extensions/colorpicker/colorpicker-toggle.ts","../../../projects/extensions/colorpicker/colorpicker-toggle.html","../../../projects/extensions/colorpicker/colorpicker-animations.ts","../../../projects/extensions/colorpicker/colorpicker.ts","../../../projects/extensions/colorpicker/colorpicker-content.html","../../../projects/extensions/colorpicker/colorpicker-module.ts","../../../projects/extensions/colorpicker/mtxColorpicker.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { Subscription } from 'rxjs';\nimport { MtxColorpicker } from './colorpicker';\n\nexport class MtxColorPickerInputEvent {\n  /** The new value for the target colorpicker input. */\n  value: string | null;\n\n  constructor(\n    /** Reference to the colorpicker input component that emitted the event. */\n    public target: MtxColorpickerInput,\n    /** Reference to the native input element associated with the colorpicker input. */\n    public targetElement: HTMLElement\n  ) {\n    this.value = this.target.value;\n  }\n}\n\nexport const MTX_COLORPICKER_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => MtxColorpickerInput),\n  multi: true,\n};\n\nexport const MTX_COLORPICKER_VALIDATORS: any = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => MtxColorpickerInput),\n  multi: true,\n};\n\nexport type ColorFormat = 'hex' | 'rgb' | 'hsl' | 'hsv';\n\n@Directive({\n  selector: 'input[mtxColorpicker]',\n  providers: [\n    MTX_COLORPICKER_VALUE_ACCESSOR,\n    MTX_COLORPICKER_VALIDATORS,\n    { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxColorpickerInput },\n  ],\n  host: {\n    'class': 'mtx-colorpicker-input',\n    '[attr.aria-haspopup]': '_picker ? \"dialog\" : null',\n    '[attr.aria-owns]': '(_picker?.opened && _picker.id) || null',\n    '[disabled]': 'disabled',\n    '(input)': '_onInput($event.target.value)',\n    '(change)': '_onChange()',\n    '(blur)': '_onBlur()',\n    '(keydown)': '_onKeydown($event)',\n  },\n  exportAs: 'mtxColorpickerInput',\n})\nexport class MtxColorpickerInput implements ControlValueAccessor, AfterViewInit, OnDestroy {\n  /** Whether the component has been initialized. */\n  private _isInitialized!: boolean;\n\n  @Input()\n  set mtxColorpicker(value: MtxColorpicker) {\n    if (!value) {\n      return;\n    }\n\n    this._picker = value;\n    this._picker.registerInput(this);\n    this._pickerSubscription.unsubscribe();\n\n    this._pickerSubscription = this._picker._selectedChanged.subscribe((selected: string) => {\n      this.value = selected;\n      this._cvaOnChange(selected);\n      this._onTouched();\n      this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n      this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n    });\n  }\n  _picker!: MtxColorpicker;\n\n  /** Whether the colorpicker-input is disabled. */\n  @Input()\n  get disabled(): boolean {\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n    const element = this._elementRef.nativeElement;\n\n    if (this._disabled !== newValue) {\n      this._disabled = newValue;\n      this._disabledChange.emit(newValue);\n    }\n\n    // We need to null check the `blur` method, because it's undefined during SSR.\n    // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.\n    // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the\n    // element has been inserted.\n    if (newValue && this._isInitialized && element.blur) {\n      // Normally, native input elements automatically blur if they turn disabled. This behavior\n      // is problematic, because it would mean that it triggers another change detection cycle,\n      // which then causes a changed after checked error if the input element was focused before.\n      element.blur();\n    }\n  }\n  private _disabled!: boolean;\n\n  /** The value of the input. */\n  @Input()\n  get value(): string | null {\n    return this._value;\n  }\n  set value(value: string | null) {\n    const oldValue = this.value;\n    this._value = value;\n    this._formatValue(value);\n\n    this._valueChange.emit(value);\n  }\n  private _value!: string | null;\n\n  /** The input and output color format. */\n  @Input() format: ColorFormat = 'hex';\n\n  /** Emits when a `change` event is fired on this `<input>`. */\n  @Output() readonly colorChange: EventEmitter<MtxColorPickerInputEvent> =\n    new EventEmitter<MtxColorPickerInputEvent>();\n\n  /** Emits when an `input` event is fired on this `<input>`. */\n  @Output() readonly colorInput: EventEmitter<MtxColorPickerInputEvent> =\n    new EventEmitter<MtxColorPickerInputEvent>();\n\n  /** Emits when the disabled state has changed */\n  _disabledChange = new EventEmitter<boolean>();\n\n  /** Emits when the value changes (either due to user input or programmatic change). */\n  _valueChange = new EventEmitter<string | null>();\n\n  _onTouched = () => {};\n\n  _validatorOnChange = () => {};\n\n  private _cvaOnChange: (value: any) => void = () => {};\n\n  private _pickerSubscription = Subscription.EMPTY;\n\n  /** The combined form control validator for this input. */\n  private _validator: ValidatorFn | null = Validators.compose([]);\n\n  /** Whether the last value set on the input was valid. */\n  private _lastValueValid = false;\n\n  constructor(\n    private _elementRef: ElementRef<HTMLInputElement>,\n    @Optional() private _formField: MatFormField\n  ) {}\n\n  ngAfterViewInit() {\n    this._isInitialized = true;\n  }\n\n  ngOnDestroy() {\n    this._pickerSubscription.unsubscribe();\n    this._valueChange.complete();\n    this._disabledChange.complete();\n  }\n\n  registerOnValidatorChange(fn: () => void): void {\n    this._validatorOnChange = fn;\n  }\n\n  /** @docs-private */\n  validate(c: AbstractControl): ValidationErrors | null {\n    return this._validator ? this._validator(c) : null;\n  }\n\n  /**\n   * @deprecated\n   * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\n   */\n  getPopupConnectionElementRef(): ElementRef {\n    return this.getConnectedOverlayOrigin();\n  }\n\n  /**\n   * Gets the element that the colorpicker popup should be connected to.\n   * @return The element to connect the popup to.\n   */\n  getConnectedOverlayOrigin(): ElementRef {\n    return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n  }\n\n  /** Gets the ID of an element that should be used a description for the overlay. */\n  getOverlayLabelId(): string | null {\n    if (this._formField) {\n      return this._formField.getLabelId();\n    }\n\n    return this._elementRef.nativeElement.getAttribute('aria-labelledby');\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  writeValue(value: string): void {\n    this.value = value;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnChange(fn: (value: any) => void): void {\n    this._cvaOnChange = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  _onKeydown(event: KeyboardEvent) {\n    const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n\n    if (this._picker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n      this._picker.open();\n      event.preventDefault();\n    }\n  }\n\n  /** Handles blur events on the input. */\n  _onBlur() {\n    // Reformat the input only if we have a valid value.\n    if (this.value) {\n      this._formatValue(this.value);\n    }\n\n    this._onTouched();\n  }\n\n  _onInput(value: string) {\n    const nextValue = value;\n\n    this._value = nextValue;\n    this._cvaOnChange(nextValue);\n    this._valueChange.emit(nextValue);\n    this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n  }\n\n  _onChange() {\n    this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n  }\n\n  /** Returns the palette used by the input's form field, if any. */\n  getThemePalette(): ThemePalette {\n    return this._formField ? this._formField.color : undefined;\n  }\n\n  /** TODO: Formats a value and sets it on the input element. */\n  private _formatValue(value: string | null) {\n    this._elementRef.nativeElement.value = value ? value : '';\n  }\n\n  // Accept `any` to avoid conflicts with other directives on `<input>` that\n  // may accept different types.\n  static ngAcceptInputType_value: any;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  Directive,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { Subscription, of, merge } from 'rxjs';\nimport { MtxColorpicker } from './colorpicker';\n\n/** Can be used to override the icon of a `mtxColorpickerToggle`. */\n@Directive({\n  selector: '[mtxColorpickerToggleIcon]',\n})\nexport class MtxColorpickerToggleIcon {}\n\n@Component({\n  selector: 'mtx-colorpicker-toggle',\n  templateUrl: './colorpicker-toggle.html',\n  styleUrls: ['./colorpicker-toggle.scss'],\n  host: {\n    'class': 'mtx-colorpicker-toggle',\n    // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n    // consumer may have provided, while still being able to receive focus.\n    '[attr.tabindex]': 'disabled ? null : -1',\n    '[class.mtx-colorpicker-toggle-active]': 'picker && picker.opened',\n    '[class.mat-accent]': 'picker && picker.color === \"accent\"',\n    '[class.mat-warn]': 'picker && picker.color === \"warn\"',\n    '(focus)': '_button.focus()',\n  },\n  exportAs: 'mtxColorpickerToggle',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MtxColorpickerToggle implements AfterContentInit, OnChanges, OnDestroy {\n  private _stateChanges = Subscription.EMPTY;\n\n  /** Colorpicker instance that the button will toggle. */\n  @Input('for') picker!: MtxColorpicker;\n\n  /** Tabindex for the toggle. */\n  @Input() tabIndex!: number;\n\n  /** Whether the toggle button is disabled. */\n  @Input()\n  get disabled(): boolean {\n    if (this._disabled == null && this.picker) {\n      return this.picker.disabled;\n    }\n\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n  private _disabled!: boolean;\n\n  /** Whether ripples on the toggle should be disabled. */\n  @Input() disableRipple!: boolean;\n\n  /** Custom icon set by the consumer. */\n  @ContentChild(MtxColorpickerToggleIcon) _customIcon!: MtxColorpickerToggleIcon;\n\n  /** Underlying button element. */\n  @ViewChild('button') _button!: MatButton;\n\n  constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.picker) {\n      this._watchStateChanges();\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.unsubscribe();\n  }\n\n  ngAfterContentInit() {\n    this._watchStateChanges();\n  }\n\n  open(event: Event): void {\n    if (this.picker && !this.disabled) {\n      this.picker.open();\n      event.stopPropagation();\n    }\n  }\n\n  private _watchStateChanges() {\n    const pickerDisabled = this.picker ? this.picker._disabledChange : of();\n    const inputDisabled =\n      this.picker && this.picker.pickerInput ? this.picker.pickerInput._disabledChange : of();\n    const datepickerToggled = this.picker\n      ? merge(this.picker.openedStream, this.picker.closedStream)\n      : of();\n\n    this._stateChanges.unsubscribe();\n    this._stateChanges = merge([pickerDisabled, inputDisabled, datepickerToggled]).subscribe(() =>\n      this._changeDetectorRef.markForCheck()\n    );\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_disableRipple: BooleanInput;\n}\n","<button #button\n        mat-icon-button\n        type=\"button\"\n        [attr.aria-haspopup]=\"picker ? 'dialog' : null\"\n        [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n        [disabled]=\"disabled\"\n        [disableRipple]=\"disableRipple\"\n        (click)=\"open($event)\">\n\n  <svg *ngIf=\"!_customIcon\"\n       class=\"mtx-colorpicker-toggle-default-icon\"\n       viewBox=\"0 0 24 24\"\n       width=\"24px\"\n       height=\"24px\"\n       fill=\"currentColor\"\n       focusable=\"false\">\n    <path\n          d=\"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\" />\n  </svg>\n\n  <ng-content select=\"[mtxColorpickerToggleIcon]\"></ng-content>\n</button>\n","import {\n  animate,\n  style,\n  transition,\n  trigger,\n  keyframes,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the colorpicker.\n * @docs-private\n */\nexport const mtxColorpickerAnimations: {\n  readonly transformPanel: AnimationTriggerMetadata;\n} = {\n  /** Transforms the height of the colorpicker's panel. */\n  transformPanel: trigger('transformPanel', [\n    transition(\n      'void => enter-dropdown',\n      animate(\n        '120ms cubic-bezier(0, 0, 0.2, 1)',\n        keyframes([\n          style({ opacity: 0, transform: 'scale(1, 0.8)' }),\n          style({ opacity: 1, transform: 'scale(1, 1)' }),\n        ])\n      )\n    ),\n    transition('* => void', animate('100ms linear', style({ opacity: 0 }))),\n  ]),\n};\n","import { Directionality } from '@angular/cdk/bidi';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, hasModifierKey, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n  ScrollStrategy,\n  OverlayConfig,\n  Overlay,\n  OverlayRef,\n  FlexibleConnectedPositionStrategy,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Output,\n  TemplateRef,\n  ViewContainerRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { CanColor, mixinColor, ThemePalette } from '@angular/material/core';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { mtxColorpickerAnimations } from './colorpicker-animations';\nimport { ColorFormat, MtxColorpickerInput } from './colorpicker-input';\n\nimport { ColorEvent } from 'ngx-color';\n\nimport { TinyColor } from '@ctrl/tinycolor';\n\n/** Used to generate a unique ID for each colorpicker instance. */\nlet colorpickerUid = 0;\n\n/** Injection token that determines the scroll handling while the panel is open. */\nexport const MTX_COLORPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'mtx-colorpicker-scroll-strategy'\n);\n\nexport function MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition();\n}\n\n/** Possible positions for the colorpicker dropdown along the X axis. */\nexport type ColorpickerDropdownPositionX = 'start' | 'end';\n\n/** Possible positions for the colorpicker dropdown along the Y axis. */\nexport type ColorpickerDropdownPositionY = 'above' | 'below';\n\nexport const MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: MTX_COLORPICKER_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY,\n};\n\n// Boilerplate for applying mixins to MtxColorpickerContent.\n/** @docs-private */\nconst _MtxColorpickerContentBase = mixinColor(\n  class {\n    constructor(public _elementRef: ElementRef) {}\n  }\n);\n\n@Component({\n  selector: 'mtx-colorpicker-content',\n  templateUrl: './colorpicker-content.html',\n  styleUrls: ['colorpicker-content.scss'],\n  host: {\n    'class': 'mtx-colorpicker-content',\n    '[@transformPanel]': '_animationState',\n    '(@transformPanel.done)': '_animationDone.next()',\n  },\n  animations: [mtxColorpickerAnimations.transformPanel],\n  exportAs: 'mtxColorpickerContent',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['color'],\n})\nexport class MtxColorpickerContent\n  extends _MtxColorpickerContentBase\n  implements OnDestroy, CanColor\n{\n  picker!: MtxColorpicker;\n\n  /** Current state of the animation. */\n  _animationState: 'enter-dropdown' | 'void' = 'enter-dropdown';\n\n  /** Emits when an animation has finished. */\n  readonly _animationDone = new Subject<void>();\n\n  constructor(elementRef: ElementRef, private _changeDetectorRef: ChangeDetectorRef) {\n    super(elementRef);\n  }\n\n  _startExitAnimation() {\n    this._animationState = 'void';\n    this._changeDetectorRef.markForCheck();\n  }\n\n  ngOnDestroy() {\n    this._animationDone.complete();\n  }\n\n  getColorString(e: ColorEvent): string {\n    return {\n      hex: e.color.rgb.a === 1 ? e.color.hex : new TinyColor(e.color.rgb).toHex8String(),\n      rgb: new TinyColor(e.color.rgb).toRgbString(),\n      hsl: new TinyColor(e.color.hsl).toHslString(),\n      hsv: new TinyColor(e.color.hsv).toHsvString(),\n    }[this.picker.format];\n  }\n}\n\n@Component({\n  selector: 'mtx-colorpicker',\n  template: '',\n  exportAs: 'mtxColorpicker',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class MtxColorpicker implements OnChanges, OnDestroy {\n  private _scrollStrategy: () => ScrollStrategy;\n  private _inputStateChanges = Subscription.EMPTY;\n\n  /** Custom colorpicker content set by the consumer. */\n  @Input() content!: TemplateRef<any>;\n\n  /** Emits when the colorpicker has been opened. */\n  @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Emits when the colorpicker has been closed. */\n  @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n  @Input() get disabled() {\n    return this._disabled === undefined && this.pickerInput\n      ? this.pickerInput.disabled\n      : !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this._disabled) {\n      this._disabled = newValue;\n      this._disabledChange.next(newValue);\n    }\n  }\n  private _disabled!: boolean;\n\n  /** Preferred position of the colorpicker in the X axis. */\n  @Input()\n  xPosition: ColorpickerDropdownPositionX = 'start';\n\n  /** Preferred position of the colorpicker in the Y axis. */\n  @Input()\n  yPosition: ColorpickerDropdownPositionY = 'below';\n\n  /**\n   * Whether to restore focus to the previously-focused element when the panel is closed.\n   * Note that automatic focus restoration is an accessibility feature and it is recommended that\n   * you provide your own equivalent, if you decide to turn it off.\n   */\n  @Input()\n  get restoreFocus(): boolean {\n    return this._restoreFocus;\n  }\n  set restoreFocus(value: boolean) {\n    this._restoreFocus = coerceBooleanProperty(value);\n  }\n  private _restoreFocus = true;\n\n  /** Whether the panel is open. */\n  @Input()\n  get opened(): boolean {\n    return this._opened;\n  }\n  set opened(value: boolean) {\n    coerceBooleanProperty(value) ? this.open() : this.close();\n  }\n  private _opened = false;\n\n  /** The id for the colorpicker panel. */\n  id = `mtx-colorpicker-${colorpickerUid++}`;\n\n  /** Color palette to use on the colorpicker's panel. */\n  @Input()\n  get color(): ThemePalette {\n    return this._color || (this.pickerInput ? this.pickerInput.getThemePalette() : undefined);\n  }\n  set color(value: ThemePalette) {\n    this._color = value;\n  }\n  private _color: ThemePalette;\n\n  /** The input and output color format. */\n  @Input()\n  get format(): ColorFormat {\n    return this._format || this.pickerInput.format;\n  }\n  set format(value: ColorFormat) {\n    this._format = value;\n  }\n  _format!: ColorFormat;\n\n  /** The currently selected color. */\n  get selected(): string {\n    return this._validSelected;\n  }\n  set selected(value: string) {\n    this._validSelected = value;\n  }\n  private _validSelected: string = '';\n\n  /** A reference to the overlay when the picker is opened as a popup. */\n  private _overlayRef!: OverlayRef | null;\n\n  /** Reference to the component instance rendered in the overlay. */\n  private _componentRef!: ComponentRef<MtxColorpickerContent> | null;\n\n  /** The element that was focused before the colorpicker was opened. */\n  private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n  /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\n  private _backdropHarnessClass = `${this.id}-backdrop`;\n\n  /** The input element this colorpicker is associated with. */\n  pickerInput!: MtxColorpickerInput;\n\n  /** Emits when the datepicker is disabled. */\n  readonly _disabledChange = new Subject<boolean>();\n\n  /** Emits new selected color when selected color changes. */\n  readonly _selectedChanged = new Subject<string>();\n\n  constructor(\n    private _overlay: Overlay,\n    private _ngZone: NgZone,\n    private _viewContainerRef: ViewContainerRef,\n    @Inject(MTX_COLORPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n    @Optional() private _dir: Directionality,\n    @Optional() @Inject(DOCUMENT) private _document: any\n  ) {\n    this._scrollStrategy = scrollStrategy;\n  }\n\n  ngOnChanges() {}\n\n  ngOnDestroy() {\n    this._destroyOverlay();\n    this.close();\n    this._inputStateChanges.unsubscribe();\n    this._disabledChange.complete();\n  }\n\n  /** Selects the given color. */\n  select(nextVal: string): void {\n    const oldValue = this.selected;\n    this.selected = nextVal;\n\n    // TODO: `nextVal` should compare with `oldValue`\n    this._selectedChanged.next(nextVal);\n  }\n\n  /**\n   * Register an input with this colorpicker.\n   * @param input The colorpicker input to register with this colorpicker.\n   */\n  registerInput(input: MtxColorpickerInput): void {\n    if (this.pickerInput) {\n      throw Error('A Colorpicker can only be associated with a single input.');\n    }\n    this.pickerInput = input;\n    this._inputStateChanges = input._valueChange.subscribe(\n      (value: string) => (this.selected = value)\n    );\n  }\n\n  /** Open the panel. */\n  open(): void {\n    if (this._opened || this.disabled) {\n      return;\n    }\n    if (!this.pickerInput) {\n      throw Error('Attempted to open an Colorpicker with no associated input.');\n    }\n\n    if (this._document) {\n      this._focusedElementBeforeOpen = this._document.activeElement;\n    }\n\n    this._openOverlay();\n    this._opened = true;\n    this.openedStream.emit();\n  }\n\n  /** Close the panel. */\n  close(): void {\n    if (!this._opened) {\n      return;\n    }\n\n    if (this._componentRef) {\n      const instance = this._componentRef.instance;\n      instance._startExitAnimation();\n      instance._animationDone.pipe(take(1)).subscribe(() => this._destroyOverlay());\n    }\n\n    const completeClose = () => {\n      // The `_opened` could've been reset already if\n      // we got two events in quick succession.\n      if (this._opened) {\n        this._opened = false;\n        this.closedStream.emit();\n        this._focusedElementBeforeOpen = null;\n      }\n    };\n\n    if (\n      this._restoreFocus &&\n      this._focusedElementBeforeOpen &&\n      typeof this._focusedElementBeforeOpen.focus === 'function'\n    ) {\n      // Because IE moves focus asynchronously, we can't count on it being restored before we've\n      // marked the colorpicker as closed. If the event fires out of sequence and the element that\n      // we're refocusing opens the colorpicker on focus, the user could be stuck with not being\n      // able to close the panel at all. We work around it by making the logic, that marks\n      // the colorpicker as closed, async as well.\n      this._focusedElementBeforeOpen.focus();\n      setTimeout(completeClose);\n    } else {\n      completeClose();\n    }\n  }\n\n  /** Forwards relevant values from the colorpicker to the colorpicker content inside the overlay. */\n  protected _forwardContentValues(instance: MtxColorpickerContent) {\n    instance.picker = this;\n    instance.color = this.color;\n  }\n\n  /** Open the colopicker as a popup. */\n  private _openOverlay(): void {\n    this._destroyOverlay();\n\n    const labelId = this.pickerInput.getOverlayLabelId();\n    const portal = new ComponentPortal<MtxColorpickerContent>(\n      MtxColorpickerContent,\n      this._viewContainerRef\n    );\n    const overlayRef = (this._overlayRef = this._overlay.create(\n      new OverlayConfig({\n        positionStrategy: this._getDropdownStrategy(),\n        hasBackdrop: true,\n        backdropClass: ['mat-overlay-transparent-backdrop', this._backdropHarnessClass],\n        direction: this._dir,\n        scrollStrategy: this._scrollStrategy(),\n        panelClass: `mtx-colorpicker-popup`,\n      })\n    ));\n    const overlayElement = overlayRef.overlayElement;\n    overlayElement.setAttribute('role', 'dialog');\n\n    if (labelId) {\n      overlayElement.setAttribute('aria-labelledby', labelId);\n    }\n\n    this._getCloseStream(overlayRef).subscribe(event => {\n      if (event) {\n        event.preventDefault();\n      }\n      this.close();\n    });\n\n    this._componentRef = overlayRef.attach(portal);\n    this._forwardContentValues(this._componentRef.instance);\n\n    // Update the position once the panel has rendered. Only relevant in dropdown mode.\n    this._ngZone.onStable.pipe(take(1)).subscribe(() => overlayRef.updatePosition());\n  }\n\n  /** Destroys the current overlay. */\n  private _destroyOverlay() {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = this._componentRef = null;\n    }\n  }\n\n  /** Gets a position strategy that will open the panel as a dropdown. */\n  private _getDropdownStrategy() {\n    const strategy = this._overlay\n      .position()\n      .flexibleConnectedTo(this.pickerInput.getConnectedOverlayOrigin())\n      .withTransformOriginOn('.mtx-colorpicker-content')\n      .withFlexibleDimensions(false)\n      .withViewportMargin(8)\n      .withLockedPosition();\n\n    return this._setConnectedPositions(strategy);\n  }\n\n  /** Sets the positions of the colorpicker in dropdown mode based on the current configuration. */\n  private _setConnectedPositions(strategy: FlexibleConnectedPositionStrategy) {\n    const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n    const secondaryX = primaryX === 'start' ? 'end' : 'start';\n    const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n    const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n\n    return strategy.withPositions([\n      {\n        originX: primaryX,\n        originY: secondaryY,\n        overlayX: primaryX,\n        overlayY: primaryY,\n      },\n      {\n        originX: primaryX,\n        originY: primaryY,\n        overlayX: primaryX,\n        overlayY: secondaryY,\n      },\n      {\n        originX: secondaryX,\n        originY: secondaryY,\n        overlayX: secondaryX,\n        overlayY: primaryY,\n      },\n      {\n        originX: secondaryX,\n        originY: primaryY,\n        overlayX: secondaryX,\n        overlayY: secondaryY,\n      },\n    ]);\n  }\n\n  /** Gets an observable that will emit when the overlay is supposed to be closed. */\n  private _getCloseStream(overlayRef: OverlayRef) {\n    return merge(\n      overlayRef.backdropClick(),\n      overlayRef.detachments(),\n      overlayRef.keydownEvents().pipe(\n        filter(event => {\n          // Closing on alt + up is only valid when there's an input associated with the colorpicker.\n          return (\n            (event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n            (this.pickerInput && hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW)\n          );\n        })\n      )\n    );\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n","<ng-template [ngIf]=\"picker.content\" [ngIfElse]=\"default\"\n             [ngTemplateOutlet]=\"picker.content\">\n</ng-template>\n<ng-template #default>\n  <color-chrome [color]=\"picker.selected\"\n                (onChangeComplete)=\"picker.select(getColorString($event))\">\n  </color-chrome>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MtxColorpickerInput } from './colorpicker-input';\nimport { MtxColorpickerToggle, MtxColorpickerToggleIcon } from './colorpicker-toggle';\nimport {\n  MtxColorpicker,\n  MtxColorpickerContent,\n  MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './colorpicker';\n\nimport { ColorChromeModule } from 'ngx-color/chrome';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    OverlayModule,\n    A11yModule,\n    PortalModule,\n    MatButtonModule,\n    ColorChromeModule,\n  ],\n  exports: [\n    MtxColorpicker,\n    MtxColorpickerContent,\n    MtxColorpickerInput,\n    MtxColorpickerToggle,\n    MtxColorpickerToggleIcon,\n  ],\n  declarations: [\n    MtxColorpicker,\n    MtxColorpickerContent,\n    MtxColorpickerInput,\n    MtxColorpickerToggle,\n    MtxColorpickerToggleIcon,\n  ],\n  providers: [MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class MtxColorpickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;MA4Ba,wBAAwB,CAAA;AAInC,IAAA,WAAA;;IAES,MAA2B;;IAE3B,aAA0B,EAAA;AAF1B,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAqB;AAE3B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAa;QAEjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAChC;AACF,CAAA;AAEY,MAAA,8BAA8B,GAAQ;AACjD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,IAAA,KAAK,EAAE,IAAI;EACX;AAEW,MAAA,0BAA0B,GAAQ;AAC7C,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,IAAA,KAAK,EAAE,IAAI;EACX;MAuBW,mBAAmB,CAAA;IAgG9B,WACU,CAAA,WAAyC,EAC7B,UAAwB,EAAA;AADpC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAA8B;AAC7B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAc;;AAhCrC,QAAA,IAAM,CAAA,MAAA,GAAgB,KAAK,CAAC;;AAGlB,QAAA,IAAA,CAAA,WAAW,GAC5B,IAAI,YAAY,EAA4B,CAAC;;AAG5B,QAAA,IAAA,CAAA,UAAU,GAC3B,IAAI,YAAY,EAA4B,CAAC;;AAG/C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAW,CAAC;;AAG9C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAiB,CAAC;AAEjD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAK,GAAG,CAAC;AAEtB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAK,GAAG,CAAC;AAEtB,QAAA,IAAA,CAAA,YAAY,GAAyB,MAAK,GAAG,CAAC;AAE9C,QAAA,IAAA,CAAA,mBAAmB,GAAG,YAAY,CAAC,KAAK,CAAC;;QAGzC,IAAA,CAAA,UAAU,GAAuB,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;;AAGxD,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;KAK5B;IA/FJ,IACI,cAAc,CAAC,KAAqB,EAAA;QACtC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;AAEvC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAgB,KAAI;AACtF,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;AACzF,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;AAC5F,SAAC,CAAC,CAAC;KACJ;;AAID,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAE/C,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC,SAAA;;;;;QAMD,IAAI,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,EAAE;;;;YAInD,OAAO,CAAC,IAAI,EAAE,CAAC;AAChB,SAAA;KACF;;AAID,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAEzB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;IAuCD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;KACjC;AAED,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACtC,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;KAC9B;;AAGD,IAAA,QAAQ,CAAC,CAAkB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACpD;AAED;;;AAGG;IACH,4BAA4B,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;KACzC;AAED;;;AAGG;IACH,yBAAyB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;KACzF;;IAGD,iBAAiB,GAAA;QACf,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;AACrC,SAAA;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;KACvE;;AAGD,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;;AAGD,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KACxB;;AAGD,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB;;AAGD,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC5B;AAED,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,CAAC;AAEpE,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE;AAC9E,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,SAAA;KACF;;IAGD,OAAO,GAAA;;QAEL,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAED,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,MAAM,SAAS,GAAG,KAAK,CAAC;AAExB,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;KAC1F;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;KAC3F;;IAGD,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;KAC5D;;AAGO,IAAA,YAAY,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;KAC3D;;mIA7MU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAjBnB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,gBAAA,EAAA,yCAAA,EAAA,UAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EAAA;QACT,8BAA8B;QAC9B,0BAA0B;AAC1B,QAAA,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,mBAAmB,EAAE;KACxE,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAaU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAnB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,SAAS,EAAE;wBACT,8BAA8B;wBAC9B,0BAA0B;AAC1B,wBAAA,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,qBAAqB,EAAE;AACxE,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,uBAAuB;AAChC,wBAAA,sBAAsB,EAAE,2BAA2B;AACnD,wBAAA,kBAAkB,EAAE,yCAAyC;AAC7D,wBAAA,YAAY,EAAE,UAAU;AACxB,wBAAA,SAAS,EAAE,+BAA+B;AAC1C,wBAAA,UAAU,EAAE,aAAa;AACzB,wBAAA,QAAQ,EAAE,WAAW;AACrB,wBAAA,WAAW,EAAE,oBAAoB;AAClC,qBAAA;AACD,oBAAA,QAAQ,EAAE,qBAAqB;iBAChC,CAAA;;;8BAmGI,QAAQ;;yBA7FP,cAAc,EAAA,CAAA;sBADjB,KAAK;gBAsBF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBA4BF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAcG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAGa,WAAW,EAAA,CAAA;sBAA7B,MAAM;gBAIY,UAAU,EAAA,CAAA;sBAA5B,MAAM;;;AChIT;MAIa,wBAAwB,CAAA;;wIAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4HAAxB,wBAAwB,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;iBACvC,CAAA;;MAqBY,oBAAoB,CAAA;AAgC/B,IAAA,WAAA,CAAoB,kBAAqC,EAAA;AAArC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;AA/BjD,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC;KA+BkB;;AAtB7D,IAAA,IACI,QAAQ,GAAA;QACV,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACzC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC7B,SAAA;AAED,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC/C;AAcD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC3B,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KAClC;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAED,IAAA,IAAI,CAAC,KAAY,EAAA;QACf,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,eAAe,EAAE,CAAC;AACzB,SAAA;KACF;IAEO,kBAAkB,GAAA;AACxB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC;QACxE,MAAM,aAAa,GACjB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC;AAC1F,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM;AACnC,cAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;cACzD,EAAE,EAAE,CAAC;AAET,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,cAAc,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,MACvF,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CACvC,CAAC;KACH;;oIAnEU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wHAApB,oBAAoB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,qCAAA,EAAA,yBAAA,EAAA,kBAAA,EAAA,uCAAA,EAAA,gBAAA,EAAA,qCAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA2BjB,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvExC,0qCAsBA,EAAA,MAAA,EAAA,CAAA,2uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDsBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAG5B,IAAA,EAAA;AACJ,wBAAA,OAAO,EAAE,wBAAwB;;;AAGjC,wBAAA,iBAAiB,EAAE,sBAAsB;AACzC,wBAAA,uCAAuC,EAAE,yBAAyB;AAClE,wBAAA,oBAAoB,EAAE,qCAAqC;AAC3D,wBAAA,kBAAkB,EAAE,mCAAmC;AACvD,wBAAA,SAAS,EAAE,iBAAiB;qBAC7B,EACS,QAAA,EAAA,sBAAsB,iBACjB,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0qCAAA,EAAA,MAAA,EAAA,CAAA,2uBAAA,CAAA,EAAA,CAAA;wGAMjC,MAAM,EAAA,CAAA;sBAAnB,KAAK;uBAAC,KAAK,CAAA;gBAGH,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAIF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAcG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAGkC,WAAW,EAAA,CAAA;sBAAlD,YAAY;uBAAC,wBAAwB,CAAA;gBAGjB,OAAO,EAAA,CAAA;sBAA3B,SAAS;uBAAC,QAAQ,CAAA;;;AEjErB;;;AAGG;AACU,MAAA,wBAAwB,GAEjC;;AAEF,IAAA,cAAc,EAAE,OAAO,CAAC,gBAAgB,EAAE;QACxC,UAAU,CACR,wBAAwB,EACxB,OAAO,CACL,kCAAkC,EAClC,SAAS,CAAC;YACR,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;YACjD,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AAChD,SAAA,CAAC,CACH,CACF;AACD,QAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACxE,CAAC;;;ACYJ;AACA,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB;MACa,+BAA+B,GAAG,IAAI,cAAc,CAC/D,iCAAiC,EACjC;AAEI,SAAU,uCAAuC,CAAC,OAAgB,EAAA;IACtE,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;AACrD,CAAC;AAQY,MAAA,gDAAgD,GAAG;AAC9D,IAAA,OAAO,EAAE,+BAA+B;IACxC,IAAI,EAAE,CAAC,OAAO,CAAC;AACf,IAAA,UAAU,EAAE,uCAAuC;EACnD;AAEF;AACA;AACA,MAAM,0BAA0B,GAAG,UAAU,CAC3C,MAAA;AACE,IAAA,WAAA,CAAmB,WAAuB,EAAA;AAAvB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;KAAI;AAC/C,CAAA,CACF,CAAC;AAiBI,MAAO,qBACX,SAAQ,0BAA0B,CAAA;IAWlC,WAAY,CAAA,UAAsB,EAAU,kBAAqC,EAAA;QAC/E,KAAK,CAAC,UAAU,CAAC,CAAC;AADwB,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAmB;;AALjF,QAAA,IAAe,CAAA,eAAA,GAA8B,gBAAgB,CAAC;;AAGrD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ,CAAC;KAI7C;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;AAC9B,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KAChC;AAED,IAAA,cAAc,CAAC,CAAa,EAAA;QAC1B,OAAO;AACL,YAAA,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE;AAClF,YAAA,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AAC7C,YAAA,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AAC7C,YAAA,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AAC9C,SAAA,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACvB;;qIAhCU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,mBAAA,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,kUCxFlC,6TAQA,EAAA,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,UAAA,ED0Ec,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAM1C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAG7B,IAAA,EAAA;AACJ,wBAAA,OAAO,EAAE,yBAAyB;AAClC,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,wBAAwB,EAAE,uBAAuB;AAClD,qBAAA,EAAA,UAAA,EACW,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAAA,QAAA,EAC3C,uBAAuB,EAClB,aAAA,EAAA,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACvC,MAAA,EAAA,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,6TAAA,EAAA,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA,CAAA;;MA4CN,cAAc,CAAA;IAiHzB,WACU,CAAA,QAAiB,EACjB,OAAe,EACf,iBAAmC,EACF,cAAmB,EACxC,IAAoB,EACF,SAAc,EAAA;AAL5C,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AACjB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;AACf,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;AAEvB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;AACF,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAK;AArH9C,QAAA,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC;;AAM9B,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;;AAG5D,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;;AAmB9E,QAAA,IAAS,CAAA,SAAA,GAAiC,OAAO,CAAC;;AAIlD,QAAA,IAAS,CAAA,SAAA,GAAiC,OAAO,CAAC;AAc1C,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AAUrB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;AAGxB,QAAA,IAAA,CAAA,EAAE,GAAG,mBAAmB,cAAc,EAAE,EAAE,CAAC;AA6BnC,QAAA,IAAc,CAAA,cAAA,GAAW,EAAE,CAAC;;AAS5B,QAAA,IAAyB,CAAA,yBAAA,GAAuB,IAAI,CAAC;;QAGrD,IAAA,CAAA,qBAAqB,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,WAAW,CAAC;;AAM7C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAW,CAAC;;AAGzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAU,CAAC;AAUhD,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;KACvC;AA7GD,IAAA,IAAa,QAAQ,GAAA;QACnB,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW;AACrD,cAAE,IAAI,CAAC,WAAW,CAAC,QAAQ;AAC3B,cAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KACtB;IACD,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAE9C,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;AAC/B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC,SAAA;KACF;AAWD;;;;AAIG;AACH,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAI,YAAY,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACnD;;AAID,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IACD,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,qBAAqB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;KAC3D;;AAOD,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC,CAAC;KAC3F;IACD,IAAI,KAAK,CAAC,KAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;;AAID,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;KAChD;IACD,IAAI,MAAM,CAAC,KAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;;AAID,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IACD,IAAI,QAAQ,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;AAmCD,IAAA,WAAW,MAAK;IAEhB,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;KACjC;;AAGD,IAAA,MAAM,CAAC,OAAe,EAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;;AAGxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrC;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,KAA0B,EAAA;QACtC,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,KAAK,CAAC,2DAA2D,CAAC,CAAC;AAC1E,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CACpD,CAAC,KAAa,MAAM,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAC3C,CAAC;KACH;;IAGD,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,MAAM,KAAK,CAAC,4DAA4D,CAAC,CAAC;AAC3E,SAAA;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC/D,SAAA;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC7C,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YAC/B,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC/E,SAAA;QAED,MAAM,aAAa,GAAG,MAAK;;;YAGzB,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,gBAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;AACvC,aAAA;AACH,SAAC,CAAC;QAEF,IACE,IAAI,CAAC,aAAa;AAClB,YAAA,IAAI,CAAC,yBAAyB;AAC9B,YAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,KAAK,UAAU,EAC1D;;;;;;AAMA,YAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;YACvC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC3B,SAAA;AAAM,aAAA;AACL,YAAA,aAAa,EAAE,CAAC;AACjB,SAAA;KACF;;AAGS,IAAA,qBAAqB,CAAC,QAA+B,EAAA;AAC7D,QAAA,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,QAAA,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;KAC7B;;IAGO,YAAY,GAAA;QAClB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,eAAe,CAChC,qBAAqB,EACrB,IAAI,CAAC,iBAAiB,CACvB,CAAC;AACF,QAAA,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACzD,IAAI,aAAa,CAAC;AAChB,YAAA,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,EAAE;AAC7C,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,CAAC,kCAAkC,EAAE,IAAI,CAAC,qBAAqB,CAAC;YAC/E,SAAS,EAAE,IAAI,CAAC,IAAI;AACpB,YAAA,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE;AACtC,YAAA,UAAU,EAAE,CAAuB,qBAAA,CAAA;SACpC,CAAC,CACH,CAAC,CAAC;AACH,QAAA,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;AACjD,QAAA,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE9C,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,cAAc,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;AACzD,SAAA;QAED,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACjD,YAAA,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,aAAA;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;QAGxD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;KAClF;;IAGO,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9C,SAAA;KACF;;IAGO,oBAAoB,GAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC3B,aAAA,QAAQ,EAAE;AACV,aAAA,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAAC;aACjE,qBAAqB,CAAC,0BAA0B,CAAC;aACjD,sBAAsB,CAAC,KAAK,CAAC;aAC7B,kBAAkB,CAAC,CAAC,CAAC;AACrB,aAAA,kBAAkB,EAAE,CAAC;AAExB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;KAC9C;;AAGO,IAAA,sBAAsB,CAAC,QAA2C,EAAA;AACxE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAC5D,QAAA,MAAM,UAAU,GAAG,QAAQ,KAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AAC1D,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAC/D,QAAA,MAAM,UAAU,GAAG,QAAQ,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;QAEzD,OAAO,QAAQ,CAAC,aAAa,CAAC;AAC5B,YAAA;AACE,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,UAAU;AACrB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,QAAQ,EAAE,UAAU;AACrB,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;;AAGO,IAAA,eAAe,CAAC,UAAsB,EAAA;QAC5C,OAAO,KAAK,CACV,UAAU,CAAC,aAAa,EAAE,EAC1B,UAAU,CAAC,WAAW,EAAE,EACxB,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAC7B,MAAM,CAAC,KAAK,IAAG;;AAEb,YAAA,QACE,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACnD,iBAAC,IAAI,CAAC,WAAW,IAAI,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,EACnF;SACH,CAAC,CACH,CACF,CAAC;KACH;;8HA1UU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAqHf,+BAA+B,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAEnB,QAAQ,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvHnB,mBAAA,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,+VALf,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAKD,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;iBACtC,CAAA;;;8BAsHI,MAAM;+BAAC,+BAA+B,CAAA;;8BACtC,QAAQ;;8BACR,QAAQ;;8BAAI,MAAM;+BAAC,QAAQ,CAAA;;yBAlHrB,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAGY,YAAY,EAAA,CAAA;sBAA7B,MAAM;uBAAC,QAAQ,CAAA;gBAGE,YAAY,EAAA,CAAA;sBAA7B,MAAM;uBAAC,QAAQ,CAAA;gBAEH,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAiBN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAKN,SAAS,EAAA,CAAA;sBADR,KAAK;gBASF,YAAY,EAAA,CAAA;sBADf,KAAK;gBAWF,MAAM,EAAA,CAAA;sBADT,KAAK;gBAcF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAWF,MAAM,EAAA,CAAA;sBADT,KAAK;;;MEnKK,oBAAoB,CAAA;;oIAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,mBAAA,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAR7B,cAAc;QACd,qBAAqB;QACrB,mBAAmB;QACnB,oBAAoB;AACpB,QAAA,wBAAwB,aAnBxB,YAAY;QACZ,aAAa;QACb,UAAU;QACV,YAAY;QACZ,eAAe;AACf,QAAA,iBAAiB,aAGjB,cAAc;QACd,qBAAqB;QACrB,mBAAmB;QACnB,oBAAoB;QACpB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAWf,mBAAA,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAFpB,SAAA,EAAA,CAAC,gDAAgD,CAAC,YArB3D,YAAY;QACZ,aAAa;QACb,UAAU;QACV,YAAY;QACZ,eAAe;QACf,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FAkBR,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAzBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,UAAU;wBACV,YAAY;wBACZ,eAAe;wBACf,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,qBAAqB;wBACrB,mBAAmB;wBACnB,oBAAoB;wBACpB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,cAAc;wBACd,qBAAqB;wBACrB,mBAAmB;wBACnB,oBAAoB;wBACpB,wBAAwB;AACzB,qBAAA;oBACD,SAAS,EAAE,CAAC,gDAAgD,CAAC;iBAC9D,CAAA;;;ACxCD;;AAEG;;;;"}