{"version":3,"file":"herdwatch-ng-otp-input.mjs","sources":["../../../projects/ng-otp-input/src/lib/utils/keyboard-util.ts","../../../projects/ng-otp-input/src/lib/pipes/keys.pipe.ts","../../../projects/ng-otp-input/src/lib/components/ng-otp-input/ng-otp-input.component.ts","../../../projects/ng-otp-input/src/lib/components/ng-otp-input/ng-otp-input.component.html","../../../projects/ng-otp-input/src/lib/ng-otp-input.module.ts","../../../projects/ng-otp-input/src/lib/models/config.ts","../../../projects/ng-otp-input/src/public_api.ts","../../../projects/ng-otp-input/src/herdwatch-ng-otp-input.ts"],"sourcesContent":["export class KeyboardUtil{\n    static ifTab(event:KeyboardEvent){\n        return this.ifKey(event,'Tab');\n    }\n    static ifDelete(event:KeyboardEvent){\n        return this.ifKey(event,'Delete;Del');\n    }\n    static ifBackspace(event:KeyboardEvent){\n        return this.ifKey(event,'Backspace');\n    }\n    static ifRightArrow(event:KeyboardEvent){\n        return this.ifKey(event,'ArrowRight;Right')\n    }\n    static ifLeftArrow(event:KeyboardEvent){\n        return this.ifKey(event,'ArrowLeft;Left')\n    }\n    static ifSpacebar(event:KeyboardEvent){\n        return this.ifKey(event,'Spacebar; ')// don't remove the space after ; as this will check for space key\n    }\n    static  ifKey(event:KeyboardEvent, keys:string):boolean{\n        const keysToCheck=keys.split(';');\n        return keysToCheck.some(k=> k ===event.key);\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'keys'\n})\nexport class KeysPipe implements PipeTransform {\n  transform(value: object): string[] {\n    return Object.keys(value)\n  }\n}\n","import {\n  Component,\n  OnInit,\n  Input,\n  Output,\n  EventEmitter,\n  AfterViewInit,\n  Inject\n} from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { KeysPipe } from '../../pipes/keys.pipe';\nimport { Config } from '../../models/config';\nimport { KeyboardUtil } from '../../utils/keyboard-util';\nimport { DOCUMENT } from '@angular/common';\n@Component({\n  selector: 'ng-otp-input',\n  templateUrl: './ng-otp-input.component.html',\n  styleUrls: ['./ng-otp-input.component.scss']\n})\nexport class NgOtpInputComponent implements OnInit, AfterViewInit {\n  @Input() config: Config = { length: 4 };\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onInputChange = new EventEmitter<string>();\n  @Input() formCtrl:FormControl;\n  otpForm: FormGroup;\n  currentVal:string;\n  inputControls: FormControl[] = new Array(this.config.length);\n  componentKey =\n    Math.random()\n      .toString(36)\n      .substring(2) + new Date().getTime().toString(36);\n\n  constructor(private keysPipe: KeysPipe,@Inject(DOCUMENT) private document: Document) {}\n\n  get inputType(){\n    return this.config?.isPasswordInput\n      ? 'password'\n      : this.config?.allowNumbersOnly\n        ? 'tel'\n        : 'text';\n  }\n\n  ngOnInit() {\n    this.otpForm = new FormGroup({});\n    for (let index = 0; index < this.config.length; index++) {\n      this.otpForm.addControl(this.getControlName(index), new FormControl());\n    }\n    this.otpForm.valueChanges.subscribe(()=>{\n      this.keysPipe.transform(this.otpForm.controls).forEach((k) => {\n        const val = this.otpForm.controls[k].value;\n        if(val && val.length>1){\n          if (val.length >= this.config.length) {\n            this.setValue(val);\n          }else{\n            this.rebuildValue();\n          }\n        }\n      });\n    });\n  }\n\n  ngAfterViewInit(): void {\n    if (!this.config.disableAutoFocus) {\n      const containerItem = this.document.getElementById(`c_${this.componentKey}`);\n      if (containerItem) {\n        const ele  = containerItem.getElementsByClassName('otp-input')[0] as HTMLElement;\n        if (ele?.focus) {\n          ele.focus();\n        }\n      }\n    }\n  }\n\n  onKeyDown($event: KeyboardEvent, inputIdx: number){\n    const prevInputId = this.getBoxId(inputIdx - 1);\n    const currentInputId = this.getBoxId(inputIdx);\n    if (KeyboardUtil.ifSpacebar($event)) {\n      $event.preventDefault();\n      return false;\n     }\n     if (KeyboardUtil.ifBackspace($event)) {\n      if(!($event.target as HTMLInputElement).value){\n        this.clearInput(prevInputId,inputIdx-1);\n        this.setSelected(prevInputId);\n      }else{\n        this.clearInput(currentInputId,inputIdx);\n      }\n      this.rebuildValue();\n      return;\n    }\n  }\n  onInput($event){\n    const newVal=this.currentVal ? `${this.currentVal}${$event.target.value}` : $event.target.value;\n    if(this.config.allowNumbersOnly && !this.validateNumber(newVal)){\n      $event.target.value='';\n      $event.stopPropagation();\n      $event.preventDefault();\n      return;\n    }\n  }\n\n  onKeyUp($event, inputIdx) {\n    if(KeyboardUtil.ifTab($event)){\n      inputIdx-=1;\n    }\n    const nextInputId = this.getBoxId(inputIdx + 1);\n    const prevInputId = this.getBoxId(inputIdx - 1);\n    const currentInputId = this.getBoxId(inputIdx);\n    if (KeyboardUtil.ifRightArrow($event)) {\n      $event.preventDefault();\n      this.setSelected(nextInputId);\n      return;\n    }\n    if (KeyboardUtil.ifLeftArrow($event)) {\n      $event.preventDefault();\n      this.setSelected(prevInputId);\n      return;\n    }\n    if (KeyboardUtil.ifDelete($event)) {\n      if(!$event.target.value){\n        this.clearInput(prevInputId,inputIdx-1);\n        this.setSelected(prevInputId);\n      }else{\n        this.clearInput(currentInputId,inputIdx);\n      }\n      this.rebuildValue();\n      return;\n    }\n\n    if (!$event.target.value) {\n      return;\n    }\n\n    if (this.ifValidKeyCode($event)) {\n      this.setSelected(nextInputId);\n    }\n    this.rebuildValue();\n  }\n\n  validateNumber(val){\n    return val && /^[0-9]+$/.test(val);\n  }\n\n  getBoxId(idx:string | number){\n    return `otp_${idx}_${this.componentKey}`;\n  }\n\n  focusTo(eleId: string) {\n    const ele = this.document.getElementById(eleId);\n    if (ele) {\n      ele.focus();\n    }\n  }\n\n  // method to set component value\n  setValue(value: string | number) {\n    if (this.config.allowNumbersOnly && isNaN((value as number))) {\n        return;\n    }\n    this.otpForm.reset();\n     if (!value) {\n       this.rebuildValue();\n       return;\n     }\n     value = value.toString().replace(/\\s/g, ''); // remove whitespace\n     Array.from(value).forEach((c, idx) => {\n          if (this.otpForm.get(this.getControlName(idx))) {\n            this.otpForm.get(this.getControlName(idx)).setValue(c);\n          }\n     });\n     if (!this.config.disableAutoFocus) {\n      const containerItem = this.document.getElementById(`c_${this.componentKey}`);\n      const indexOfElementToFocus = value.length < this.config.length ? value.length : (this.config.length - 1);\n      const ele = containerItem.getElementsByClassName('otp-input')[indexOfElementToFocus] as HTMLElement;\n      if (ele && ele.focus) {\n        ele.focus();\n      }\n     }\n     this.rebuildValue();\n  }\n\n  handlePaste(e) {\n    // Get pasted data via clipboard API\n    const clipboardData = e.clipboardData || window['clipboardData'];\n    let pastedData: string = null;\n    if(clipboardData){\n      pastedData = clipboardData.getData('Text');\n    }\n    // Stop data actually being pasted into div\n    e.stopPropagation();\n    e.preventDefault();\n    if (!pastedData || (this.config.allowNumbersOnly && !this.validateNumber(pastedData))) {\n      return;\n    }\n    this.setValue(pastedData);\n  }\n\n  private rebuildValue() {\n    let val = '';\n    this.keysPipe.transform(this.otpForm.controls).forEach(k => {\n      if (this.otpForm.controls[k].value) {\n        let ctrlVal=this.otpForm.controls[k].value;\n        const isLengthExceed=ctrlVal.length>1;\n        let isCaseTransformEnabled= !this.config.allowNumbersOnly && this.config.letterCase && (this.config.letterCase.toLocaleLowerCase() === 'upper' || this.config.letterCase.toLocaleLowerCase() === 'lower');\n        ctrlVal=ctrlVal[0];\n        const transformedVal=isCaseTransformEnabled ? this.config.letterCase.toLocaleLowerCase() === 'upper' ? ctrlVal.toUpperCase() : ctrlVal.toLowerCase()  : ctrlVal;\n        if(isCaseTransformEnabled && transformedVal === ctrlVal){\n          isCaseTransformEnabled=false;\n        }else{\n          ctrlVal=transformedVal;\n        }\n        val += ctrlVal;\n        if(isLengthExceed || isCaseTransformEnabled) {\n         this.otpForm.controls[k].setValue(ctrlVal);\n        }\n      }\n    });\n    if(this.formCtrl?.setValue){\n      this.formCtrl.setValue(val);\n    }\n    this.onInputChange.emit(val);\n    this.currentVal=val;\n  }\n\n  private getControlName(idx) {\n    return `ctrl_${idx}`;\n  }\n\n  private clearInput(eleId:string,inputIdx){\n    const ctrlName=this.getControlName(inputIdx);\n    this.otpForm.controls[ctrlName]?.setValue(null);\n    const ele=this.document.getElementById(eleId);\n    if(ele && ele instanceof HTMLInputElement){\n      ele.value=null;\n    }\n  }\n\n  private setSelected(eleId) {\n    this.focusTo(eleId);\n    const ele = this.document.getElementById(eleId) as HTMLInputElement;\n    if (ele && ele.setSelectionRange) {\n      setTimeout(() => {\n        ele.setSelectionRange(0, 1);\n      }, 0);\n    }\n  }\n\n  private ifValidKeyCode(event) {\n    const inp = event.key;\n    const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\n    return (\n      isMobile ||\n      /[a-zA-Z0-9-_]/.test(inp)\n    );\n  }\n\n}\n","<div class=\"ng-otp-input-wrapper wrapper {{config.containerClass}}\" id=\"c_{{componentKey}}\" *ngIf=\"otpForm?.controls\"\n  [ngStyle]=\"config.containerStyles\">\n  <input (paste)=\"handlePaste($event)\" [pattern]=\"config.allowNumbersOnly ? '\\\\d*' : ''\" [type]=\"inputType\"  [placeholder]=\"config?.placeholder || ''\"\n    [ngStyle]=\"config.inputStyles\"\n    class=\"otp-input {{config.inputClass}}\" autocomplete=\"one-time-code\" *ngFor=\"let item of otpForm?.controls | keys;let i=index\"\n    [formControl]=\"$any(otpForm).controls[item]\" #inp [id]=\"getBoxId(i)\"\n    (keyup)=\"onKeyUp($event,i)\" (input)=\"onInput($event)\" (keydown)=\"onKeyDown($event,i)\" >\n</div>","import { NgModule } from '@angular/core';\nimport { NgOtpInputComponent } from './components/ng-otp-input/ng-otp-input.component';\nimport { KeysPipe } from './pipes/keys.pipe';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule\n  ],\n  declarations: [NgOtpInputComponent, KeysPipe],\n  exports: [NgOtpInputComponent],\n  providers: [KeysPipe]\n})\nexport class NgOtpInputModule { }\n","import { NgStyle } from '@angular/common';\n\nexport class Config {\n  inputStyles?: NgStyle;\n  containerStyles?: NgStyle;\n  length: number;\n  allowNumbersOnly?: boolean;\n  inputClass?: string;\n  containerClass?: string;\n  isPasswordInput?: boolean;\n  disableAutoFocus?: boolean;\n  placeholder?: string;\n  letterCase?: \"Upper\" | \"Lower\";\n}\n","/*\n * Public API Surface of ng-otp-input\n */\n\nexport * from './lib/ng-otp-input.module';\nexport {Config as NgOtpInputConfig} from './lib/models/config';\nexport * from './lib/components/ng-otp-input/ng-otp-input.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.KeysPipe"],"mappings":";;;;;;;MAAa,YAAY,CAAA;IACrB,OAAO,KAAK,CAAC,KAAmB,EAAA;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC,KAAK,CAAC,CAAC;KAClC;IACD,OAAO,QAAQ,CAAC,KAAmB,EAAA;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC,YAAY,CAAC,CAAC;KACzC;IACD,OAAO,WAAW,CAAC,KAAmB,EAAA;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC,WAAW,CAAC,CAAC;KACxC;IACD,OAAO,YAAY,CAAC,KAAmB,EAAA;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC,kBAAkB,CAAC,CAAA;KAC9C;IACD,OAAO,WAAW,CAAC,KAAmB,EAAA;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC,gBAAgB,CAAC,CAAA;KAC5C;IACD,OAAO,UAAU,CAAC,KAAmB,EAAA;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC,YAAY,CAAC,CAAA;KACxC;AACD,IAAA,OAAQ,KAAK,CAAC,KAAmB,EAAE,IAAW,EAAA;QAC1C,MAAM,WAAW,GAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAG,CAAC,KAAI,KAAK,CAAC,GAAG,CAAC,CAAC;KAC/C;AACJ;;MClBY,QAAQ,CAAA;AACnB,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC1B;kIAHU,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;gIAAR,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAHpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAA;;;MCeY,mBAAmB,CAAA;IAa9B,WAAoB,CAAA,QAAkB,EAA2B,QAAkB,EAAA;QAA/D,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAA2B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAZ1E,QAAA,IAAA,CAAA,MAAM,GAAW,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;;AAE9B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;QAIrD,IAAa,CAAA,aAAA,GAAkB,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAA,IAAA,CAAA,YAAY,GACV,IAAI,CAAC,MAAM,EAAE;aACV,QAAQ,CAAC,EAAE,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KAEiC;AAEvF,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,eAAe;AACjC,cAAE,UAAU;AACZ,cAAE,IAAI,CAAC,MAAM,EAAE,gBAAgB;AAC7B,kBAAE,KAAK;kBACL,MAAM,CAAC;KACd;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AACjC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACvD,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC;SACxE;QACD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAI;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC3D,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3C,IAAG,GAAG,IAAI,GAAG,CAAC,MAAM,GAAC,CAAC,EAAC;oBACrB,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACpC,wBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;qBACpB;yBAAI;wBACH,IAAI,CAAC,YAAY,EAAE,CAAC;qBACrB;iBACF;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACjC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,YAAY,CAAA,CAAE,CAAC,CAAC;YAC7E,IAAI,aAAa,EAAE;gBACjB,MAAM,GAAG,GAAI,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAgB,CAAC;AACjF,gBAAA,IAAI,GAAG,EAAE,KAAK,EAAE;oBACd,GAAG,CAAC,KAAK,EAAE,CAAC;iBACb;aACF;SACF;KACF;IAED,SAAS,CAAC,MAAqB,EAAE,QAAgB,EAAA;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAA,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACnC,MAAM,CAAC,cAAc,EAAE,CAAC;AACxB,YAAA,OAAO,KAAK,CAAC;SACb;AACD,QAAA,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAG,CAAE,MAAM,CAAC,MAA2B,CAAC,KAAK,EAAC;gBAC5C,IAAI,CAAC,UAAU,CAAC,WAAW,EAAC,QAAQ,GAAC,CAAC,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;aAC/B;iBAAI;AACH,gBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAC,QAAQ,CAAC,CAAC;aAC1C;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO;SACR;KACF;AACD,IAAA,OAAO,CAAC,MAAM,EAAA;QACZ,MAAM,MAAM,GAAC,IAAI,CAAC,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAA,CAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AAChG,QAAA,IAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAC;AAC9D,YAAA,MAAM,CAAC,MAAM,CAAC,KAAK,GAAC,EAAE,CAAC;YACvB,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO;SACR;KACF;IAED,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAA;AACtB,QAAA,IAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC;YAC5B,QAAQ,IAAE,CAAC,CAAC;SACb;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAA,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YACrC,MAAM,CAAC,cAAc,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAC9B,OAAO;SACR;AACD,QAAA,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YACpC,MAAM,CAAC,cAAc,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAC9B,OAAO;SACR;AACD,QAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACjC,YAAA,IAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAC,QAAQ,GAAC,CAAC,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;aAC/B;iBAAI;AACH,gBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAC,QAAQ,CAAC,CAAC;aAC1C;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO;SACR;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YACxB,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAED,IAAA,cAAc,CAAC,GAAG,EAAA;QAChB,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACpC;AAED,IAAA,QAAQ,CAAC,GAAmB,EAAA;AAC1B,QAAA,OAAO,OAAO,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,EAAE,CAAC;KAC1C;AAED,IAAA,OAAO,CAAC,KAAa,EAAA;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,KAAK,EAAE,CAAC;SACb;KACF;;AAGD,IAAA,QAAQ,CAAC,KAAsB,EAAA;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,KAAK,CAAE,KAAgB,CAAC,EAAE;YAC1D,OAAO;SACV;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO;SACR;AACD,QAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC5C,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,KAAI;AAChC,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;AAC9C,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACxD;AACN,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAClC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,YAAY,CAAA,CAAE,CAAC,CAAC;AAC7E,YAAA,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1G,MAAM,GAAG,GAAG,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAgB,CAAC;AACpG,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;gBACpB,GAAG,CAAC,KAAK,EAAE,CAAC;aACb;SACD;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;KACtB;AAED,IAAA,WAAW,CAAC,CAAC,EAAA;;QAEX,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;QACjE,IAAI,UAAU,GAAW,IAAI,CAAC;QAC9B,IAAG,aAAa,EAAC;AACf,YAAA,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAC5C;;QAED,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,cAAc,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,EAAE;YACrF,OAAO;SACR;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KAC3B;IAEO,YAAY,GAAA;QAClB,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;YACzD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAClC,gBAAA,IAAI,OAAO,GAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3C,gBAAA,MAAM,cAAc,GAAC,OAAO,CAAC,MAAM,GAAC,CAAC,CAAC;AACtC,gBAAA,IAAI,sBAAsB,GAAE,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,KAAK,OAAO,CAAC,CAAC;AAC1M,gBAAA,OAAO,GAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAA,MAAM,cAAc,GAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,GAAI,OAAO,CAAC;AAChK,gBAAA,IAAG,sBAAsB,IAAI,cAAc,KAAK,OAAO,EAAC;oBACtD,sBAAsB,GAAC,KAAK,CAAC;iBAC9B;qBAAI;oBACH,OAAO,GAAC,cAAc,CAAC;iBACxB;gBACD,GAAG,IAAI,OAAO,CAAC;AACf,gBAAA,IAAG,cAAc,IAAI,sBAAsB,EAAE;AAC5C,oBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBAC3C;aACF;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC7B;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAC,GAAG,CAAC;KACrB;AAEO,IAAA,cAAc,CAAC,GAAG,EAAA;QACxB,OAAO,CAAA,KAAA,EAAQ,GAAG,CAAA,CAAE,CAAC;KACtB;IAEO,UAAU,CAAC,KAAY,EAAC,QAAQ,EAAA;QACtC,MAAM,QAAQ,GAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,GAAG,GAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAG,GAAG,IAAI,GAAG,YAAY,gBAAgB,EAAC;AACxC,YAAA,GAAG,CAAC,KAAK,GAAC,IAAI,CAAC;SAChB;KACF;AAEO,IAAA,WAAW,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAqB,CAAC;AACpE,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE;YAChC,UAAU,CAAC,MAAK;AACd,gBAAA,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7B,EAAE,CAAC,CAAC,CAAC;SACP;KACF;AAEO,IAAA,cAAc,CAAC,KAAK,EAAA;AAC1B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACtB,MAAM,QAAQ,GAAG,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACvE,QAAA,QACE,QAAQ;AACR,YAAA,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EACzB;KACH;AA3OU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,uCAaiB,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAb5C,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,qJCnBhC,irBAOM,EAAA,MAAA,EAAA,CAAA,mWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDYO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,irBAAA,EAAA,MAAA,EAAA,CAAA,mWAAA,CAAA,EAAA,CAAA;;0BAiBgB,MAAM;2BAAC,QAAQ,CAAA;yCAZ9C,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACE,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEPK,gBAAgB,CAAA;kIAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAJZ,YAAA,EAAA,CAAA,mBAAmB,EAAE,QAAQ,aAJ1C,YAAY;YACZ,WAAW;AACX,YAAA,mBAAmB,aAGX,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAFhB,SAAA,EAAA,CAAC,QAAQ,CAAC,YANnB,YAAY;YACZ,WAAW;YACX,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAMV,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;AACpB,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAC;oBAC7C,OAAO,EAAE,CAAC,mBAAmB,CAAC;oBAC9B,SAAS,EAAE,CAAC,QAAQ,CAAC;AACtB,iBAAA,CAAA;;;MCbY,MAAM,CAAA;AAWlB;;ACbD;;AAEG;;ACFH;;AAEG;;;;"}