{"version":3,"file":"cty-mobile-ui-floating-bubble.mjs","sources":["../../../packages/components/floating-bubble/floating-bubble.ts","../../../packages/components/floating-bubble/floating-bubble.html","../../../packages/components/floating-bubble/module.ts","../../../packages/components/floating-bubble/types.ts","../../../packages/components/floating-bubble/cty-mobile-ui-floating-bubble.ts"],"sourcesContent":["import {\r\n  Component,\r\n  AfterViewInit,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  ViewChild,\r\n  ElementRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  MagneticType,\r\n  AxisType,\r\n  FloatingBubbleOffset,\r\n  FloatingBubbleGap\r\n} from './types';\r\nimport { CTYDom, CTYUtil } from 'cty-mobile-ui/utils';\r\nimport { CtyIcon } from 'cty-mobile-ui/icon';\r\n@Component({\r\n  selector: 'cty-floating-bubble',\r\n  templateUrl: './floating-bubble.html',\r\n  styleUrls: ['./floating-bubble.scss'],\r\n  standalone: true,\r\n  imports: [CommonModule, CtyIcon]\r\n})\r\nexport class CtyFloatingBubble implements AfterViewInit {\r\n  @Input() offset: FloatingBubbleOffset = { x: -1, y: -1 }; //控制气泡位置\r\n  @Input() gap: FloatingBubbleGap = {top:24, left:24, bottom:24, right:24}; //气泡与窗口的最小间距，单位为 px\r\n  @Input() axis: AxisType = 'y'; //拖拽的方向 'x' | 'y' | 'xy' | 'lock'\r\n  @Input() magnetic?: MagneticType; //自动磁吸的方向 'x' | 'y'\r\n  @Input() icon: string = ''; //图标\r\n  @Output() ctyMoveStart = new EventEmitter<FloatingBubbleOffset>(true);\r\n  @Output() ctyMove = new EventEmitter<FloatingBubbleOffset>(true);\r\n  @Output() ctyMoveEnd = new EventEmitter<FloatingBubbleOffset>(true);\r\n  @Output() ctyClick = new EventEmitter<FloatingBubbleOffset>(true);\r\n  @ViewChild('rootRef', { static: true }) rootRef!: ElementRef<HTMLElement>;\r\n  get _gap(){\r\n    return Object.assign({top:24, left:24, bottom:24, right:24}, this.gap);\r\n  }\r\n  touch: {\r\n    deltaX: number;\r\n    deltaY: number;\r\n    isTap: boolean;\r\n  } = {\r\n    deltaX: 0,\r\n    deltaY: 0,\r\n    isTap: true\r\n  };\r\n  state = {\r\n    x: 0,\r\n    y: 0,\r\n    width: 0,\r\n    height: 0,\r\n  };\r\n  boundary = { top: 0, right: 0, bottom: 0, left: 0 };\r\n  dragging = false;\r\n  initialized = false;\r\n  prevX = 0;\r\n  prevY = 0;\r\n\r\n  constructor() {}\r\n\r\n  ngAfterViewInit() {\r\n    // 检查是否有投影内容\r\n    setTimeout(() => {\r\n      this.initState();\r\n    }, 100);\r\n  }\r\n\r\n  get rootStyle() {\r\n    const style: any = {};\r\n    const x = this.state.x;\r\n    const y = this.state.y;\r\n    style.transform = `translate3d(${x}px, ${y}px, 0)`;\r\n    style.opacity = this.initialized?1:0;\r\n    if (this.dragging || !this.initialized) {\r\n      style.transition = 'none';\r\n    }\r\n    return style;\r\n  }\r\n\r\n  initState() {\r\n    const rect = CTYDom.getRect(this.rootRef.nativeElement);\r\n    this.state = {\r\n      x: this.offset.x > -1 ? this.offset.x : window.innerWidth - rect.width - this._gap.right,\r\n      y: this.offset.y > -1 ? this.offset.y : window.innerHeight - rect.height - this._gap.bottom,\r\n      width: rect.width,\r\n      height: rect.height\r\n    };\r\n\r\n    this.boundary = {\r\n      top: this._gap.top,\r\n      left: this._gap.left,\r\n      right: window.innerWidth - rect.width - this._gap.right,\r\n      bottom: window.innerHeight - rect.height - this._gap.bottom\r\n    };\r\n    setTimeout(() => {\r\n      this.initialized = true;\r\n    }, 50);\r\n  }\r\n\r\n  onTouchStart() {\r\n    this.dragging = true;\r\n    this.prevX = this.state.x;\r\n    this.prevY = this.state.y;\r\n    this.ctyMoveStart.emit({ x: this.state.x, y: this.state.y });\r\n  }\r\n\r\n  onTouchMove(event: TouchEvent | MouseEvent) {\r\n    if (!this.dragging) {\r\n      return;\r\n    }\r\n    event.preventDefault();\r\n    if (this.axis === 'lock') return;\r\n\r\n    const touch = this.getTouch(event);\r\n    if (this.axis === 'x' || this.axis === 'xy') {\r\n      let nextX = this.prevX + touch.deltaX - this.state.width / 2;\r\n      if (nextX < this.boundary.left) nextX = this.boundary.left;\r\n      if (nextX > this.boundary.right) nextX = this.boundary.right;\r\n      this.state.x = nextX;\r\n    }\r\n\r\n    if (this.axis === 'y' || this.axis === 'xy') {\r\n      let nextY = this.prevY + touch.deltaY - this.state.height / 2;\r\n      if (nextY < this.boundary.top) nextY = this.boundary.top;\r\n      if (nextY > this.boundary.bottom) nextY = this.boundary.bottom;\r\n      this.state.y = nextY;\r\n    }\r\n    this.ctyMove.emit({ x: this.state.x, y: this.state.y });\r\n  }\r\n\r\n  onTouchEnd(event: TouchEvent | MouseEvent) {\r\n    this.dragging = false;\r\n    const touch = this.getTouch(event);\r\n\r\n    if (!touch.isTap) {\r\n      if (this.magnetic === 'x') {\r\n        // x轴磁吸\r\n        const nextX = CTYUtil.closest(\r\n          [this.boundary.left, this.boundary.right],\r\n          this.state.x\r\n        );\r\n        this.state.x = nextX;\r\n      } else if (this.magnetic === 'y') {\r\n        // y轴磁吸\r\n        const nextY = CTYUtil.closest(\r\n          [this.boundary.top, this.boundary.bottom],\r\n          this.state.y\r\n        );\r\n        this.state.y = nextY;\r\n      }\r\n      const offset = { x: this.state.x, y: this.state.y };\r\n      if (this.prevX !== offset.x || this.prevY !== offset.y) {\r\n        this.offset = offset;\r\n      }\r\n    }\r\n    this.ctyMoveEnd.emit({ x: this.state.x, y: this.state.y });\r\n  }\r\n\r\n  onClick(event: TouchEvent | MouseEvent) {\r\n    const touch = this.getTouch(event);\r\n    if (touch.isTap) {\r\n      this.ctyClick.emit({ x: this.state.x, y: this.state.y });\r\n    } else {\r\n      event.stopPropagation();\r\n    }\r\n  }\r\n\r\n  private getTouch(event: TouchEvent | MouseEvent) {\r\n    const touch = {\r\n      deltaX: 0,\r\n      deltaY: 0,\r\n      isTap: true\r\n    };\r\n    if (event instanceof TouchEvent) {\r\n      // 触摸\r\n      const firstTouch = event.changedTouches[0];\r\n      touch.deltaX = firstTouch.pageX - this.prevX;\r\n      touch.deltaY = firstTouch.pageY - this.prevY;\r\n      touch.isTap = false;\r\n    } else {\r\n      touch.deltaX = event.pageX - this.prevX;\r\n      touch.deltaY = event.pageY - this.prevY;\r\n    }\r\n    return touch;\r\n  }\r\n}\r\n","<!-- eslint-disable @angular-eslint/template/interactive-supports-focus -->\r\n<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\r\n<div\r\n    class=\"cty-floating-bubble flex-column-center\"\r\n    #rootRef\r\n    (touchstart)=\"onTouchStart()\"\r\n    (touchmove)=\"onTouchMove($event)\"\r\n    (touchend)=\"onTouchEnd($event)\"\r\n    (touchcancel)=\"onTouchEnd($event)\"\r\n    (mousedown)=\"onTouchStart()\"\r\n    (mousemove)=\"onTouchMove($event)\"\r\n    (mouseup)=\"onTouchEnd($event)\"\r\n    (mouseleave)=\"onTouchEnd($event)\"\r\n    (click)=\"onClick($event)\"\r\n    [ngStyle]=\"rootStyle\"\r\n>\r\n    <cty-icon *ngIf=\"icon\" class=\"cty-floating-bubble__icon\" [name]=\"icon\"></cty-icon>\r\n    <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CtyFloatingBubble } from './floating-bubble';\r\n@NgModule({\r\n  imports: [CommonModule, CtyFloatingBubble],\r\n  exports: [CtyFloatingBubble],\r\n})\r\nexport class CtyFloatingBubbleModule {}\r\n","export type AxisType = 'x' | 'y' | 'xy' | 'lock';\r\n\r\nexport type MagneticType = 'x' | 'y';\r\n\r\nexport interface FloatingBubbleOffset {\r\n  x: number;\r\n  y: number;\r\n};\r\nexport interface FloatingBubbleGap {\r\n  top?: number;\r\n  left?: number;\r\n  bottom?: number;\r\n  right?: number;\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAyBa,iBAAiB,CAAA;AAW5B,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,MAAM,CAAC,MAAM,CAAC,EAAC,GAAG,EAAC,EAAE,EAAE,IAAI,EAAC,EAAE,EAAE,MAAM,EAAC,EAAE,EAAE,KAAK,EAAC,EAAE,EAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;KACxE;AAsBD,IAAA,WAAA,GAAA;AAlCS,QAAA,IAAA,CAAA,MAAM,GAAyB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAChD,IAAG,CAAA,GAAA,GAAsB,EAAC,GAAG,EAAC,EAAE,EAAE,IAAI,EAAC,EAAE,EAAE,MAAM,EAAC,EAAE,EAAE,KAAK,EAAC,EAAE,EAAC,CAAC;AAChE,QAAA,IAAA,CAAA,IAAI,GAAa,GAAG,CAAC;AAErB,QAAA,IAAA,CAAA,IAAI,GAAW,EAAE,CAAC;AACjB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,CAAuB,IAAI,CAAC,CAAC;AAC5D,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,CAAuB,IAAI,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAuB,IAAI,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,CAAuB,IAAI,CAAC,CAAC;AAKlE,QAAA,IAAA,CAAA,KAAK,GAID;AACF,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,KAAK,EAAE,IAAI;SACZ,CAAC;AACF,QAAA,IAAA,CAAA,KAAK,GAAG;AACN,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;SACV,CAAC;AACF,QAAA,IAAA,CAAA,QAAQ,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACpD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QACV,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;KAEM;IAEhB,eAAe,GAAA;;QAEb,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB,EAAE,GAAG,CAAC,CAAC;KACT;AAED,IAAA,IAAI,SAAS,GAAA;QACX,MAAM,KAAK,GAAQ,EAAE,CAAC;AACtB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACvB,KAAK,CAAC,SAAS,GAAG,CAAA,YAAA,EAAe,CAAC,CAAO,IAAA,EAAA,CAAC,QAAQ,CAAC;AACnD,QAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAC,CAAC,GAAC,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACtC,YAAA,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;SAC3B;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,SAAS,GAAA;AACP,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG;AACX,YAAA,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;AACxF,YAAA,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;YAC3F,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG;AACd,YAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;AAClB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACpB,YAAA,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;AACvD,YAAA,MAAM,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;SAC5D,CAAC;QACF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB,EAAE,EAAE,CAAC,CAAC;KACR;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;KAC9D;AAED,IAAA,WAAW,CAAC,KAA8B,EAAA;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;SACR;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO;QAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AAC3C,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAC7D,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;AAAE,gBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3D,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;AAAE,gBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7D,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;SACtB;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AAC3C,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG;AAAE,gBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AACzD,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;AAAE,gBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/D,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;SACtB;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;KACzD;AAED,IAAA,UAAU,CAAC,KAA8B,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;;gBAEzB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAC3B,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EACzC,IAAI,CAAC,KAAK,CAAC,CAAC,CACb,CAAC;AACF,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;aACtB;AAAM,iBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;;gBAEhC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAC3B,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EACzC,IAAI,CAAC,KAAK,CAAC,CAAC,CACb,CAAC;AACF,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;aACtB;AACD,YAAA,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AACpD,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,EAAE;AACtD,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;aACtB;SACF;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;KAC5D;AAED,IAAA,OAAO,CAAC,KAA8B,EAAA;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,QAAA,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1D;aAAM;YACL,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;AAEO,IAAA,QAAQ,CAAC,KAA8B,EAAA;AAC7C,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,KAAK,EAAE,IAAI;SACZ,CAAC;AACF,QAAA,IAAI,KAAK,YAAY,UAAU,EAAE;;YAE/B,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC3C,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAC7C,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7C,YAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;SACrB;aAAM;YACL,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SACzC;AACD,QAAA,OAAO,KAAK,CAAC;KACd;+GAjKU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,ECzB9B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+wBAmBA,EDIY,MAAA,EAAA,CAAA,ijCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,wNAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEpB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cAGnB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,+wBAAA,EAAA,MAAA,EAAA,CAAA,ijCAAA,CAAA,EAAA,CAAA;wDAGvB,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACiC,OAAO,EAAA,CAAA;sBAA9C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ME5B3B,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAHxB,OAAA,EAAA,CAAA,YAAY,EAAE,iBAAiB,aAC/B,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEhB,uBAAuB,EAAA,OAAA,EAAA,CAHxB,YAAY,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG9B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC;oBAC1C,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;;ACCA,CAAC;AAMD;;ACbD;;AAEG;;;;"}