{"version":3,"file":"digitalascetic-ngx-pica.mjs","sources":["../../../../projects/digitalascetic/ngx-pica/src/lib/ngx-pica-error.interface.ts","../../../../projects/digitalascetic/ngx-pica/src/lib/ngx-pica.service.ts","../../../../projects/digitalascetic/ngx-pica/src/lib/ngx-pica-image.service.ts","../../../../projects/digitalascetic/ngx-pica/src/lib/ngx-pica.module.ts","../../../../projects/digitalascetic/ngx-pica/src/public_api.ts","../../../../projects/digitalascetic/ngx-pica/src/digitalascetic-ngx-pica.ts"],"sourcesContent":["export enum NgxPicaErrorType {\n  NO_FILES_RECEIVED = 'NO_FILES_RECEIVED',\n  READ_ERROR = 'IMAGE_COULD_NOT_BE_LOADED',\n  NOT_BE_ABLE_TO_COMPRESS_ENOUGH = 'NOT_BE_ABLE_TO_COMPRESS_ENOUGH'\n}\n\nexport interface NgxPicaErrorInterface {\n  err: NgxPicaErrorType;\n  file?: File;\n}\n","import {Injectable} from '@angular/core';\nimport {Subject, Observable, Subscription} from 'rxjs';\nimport {NgxPicaErrorInterface, NgxPicaErrorType} from './ngx-pica-error.interface';\nimport {switchMap} from 'rxjs/operators';\nimport imageCompression from 'browser-image-compression';\n\n@Injectable()\nexport class NgxPicaService {\n  private MAX_STEPS = 20;\n\n  public resizeImages(files: File[], width: number, height: number, useWebWorker?: boolean): Observable<File> {\n    const resizedImage: Subject<File> = new Subject();\n    const totalFiles: number = files.length;\n\n    if (totalFiles > 0) {\n      const nextFile: Subject<File> = new Subject();\n      let index = 0;\n\n      const subscription: Subscription = nextFile\n        .pipe(\n          switchMap((file: File) => this.resizeImage(file, width, height, useWebWorker))\n        )\n        .subscribe({\n          next: imageResized => {\n            index++;\n            resizedImage.next(imageResized);\n\n            if (index < totalFiles) {\n              nextFile.next(files[index]);\n\n            } else {\n              resizedImage.complete();\n              subscription.unsubscribe();\n            }\n          },\n          error: (err) => {\n            const ngxPicaError: NgxPicaErrorInterface = {\n              file: files[index],\n              err: err\n            };\n\n            resizedImage.error(ngxPicaError);\n          }\n        });\n\n      nextFile.next(files[index]);\n    } else {\n      const ngxPicaError: NgxPicaErrorInterface = {\n        err: NgxPicaErrorType.NO_FILES_RECEIVED\n      };\n\n      resizedImage.error(ngxPicaError);\n      resizedImage.complete();\n    }\n\n    return resizedImage.asObservable();\n  }\n\n  public resizeImage(file: File, width: number, height: number, useWebWorker: boolean = true): Observable<File> {\n    const resizedImage: Subject<File> = new Subject();\n\n    const maxWidthOrHeight = width > height ? height : width;\n\n    imageCompression.getExifOrientation(file)\n      .then(orientation => {\n        imageCompression(file, {\n          maxWidthOrHeight: maxWidthOrHeight,\n          exifOrientation: orientation,\n          useWebWorker: useWebWorker,\n          maxIteration: this.MAX_STEPS\n        }).then(resizedFile => {\n          resizedImage.next(resizedFile);\n          resizedImage.complete();\n        }).catch(err => resizedImage.error({err: NgxPicaErrorType.READ_ERROR, file: file, original_error: err}));\n\n      })\n      .catch(err => {\n        imageCompression(file, {\n          maxWidthOrHeight: maxWidthOrHeight,\n          maxIteration: this.MAX_STEPS\n        }).then(resizedFile => {\n          resizedImage.next(resizedFile);\n          resizedImage.complete();\n        }).catch(err => resizedImage.error({err: NgxPicaErrorType.READ_ERROR, file: file, original_error: err}));\n      });\n\n    return resizedImage.asObservable();\n  }\n\n  public compressImages(files: File[], sizeInMB: number, useWebWorker?: boolean): Observable<File> {\n    const compressedImage: Subject<File> = new Subject();\n    const totalFiles: number = files.length;\n\n    if (totalFiles > 0) {\n      const nextFile: Subject<File> = new Subject();\n      let index = 0;\n\n      const subscription: Subscription = nextFile\n        .pipe(\n          switchMap((file: File) => this.compressImage(file, sizeInMB, useWebWorker))\n        )\n        .subscribe({\n          next: imageCompressed => {\n            index++;\n            compressedImage.next(imageCompressed);\n\n            if (index < totalFiles) {\n              nextFile.next(files[index]);\n\n            } else {\n              compressedImage.complete();\n              subscription.unsubscribe();\n            }\n          },\n          error: err => {\n            const ngxPicaError: NgxPicaErrorInterface = {\n              file: files[index],\n              err: err\n            };\n\n            compressedImage.error(ngxPicaError);\n          }\n        });\n\n      nextFile.next(files[index]);\n    } else {\n      const ngxPicaError: NgxPicaErrorInterface = {\n        err: NgxPicaErrorType.NO_FILES_RECEIVED\n      };\n\n      compressedImage.error(ngxPicaError);\n      compressedImage.complete();\n    }\n\n    return compressedImage.asObservable();\n  }\n\n  public compressImage(file: File, sizeInMB: number, useWebWorker: boolean = true): Observable<File> {\n    const compressedImage: Subject<File> = new Subject();\n\n    if (this.bytesToMB(file.size) <= sizeInMB) {\n      setTimeout(() => {\n        compressedImage.next(file);\n        compressedImage.complete();\n      });\n    } else {\n      imageCompression.getExifOrientation(file)\n        .then(orientation => {\n          imageCompression(file, {\n            maxSizeMB: sizeInMB,\n            useWebWorker: useWebWorker,\n            exifOrientation: orientation,\n            alwaysKeepResolution: true,\n            maxIteration: this.MAX_STEPS\n          })\n            .then(compressedFile => {\n              compressedImage.next(compressedFile);\n              compressedImage.complete();\n            })\n            .catch(err => compressedImage.error({err: NgxPicaErrorType.READ_ERROR, file: file, original_error: err}));\n\n        })\n        .catch(err => {\n          imageCompression(file, {\n            maxSizeMB: sizeInMB,\n            alwaysKeepResolution: true,\n            maxIteration: this.MAX_STEPS\n          })\n            .then(compressedFile => {\n              compressedImage.next(compressedFile);\n              compressedImage.complete();\n            })\n            .catch(err2 => compressedImage.error({err: NgxPicaErrorType.READ_ERROR, file: file, original_error: err2}));\n        });\n    }\n\n    return compressedImage.asObservable();\n  }\n\n  private bytesToMB(bytes: number) {\n    return bytes / 1048576;\n  }\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable()\nexport class NgxPicaImageService {\n\n  private imageExtensions: string[] = [\n    'ase',\n    'art',\n    'bmp',\n    'blp',\n    'cd5',\n    'cit',\n    'cpt',\n    'cr2',\n    'cut',\n    'dds',\n    'dib',\n    'djvu',\n    'egt',\n    'exif',\n    'gif',\n    'gpl',\n    'grf',\n    'icns',\n    'ico',\n    'iff',\n    'jng',\n    'jpeg',\n    'jpg',\n    'jfif',\n    'jp2',\n    'jps',\n    'lbm',\n    'max',\n    'miff',\n    'mng',\n    'msp',\n    'nitf',\n    'ota',\n    'pbm',\n    'pc1',\n    'pc2',\n    'pc3',\n    'pcf',\n    'pcx',\n    'pdn',\n    'pgm',\n    'PI1',\n    'PI2',\n    'PI3',\n    'pict',\n    'pct',\n    'pnm',\n    'pns',\n    'ppm',\n    'psb',\n    'psd',\n    'pdd',\n    'psp',\n    'px',\n    'pxm',\n    'pxr',\n    'qfx',\n    'raw',\n    'rle',\n    'sct',\n    'sgi',\n    'rgb',\n    'int',\n    'bw',\n    'tga',\n    'tiff',\n    'tif',\n    'vtf',\n    'xbm',\n    'xcf',\n    'xpm',\n    '3dv',\n    'amf',\n    'ai',\n    'awg',\n    'cgm',\n    'cdr',\n    'cmx',\n    'dxf',\n    'e2d',\n    'egt',\n    'eps',\n    'fs',\n    'gbr',\n    'odg',\n    'svg',\n    'stl',\n    'vrml',\n    'x3d',\n    'sxd',\n    'v2d',\n    'vnd',\n    'wmf',\n    'emf',\n    'art',\n    'xar',\n    'png',\n    'webp',\n    'jxr',\n    'hdp',\n    'wdp',\n    'cur',\n    'ecw',\n    'iff',\n    'lbm',\n    'liff',\n    'nrrd',\n    'pam',\n    'pcx',\n    'pgf',\n    'sgi',\n    'rgb',\n    'rgba',\n    'bw',\n    'int',\n    'inta',\n    'sid',\n    'ras',\n    'sun',\n    'tga'\n  ];\n\n  public isImage(file: File): boolean {\n    const fileExtension: string = file.name.toLowerCase().substring(file.name.lastIndexOf('.') + 1);\n    return (this.imageExtensions.indexOf(fileExtension) !== -1);\n  }\n}\n","import {NgModule} from '@angular/core';\nimport {NgxPicaService} from './ngx-pica.service';\nimport {NgxPicaImageService} from './ngx-pica-image.service';\n\n@NgModule({\n  providers: [\n    {provide: NgxPicaService, useClass: NgxPicaService},\n    {provide: NgxPicaImageService, useClass: NgxPicaImageService},\n  ]\n})\nexport class NgxPicaModule {\n}\n","/*\n * Public API Surface of ngx-pica\n */\n\nexport * from './lib/ngx-pica.module';\nexport * from './lib/ngx-pica.service';\nexport * from './lib/ngx-pica-image.service';\nexport * from './lib/ngx-pica-error.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;IAAY,iBAIX;AAJD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACvC,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,2BAAwC,CAAA;AACxC,IAAA,gBAAA,CAAA,gCAAA,CAAA,GAAA,gCAAiE,CAAA;AACnE,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,GAI3B,EAAA,CAAA,CAAA;;MCGY,cAAc,CAAA;IACjB,SAAS,GAAG,EAAE,CAAC;AAEhB,IAAA,YAAY,CAAC,KAAa,EAAE,KAAa,EAAE,MAAc,EAAE,YAAsB,EAAA;AACtF,QAAA,MAAM,YAAY,GAAkB,IAAI,OAAO,EAAE,CAAC;AAClD,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,MAAM,CAAC;AAExC,QAAA,IAAI,UAAU,GAAG,CAAC,EAAE;AAClB,YAAA,MAAM,QAAQ,GAAkB,IAAI,OAAO,EAAE,CAAC;YAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,MAAM,YAAY,GAAiB,QAAQ;iBACxC,IAAI,CACH,SAAS,CAAC,CAAC,IAAU,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAC/E;AACA,iBAAA,SAAS,CAAC;gBACT,IAAI,EAAE,YAAY,IAAG;AACnB,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEhC,oBAAA,IAAI,KAAK,GAAG,UAAU,EAAE;wBACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;qBAE7B;yBAAM;wBACL,YAAY,CAAC,QAAQ,EAAE,CAAC;wBACxB,YAAY,CAAC,WAAW,EAAE,CAAC;qBAC5B;iBACF;AACD,gBAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,oBAAA,MAAM,YAAY,GAA0B;AAC1C,wBAAA,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;AAClB,wBAAA,GAAG,EAAE,GAAG;qBACT,CAAC;AAEF,oBAAA,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;iBAClC;AACF,aAAA,CAAC,CAAC;YAEL,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;SAC7B;aAAM;AACL,YAAA,MAAM,YAAY,GAA0B;gBAC1C,GAAG,EAAE,gBAAgB,CAAC,iBAAiB;aACxC,CAAC;AAEF,YAAA,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACjC,YAAY,CAAC,QAAQ,EAAE,CAAC;SACzB;AAED,QAAA,OAAO,YAAY,CAAC,YAAY,EAAE,CAAC;KACpC;IAEM,WAAW,CAAC,IAAU,EAAE,KAAa,EAAE,MAAc,EAAE,eAAwB,IAAI,EAAA;AACxF,QAAA,MAAM,YAAY,GAAkB,IAAI,OAAO,EAAE,CAAC;AAElD,QAAA,MAAM,gBAAgB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzD,QAAA,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC;aACtC,IAAI,CAAC,WAAW,IAAG;YAClB,gBAAgB,CAAC,IAAI,EAAE;AACrB,gBAAA,gBAAgB,EAAE,gBAAgB;AAClC,gBAAA,eAAe,EAAE,WAAW;AAC5B,gBAAA,YAAY,EAAE,YAAY;gBAC1B,YAAY,EAAE,IAAI,CAAC,SAAS;AAC7B,aAAA,CAAC,CAAC,IAAI,CAAC,WAAW,IAAG;AACpB,gBAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC/B,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC1B,aAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;AAE3G,SAAC,CAAC;aACD,KAAK,CAAC,GAAG,IAAG;YACX,gBAAgB,CAAC,IAAI,EAAE;AACrB,gBAAA,gBAAgB,EAAE,gBAAgB;gBAClC,YAAY,EAAE,IAAI,CAAC,SAAS;AAC7B,aAAA,CAAC,CAAC,IAAI,CAAC,WAAW,IAAG;AACpB,gBAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC/B,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC1B,aAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;AAC3G,SAAC,CAAC,CAAC;AAEL,QAAA,OAAO,YAAY,CAAC,YAAY,EAAE,CAAC;KACpC;AAEM,IAAA,cAAc,CAAC,KAAa,EAAE,QAAgB,EAAE,YAAsB,EAAA;AAC3E,QAAA,MAAM,eAAe,GAAkB,IAAI,OAAO,EAAE,CAAC;AACrD,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,MAAM,CAAC;AAExC,QAAA,IAAI,UAAU,GAAG,CAAC,EAAE;AAClB,YAAA,MAAM,QAAQ,GAAkB,IAAI,OAAO,EAAE,CAAC;YAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,MAAM,YAAY,GAAiB,QAAQ;AACxC,iBAAA,IAAI,CACH,SAAS,CAAC,CAAC,IAAU,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAC5E;AACA,iBAAA,SAAS,CAAC;gBACT,IAAI,EAAE,eAAe,IAAG;AACtB,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAEtC,oBAAA,IAAI,KAAK,GAAG,UAAU,EAAE;wBACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;qBAE7B;yBAAM;wBACL,eAAe,CAAC,QAAQ,EAAE,CAAC;wBAC3B,YAAY,CAAC,WAAW,EAAE,CAAC;qBAC5B;iBACF;gBACD,KAAK,EAAE,GAAG,IAAG;AACX,oBAAA,MAAM,YAAY,GAA0B;AAC1C,wBAAA,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;AAClB,wBAAA,GAAG,EAAE,GAAG;qBACT,CAAC;AAEF,oBAAA,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;iBACrC;AACF,aAAA,CAAC,CAAC;YAEL,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;SAC7B;aAAM;AACL,YAAA,MAAM,YAAY,GAA0B;gBAC1C,GAAG,EAAE,gBAAgB,CAAC,iBAAiB;aACxC,CAAC;AAEF,YAAA,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACpC,eAAe,CAAC,QAAQ,EAAE,CAAC;SAC5B;AAED,QAAA,OAAO,eAAe,CAAC,YAAY,EAAE,CAAC;KACvC;AAEM,IAAA,aAAa,CAAC,IAAU,EAAE,QAAgB,EAAE,eAAwB,IAAI,EAAA;AAC7E,QAAA,MAAM,eAAe,GAAkB,IAAI,OAAO,EAAE,CAAC;QAErD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;YACzC,UAAU,CAAC,MAAK;AACd,gBAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,eAAe,CAAC,QAAQ,EAAE,CAAC;AAC7B,aAAC,CAAC,CAAC;SACJ;aAAM;AACL,YAAA,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC;iBACtC,IAAI,CAAC,WAAW,IAAG;gBAClB,gBAAgB,CAAC,IAAI,EAAE;AACrB,oBAAA,SAAS,EAAE,QAAQ;AACnB,oBAAA,YAAY,EAAE,YAAY;AAC1B,oBAAA,eAAe,EAAE,WAAW;AAC5B,oBAAA,oBAAoB,EAAE,IAAI;oBAC1B,YAAY,EAAE,IAAI,CAAC,SAAS;iBAC7B,CAAC;qBACC,IAAI,CAAC,cAAc,IAAG;AACrB,oBAAA,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACrC,eAAe,CAAC,QAAQ,EAAE,CAAC;AAC7B,iBAAC,CAAC;qBACD,KAAK,CAAC,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;AAE9G,aAAC,CAAC;iBACD,KAAK,CAAC,GAAG,IAAG;gBACX,gBAAgB,CAAC,IAAI,EAAE;AACrB,oBAAA,SAAS,EAAE,QAAQ;AACnB,oBAAA,oBAAoB,EAAE,IAAI;oBAC1B,YAAY,EAAE,IAAI,CAAC,SAAS;iBAC7B,CAAC;qBACC,IAAI,CAAC,cAAc,IAAG;AACrB,oBAAA,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACrC,eAAe,CAAC,QAAQ,EAAE,CAAC;AAC7B,iBAAC,CAAC;qBACD,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;AAChH,aAAC,CAAC,CAAC;SACN;AAED,QAAA,OAAO,eAAe,CAAC,YAAY,EAAE,CAAC;KACvC;AAEO,IAAA,SAAS,CAAC,KAAa,EAAA;QAC7B,OAAO,KAAK,GAAG,OAAO,CAAC;KACxB;uGA9KU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAd,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;MCHE,mBAAmB,CAAA;AAEtB,IAAA,eAAe,GAAa;QAClC,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,IAAI;QACJ,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,IAAI;QACJ,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,IAAI;QACJ,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,IAAI;QACJ,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,IAAI;QACJ,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;KACN,CAAC;AAEK,IAAA,OAAO,CAAC,IAAU,EAAA;QACvB,MAAM,aAAa,GAAW,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAChG,QAAA,QAAQ,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;KAC7D;uGAhIU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;MCQE,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAb,aAAa,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EALb,SAAA,EAAA;AACT,YAAA,EAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAC;AACnD,YAAA,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB,EAAC;AAC9D,SAAA,EAAA,CAAA,CAAA;;2FAEU,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAC;AACnD,wBAAA,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB,EAAC;AAC9D,qBAAA;AACF,iBAAA,CAAA;;;ACTD;;AAEG;;ACFH;;AAEG;;;;"}