{"version":3,"file":"slide-toggle.mjs","sources":["../../../../../../src/material/slide-toggle/slide-toggle-config.ts","../../../../../../src/material/slide-toggle/slide-toggle.ts","../../../../../../src/material/slide-toggle/slide-toggle.html","../../../../../../src/material/slide-toggle/slide-toggle-required-validator.ts","../../../../../../src/material/slide-toggle/slide-toggle-module.ts","../../../../../../src/material/slide-toggle/public-api.ts","../../../../../../src/material/slide-toggle/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {InjectionToken} from '@angular/core';\nimport {ThemePalette} from '@angular/material/core';\n\n\n/** Default `mat-slide-toggle` options that can be overridden. */\nexport interface MatSlideToggleDefaultOptions {\n  /** Whether toggle action triggers value changes in slide toggle. */\n  disableToggleValue?: boolean;\n\n  /** Default color for slide toggles. */\n  color?: ThemePalette;\n}\n\n/** Injection token to be used to override the default options for `mat-slide-toggle`. */\nexport const MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS =\n  new InjectionToken<MatSlideToggleDefaultOptions>('mat-slide-toggle-default-options', {\n    providedIn: 'root',\n    factory: () => ({disableToggleValue: false})\n  });\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion';\nimport {\n  AfterContentInit,\n  Attribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnDestroy,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n  Optional,\n  Inject,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n  CanColor,\n  CanDisable,\n  CanDisableRipple,\n  HasTabIndex,\n  mixinColor,\n  mixinDisabled,\n  mixinDisableRipple,\n  mixinTabIndex,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {\n  MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS,\n  MatSlideToggleDefaultOptions\n} from './slide-toggle-config';\n\n// Increasing integer for generating unique ids for slide-toggle components.\nlet nextUniqueId = 0;\n\n/** @docs-private */\nexport const MAT_SLIDE_TOGGLE_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => MatSlideToggle),\n  multi: true\n};\n\n/** Change event object emitted by a MatSlideToggle. */\nexport class MatSlideToggleChange {\n  constructor(\n    /** The source MatSlideToggle of the event. */\n    public source: MatSlideToggle,\n    /** The new `checked` value of the MatSlideToggle. */\n    public checked: boolean) { }\n}\n\n// Boilerplate for applying mixins to MatSlideToggle.\n/** @docs-private */\nconst _MatSlideToggleBase =\n  mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(class {\n    constructor(public _elementRef: ElementRef) {}\n  }))));\n\n/** Represents a slidable \"switch\" toggle that can be moved between on and off. */\n@Component({\n  selector: 'mat-slide-toggle',\n  exportAs: 'matSlideToggle',\n  host: {\n    'class': 'mat-slide-toggle',\n    '[id]': 'id',\n    // Needs to be `-1` so it can still receive programmatic focus.\n    '[attr.tabindex]': 'disabled ? null : -1',\n    '[attr.aria-label]': 'null',\n    '[attr.aria-labelledby]': 'null',\n    '[class.mat-checked]': 'checked',\n    '[class.mat-disabled]': 'disabled',\n    '[class.mat-slide-toggle-label-before]': 'labelPosition == \"before\"',\n    '[class._mat-animation-noopable]': '_noopAnimations',\n  },\n  templateUrl: 'slide-toggle.html',\n  styleUrls: ['slide-toggle.css'],\n  providers: [MAT_SLIDE_TOGGLE_VALUE_ACCESSOR],\n  inputs: ['disabled', 'disableRipple', 'color', 'tabIndex'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatSlideToggle extends _MatSlideToggleBase implements OnDestroy, AfterContentInit,\n                                                                   ControlValueAccessor,\n                                                                   CanDisable, CanColor,\n                                                                   HasTabIndex,\n                                                                   CanDisableRipple {\n  private _onChange = (_: any) => {};\n  private _onTouched = () => {};\n\n  private _uniqueId: string = `mat-slide-toggle-${++nextUniqueId}`;\n  private _required: boolean = false;\n  private _checked: boolean = false;\n\n  /** Whether noop animations are enabled. */\n  _noopAnimations: boolean;\n\n  /** Reference to the thumb HTMLElement. */\n  @ViewChild('thumbContainer') _thumbEl: ElementRef;\n\n  /** Reference to the thumb bar HTMLElement. */\n  @ViewChild('toggleBar') _thumbBarEl: ElementRef;\n\n  /** Name value will be applied to the input element if present. */\n  @Input() name: string | null = null;\n\n  /** A unique id for the slide-toggle input. If none is supplied, it will be auto-generated. */\n  @Input() id: string = this._uniqueId;\n\n  /** Whether the label should appear after or before the slide-toggle. Defaults to 'after'. */\n  @Input() labelPosition: 'before' | 'after' = 'after';\n\n  /** Used to set the aria-label attribute on the underlying input element. */\n  @Input('aria-label') ariaLabel: string | null = null;\n\n  /** Used to set the aria-labelledby attribute on the underlying input element. */\n  @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n  /** Used to set the aria-describedby attribute on the underlying input element. */\n  @Input('aria-describedby') ariaDescribedby: string;\n\n  /** Whether the slide-toggle is required. */\n  @Input()\n  get required(): boolean { return this._required; }\n  set required(value) { this._required = coerceBooleanProperty(value); }\n\n  /** Whether the slide-toggle element is checked or not. */\n  @Input()\n  get checked(): boolean { return this._checked; }\n  set checked(value) {\n    this._checked = coerceBooleanProperty(value);\n    this._changeDetectorRef.markForCheck();\n  }\n  /** An event will be dispatched each time the slide-toggle changes its value. */\n  @Output() readonly change: EventEmitter<MatSlideToggleChange> =\n      new EventEmitter<MatSlideToggleChange>();\n\n  /**\n   * An event will be dispatched each time the slide-toggle input is toggled.\n   * This event is always emitted when the user toggles the slide toggle, but this does not mean\n   * the slide toggle's value has changed.\n   */\n  @Output() readonly toggleChange: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Returns the unique id for the visual hidden input. */\n  get inputId(): string { return `${this.id || this._uniqueId}-input`; }\n\n  /** Reference to the underlying input element. */\n  @ViewChild('input') _inputElement: ElementRef<HTMLInputElement>;\n\n  constructor(elementRef: ElementRef,\n              private _focusMonitor: FocusMonitor,\n              private _changeDetectorRef: ChangeDetectorRef,\n              @Attribute('tabindex') tabIndex: string,\n              @Inject(MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS)\n                  public defaults: MatSlideToggleDefaultOptions,\n              @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n    super(elementRef);\n    this.tabIndex = parseInt(tabIndex) || 0;\n    this.color = this.defaultColor = defaults.color || 'accent';\n    this._noopAnimations = animationMode === 'NoopAnimations';\n  }\n\n  ngAfterContentInit() {\n    this._focusMonitor\n      .monitor(this._elementRef, true)\n      .subscribe(focusOrigin => {\n        // Only forward focus manually when it was received programmatically or through the\n        // keyboard. We should not do this for mouse/touch focus for two reasons:\n        // 1. It can prevent clicks from landing in Chrome (see #18269).\n        // 2. They're already handled by the wrapping `label` element.\n        if (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n          this._inputElement.nativeElement.focus();\n        } else if (!focusOrigin) {\n          // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n          // Angular does not expect events to be raised during change detection, so any state\n          // change (such as a form control's 'ng-touched') will cause a changed-after-checked\n          // error. See https://github.com/angular/angular/issues/17793. To work around this,\n          // we defer telling the form control it has been touched until the next tick.\n          Promise.resolve().then(() => this._onTouched());\n        }\n      });\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef);\n  }\n\n  /** Method being called whenever the underlying input emits a change event. */\n  _onChangeEvent(event: Event) {\n    // We always have to stop propagation on the change event.\n    // Otherwise the change event, from the input element, will bubble up and\n    // emit its event object to the component's `change` output.\n    event.stopPropagation();\n    this.toggleChange.emit();\n\n    // When the slide toggle's config disables toggle change event by setting\n    // `disableToggleValue: true`, the slide toggle's value does not change, and the\n    // checked state of the underlying input needs to be changed back.\n    if (this.defaults.disableToggleValue) {\n      this._inputElement.nativeElement.checked = this.checked;\n      return;\n    }\n\n    // Sync the value from the underlying input element with the component instance.\n    this.checked = this._inputElement.nativeElement.checked;\n\n    // Emit our custom change event only if the underlying input emitted one. This ensures that\n    // there is no change event, when the checked state changes programmatically.\n    this._emitChangeEvent();\n  }\n\n  /** Method being called whenever the slide-toggle has been clicked. */\n  _onInputClick(event: Event) {\n    // We have to stop propagation for click events on the visual hidden input element.\n    // By default, when a user clicks on a label element, a generated click event will be\n    // dispatched on the associated input element. Since we are using a label element as our\n    // root container, the click event on the `slide-toggle` will be executed twice.\n    // The real click event will bubble up, and the generated click event also tries to bubble up.\n    // This will lead to multiple click events.\n    // Preventing bubbling for the second event will solve that issue.\n    event.stopPropagation();\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  writeValue(value: any): void {\n    this.checked = !!value;\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  registerOnChange(fn: any): void {\n    this._onChange = fn;\n  }\n\n  /** Implemented as part of ControlValueAccessor. */\n  registerOnTouched(fn: any): void {\n    this._onTouched = fn;\n  }\n\n  /** Implemented as a part of ControlValueAccessor. */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Focuses the slide-toggle. */\n  focus(options?: FocusOptions, origin?: FocusOrigin): void {\n    if (origin) {\n      this._focusMonitor.focusVia(this._inputElement, origin, options);\n    } else {\n      this._inputElement.nativeElement.focus(options);\n    }\n  }\n\n  /** Toggles the checked state of the slide-toggle. */\n  toggle(): void {\n    this.checked = !this.checked;\n    this._onChange(this.checked);\n  }\n\n  /**\n   * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n   */\n  private _emitChangeEvent() {\n    this._onChange(this.checked);\n    this.change.emit(new MatSlideToggleChange(this, this.checked));\n  }\n\n  /** Method being called whenever the label text changes. */\n  _onLabelTextChange() {\n    // Since the event of the `cdkObserveContent` directive runs outside of the zone, the\n    // slide-toggle component will be only marked for check, but no actual change detection runs\n    // automatically. Instead of going back into the zone in order to trigger a change detection\n    // which causes *all* components to be checked (if explicitly marked or not using OnPush),\n    // we only trigger an explicit change detection for the slide-toggle view and its children.\n    this._changeDetectorRef.detectChanges();\n  }\n\n  static ngAcceptInputType_required: BooleanInput;\n  static ngAcceptInputType_checked: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_disableRipple: BooleanInput;\n  static ngAcceptInputType_tabIndex: NumberInput;\n}\n","<label [attr.for]=\"inputId\" class=\"mat-slide-toggle-label\" #label>\n  <div #toggleBar class=\"mat-slide-toggle-bar\"\n       [class.mat-slide-toggle-bar-no-side-margin]=\"!labelContent.textContent || !labelContent.textContent.trim()\">\n\n    <input #input class=\"mat-slide-toggle-input cdk-visually-hidden\" type=\"checkbox\"\n           role=\"switch\"\n           [id]=\"inputId\"\n           [required]=\"required\"\n           [tabIndex]=\"tabIndex\"\n           [checked]=\"checked\"\n           [disabled]=\"disabled\"\n           [attr.name]=\"name\"\n           [attr.aria-checked]=\"checked.toString()\"\n           [attr.aria-label]=\"ariaLabel\"\n           [attr.aria-labelledby]=\"ariaLabelledby\"\n           [attr.aria-describedby]=\"ariaDescribedby\"\n           (change)=\"_onChangeEvent($event)\"\n           (click)=\"_onInputClick($event)\">\n\n    <div class=\"mat-slide-toggle-thumb-container\" #thumbContainer>\n      <div class=\"mat-slide-toggle-thumb\"></div>\n      <div class=\"mat-slide-toggle-ripple mat-focus-indicator\" mat-ripple\n           [matRippleTrigger]=\"label\"\n           [matRippleDisabled]=\"disableRipple || disabled\"\n           [matRippleCentered]=\"true\"\n           [matRippleRadius]=\"20\"\n           [matRippleAnimation]=\"{enterDuration: _noopAnimations ? 0 : 150}\">\n\n        <div class=\"mat-ripple-element mat-slide-toggle-persistent-ripple\"></div>\n      </div>\n    </div>\n\n  </div>\n\n  <span class=\"mat-slide-toggle-content\" #labelContent (cdkObserveContent)=\"_onLabelTextChange()\">\n    <!-- Add an invisible span so JAWS can read the label -->\n    <span style=\"display:none\">&nbsp;</span>\n    <ng-content></ng-content>\n  </span>\n</label>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  Directive,\n  forwardRef,\n  Provider,\n} from '@angular/core';\nimport {\n  CheckboxRequiredValidator,\n  NG_VALIDATORS,\n} from '@angular/forms';\n\nexport const MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR: Provider = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => MatSlideToggleRequiredValidator),\n  multi: true\n};\n\n/**\n * Validator for Material slide-toggle components with the required attribute in a\n * template-driven form. The default validator for required form controls asserts\n * that the control value is not undefined but that is not appropriate for a slide-toggle\n * where the value is always defined.\n *\n * Required slide-toggle form controls are valid when checked.\n */\n@Directive({\n  selector: `mat-slide-toggle[required][formControlName],\n             mat-slide-toggle[required][formControl], mat-slide-toggle[required][ngModel]`,\n  providers: [MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR],\n})\nexport class MatSlideToggleRequiredValidator extends CheckboxRequiredValidator {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ObserversModule} from '@angular/cdk/observers';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatSlideToggle} from './slide-toggle';\nimport {MatSlideToggleRequiredValidator} from './slide-toggle-required-validator';\n\n/** This module is used by both original and MDC-based slide-toggle implementations. */\n@NgModule({\n  exports: [MatSlideToggleRequiredValidator],\n  declarations: [MatSlideToggleRequiredValidator],\n})\nexport class _MatSlideToggleRequiredValidatorModule {}\n\n@NgModule({\n  imports: [\n    _MatSlideToggleRequiredValidatorModule,\n    MatRippleModule,\n    MatCommonModule,\n    ObserversModule,\n  ],\n  exports: [\n    _MatSlideToggleRequiredValidatorModule,\n    MatSlideToggle,\n    MatCommonModule\n  ],\n  declarations: [MatSlideToggle],\n})\nexport class MatSlideToggleModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './slide-toggle-module';\nexport * from './slide-toggle';\nexport * from './slide-toggle-config';\nexport * from './slide-toggle-required-validator';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;AAAA;;;;;;;AAoBA;MACa,gCAAgC,GAC3C,IAAI,cAAc,CAA+B,kCAAkC,EAAE;IACnF,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,OAAO,EAAC,kBAAkB,EAAE,KAAK,EAAC,CAAC;CAC7C;;ACzBH;;;;;;;AA4CA;AACA,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB;MACa,+BAA+B,GAAQ;IAClD,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;IAC7C,KAAK,EAAE,IAAI;EACX;AAEF;MACa,oBAAoB;IAC/B;;IAES,MAAsB;;IAEtB,OAAgB;QAFhB,WAAM,GAAN,MAAM,CAAgB;QAEtB,YAAO,GAAP,OAAO,CAAS;KAAK;CAC/B;AAED;AACA;AACA,MAAM,mBAAmB,GACvB,aAAa,CAAC,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC;IACxD,YAAmB,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;KAAI;CAC/C,CAAC,CAAC,CAAC,CAAC,CAAC;AAER;MAuBa,cAAe,SAAQ,mBAAmB;IAoErD,YAAY,UAAsB,EACd,aAA2B,EAC3B,kBAAqC,EACtB,QAAgB,EAE5B,QAAsC,EACN,aAAsB;QAC3E,KAAK,CAAC,UAAU,CAAC,CAAC;QANA,kBAAa,GAAb,aAAa,CAAc;QAC3B,uBAAkB,GAAlB,kBAAkB,CAAmB;QAGlC,aAAQ,GAAR,QAAQ,CAA8B;QApErD,cAAS,GAAG,CAAC,CAAM,QAAO,CAAC;QAC3B,eAAU,GAAG,SAAQ,CAAC;QAEtB,cAAS,GAAW,oBAAoB,EAAE,YAAY,EAAE,CAAC;QACzD,cAAS,GAAY,KAAK,CAAC;QAC3B,aAAQ,GAAY,KAAK,CAAC;;QAYzB,SAAI,GAAkB,IAAI,CAAC;;QAG3B,OAAE,GAAW,IAAI,CAAC,SAAS,CAAC;;QAG5B,kBAAa,GAAuB,OAAO,CAAC;;QAGhC,cAAS,GAAkB,IAAI,CAAC;;QAG3B,mBAAc,GAAkB,IAAI,CAAC;;QAkB5C,WAAM,GACrB,IAAI,YAAY,EAAwB,CAAC;;;;;;QAO1B,iBAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAgB7E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC;QAC5D,IAAI,CAAC,eAAe,GAAG,aAAa,KAAK,gBAAgB,CAAC;KAC3D;;IAvCD,IACI,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;IAClD,IAAI,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE;;IAGtE,IACI,OAAO,KAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IAChD,IAAI,OAAO,CAAC,KAAK;QACf,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;IAaD,IAAI,OAAO,KAAa,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,QAAQ,CAAC,EAAE;IAkBtE,kBAAkB;QAChB,IAAI,CAAC,aAAa;aACf,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;aAC/B,SAAS,CAAC,WAAW;;;;;YAKpB,IAAI,WAAW,KAAK,UAAU,IAAI,WAAW,KAAK,SAAS,EAAE;gBAC3D,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAC1C;iBAAM,IAAI,CAAC,WAAW,EAAE;;;;;;gBAMvB,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;aACjD;SACF,CAAC,CAAC;KACN;IAED,WAAW;QACT,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrD;;IAGD,cAAc,CAAC,KAAY;;;;QAIzB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;;;;QAKzB,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;YACpC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACxD,OAAO;SACR;;QAGD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;;;QAIxD,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;;IAGD,aAAa,CAAC,KAAY;;;;;;;;QAQxB,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;;IAGD,UAAU,CAAC,KAAU;QACnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC;KACxB;;IAGD,gBAAgB,CAAC,EAAO;QACtB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;IAGD,iBAAiB,CAAC,EAAO;QACvB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB;;IAGD,gBAAgB,CAAC,UAAmB;QAClC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;IAGD,KAAK,CAAC,OAAsB,EAAE,MAAoB;QAChD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;SAClE;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACjD;KACF;;IAGD,MAAM;QACJ,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC9B;;;;IAKO,gBAAgB;QACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KAChE;;IAGD,kBAAkB;;;;;;QAMhB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KACzC;;mHAlMU,cAAc,yGAuEF,UAAU,8BACb,gCAAgC,aAEpB,qBAAqB;uGA1E1C,cAAc,qzBALd,CAAC,+BAA+B,CAAC,+WCxF9C,gsDAwCA;mGDqDa,cAAc;kBAtB1B,SAAS;+BACE,kBAAkB,YAClB,gBAAgB,QACpB;wBACJ,OAAO,EAAE,kBAAkB;wBAC3B,MAAM,EAAE,IAAI;;wBAEZ,iBAAiB,EAAE,sBAAsB;wBACzC,mBAAmB,EAAE,MAAM;wBAC3B,wBAAwB,EAAE,MAAM;wBAChC,qBAAqB,EAAE,SAAS;wBAChC,sBAAsB,EAAE,UAAU;wBAClC,uCAAuC,EAAE,2BAA2B;wBACpE,iCAAiC,EAAE,iBAAiB;qBACrD,aAGU,CAAC,+BAA+B,CAAC,UACpC,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC,iBAC3C,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM;;0BAyElC,SAAS;2BAAC,UAAU;;0BACpB,MAAM;2BAAC,gCAAgC;;0BAEvC,QAAQ;;0BAAI,MAAM;2BAAC,qBAAqB;4CA1DxB,QAAQ;sBAApC,SAAS;uBAAC,gBAAgB;gBAGH,WAAW;sBAAlC,SAAS;uBAAC,WAAW;gBAGb,IAAI;sBAAZ,KAAK;gBAGG,EAAE;sBAAV,KAAK;gBAGG,aAAa;sBAArB,KAAK;gBAGe,SAAS;sBAA7B,KAAK;uBAAC,YAAY;gBAGO,cAAc;sBAAvC,KAAK;uBAAC,iBAAiB;gBAGG,eAAe;sBAAzC,KAAK;uBAAC,kBAAkB;gBAIrB,QAAQ;sBADX,KAAK;gBAMF,OAAO;sBADV,KAAK;gBAOa,MAAM;sBAAxB,MAAM;gBAQY,YAAY;sBAA9B,MAAM;gBAMa,aAAa;sBAAhC,SAAS;uBAAC,OAAO;;;AE/JpB;;;;;;;MAkBa,mCAAmC,GAAa;IAC3D,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,UAAU,CAAC,MAAM,+BAA+B,CAAC;IAC9D,KAAK,EAAE,IAAI;EACX;AAEF;;;;;;;;MAaa,+BAAgC,SAAQ,yBAAyB;;oIAAjE,+BAA+B;wHAA/B,+BAA+B,kKAF/B,CAAC,mCAAmC,CAAC;mGAErC,+BAA+B;kBAL3C,SAAS;mBAAC;oBACT,QAAQ,EAAE;0FAC8E;oBACxF,SAAS,EAAE,CAAC,mCAAmC,CAAC;iBACjD;;;ACpCD;;;;;;;AAcA;MAKa,sCAAsC;;2IAAtC,sCAAsC;4IAAtC,sCAAsC,iBAFlC,+BAA+B,aADpC,+BAA+B;4IAG9B,sCAAsC;mGAAtC,sCAAsC;kBAJlD,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,+BAA+B,CAAC;oBAC1C,YAAY,EAAE,CAAC,+BAA+B,CAAC;iBAChD;;MAiBY,oBAAoB;;yHAApB,oBAAoB;0HAApB,oBAAoB,iBAFhB,cAAc,aAdlB,sCAAsC,EAK/C,eAAe;QACf,eAAe;QACf,eAAe,aAPN,sCAAsC,EAW/C,cAAc;QACd,eAAe;0HAIN,oBAAoB,YAbtB;YACP,sCAAsC;YACtC,eAAe;YACf,eAAe;YACf,eAAe;SAChB,EARU,sCAAsC,EAY/C,eAAe;mGAIN,oBAAoB;kBAdhC,QAAQ;mBAAC;oBACR,OAAO,EAAE;wBACP,sCAAsC;wBACtC,eAAe;wBACf,eAAe;wBACf,eAAe;qBAChB;oBACD,OAAO,EAAE;wBACP,sCAAsC;wBACtC,cAAc;wBACd,eAAe;qBAChB;oBACD,YAAY,EAAE,CAAC,cAAc,CAAC;iBAC/B;;;AClCD;;;;;;;;ACAA;;;;;;"}