{"version":3,"file":"ngx-telly-player-core.mjs","sources":["../../../../libs/player/core/src/definitions/browser.ts","../../../../libs/player/core/src/definitions/video-event.ts","../../../../libs/player/core/src/definitions/telly-media.ts","../../../../libs/player/core/src/definitions/telly.token.ts","../../../../libs/player/core/src/rxjs-operators/event-type.ts","../../../../libs/player/core/src/rxjs-operators/debounce-move.ts","../../../../libs/player/core/src/tokens/browser.ts","../../../../libs/player/core/src/assets/icons.ts","../../../../libs/player/core/src/util/time.ts","../../../../libs/player/core/src/plugin/telly-plugin.token.ts","../../../../libs/player/core/src/ngx-telly-player-core.ts"],"sourcesContent":["export enum Browser {\n  Chromium,\n  Webkit,\n  Ios,\n  Firefox\n}\n","export enum VideoEvent {\n    Abort = 'abort',\n    Error = 'error',\n    CanPlay = 'canplay',\n    CanPlayThrough = 'canplaythrough',\n    Complete = 'complete',\n    DurationChange = 'durationchange',\n    Emptied = 'emptied',\n    Ended = 'ended',\n    Resize = 'resize',\n    LoadStart = 'loadstart',\n    LoadedData = 'loadeddata',\n    LoadedMetadata = 'loadedmetadata',\n    Pause = 'pause',\n    Play = 'play',\n    Playing = 'playing',\n    Progress = 'progress',\n    RateChange = 'ratechange',\n    Seeked = 'seeked',\n    Seeking = 'seeking',\n    Stalled = 'stalled',\n    Suspend = 'suspend',\n    TimeUpdate = 'timeupdate',\n    VolumeChange = 'volumechange',\n    Waiting = 'waiting',\n}\n","import { fromEvent, merge, Observable, Subject } from 'rxjs';\nimport { TellyMediaOptions } from './telly-media.options';\nimport { VideoEvent } from './video-event';\n\nexport class TellyMedia {\n  id: string;\n  opts: TellyMediaOptions;\n  element: HTMLVideoElement;\n\n  internalEvents$ = new Subject<string>();\n  private nativeEvents$!: Observable<Event>;\n  private interval?: ReturnType<typeof setInterval>;\n\n  rateMap: Record<number, number> = {\n    [1]: 0.1,\n    [2]: 0.2,\n    [3]: 0.1,\n    [4]: 0.2,\n    [5]: 0.5,\n    [6]: 0.6,\n    [7]: 0.7,\n    [8]: 0.8,\n  };\n\n  constructor(id: string, el: HTMLVideoElement, options?: TellyMediaOptions) {\n    this.id = id;\n    this.element = el;\n    this.opts = { ...options };\n\n    this.events = this.createEventStream();\n  }\n\n  get events(): Observable<Event> {\n    return this.nativeEvents$;\n  }\n\n  private set events(events: Observable<Event>) {\n    this.nativeEvents$ = events;\n  }\n\n  get messages(): Observable<string> {\n    return this.internalEvents$;\n  }\n\n  get time(): number {\n    return this.element.currentTime;\n  }\n\n  set time(time: number) {\n    this.element.currentTime = time;\n  }\n\n  get windowTime(): number {\n    return this.time - this.drift;\n  }\n\n  get totalDuration(): number {\n    return this.element.duration;\n  }\n\n  get duration(): number {\n    return this.opts?.duration ?? this.element.duration;\n  }\n\n  set duration(val: number) {\n    this.opts.duration = val;\n  }\n\n  get drift(): number {\n    return this.opts?.drift ?? 0;\n  }\n\n  set drift(val: number) {\n    this.opts.drift = val;\n  }\n\n  get rate(): number {\n    return this.opts?.rate ?? 1;\n  }\n\n  get buffered(): TimeRanges {\n    return this.element.buffered;\n  }\n\n  get volume(): number {\n    return this.element.volume;\n  }\n\n  set volume(vol: number) {\n    this.indicate(`Volume ${vol * 100}%`);\n    this.storeVolume(vol);\n    this.element.volume = vol;\n  }\n\n  get playing(): boolean {\n    return this.element.currentTime > 0 && !this.element.paused && !this.element.ended;\n  }\n\n  play(silent = false): void {\n    if (!this.playing && !silent) this.indicate('Play');\n    this.setRate(1);\n    this.element.play();\n  }\n\n  pause(silent = false): void {\n    if (this.playing && !silent) this.indicate('Pause');\n    this.setRate(1);\n    this.element.pause();\n    this.time = this.element.currentTime; // magic\n  }\n\n  toggle(): void {\n    this.element.paused ? this.play() : this.pause();\n  }\n\n  stop(): void {\n    this.element.pause();\n    this.element.currentTime = 0;\n    this.indicate('Stop');\n  }\n\n  seek(second: number): void {\n    this.element.currentTime = second + this.drift;\n  }\n\n  setRate(rate: number) {\n    this.opts.rate = rate;\n    clearInterval(this.interval);\n\n    if (rate === 1) {\n      this.element.playbackRate = rate;\n    } else if (rate > 1) {\n      this.indicate(`Forward x${Math.abs(rate)}`);\n      if (this.opts.smoothFastForward) {\n        this.element.playbackRate = rate;\n        const paused = this.element.paused;\n\n        if (paused) {\n          this.play(true);\n        }\n      } else {\n        const updateRate = (this.opts.rewindUpdateRate ?? 12) + 1;\n        const next = (rate / 1000) * updateRate;\n        this.interval = setInterval(() => (this.time = this.element.currentTime + next), this.opts.rewindUpdateRate);\n      }\n    } else if (rate < 0) {\n      this.indicate(`Rewind x${Math.abs(rate)}`);\n      const updateRate = (this.opts.rewindUpdateRate ?? 12) + 1;\n      const next = (Math.abs(rate) / 1000) * updateRate;\n      this.interval = setInterval(() => (this.time = this.element.currentTime - next), this.opts.rewindUpdateRate);\n    }\n  }\n\n  faster(): void {\n    const rate = this.rate + 1;\n    if (rate > 8) {\n      this.opts.rate = 8;\n    } else if (rate === 0) {\n      this.opts.rate = 1;\n    } else {\n      this.opts.rate = rate;\n    }\n    this.setRate(this.rate);\n  }\n\n  slower(): void {\n    const rate = this.rate - 1;\n    if (rate < -8) {\n      this.opts.rate = -8;\n    } else if (rate === 0) {\n      this.opts.rate = -1;\n    } else {\n      this.opts.rate = rate;\n    }\n    this.setRate(this.rate);\n  }\n\n  indicate(msg: string): void {\n    this.internalEvents$.next(msg);\n  }\n\n  event(name: VideoEvent | string): Observable<Event> {\n    return fromEvent(this.element, name);\n  }\n\n  createEventStream(): Observable<Event> {\n    return merge(\n      fromEvent(this.element, VideoEvent.CanPlay),\n      fromEvent(this.element, VideoEvent.CanPlayThrough),\n      fromEvent(this.element, VideoEvent.Complete),\n      fromEvent(this.element, VideoEvent.DurationChange),\n      fromEvent(this.element, VideoEvent.Emptied),\n      fromEvent(this.element, VideoEvent.Ended),\n      fromEvent(this.element, VideoEvent.LoadStart),\n      fromEvent(this.element, VideoEvent.LoadedData),\n      fromEvent(this.element, VideoEvent.LoadedMetadata),\n      fromEvent(this.element, VideoEvent.Play),\n      fromEvent(this.element, VideoEvent.Pause),\n      fromEvent(this.element, VideoEvent.Playing),\n      fromEvent(this.element, VideoEvent.Progress),\n      fromEvent(this.element, VideoEvent.RateChange),\n      fromEvent(this.element, VideoEvent.Seeked),\n      fromEvent(this.element, VideoEvent.Seeking),\n      fromEvent(this.element, VideoEvent.Stalled),\n      fromEvent(this.element, VideoEvent.Suspend),\n      fromEvent(this.element, VideoEvent.TimeUpdate),\n      fromEvent(this.element, VideoEvent.VolumeChange),\n      fromEvent(this.element, VideoEvent.Waiting),\n      fromEvent(this.element, VideoEvent.Error),\n      fromEvent(this.element, VideoEvent.Abort),\n      fromEvent(this.element, VideoEvent.Resize)\n    );\n  }\n\n  storeVolume(vol: number) {\n    localStorage.setItem(`telly:volume:${this.id ?? 'default'}`, vol.toString());\n  }\n\n  loadVolume(): number {\n    const stored = localStorage.getItem(`telly:volume:${this.id ?? 'default'}`);\n    if (stored) {\n      this.volume = +stored;\n      return +stored;\n    }\n    return this.volume ?? 1;\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport { TellyMediaOptions } from './telly-media.options';\n\nexport const tellyConfigToken: InjectionToken<TellyMediaOptions> = new InjectionToken('__TELLY_CONFIG__');\n","import { Observable } from 'rxjs';\nimport { VideoEvent } from \"../definitions\";\n\nexport function eventType(types: VideoEvent[]) {\n  return function (source: Observable<Event>): Observable<Event> {\n    return new Observable((subscriber) => {\n      return source.subscribe({\n        next(ev) {\n          if (types.includes(ev.type as VideoEvent)) {\n            return subscriber.next(ev);\n          }\n        },\n        error(err) {\n          subscriber.next(err);\n        },\n        complete() {\n          subscriber.complete();\n        },\n      });\n    });\n  };\n}\n","import { debounceTime, map, Observable, startWith, takeUntil, tap } from 'rxjs';\n\nexport function debounceMove(delay: number, destroyer: Observable<void>, callback: (x: boolean) => void) {\n  return function (source: Observable<Event>): Observable<boolean> {\n    return source\n        .pipe(\n            startWith(new Event('mousemove')),\n            takeUntil(destroyer),\n            tap(() => callback(false)),\n            map(() => true),\n            debounceTime(delay),\n            tap(hide => callback(hide)));\n  };\n}\n","import { Platform } from \"@angular/cdk/platform\";\nimport { inject, InjectionToken } from \"@angular/core\";\nimport { Browser } from \"../definitions\";\n\nexport const BROWSER = new InjectionToken<Browser>('Current browser', {\n  factory() {\n    const platform = inject(Platform);\n\n    if (platform.WEBKIT) {\n      return Browser.Webkit;\n    }\n\n    if (platform.FIREFOX) {\n      return Browser.Firefox;\n    }\n\n    if (platform.IOS) {\n      return Browser.Ios;\n    }\n\n    return Browser.Chromium;\n  }\n});\n","export const play = 'M8,5.14V19.14L19,12.14L8,5.14Z';\nexport const pause = 'M14,19H18V5H14M6,19H10V5H6V19Z';\nexport const fastForward = 'M4,5V19L11,12M18,5V19H20V5M11,5V19L18,12';\nexport const rewind = 'M20,5V19L13,12M6,5V19H4V5M13,5V19L6,12';\nexport const fullScreen = 'M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z';\nexport const smallScreen = 'M14,14H19V16H16V19H14V14M5,14H10V19H8V16H5V14M8,5H10V10H5V8H8V5M19,8V10H14V5H16V8H19Z';\nexport const mute = \"M12,4L9.91,6.09L12,8.18M4.27,3L3,4.27L7.73,9H3V15H7L12,20V13.27L16.25,17.53C15.58,18.04 14.83,18.46 14,18.7V20.77C15.38,20.45 16.63,19.82 17.68,18.96L19.73,21L21,19.73L12,10.73M19,12C19,12.94 18.8,13.82 18.46,14.64L19.97,16.15C20.62,14.91 21,13.5 21,12C21,7.72 18,4.14 14,3.23V5.29C16.89,6.15 19,8.83 19,12M16.5,12C16.5,10.23 15.5,8.71 14,7.97V10.18L16.45,12.63C16.5,12.43 16.5,12.21 16.5,12Z\";\nexport const volumeLow = \"M7,9V15H11L16,20V4L11,9H7Z\";\nexport const volumeMedium = \"M5,9V15H9L14,20V4L9,9M18.5,12C18.5,10.23 17.5,8.71 16,7.97V16C17.5,15.29 18.5,13.76 18.5,12Z\";\nexport const volumeHigh = \"M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z\";\nexport const fwd5 = \"M11.5 3C14.15 3 16.55 4 18.4 5.6L21 3V10H14L16.62 7.38C15.23 6.22 13.46 5.5 11.5 5.5C7.96 5.5 4.95 7.81 3.9 11L1.53 10.22C2.92 6.03 6.85 3 11.5 3M9 12H15V14H11V16H13C14.11 16 15 16.9 15 18V20C15 21.11 14.11 22 13 22H9V20H13V18H9V12Z\";\nexport const fwd10 = \"M10,12V22H8V14H6V12H10M18,14V20C18,21.11 17.11,22 16,22H14A2,2 0 0,1 12,20V14A2,2 0 0,1 14,12H16C17.11,12 18,12.9 18,14M14,14V20H16V14H14M11.5,3C14.15,3 16.55,4 18.4,5.6L21,3V10H14L16.62,7.38C15.23,6.22 13.46,5.5 11.5,5.5C7.96,5.5 4.95,7.81 3.9,11L1.53,10.22C2.92,6.03 6.85,3 11.5,3Z\";\nexport const fwd15 = \"M11.5 3C14.15 3 16.55 4 18.4 5.6L21 3V10H14L16.62 7.38C15.23 6.22 13.46 5.5 11.5 5.5C7.96 5.5 4.95 7.81 3.9 11L1.53 10.22C2.92 6.03 6.85 3 11.5 3M10 12V22H8V14H6V12H10M12 12H18V14H14V16H16C17.11 16 18 16.9 18 18V20C18 21.11 17.11 22 16 22H12V20H16V18H12V12Z\";\nexport const fwd30 = \"M11.5,3C6.85,3 2.92,6.03 1.53,10.22L3.9,11C4.95,7.81 7.96,5.5 11.5,5.5C13.46,5.5 15.23,6.22 16.62,7.38L14,10H21V3L18.4,5.6C16.55,4 14.15,3 11.5,3M19,14V20C19,21.11 18.11,22 17,22H15A2,2 0 0,1 13,20V14A2,2 0 0,1 15,12H17C18.11,12 19,12.9 19,14M15,14V20H17V14H15M11,20C11,21.11 10.1,22 9,22H5V20H9V18H7V16H9V14H5V12H9A2,2 0 0,1 11,14V15.5A1.5,1.5 0 0,1 9.5,17A1.5,1.5 0 0,1 11,18.5V20Z\";\nexport const fwd45 = \"M11.5 3C14.1 3 16.5 4 18.4 5.6L21 3V10H14L16.6 7.4C15.2 6.2 13.4 5.5 11.5 5.5C8 5.5 4.9 7.8 3.9 11L1.5 10.2C2.9 6 6.8 3 11.5 3M13 12H19V14H15V16H17C18.1 16 19 16.9 19 18V20C19 21.1 18.1 22 17 22H13V20H17V18H13V12M5 12V18H9V22H11V12H9V16H7V12H5Z\";\nexport const fwd60 = \"M11.5 3C6.8 3 2.9 6 1.5 10.2L3.9 11C4.9 7.8 8 5.5 11.5 5.5C13.5 5.5 15.2 6.2 16.6 7.4L14 10H21V3L18.4 5.6C16.5 4 14.1 3 11.5 3M19 14V20C19 21.1 18.1 22 17 22H15C13.9 22 13 21.1 13 20V14C13 12.9 13.9 12 15 12H17C18.1 12 19 12.9 19 14M15 14V20H17V14H15M7 12C5.9 12 5 12.9 5 14V20C5 21.1 5.9 22 7 22H9C10.1 22 11 21.1 11 20V18C11 16.9 10.1 16 9 16H7V14H11V12H7M7 18H9V20H7V18Z\";\nexport const rwd5 = \"M12.5 3C17.15 3 21.08 6.03 22.47 10.22L20.1 11C19.05 7.81 16.04 5.5 12.5 5.5C10.54 5.5 8.77 6.22 7.38 7.38L10 10H3V3L5.6 5.6C7.45 4 9.85 3 12.5 3M9 12H15V14H11V16H13C14.11 16 15 16.9 15 18V20C15 21.11 14.11 22 13 22H9V20H13V18H9V12Z\";\nexport const rwd10 = \"M12.5,3C17.15,3 21.08,6.03 22.47,10.22L20.1,11C19.05,7.81 16.04,5.5 12.5,5.5C10.54,5.5 8.77,6.22 7.38,7.38L10,10H3V3L5.6,5.6C7.45,4 9.85,3 12.5,3M10,12V22H8V14H6V12H10M18,14V20C18,21.11 17.11,22 16,22H14A2,2 0 0,1 12,20V14A2,2 0 0,1 14,12H16C17.11,12 18,12.9 18,14M14,14V20H16V14H14Z\";\nexport const rwd15 = \"M12.5 3C17.15 3 21.08 6.03 22.47 10.22L20.1 11C19.05 7.81 16.04 5.5 12.5 5.5C10.54 5.5 8.77 6.22 7.38 7.38L10 10H3V3L5.6 5.6C7.45 4 9.85 3 12.5 3M10 12V22H8V14H6V12H10M12 12H18V14H14V16H16C17.11 16 18 16.9 18 18V20C18 21.11 17.11 22 16 22H12V20H16V18H12V12Z\";\nexport const rwd30 = \"M19,14V20C19,21.11 18.11,22 17,22H15A2,2 0 0,1 13,20V14A2,2 0 0,1 15,12H17C18.11,12 19,12.9 19,14M15,14V20H17V14H15M11,20C11,21.11 10.1,22 9,22H5V20H9V18H7V16H9V14H5V12H9A2,2 0 0,1 11,14V15.5A1.5,1.5 0 0,1 9.5,17A1.5,1.5 0 0,1 11,18.5V20M12.5,3C17.15,3 21.08,6.03 22.47,10.22L20.1,11C19.05,7.81 16.04,5.5 12.5,5.5C10.54,5.5 8.77,6.22 7.38,7.38L10,10H3V3L5.6,5.6C7.45,4 9.85,3 12.5,3Z\";\nexport const rwd45 = \"M12.5 3C17.1 3 21.1 6 22.5 10.2L20.1 11C19 7.8 16 5.5 12.5 5.5C10.5 5.5 8.8 6.2 7.4 7.4L10 10H3V3L5.6 5.6C7.4 4 9.9 3 12.5 3M13 12H19V14H15V16H17C18.1 16 19 16.9 19 18V20C19 21.1 18.1 22 17 22H13V20H17V18H13V12M5 12V18H9V22H11V12H9V16H7V12H5Z\";\nexport const rwd60 = \"M19 14V20C19 21.1 18.1 22 17 22H15C13.9 22 13 21.1 13 20V14C13 12.9 13.9 12 15 12H17C18.1 12 19 12.9 19 14M15 14V20H17V14H15M12.5 3C17.1 3 21.1 6 22.5 10.2L20.1 11C19 7.8 16 5.5 12.5 5.5C10.5 5.5 8.8 6.2 7.4 7.4L10 10H3V3L5.6 5.6C7.4 4 9.9 3 12.5 3M7 12C5.9 12 5 12.9 5 14V20C5 21.1 5.9 22 7 22H9C10.1 22 11 21.1 11 20V18C11 16.9 10.1 16 9 16H7V14H11V12H7M7 18H9V20H7V18Z\";\n","export const getTime = (seconds: number): string => {\n  const h = Math.max(0, Math.floor(seconds / 3600));\n  const m = Math.max(0, Math.floor((seconds % 3600) / 60));\n  const s = Math.max(0, Math.floor(seconds % 60));\n  return `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}:${(s).toString().padStart(2, '0')}`;\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { TellyPlugin } from \"./telly-plugin\";\nimport { TellyPluginConfig } from \"./telly-plugin.config\";\n\nexport const tellyPluginToken: InjectionToken<TellyPlugin> = new InjectionToken(\n    '__TELLY_PLUGIN__'\n);\n\nexport const tellyPluginConfigToken: InjectionToken<TellyPluginConfig> = new InjectionToken(\n    '__TELLY_PLUGIN_CONFIG__'\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;IAAY;AAAZ,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,OAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,OAAA,CAAA,OAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,OAAA,CAAA,OAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACT,CAAC,EALW,OAAO,KAAP,OAAO,GAAA,EAAA,CAAA,CAAA;;ICAP;AAAZ,CAAA,UAAY,UAAU,EAAA;AAClB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACvB,CAAC,EAzBW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;MCIT,UAAU,CAAA;AAoBrB,IAAA,WAAA,CAAY,EAAU,EAAE,EAAoB,EAAE,OAA2B,EAAA;AAfzE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAU;AAIvC,QAAA,IAAA,CAAA,OAAO,GAA2B;YAChC,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;SACT;AAGC,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE;AACZ,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE;AAE1B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;IACxC;AAEA,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,aAAa;IAC3B;IAEA,IAAY,MAAM,CAAC,MAAyB,EAAA;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM;IAC7B;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,eAAe;IAC7B;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW;IACjC;IAEA,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI;IACjC;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;IAC/B;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;IAC9B;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ;IACrD;IAEA,IAAI,QAAQ,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG;IAC1B;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;IAC9B;IAEA,IAAI,KAAK,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG;IACvB;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAC7B;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;IAC9B;AAEA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;IAC5B;IAEA,IAAI,MAAM,CAAC,GAAW,EAAA;QACpB,IAAI,CAAC,QAAQ,CAAC,CAAA,OAAA,EAAU,GAAG,GAAG,GAAG,CAAA,CAAA,CAAG,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG;IAC3B;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;IACpF;IAEA,IAAI,CAAC,MAAM,GAAG,KAAK,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;IAEA,KAAK,CAAC,MAAM,GAAG,KAAK,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACvC;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;IAClD;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IACvB;AAEA,IAAA,IAAI,CAAC,MAAc,EAAA;QACjB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK;IAChD;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;AACrB,QAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE5B,QAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI;QAClC;AAAO,aAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAA,SAAA,EAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AAC3C,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC/B,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI;AAChC,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;gBAElC,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjB;YACF;iBAAO;AACL,gBAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,IAAI,CAAC;gBACzD,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,UAAU;AACvC,gBAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC9G;QACF;AAAO,aAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AAC1C,YAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,IAAI,CAAC;AACzD,YAAA,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,UAAU;AACjD,YAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9G;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;AAC1B,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;QACpB;AAAO,aAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;QACpB;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;QACvB;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;AAC1B,QAAA,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACrB;AAAO,aAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACrB;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;QACvB;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB;AAEA,IAAA,QAAQ,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;IAChC;AAEA,IAAA,KAAK,CAAC,IAAyB,EAAA;QAC7B,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;IACtC;IAEA,iBAAiB,GAAA;AACf,QAAA,OAAO,KAAK,CACV,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC5C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAC7C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAC9C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EACxC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC5C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAC9C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAC1C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAC9C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,EAChD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAC3C;IACH;AAEA,IAAA,WAAW,CAAC,GAAW,EAAA;AACrB,QAAA,YAAY,CAAC,OAAO,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,EAAE,IAAI,SAAS,CAAA,CAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC9E;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,EAAE,IAAI,SAAS,CAAA,CAAE,CAAC;QAC3E,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM;YACrB,OAAO,CAAC,MAAM;QAChB;AACA,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC;IACzB;AACD;;MC/NY,gBAAgB,GAAsC,IAAI,cAAc,CAAC,kBAAkB;;ACAlG,SAAU,SAAS,CAAC,KAAmB,EAAA;AAC3C,IAAA,OAAO,UAAU,MAAyB,EAAA;AACxC,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAI;YACnC,OAAO,MAAM,CAAC,SAAS,CAAC;AACtB,gBAAA,IAAI,CAAC,EAAE,EAAA;oBACL,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAkB,CAAC,EAAE;AACzC,wBAAA,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B;gBACF,CAAC;AACD,gBAAA,KAAK,CAAC,GAAG,EAAA;AACP,oBAAA,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBACtB,CAAC;gBACD,QAAQ,GAAA;oBACN,UAAU,CAAC,QAAQ,EAAE;gBACvB,CAAC;AACF,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AACH;;SCnBgB,YAAY,CAAC,KAAa,EAAE,SAA2B,EAAE,QAA8B,EAAA;AACrG,IAAA,OAAO,UAAU,MAAyB,EAAA;AACxC,QAAA,OAAO;aACF,IAAI,CACD,SAAS,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,EACjC,SAAS,CAAC,SAAS,CAAC,EACpB,GAAG,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,EAC1B,GAAG,CAAC,MAAM,IAAI,CAAC,EACf,YAAY,CAAC,KAAK,CAAC,EACnB,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,IAAA,CAAC;AACH;;MCTa,OAAO,GAAG,IAAI,cAAc,CAAU,iBAAiB,EAAE;IACpE,OAAO,GAAA;AACL,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEjC,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,OAAO,OAAO,CAAC,MAAM;QACvB;AAEA,QAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;YACpB,OAAO,OAAO,CAAC,OAAO;QACxB;AAEA,QAAA,IAAI,QAAQ,CAAC,GAAG,EAAE;YAChB,OAAO,OAAO,CAAC,GAAG;QACpB;QAEA,OAAO,OAAO,CAAC,QAAQ;IACzB;AACD,CAAA;;ACtBM,MAAM,IAAI,GAAG;AACb,MAAM,KAAK,GAAG;AACd,MAAM,WAAW,GAAG;AACpB,MAAM,MAAM,GAAG;AACf,MAAM,UAAU,GAAG;AACnB,MAAM,WAAW,GAAG;AACpB,MAAM,IAAI,GAAG;AACb,MAAM,SAAS,GAAG;AAClB,MAAM,YAAY,GAAG;AACrB,MAAM,UAAU,GAAG;AACnB,MAAM,IAAI,GAAG;AACb,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,IAAI,GAAG;AACb,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;;ACrBd,MAAM,OAAO,GAAG,CAAC,OAAe,KAAY;AACjD,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;AACxD,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;AAC/C,IAAA,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AAC/G;;MCDa,gBAAgB,GAAgC,IAAI,cAAc,CAC3E,kBAAkB;MAGT,sBAAsB,GAAsC,IAAI,cAAc,CACvF,yBAAyB;;ACT7B;;AAEG;;;;"}