{"version":3,"file":"augwit-ng2-file-upload.mjs","sources":["../../../../libs/ng2-file-upload/file-upload/file-like-object.class.ts","../../../../libs/ng2-file-upload/file-upload/file-item.class.ts","../../../../libs/ng2-file-upload/file-upload/file-type.class.ts","../../../../libs/ng2-file-upload/file-upload/file-uploader.class.ts","../../../../libs/ng2-file-upload/file-upload/file-drop.directive.ts","../../../../libs/ng2-file-upload/file-upload/file-select.directive.ts","../../../../libs/ng2-file-upload/file-upload/file-upload.module.ts","../../../../libs/ng2-file-upload/augwit-ng2-file-upload.ts"],"sourcesContent":["export class FileLikeObject {\n  lastModifiedDate: any;\n  size: any;\n  type?: string;\n  name?: string;\n  rawFile: HTMLInputElement | File;\n\n  constructor(fileOrInput: HTMLInputElement | File) {\n    this.rawFile = fileOrInput;\n    const fakePathOrObject =  fileOrInput instanceof HTMLInputElement ? fileOrInput.value : fileOrInput;\n    const postfix = typeof fakePathOrObject === 'string' ? 'FakePath' : 'Object';\n    const method = `_createFrom${postfix}`;\n    (this as any)[ method ](fakePathOrObject);\n  }\n\n  _createFromFakePath(path: string): void {\n    this.lastModifiedDate = void 0;\n    this.size = void 0;\n    this.type = `like/${path.slice(path.lastIndexOf('.') + 1).toLowerCase()}`;\n    this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\\\') + 2);\n  }\n\n  _createFromObject(object: { size: number, type: string, name: string }): void {\n    this.size = object.size;\n    this.type = object.type;\n    this.name = object.name;\n  }\n}\n","import { FileLikeObject } from './file-like-object.class';\nimport { FileUploader, ParsedResponseHeaders, FileUploaderOptions } from './file-uploader.class';\n\nexport class FileItem {\n   file: FileLikeObject;\n   _file: File;\n   alias?: string;\n   url = '/';\n   method?: string;\n   headers: any = [];\n   withCredentials = true;\n   formData: any = [];\n   isReady = false;\n   isUploading = false;\n   isUploaded = false;\n   isSuccess = false;\n   isCancel = false;\n   isError = false;\n   progress = 0;\n   index?: number;\n   _xhr?: XMLHttpRequest;\n   _form: any;\n\n  protected uploader: FileUploader;\n  protected some: File;\n  protected options: FileUploaderOptions;\n\n   constructor(uploader: FileUploader, some: File, options: FileUploaderOptions) {\n    this.uploader = uploader;\n    this.some = some;\n    this.options = options;\n    this.file = new FileLikeObject(some);\n    this._file = some;\n    if (uploader.options) {\n      this.method = uploader.options.method || 'POST';\n      this.alias = uploader.options.itemAlias || 'file';\n    }\n    this.url = uploader.options.url;\n  }\n\n   upload(): void {\n    try {\n      this.uploader.uploadItem(this);\n    } catch (e) {\n      this.uploader._onCompleteItem(this, '', 0, {});\n      this.uploader._onErrorItem(this, '', 0, {});\n    }\n  }\n\n   cancel(): void {\n    this.uploader.cancelItem(this);\n  }\n\n   remove(): void {\n    this.uploader.removeFromQueue(this);\n  }\n\n   onBeforeUpload(): void {\n    return void 0;\n  }\n\n   onBuildForm(form: any): any {\n    return { form };\n  }\n\n   onProgress(progress: number): any {\n    return { progress };\n  }\n\n   onSuccess(response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { response, status, headers };\n  }\n\n   onError(response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { response, status, headers };\n  }\n\n   onCancel(response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { response, status, headers };\n  }\n\n   onComplete(response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { response, status, headers };\n  }\n\n   _onBeforeUpload(): void {\n    this.isReady = true;\n    this.isUploading = true;\n    this.isUploaded = false;\n    this.isSuccess = false;\n    this.isCancel = false;\n    this.isError = false;\n    this.progress = 0;\n    this.onBeforeUpload();\n  }\n\n   _onBuildForm(form: any): void {\n    this.onBuildForm(form);\n  }\n\n   _onProgress(progress: number): void {\n    this.progress = progress;\n    this.onProgress(progress);\n  }\n\n   _onSuccess(response: string, status: number, headers: ParsedResponseHeaders): void {\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = true;\n    this.isSuccess = true;\n    this.isCancel = false;\n    this.isError = false;\n    this.progress = 100;\n    this.index = undefined;\n    this.onSuccess(response, status, headers);\n  }\n\n   _onError(response: string, status: number, headers: ParsedResponseHeaders): void {\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = true;\n    this.isSuccess = false;\n    this.isCancel = false;\n    this.isError = true;\n    this.progress = 0;\n    this.index = undefined;\n    this.onError(response, status, headers);\n  }\n\n   _onCancel(response: string, status: number, headers: ParsedResponseHeaders): void {\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = false;\n    this.isSuccess = false;\n    this.isCancel = true;\n    this.isError = false;\n    this.progress = 0;\n    this.index = undefined;\n    this.onCancel(response, status, headers);\n  }\n\n   _onComplete(response: string, status: number, headers: ParsedResponseHeaders): void {\n    this.onComplete(response, status, headers);\n\n    if (this.uploader.options.removeAfterUpload) {\n      this.remove();\n    }\n  }\n\n   _prepareToUploading(): void {\n    this.index = this.index || ++this.uploader._nextIndex;\n    this.isReady = true;\n  }\n}\n","import { FileLikeObject } from '../index';\n\nexport class FileType {\n  /*  MS office  */\n  // tslint:disable-next-line:variable-name\n  static mime_doc: string[] = [\n    'application/msword',\n    'application/msword',\n    'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n    'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n    'application/vnd.ms-word.document.macroEnabled.12',\n    'application/vnd.ms-word.template.macroEnabled.12'\n  ];\n  // tslint:disable-next-line:variable-name\n  static mime_xsl: string[] = [\n    'application/vnd.ms-excel',\n    'application/vnd.ms-excel',\n    'application/vnd.ms-excel',\n    'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n    'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n    'application/vnd.ms-excel.sheet.macroEnabled.12',\n    'application/vnd.ms-excel.template.macroEnabled.12',\n    'application/vnd.ms-excel.addin.macroEnabled.12',\n    'application/vnd.ms-excel.sheet.binary.macroEnabled.12'\n  ];\n  // tslint:disable-next-line:variable-name\n  static mime_ppt: string[] = [\n    'application/vnd.ms-powerpoint',\n    'application/vnd.ms-powerpoint',\n    'application/vnd.ms-powerpoint',\n    'application/vnd.ms-powerpoint',\n    'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n    'application/vnd.openxmlformats-officedocument.presentationml.template',\n    'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n    'application/vnd.ms-powerpoint.addin.macroEnabled.12',\n    'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n    'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n    'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'\n  ];\n\n  /* PSD */\n  // tslint:disable-next-line:variable-name\n  static mime_psd: string[] = [\n    'image/photoshop',\n    'image/x-photoshop',\n    'image/psd',\n    'application/photoshop',\n    'application/psd',\n    'zz-application/zz-winassoc-psd'\n  ];\n\n  /* Compressed files */\n  // tslint:disable-next-line:variable-name\n  static mime_compress: string[] = [\n    'application/x-gtar',\n    'application/x-gcompress',\n    'application/compress',\n    'application/x-tar',\n    'application/x-rar-compressed',\n    'application/octet-stream',\n    'application/x-zip-compressed',\n    'application/zip-compressed',\n    'application/x-7z-compressed',\n    'application/gzip',\n    'application/x-bzip2'\n  ];\n\n  static getMimeClass(file: FileLikeObject): string {\n    let mimeClass = 'application';\n    if (file?.type && this.mime_psd.indexOf(file.type) !== -1) {\n      mimeClass = 'image';\n    } else if (file?.type?.match('image.*')) {\n      mimeClass = 'image';\n    } else if (file?.type?.match('video.*')) {\n      mimeClass = 'video';\n    } else if (file?.type?.match('audio.*')) {\n      mimeClass = 'audio';\n    } else if (file?.type === 'application/pdf') {\n      mimeClass = 'pdf';\n    } else if (file?.type && this.mime_compress.indexOf(file.type) !== -1) {\n      mimeClass = 'compress';\n    } else if (file?.type && this.mime_doc.indexOf(file.type) !== -1) {\n      mimeClass = 'doc';\n    } else if (file?.type && this.mime_xsl.indexOf(file.type) !== -1) {\n      mimeClass = 'xls';\n    } else if (file?.type && this.mime_ppt.indexOf(file.type) !== -1) {\n      mimeClass = 'ppt';\n    }\n    if (mimeClass === 'application' && file?.name) {\n      mimeClass = this.fileTypeDetection(file.name);\n    }\n\n    return mimeClass;\n  }\n\n  static fileTypeDetection(inputFilename: string): string {\n    const types: { [ key: string ]: string } = {\n      jpg: 'image',\n      jpeg: 'image',\n      tif: 'image',\n      psd: 'image',\n      bmp: 'image',\n      png: 'image',\n      nef: 'image',\n      tiff: 'image',\n      cr2: 'image',\n      dwg: 'image',\n      cdr: 'image',\n      ai: 'image',\n      indd: 'image',\n      pin: 'image',\n      cdp: 'image',\n      skp: 'image',\n      stp: 'image',\n      '3dm': 'image',\n      mp3: 'audio',\n      wav: 'audio',\n      wma: 'audio',\n      mod: 'audio',\n      m4a: 'audio',\n      compress: 'compress',\n      zip: 'compress',\n      rar: 'compress',\n      '7z': 'compress',\n      lz: 'compress',\n      z01: 'compress',\n      bz2: 'compress',\n      gz: 'compress',\n      pdf: 'pdf',\n      xls: 'xls',\n      xlsx: 'xls',\n      ods: 'xls',\n      mp4: 'video',\n      avi: 'video',\n      wmv: 'video',\n      mpg: 'video',\n      mts: 'video',\n      flv: 'video',\n      '3gp': 'video',\n      vob: 'video',\n      m4v: 'video',\n      mpeg: 'video',\n      m2ts: 'video',\n      mov: 'video',\n      doc: 'doc',\n      docx: 'doc',\n      eps: 'doc',\n      txt: 'doc',\n      odt: 'doc',\n      rtf: 'doc',\n      ppt: 'ppt',\n      pptx: 'ppt',\n      pps: 'ppt',\n      ppsx: 'ppt',\n      odp: 'ppt'\n    };\n\n    const chunks = inputFilename.split('.');\n    if (chunks.length < 2) {\n      return 'application';\n    }\n    const extension = chunks[ chunks.length - 1 ].toLowerCase();\n    if (types[ extension ] === undefined) {\n      return 'application';\n    } else {\n      return types[ extension ];\n    }\n  }\n}\n","import { EventEmitter } from '@angular/core';\nimport { FileLikeObject } from './file-like-object.class';\nimport { FileItem } from './file-item.class';\nimport { FileType } from './file-type.class';\n\nfunction isFile(value: any): boolean {\n  return (File && value instanceof File);\n}\n\nexport interface Headers {\n  name: string;\n  value: string;\n}\n\nexport interface ParsedResponseHeaders { [ headerFieldName: string ]: string }\n\nexport interface FilterFunction {\n  name: string;\n  fn(item: FileLikeObject, options?: FileUploaderOptions): boolean;\n}\n\nexport interface FileUploaderOptions {\n  allowedMimeType?: string[];\n  allowedFileType?: string[];\n  autoUpload?: boolean;\n  isHTML5?: boolean;\n  filters?: FilterFunction[];\n  headers?: Headers[];\n  method?: string;\n  authToken?: string;\n  maxFileSize?: number;\n  queueLimit?: number;\n  removeAfterUpload?: boolean;\n  url: string;\n  disableMultipart?: boolean;\n  itemAlias?: string;\n  authTokenHeader?: string;\n  additionalParameter?: { [ key: string ]: any };\n  parametersBeforeFiles?: boolean;\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  formatDataFunction?: Function;\n  formatDataFunctionIsAsync?: boolean;\n}\n\nexport class FileUploader {\n\n  authToken?: string;\n  isUploading = false;\n  queue: FileItem[] = [];\n  progress = 0;\n  _nextIndex = 0;\n  autoUpload: any;\n  authTokenHeader?: string;\n  response: EventEmitter<any>;\n\n  options: FileUploaderOptions = {\n    autoUpload: false,\n    isHTML5: true,\n    filters: [],\n    removeAfterUpload: false,\n    disableMultipart: false,\n    formatDataFunction: (item: FileItem) => item._file,\n    formatDataFunctionIsAsync: false,\n    url: ''\n  };\n\n  protected _failFilterIndex?: number;\n\n  constructor(options: FileUploaderOptions) {\n    this.setOptions(options);\n    this.response = new EventEmitter<string>();\n  }\n\n  setOptions(options: FileUploaderOptions): void {\n    this.options = Object.assign(this.options, options);\n\n    this.authToken = this.options.authToken;\n    this.authTokenHeader = this.options.authTokenHeader || 'Authorization';\n    this.autoUpload = this.options.autoUpload;\n    this.options.filters?.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });\n\n    if (this.options.maxFileSize) {\n      this.options.filters?.unshift({ name: 'fileSize', fn: this._fileSizeFilter });\n    }\n\n    if (this.options.allowedFileType) {\n      this.options.filters?.unshift({ name: 'fileType', fn: this._fileTypeFilter });\n    }\n\n    if (this.options.allowedMimeType) {\n      this.options.filters?.unshift({ name: 'mimeType', fn: this._mimeTypeFilter });\n    }\n\n    for (let i = 0; i < this.queue.length; i++) {\n      this.queue[ i ].url = this.options.url;\n    }\n  }\n\n  addToQueue(files: File[], _options?: FileUploaderOptions, filters?: [] | string): void {\n    let options = _options;\n    const list: File[] = [];\n    for (const file of files) {\n      list.push(file);\n    }\n    const arrayOfFilters = this._getFilters(filters);\n    const count = this.queue.length;\n    const addedFileItems: FileItem[] = [];\n    list.map((some: File) => {\n      if (!options) {\n        options = this.options;\n      }\n\n      const temp = new FileLikeObject(some);\n      if (this._isValidFile(temp, arrayOfFilters, options)) {\n        const fileItem = new FileItem(this, some, options);\n        addedFileItems.push(fileItem);\n        this.queue.push(fileItem);\n        this._onAfterAddingFile(fileItem);\n      } else {\n        if (typeof this._failFilterIndex === 'number' && this._failFilterIndex >= 0) {\n          const filter = arrayOfFilters[ this._failFilterIndex ];\n          this._onWhenAddingFileFailed(temp, filter, options);\n        }\n      }\n    });\n    if (this.queue.length !== count) {\n      this._onAfterAddingAll(addedFileItems);\n      this.progress = this._getTotalProgress();\n    }\n    this._render();\n    if (this.options.autoUpload) {\n      this.uploadAll();\n    }\n  }\n\n  removeFromQueue(value: FileItem): void {\n    const index = this.getIndexOfItem(value);\n    const item = this.queue[ index ];\n    if (item.isUploading) {\n      item.cancel();\n    }\n    this.queue.splice(index, 1);\n    this.progress = this._getTotalProgress();\n  }\n\n  clearQueue(): void {\n    while (this.queue.length) {\n      this.queue[ 0 ].remove();\n    }\n    this.progress = 0;\n  }\n\n  uploadItem(value: FileItem): void {\n    const index = this.getIndexOfItem(value);\n    const item = this.queue[ index ];\n    const transport = this.options.isHTML5 ? '_xhrTransport' : '_iframeTransport';\n    item._prepareToUploading();\n    if (this.isUploading) {\n      return;\n    }\n    this.isUploading = true;\n    (this as any)[ transport ](item);\n  }\n\n  cancelItem(value: FileItem): void {\n    const index = this.getIndexOfItem(value);\n    const item = this.queue[ index ];\n    const prop = this.options.isHTML5 ? item._xhr : item._form;\n    if (item && item.isUploading) {\n      prop.abort();\n    }\n  }\n\n  uploadAll(): void {\n    const items = this.getNotUploadedItems().filter((item: FileItem) => !item.isUploading);\n    if (!items.length) {\n      return;\n    }\n    items.map((item: FileItem) => item._prepareToUploading());\n    items[ 0 ].upload();\n  }\n\n  cancelAll(): void {\n    const items = this.getNotUploadedItems();\n    items.map((item: FileItem) => item.cancel());\n  }\n\n  isFile(value: any): boolean {\n    return isFile(value);\n  }\n\n  isFileLikeObject(value: any): boolean {\n    return value instanceof FileLikeObject;\n  }\n\n  getIndexOfItem(value: any): number {\n    return typeof value === 'number' ? value : this.queue.indexOf(value);\n  }\n\n  getNotUploadedItems(): any[] {\n    return this.queue.filter((item: FileItem) => !item.isUploaded);\n  }\n\n  getReadyItems(): any[] {\n    return this.queue\n      .filter((item: FileItem) => (item.isReady && !item.isUploading))\n      .sort((item1: any, item2: any) => item1.index - item2.index);\n  }\n\n  onAfterAddingAll(fileItems: any): any {\n    return { fileItems };\n  }\n\n  onBuildItemForm(fileItem: FileItem, form: any): any {\n    return { fileItem, form };\n  }\n\n  onAfterAddingFile(fileItem: FileItem): any {\n    return { fileItem };\n  }\n\n  onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): any {\n    return { item, filter, options };\n  }\n\n  onBeforeUploadItem(fileItem: FileItem): any {\n    return { fileItem };\n  }\n\n  onProgressItem(fileItem: FileItem, progress: any): any {\n    return { fileItem, progress };\n  }\n\n  onProgressAll(progress: any): any {\n    return { progress };\n  }\n\n  onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { item, response, status, headers };\n  }\n\n  onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { item, response, status, headers };\n  }\n\n  onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { item, response, status, headers };\n  }\n\n  onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any {\n    return { item, response, status, headers };\n  }\n\n  onCompleteAll(): any {\n    return void 0;\n  }\n\n  _mimeTypeFilter(item: FileLikeObject): boolean {\n    return !(item?.type && this.options.allowedMimeType && this.options.allowedMimeType?.indexOf(item.type) === -1);\n  }\n\n  _fileSizeFilter(item: FileLikeObject): boolean {\n    return !(this.options.maxFileSize && item.size > this.options.maxFileSize);\n  }\n\n  _fileTypeFilter(item: FileLikeObject): boolean {\n    return !(this.options.allowedFileType &&\n      this.options.allowedFileType.indexOf(FileType.getMimeClass(item)) === -1);\n  }\n\n  _onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n    item._onError(response, status, headers);\n    this.onErrorItem(item, response, status, headers);\n  }\n\n  _onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n    item._onComplete(response, status, headers);\n    this.onCompleteItem(item, response, status, headers);\n    const nextItem = this.getReadyItems()[ 0 ];\n    this.isUploading = false;\n    if (nextItem) {\n      nextItem.upload();\n\n      return;\n    }\n    this.onCompleteAll();\n    this.progress = this._getTotalProgress();\n    this._render();\n  }\n\n  protected _headersGetter(parsedHeaders: ParsedResponseHeaders): any {\n    return (name: any): any => {\n      if (name) {\n        return parsedHeaders[ name.toLowerCase() ] || undefined;\n      }\n\n      return parsedHeaders;\n    };\n  }\n\n  protected _xhrTransport(item: FileItem): any {\n    // tslint:disable-next-line:no-this-assignment\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const that = this;\n    const xhr = item._xhr = new XMLHttpRequest();\n    let sendable: any;\n    this._onBeforeUploadItem(item);\n\n    if (typeof item._file.size !== 'number') {\n      throw new TypeError('The file specified is no longer valid');\n    }\n    if (!this.options.disableMultipart) {\n      sendable = new FormData();\n      this._onBuildItemForm(item, sendable);\n      const appendFile = () => sendable.append(item.alias, item._file, item.file.name);\n      if (!this.options.parametersBeforeFiles) {\n        appendFile();\n      }\n\n      // For AWS, Additional Parameters must come BEFORE Files\n      if (this.options.additionalParameter !== undefined) {\n        Object.keys(this.options.additionalParameter).forEach((key: string) => {\n          let paramVal = this.options.additionalParameter?.[ key ];\n          // Allow an additional parameter to include the filename\n          if (typeof paramVal === 'string' && paramVal.indexOf('{{file_name}}') >= 0 && item.file?.name) {\n            paramVal = paramVal.replace('{{file_name}}', item.file.name);\n          }\n          sendable.append(key, paramVal);\n        });\n      }\n\n      if (appendFile && this.options.parametersBeforeFiles) {\n        appendFile();\n      }\n    } else {\n      if (this.options.formatDataFunction) {\n        sendable = this.options.formatDataFunction(item);\n      }\n    }\n\n    xhr.upload.onprogress = (event: any) => {\n      const progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);\n      this._onProgressItem(item, progress);\n    };\n    xhr.onload = () => {\n      const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n      const response = this._transformResponse(xhr.response, headers);\n      const gist = this._isSuccessCode(xhr.status) ? 'Success' : 'Error';\n      const method = `_on${gist}Item`;\n      (this as any)[ method ](item, response, xhr.status, headers);\n      this._onCompleteItem(item, response, xhr.status, headers);\n    };\n    xhr.onerror = () => {\n      const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n      const response = this._transformResponse(xhr.response, headers);\n      this._onErrorItem(item, response, xhr.status, headers);\n      this._onCompleteItem(item, response, xhr.status, headers);\n    };\n    xhr.onabort = () => {\n      const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n      const response = this._transformResponse(xhr.response, headers);\n      this._onCancelItem(item, response, xhr.status, headers);\n      this._onCompleteItem(item, response, xhr.status, headers);\n    };\n    if (item.method && item.url) {\n      xhr.open(item.method, item.url, true);\n    }\n    xhr.withCredentials = item.withCredentials;\n    if (this.options.headers) {\n      for (const header of this.options.headers) {\n        xhr.setRequestHeader(header.name, header.value);\n      }\n    }\n    if (item.headers.length) {\n      for (const header of item.headers) {\n        xhr.setRequestHeader(header.name, header.value);\n      }\n    }\n    if (this.authToken && this.authTokenHeader) {\n      xhr.setRequestHeader(this.authTokenHeader, this.authToken);\n    }\n    xhr.onreadystatechange = function () {\n      if (xhr.readyState == XMLHttpRequest.DONE) {\n        that.response.emit(xhr.responseText);\n      }\n    };\n    if (this.options.formatDataFunctionIsAsync) {\n      sendable.then(\n        (result: any) => xhr.send(JSON.stringify(result))\n      );\n    } else {\n      xhr.send(sendable);\n    }\n    this._render();\n  }\n\n  protected _getTotalProgress(value = 0): number {\n    if (this.options.removeAfterUpload) {\n      return value;\n    }\n    const notUploaded = this.getNotUploadedItems().length;\n    const uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;\n    const ratio = 100 / this.queue.length;\n    const current = value * ratio / 100;\n    return Math.round(uploaded * ratio + current);\n  }\n\n  protected _getFilters(filters?: FilterFunction[] | string): FilterFunction[] | [] {\n    if (!filters) {\n      return this.options?.filters || [];\n    }\n    if (Array.isArray(filters)) {\n      return filters;\n    }\n    if (typeof filters === 'string') {\n      const names = filters.match(/[^\\s,]+/g);\n\n      return this.options?.filters || []\n        .filter((filter: any) => names?.indexOf(filter.name) !== -1);\n    }\n\n    return this.options?.filters || [];\n  }\n\n  protected _render(): any {\n    return void 0;\n  }\n\n  protected _queueLimitFilter(): boolean {\n    return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;\n  }\n\n  protected _isValidFile(file: FileLikeObject, filters: FilterFunction[], options: FileUploaderOptions): boolean {\n    this._failFilterIndex = -1;\n\n    return !filters.length ? true : filters.every((filter: FilterFunction) => {\n      if (typeof this._failFilterIndex === 'number') {\n        this._failFilterIndex++;\n      }\n\n      return filter.fn.call(this, file, options);\n    });\n  }\n\n  protected _isSuccessCode(status: number): boolean {\n    return (status >= 200 && status < 300) || status === 304;\n  }\n\n  protected _transformResponse(response: string, headers: ParsedResponseHeaders): string {\n    return response;\n  }\n\n  protected _parseHeaders(headers: string): ParsedResponseHeaders {\n    const parsed: any = {};\n    let key: any;\n    let val: any;\n    let i: any;\n    if (!headers) {\n      return parsed;\n    }\n    headers.split('\\n').map((line: any) => {\n      i = line.indexOf(':');\n      key = line.slice(0, i).trim().toLowerCase();\n      val = line.slice(i + 1).trim();\n      if (key) {\n        parsed[ key ] = parsed[ key ] ? parsed[ key ] + ', ' + val : val;\n      }\n    });\n\n    return parsed;\n  }\n\n  protected _onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): void {\n    this.onWhenAddingFileFailed(item, filter, options);\n  }\n\n  protected _onAfterAddingFile(item: FileItem): void {\n    this.onAfterAddingFile(item);\n  }\n\n  protected _onAfterAddingAll(items: any): void {\n    this.onAfterAddingAll(items);\n  }\n\n  protected _onBeforeUploadItem(item: FileItem): void {\n    item._onBeforeUpload();\n    this.onBeforeUploadItem(item);\n  }\n\n  protected _onBuildItemForm(item: FileItem, form: any): void {\n    item._onBuildForm(form);\n    this.onBuildItemForm(item, form);\n  }\n\n  protected _onProgressItem(item: FileItem, progress: any): void {\n    const total = this._getTotalProgress(progress);\n    this.progress = total;\n    item._onProgress(progress);\n    this.onProgressItem(item, progress);\n    this.onProgressAll(total);\n    this._render();\n  }\n\n  protected _onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n    item._onSuccess(response, status, headers);\n    this.onSuccessItem(item, response, status, headers);\n  }\n\n  protected _onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): void {\n    item._onCancel(response, status, headers);\n    this.onCancelItem(item, response, status, headers);\n  }\n}\n","import { Directive, EventEmitter, ElementRef, HostListener, Input, Output } from '@angular/core';\n\nimport { FileUploader, FileUploaderOptions } from './file-uploader.class';\n\n@Directive({ selector: '[ng2FileDrop]' })\nexport class FileDropDirective {\n  @Input()  uploader?: FileUploader;\n  @Output()  fileOver: EventEmitter<any> = new EventEmitter();\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output()  onFileDrop: EventEmitter<File[]> = new EventEmitter<File[]>();\n\n  protected element: ElementRef;\n\n  constructor(element: ElementRef) {\n    this.element = element;\n  }\n\n  getOptions(): FileUploaderOptions | void {\n    return this.uploader?.options;\n  }\n\n  getFilters(): string {\n    return '';\n  }\n\n  @HostListener('drop', [ '$event' ])\n  onDrop(event: MouseEvent): void {\n    const transfer = this._getTransfer(event);\n    if (!transfer) {\n      return;\n    }\n\n    const options = this.getOptions();\n    const filters = this.getFilters();\n    this._preventAndStop(event);\n    if (options) {\n      this.uploader?.addToQueue(transfer.files, options, filters);\n    }\n    this.fileOver.emit(false);\n    this.onFileDrop.emit(transfer.files);\n  }\n\n  @HostListener('dragover', [ '$event' ])\n  onDragOver(event: MouseEvent): void {\n    const transfer = this._getTransfer(event);\n    if (!this._haveFiles(transfer.types)) {\n      return;\n    }\n\n    transfer.dropEffect = 'copy';\n    this._preventAndStop(event);\n    this.fileOver.emit(true);\n  }\n\n  @HostListener('dragleave', [ '$event' ])\n  onDragLeave(event: MouseEvent): void {\n    if ((this as any).element) {\n      if (event.currentTarget === (this as any).element[ 0 ]) {\n        return;\n      }\n    }\n\n    this._preventAndStop(event);\n    this.fileOver.emit(false);\n  }\n\n  protected _getTransfer(event: any): any {\n    return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;\n  }\n\n  protected _preventAndStop(event: MouseEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  protected _haveFiles(types: any): boolean {\n    if (!types) {\n      return false;\n    }\n\n    if (types.indexOf) {\n      return types.indexOf('Files') !== -1;\n    } else if (types.contains) {\n      return types.contains('Files');\n    } else {\n      return false;\n    }\n  }\n}\n","import { Directive, EventEmitter, ElementRef, Input, HostListener, Output } from '@angular/core';\n\nimport { FileUploader, FileUploaderOptions } from './file-uploader.class';\n\n@Directive({ selector: '[ng2FileSelect]' })\nexport class FileSelectDirective {\n  @Input() uploader?: FileUploader;\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onFileSelected: EventEmitter<File[]> = new EventEmitter<File[]>();\n\n  protected element: ElementRef;\n\n  constructor(element: ElementRef) {\n    this.element = element;\n  }\n\n  getOptions(): FileUploaderOptions | undefined {\n    return this.uploader?.options;\n  }\n\n  getFilters(): string {\n    return '';\n  }\n\n  isEmptyAfterSelection(): boolean {\n    return !!this.element.nativeElement.attributes.multiple;\n  }\n\n  @HostListener('change')\n  onChange(): void {\n    const files = this.element.nativeElement.files;\n    const options = this.getOptions();\n    const filters = this.getFilters();\n    this.uploader?.addToQueue(files, options, filters);\n\n    this.onFileSelected.emit(files);\n    if (this.isEmptyAfterSelection()) {\n      this.element.nativeElement.value = '';\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FileDropDirective } from './file-drop.directive';\nimport { FileSelectDirective } from './file-select.directive';\nexport { FileDropDirective } from './file-drop.directive';\nexport { FileSelectDirective } from './file-select.directive';\n\n@NgModule({\n  imports: [ CommonModule ],\n  declarations: [ FileDropDirective, FileSelectDirective ],\n  exports: [ FileDropDirective, FileSelectDirective ]\n})\nexport class FileUploadModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAAa,cAAc,CAAA;AAOzB,IAAA,WAAA,CAAY,WAAoC,EAAA;AAC9C,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;AAC3B,QAAA,MAAM,gBAAgB,GAAI,WAAW,YAAY,gBAAgB,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC;AACpG,QAAA,MAAM,OAAO,GAAG,OAAO,gBAAgB,KAAK,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAC7E,QAAA,MAAM,MAAM,GAAG,CAAc,WAAA,EAAA,OAAO,EAAE,CAAC;AACtC,QAAA,IAAY,CAAE,MAAM,CAAE,CAAC,gBAAgB,CAAC,CAAC;KAC3C;AAED,IAAA,mBAAmB,CAAC,IAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA,CAAE,CAAC;QAC1E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5E;AAED,IAAA,iBAAiB,CAAC,MAAoD,EAAA;AACpE,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;KACzB;AACF;;MCxBY,QAAQ,CAAA;AAwBlB,IAAA,WAAA,CAAY,QAAsB,EAAE,IAAU,EAAE,OAA4B,EAAA;QApB5E,IAAG,CAAA,GAAA,GAAG,GAAG,CAAC;QAEV,IAAO,CAAA,OAAA,GAAQ,EAAE,CAAC;QAClB,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;QACvB,IAAQ,CAAA,QAAA,GAAQ,EAAE,CAAC;QACnB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;AAUZ,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,QAAQ,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;YAChD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;AACnD,SAAA;QACD,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;KACjC;IAEA,MAAM,GAAA;QACL,IAAI;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAChC,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7C,SAAA;KACF;IAEA,MAAM,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAChC;IAEA,MAAM,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;KACrC;IAEA,cAAc,GAAA;QACb,OAAO,KAAK,CAAC,CAAC;KACf;AAEA,IAAA,WAAW,CAAC,IAAS,EAAA;QACpB,OAAO,EAAE,IAAI,EAAE,CAAC;KACjB;AAEA,IAAA,UAAU,CAAC,QAAgB,EAAA;QAC1B,OAAO,EAAE,QAAQ,EAAE,CAAC;KACrB;AAEA,IAAA,SAAS,CAAC,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;AACzE,QAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;KACtC;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;AACvE,QAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;KACtC;AAEA,IAAA,QAAQ,CAAC,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;AACxE,QAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;KACtC;AAEA,IAAA,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;AAC1E,QAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;KACtC;IAEA,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAEA,IAAA,YAAY,CAAC,IAAS,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACxB;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KAC3B;AAEA,IAAA,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;AAC1E,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C;AAEA,IAAA,QAAQ,CAAC,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;AACxE,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACzC;AAEA,IAAA,SAAS,CAAC,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;AACzE,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAC1C;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;QAC3E,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,SAAA;KACF;IAEA,mBAAmB,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACtD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;AACF;;MCvJY,QAAQ,CAAA;;;AAGZ,IAAA,SAAA,IAAA,CAAA,QAAQ,GAAa;QAC1B,oBAAoB;QACpB,oBAAoB;QACpB,yEAAyE;QACzE,yEAAyE;QACzE,kDAAkD;QAClD,kDAAkD;KACnD,CAAC,EAAA;;AAEK,IAAA,SAAA,IAAA,CAAA,QAAQ,GAAa;QAC1B,0BAA0B;QAC1B,0BAA0B;QAC1B,0BAA0B;QAC1B,mEAAmE;QACnE,sEAAsE;QACtE,gDAAgD;QAChD,mDAAmD;QACnD,gDAAgD;QAChD,uDAAuD;KACxD,CAAC,EAAA;;AAEK,IAAA,SAAA,IAAA,CAAA,QAAQ,GAAa;QAC1B,+BAA+B;QAC/B,+BAA+B;QAC/B,+BAA+B;QAC/B,+BAA+B;QAC/B,2EAA2E;QAC3E,uEAAuE;QACvE,wEAAwE;QACxE,qDAAqD;QACrD,4DAA4D;QAC5D,4DAA4D;QAC5D,yDAAyD;KAC1D,CAAC,EAAA;;;AAIK,IAAA,SAAA,IAAA,CAAA,QAAQ,GAAa;QAC1B,iBAAiB;QACjB,mBAAmB;QACnB,WAAW;QACX,uBAAuB;QACvB,iBAAiB;QACjB,gCAAgC;KACjC,CAAC,EAAA;;;AAIK,IAAA,SAAA,IAAA,CAAA,aAAa,GAAa;QAC/B,oBAAoB;QACpB,yBAAyB;QACzB,sBAAsB;QACtB,mBAAmB;QACnB,8BAA8B;QAC9B,0BAA0B;QAC1B,8BAA8B;QAC9B,4BAA4B;QAC5B,6BAA6B;QAC7B,kBAAkB;QAClB,qBAAqB;KACtB,CAAC,EAAA;IAEF,OAAO,YAAY,CAAC,IAAoB,EAAA;QACtC,IAAI,SAAS,GAAG,aAAa,CAAC;AAC9B,QAAA,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YACzD,SAAS,GAAG,OAAO,CAAC;AACrB,SAAA;aAAM,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;YACvC,SAAS,GAAG,OAAO,CAAC;AACrB,SAAA;aAAM,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;YACvC,SAAS,GAAG,OAAO,CAAC;AACrB,SAAA;aAAM,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE;YACvC,SAAS,GAAG,OAAO,CAAC;AACrB,SAAA;AAAM,aAAA,IAAI,IAAI,EAAE,IAAI,KAAK,iBAAiB,EAAE;YAC3C,SAAS,GAAG,KAAK,CAAC;AACnB,SAAA;AAAM,aAAA,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YACrE,SAAS,GAAG,UAAU,CAAC;AACxB,SAAA;AAAM,aAAA,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YAChE,SAAS,GAAG,KAAK,CAAC;AACnB,SAAA;AAAM,aAAA,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YAChE,SAAS,GAAG,KAAK,CAAC;AACnB,SAAA;AAAM,aAAA,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YAChE,SAAS,GAAG,KAAK,CAAC;AACnB,SAAA;AACD,QAAA,IAAI,SAAS,KAAK,aAAa,IAAI,IAAI,EAAE,IAAI,EAAE;YAC7C,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,iBAAiB,CAAC,aAAqB,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAgC;AACzC,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,GAAG,EAAE,KAAK;SACX,CAAC;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,aAAa,CAAC;AACtB,SAAA;AACD,QAAA,MAAM,SAAS,GAAG,MAAM,CAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC;AAC5D,QAAA,IAAI,KAAK,CAAE,SAAS,CAAE,KAAK,SAAS,EAAE;AACpC,YAAA,OAAO,aAAa,CAAC;AACtB,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,KAAK,CAAE,SAAS,CAAE,CAAC;AAC3B,SAAA;KACF;;;AClKH,SAAS,MAAM,CAAC,KAAU,EAAA;AACxB,IAAA,QAAQ,IAAI,IAAI,KAAK,YAAY,IAAI,EAAE;AACzC,CAAC;MAqCY,YAAY,CAAA;AAwBvB,IAAA,WAAA,CAAY,OAA4B,EAAA;QArBxC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAK,CAAA,KAAA,GAAe,EAAE,CAAC;QACvB,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;QACb,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AAKf,QAAA,IAAA,CAAA,OAAO,GAAwB;AAC7B,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,gBAAgB,EAAE,KAAK;YACvB,kBAAkB,EAAE,CAAC,IAAc,KAAK,IAAI,CAAC,KAAK;AAClD,YAAA,yBAAyB,EAAE,KAAK;AAChC,YAAA,GAAG,EAAE,EAAE;SACR,CAAC;AAKA,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;KAC5C;AAED,IAAA,UAAU,CAAC,OAA4B,EAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,eAAe,CAAC;QACvE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAElF,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,IAAI,CAAC,KAAK,CAAE,CAAC,CAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACxC,SAAA;KACF;AAED,IAAA,UAAU,CAAC,KAAa,EAAE,QAA8B,EAAE,OAAqB,EAAA;QAC7E,IAAI,OAAO,GAAG,QAAQ,CAAC;QACvB,MAAM,IAAI,GAAW,EAAE,CAAC;AACxB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,SAAA;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACjD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,cAAc,GAAe,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAU,KAAI;YACtB,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACxB,aAAA;AAED,YAAA,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE;gBACpD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACnD,gBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACnC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,EAAE;oBAC3E,MAAM,MAAM,GAAG,cAAc,CAAE,IAAI,CAAC,gBAAgB,CAAE,CAAC;oBACvD,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACrD,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1C,SAAA;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;AACf,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;KACF;AAED,IAAA,eAAe,CAAC,KAAe,EAAA;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAE,KAAK,CAAE,CAAC;QACjC,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,SAAA;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1C;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACxB,IAAI,CAAC,KAAK,CAAE,CAAC,CAAE,CAAC,MAAM,EAAE,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KACnB;AAED,IAAA,UAAU,CAAC,KAAe,EAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAE,KAAK,CAAE,CAAC;AACjC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,eAAe,GAAG,kBAAkB,CAAC;QAC9E,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACvB,QAAA,IAAY,CAAE,SAAS,CAAE,CAAC,IAAI,CAAC,CAAC;KAClC;AAED,IAAA,UAAU,CAAC,KAAe,EAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAE,KAAK,CAAE,CAAC;AACjC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3D,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;KACF;IAED,SAAS,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAc,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB,OAAO;AACR,SAAA;AACD,QAAA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAc,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1D,QAAA,KAAK,CAAE,CAAC,CAAE,CAAC,MAAM,EAAE,CAAC;KACrB;IAED,SAAS,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACzC,QAAA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAc,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KAC9C;AAED,IAAA,MAAM,CAAC,KAAU,EAAA;AACf,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;KACtB;AAED,IAAA,gBAAgB,CAAC,KAAU,EAAA;QACzB,OAAO,KAAK,YAAY,cAAc,CAAC;KACxC;AAED,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACtE;IAED,mBAAmB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAc,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAChE;IAED,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,CAAC,IAAc,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/D,aAAA,IAAI,CAAC,CAAC,KAAU,EAAE,KAAU,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;KAChE;AAED,IAAA,gBAAgB,CAAC,SAAc,EAAA;QAC7B,OAAO,EAAE,SAAS,EAAE,CAAC;KACtB;IAED,eAAe,CAAC,QAAkB,EAAE,IAAS,EAAA;AAC3C,QAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC3B;AAED,IAAA,iBAAiB,CAAC,QAAkB,EAAA;QAClC,OAAO,EAAE,QAAQ,EAAE,CAAC;KACrB;AAED,IAAA,sBAAsB,CAAC,IAAoB,EAAE,MAAW,EAAE,OAAY,EAAA;AACpE,QAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;KAClC;AAED,IAAA,kBAAkB,CAAC,QAAkB,EAAA;QACnC,OAAO,EAAE,QAAQ,EAAE,CAAC;KACrB;IAED,cAAc,CAAC,QAAkB,EAAE,QAAa,EAAA;AAC9C,QAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;KAC/B;AAED,IAAA,aAAa,CAAC,QAAa,EAAA;QACzB,OAAO,EAAE,QAAQ,EAAE,CAAC;KACrB;AAED,IAAA,aAAa,CAAC,IAAc,EAAE,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;QAC5F,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;KAC5C;AAED,IAAA,WAAW,CAAC,IAAc,EAAE,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;QAC1F,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;KAC5C;AAED,IAAA,YAAY,CAAC,IAAc,EAAE,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;QAC3F,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;KAC5C;AAED,IAAA,cAAc,CAAC,IAAc,EAAE,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;QAC7F,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;KAC5C;IAED,aAAa,GAAA;QACX,OAAO,KAAK,CAAC,CAAC;KACf;AAED,IAAA,eAAe,CAAC,IAAoB,EAAA;AAClC,QAAA,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACjH;AAED,IAAA,eAAe,CAAC,IAAoB,EAAA;AAClC,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;KAC5E;AAED,IAAA,eAAe,CAAC,IAAoB,EAAA;AAClC,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC7E;AAED,IAAA,YAAY,CAAC,IAAc,EAAE,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;QAC3F,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACnD;AAED,IAAA,eAAe,CAAC,IAAc,EAAE,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;QAC9F,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAE,CAAC,CAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,MAAM,EAAE,CAAC;YAElB,OAAO;AACR,SAAA;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;AAES,IAAA,cAAc,CAAC,aAAoC,EAAA;QAC3D,OAAO,CAAC,IAAS,KAAS;AACxB,YAAA,IAAI,IAAI,EAAE;gBACR,OAAO,aAAa,CAAE,IAAI,CAAC,WAAW,EAAE,CAAE,IAAI,SAAS,CAAC;AACzD,aAAA;AAED,YAAA,OAAO,aAAa,CAAC;AACvB,SAAC,CAAC;KACH;AAES,IAAA,aAAa,CAAC,IAAc,EAAA;;;QAGpC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;AAC7C,QAAA,IAAI,QAAa,CAAC;AAClB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvC,YAAA,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;AAC9D,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAClC,YAAA,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;AACvC,gBAAA,UAAU,EAAE,CAAC;AACd,aAAA;;AAGD,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS,EAAE;AAClD,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,KAAI;oBACpE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAI,GAAG,CAAE,CAAC;;AAEzD,oBAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;AAC7F,wBAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,qBAAA;AACD,oBAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACjC,iBAAC,CAAC,CAAC;AACJ,aAAA;AAED,YAAA,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;AACpD,gBAAA,UAAU,EAAE,CAAC;AACd,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBACnC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClD,aAAA;AACF,SAAA;QAED,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,KAAU,KAAI;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3F,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvC,SAAC,CAAC;AACF,QAAA,GAAG,CAAC,MAAM,GAAG,MAAK;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAChE,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChE,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC;AACnE,YAAA,MAAM,MAAM,GAAG,CAAM,GAAA,EAAA,IAAI,MAAM,CAAC;AAC/B,YAAA,IAAY,CAAE,MAAM,CAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5D,SAAC,CAAC;AACF,QAAA,GAAG,CAAC,OAAO,GAAG,MAAK;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAChE,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5D,SAAC,CAAC;AACF,QAAA,GAAG,CAAC,OAAO,GAAG,MAAK;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAChE,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5D,SAAC,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE;AAC3B,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,SAAA;AACD,QAAA,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAC3C,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACzC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvB,YAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE;YAC1C,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5D,SAAA;QACD,GAAG,CAAC,kBAAkB,GAAG,YAAA;AACvB,YAAA,IAAI,GAAG,CAAC,UAAU,IAAI,cAAc,CAAC,IAAI,EAAE;gBACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACtC,aAAA;AACH,SAAC,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;YAC1C,QAAQ,CAAC,IAAI,CACX,CAAC,MAAW,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAClD,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpB,SAAA;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAES,iBAAiB,CAAC,KAAK,GAAG,CAAC,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;AAClC,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC;QACtD,MAAM,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACnF,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACtC,QAAA,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC;KAC/C;AAES,IAAA,WAAW,CAAC,OAAmC,EAAA;QACvD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;AACpC,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1B,YAAA,OAAO,OAAO,CAAC;AAChB,SAAA;AACD,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAExC,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;AAC/B,iBAAA,MAAM,CAAC,CAAC,MAAW,KAAK,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChE,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;KACpC;IAES,OAAO,GAAA;QACf,OAAO,KAAK,CAAC,CAAC;KACf;IAES,iBAAiB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;KAC7F;AAES,IAAA,YAAY,CAAC,IAAoB,EAAE,OAAyB,EAAE,OAA4B,EAAA;AAClG,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;AAE3B,QAAA,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAsB,KAAI;AACvE,YAAA,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ,EAAE;gBAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,aAAA;AAED,YAAA,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;KACJ;AAES,IAAA,cAAc,CAAC,MAAc,EAAA;AACrC,QAAA,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,KAAK,MAAM,KAAK,GAAG,CAAC;KAC1D;IAES,kBAAkB,CAAC,QAAgB,EAAE,OAA8B,EAAA;AAC3E,QAAA,OAAO,QAAQ,CAAC;KACjB;AAES,IAAA,aAAa,CAAC,OAAe,EAAA;QACrC,MAAM,MAAM,GAAQ,EAAE,CAAC;AACvB,QAAA,IAAI,GAAQ,CAAC;AACb,QAAA,IAAI,GAAQ,CAAC;AACb,QAAA,IAAI,CAAM,CAAC;QACX,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;AACpC,YAAA,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB,YAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC5C,YAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/B,YAAA,IAAI,GAAG,EAAE;gBACP,MAAM,CAAE,GAAG,CAAE,GAAG,MAAM,CAAE,GAAG,CAAE,GAAG,MAAM,CAAE,GAAG,CAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAClE,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACf;AAES,IAAA,uBAAuB,CAAC,IAAoB,EAAE,MAAW,EAAE,OAAY,EAAA;QAC/E,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACpD;AAES,IAAA,kBAAkB,CAAC,IAAc,EAAA;AACzC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC9B;AAES,IAAA,iBAAiB,CAAC,KAAU,EAAA;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;KAC9B;AAES,IAAA,mBAAmB,CAAC,IAAc,EAAA;QAC1C,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;KAC/B;IAES,gBAAgB,CAAC,IAAc,EAAE,IAAS,EAAA;AAClD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAClC;IAES,eAAe,CAAC,IAAc,EAAE,QAAa,EAAA;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;AAES,IAAA,cAAc,CAAC,IAAc,EAAE,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;QACvG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACrD;AAES,IAAA,aAAa,CAAC,IAAc,EAAE,QAAgB,EAAE,MAAc,EAAE,OAA8B,EAAA;QACtG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACpD;AACF;;MC3fY,iBAAiB,CAAA;AAQ5B,IAAA,WAAA,CAAY,OAAmB,EAAA;AANpB,QAAA,IAAA,CAAA,QAAQ,GAAsB,IAAI,YAAY,EAAE,CAAC;;AAEjD,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAU,CAAC;AAKvE,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;KAC/B;IAED,UAAU,GAAA;AACR,QAAA,OAAO,EAAE,CAAC;KACX;AAGD,IAAA,MAAM,CAAC,KAAiB,EAAA;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;AACR,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7D,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACtC;AAGD,IAAA,UAAU,CAAC,KAAiB,EAAA;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACpC,OAAO;AACR,SAAA;AAED,QAAA,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;AAGD,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAK,IAAY,CAAC,OAAO,EAAE;YACzB,IAAI,KAAK,CAAC,aAAa,KAAM,IAAY,CAAC,OAAO,CAAE,CAAC,CAAE,EAAE;gBACtD,OAAO;AACR,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;AAES,IAAA,YAAY,CAAC,KAAU,EAAA;AAC/B,QAAA,OAAO,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC;KACnF;AAES,IAAA,eAAe,CAAC,KAAiB,EAAA;QACzC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;AAES,IAAA,UAAU,CAAC,KAAU,EAAA;QAC7B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QAED,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,SAAA;aAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;AACzB,YAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChC,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;KACF;8GAlFU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;mBAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAA;iGAE5B,QAAQ,EAAA,CAAA;sBAAjB,KAAK;gBACK,QAAQ,EAAA,CAAA;sBAAlB,MAAM;gBAEI,UAAU,EAAA,CAAA;sBAApB,MAAM;gBAiBP,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,MAAM,EAAE,CAAE,QAAQ,CAAE,CAAA;gBAkBlC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,UAAU,EAAE,CAAE,QAAQ,CAAE,CAAA;gBAatC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAE,QAAQ,CAAE,CAAA;;;MCjD5B,mBAAmB,CAAA;AAO9B,IAAA,WAAA,CAAY,OAAmB,EAAA;;AAJrB,QAAA,IAAA,CAAA,cAAc,GAAyB,IAAI,YAAY,EAAU,CAAC;AAK1E,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;KAC/B;IAED,UAAU,GAAA;AACR,QAAA,OAAO,EAAE,CAAC;KACX;IAED,qBAAqB,GAAA;QACnB,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;KACzD;IAGD,QAAQ,GAAA;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEnD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;AACvC,SAAA;KACF;8GAlCU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAA;iGAE/B,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAqBP,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,QAAQ,CAAA;;;MCfX,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAHX,iBAAiB,EAAE,mBAAmB,aAD3C,YAAY,CAAA,EAAA,OAAA,EAAA,CAEZ,iBAAiB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAJhB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIZ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAE,YAAY,CAAE;AACzB,oBAAA,YAAY,EAAE,CAAE,iBAAiB,EAAE,mBAAmB,CAAE;AACxD,oBAAA,OAAO,EAAE,CAAE,iBAAiB,EAAE,mBAAmB,CAAE;AACpD,iBAAA,CAAA;;;ACZD;;AAEG;;;;"}