{"version":3,"file":"angular2-image-gallery.mjs","sources":["../../../projects/angular2-image-gallery/src/lib/services/image.service.ts","../../../projects/angular2-image-gallery/src/lib/viewer/viewer.component.ts","../../../projects/angular2-image-gallery/src/lib/viewer/viewer.component.html","../../../projects/angular2-image-gallery/src/lib/gallery/gallery.component.ts","../../../projects/angular2-image-gallery/src/lib/gallery/gallery.component.html","../../../projects/angular2-image-gallery/src/lib/angular2-image-gallery.module.ts","../../../projects/angular2-image-gallery/src/public_api.ts","../../../projects/angular2-image-gallery/src/angular2-image-gallery.ts"],"sourcesContent":["import { Injectable } from '@angular/core'\nimport { Observable, Subject } from 'rxjs'\nimport { ImageMetadata } from '../data/image-metadata'\n\n@Injectable()\nexport class ImageService {\n  private imagesUpdatedSource = new Subject<ImageMetadata[]>()\n  private imageSelectedIndexUpdatedSource = new Subject<number>()\n  private showImageViewerSource = new Subject<boolean>()\n\n  imagesUpdated$: Observable<ImageMetadata[]> = this.imagesUpdatedSource.asObservable()\n  imageSelectedIndexUpdated$: Observable<number> = this.imageSelectedIndexUpdatedSource.asObservable()\n  showImageViewerChanged$: Observable<boolean> = this.showImageViewerSource.asObservable()\n\n  updateImages(images: ImageMetadata[]): void {\n    this.imagesUpdatedSource.next(images)\n  }\n\n  updateSelectedImageIndex(newIndex: number): void {\n    this.imageSelectedIndexUpdatedSource.next(newIndex)\n  }\n\n  showImageViewer(show: boolean): void {\n    this.showImageViewerSource.next(show)\n  }\n}\n","import { ImageService } from '../services/image.service'\nimport { Component } from '@angular/core'\nimport { animate, state, style, transition, trigger } from '@angular/animations'\nimport { DomSanitizer } from '@angular/platform-browser'\nimport { ImageMetadata } from '../data/image-metadata'\n\n@Component({\n  standalone: false,\n  selector: 'viewer',\n  templateUrl: './viewer.component.html',\n  styleUrls: ['./viewer.component.sass'],\n  host: {\n    '(document:keydown)': 'onKeydown($event)',\n  },\n  animations: [\n    trigger('imageTransition', [\n      state(\n        'enterFromRight',\n        style({\n          opacity: 1,\n          transform: 'translate(0px, 0px)',\n        })\n      ),\n      state(\n        'enterFromLeft',\n        style({\n          opacity: 1,\n          transform: 'translate(0px, 0px)',\n        })\n      ),\n      state(\n        'leaveToLeft',\n        style({\n          opacity: 0,\n          transform: 'translate(-100px, 0px)',\n        })\n      ),\n      state(\n        'leaveToRight',\n        style({\n          opacity: 0,\n          transform: 'translate(100px, 0px)',\n        })\n      ),\n      transition('* => enterFromRight', [\n        style({\n          opacity: 0,\n          transform: 'translate(30px, 0px)',\n        }),\n        animate('250ms 500ms ease-in'),\n      ]),\n      transition('* => enterFromLeft', [\n        style({\n          opacity: 0,\n          transform: 'translate(-30px, 0px)',\n        }),\n        animate('250ms 500ms ease-in'),\n      ]),\n      transition('* => leaveToLeft', [\n        style({\n          opacity: 1,\n        }),\n        animate('250ms ease-out'),\n      ]),\n      transition('* => leaveToRight', [\n        style({\n          opacity: 1,\n        }),\n        animate('250ms ease-out'),\n      ]),\n    ]),\n    trigger('showViewerTransition', [\n      state(\n        'true',\n        style({\n          opacity: 1,\n        })\n      ),\n      state(\n        'void',\n        style({\n          opacity: 0,\n        })\n      ),\n      transition('void => *', [\n        style({\n          opacity: 0,\n        }),\n        animate('1000ms ease-in'),\n      ]),\n      transition('* => void', [\n        style({\n          opacity: 1,\n        }),\n        animate('500ms ease-out'),\n      ]),\n    ]),\n  ],\n})\nexport class ViewerComponent {\n  showViewer: boolean\n  images: Array<ImageMetadata> = []\n  currentIdx: number = 0\n  leftArrowVisible: boolean = true\n  rightArrowVisible: boolean = true\n  categorySelected: string = 'preview_xxs'\n  transform: number\n  math: Math\n  private qualitySelectorShown: boolean = false\n  private qualitySelected: string = 'auto'\n\n  constructor(private imageService: ImageService, private sanitizer: DomSanitizer) {\n    imageService.imagesUpdated$.subscribe((images) => {\n      this.images = images\n    })\n    imageService.imageSelectedIndexUpdated$.subscribe((newIndex) => {\n      this.currentIdx = newIndex\n      this.images.forEach((image) => (image['active'] = false))\n      this.images[this.currentIdx]['active'] = true\n      this.transform = 0\n      this.updateQuality()\n    })\n    imageService.showImageViewerChanged$.subscribe((showViewer) => {\n      this.showViewer = showViewer\n    })\n    this.math = Math\n  }\n\n  get leftArrowActive(): boolean {\n    return this.currentIdx > 0\n  }\n\n  get rightArrowActive(): boolean {\n    return this.currentIdx < this.images.length - 1\n  }\n\n  pan(swipe: any): void {\n    this.transform = swipe.deltaX\n  }\n\n  onResize(): void {\n    this.images.forEach((image) => {\n      image['viewerImageLoaded'] = false\n      image['active'] = false\n    })\n    this.updateImage()\n  }\n\n  showQualitySelector(): void {\n    this.qualitySelectorShown = !this.qualitySelectorShown\n  }\n\n  qualityChanged(newQuality: any): void {\n    this.qualitySelected = newQuality\n    this.updateImage()\n  }\n\n  imageLoaded(image: any): void {\n    image['viewerImageLoaded'] = true\n  }\n\n  /**\n   * direction (-1: left, 1: right)\n   * swipe (user swiped)\n   */\n  navigate(direction: number, swipe: any): void {\n    if ((direction === 1 && this.currentIdx < this.images.length - 1) || (direction === -1 && this.currentIdx > 0)) {\n      if (direction == -1) {\n        this.images[this.currentIdx]['transition'] = 'leaveToRight'\n        this.images[this.currentIdx - 1]['transition'] = 'enterFromLeft'\n      } else {\n        this.images[this.currentIdx]['transition'] = 'leaveToLeft'\n        this.images[this.currentIdx + 1]['transition'] = 'enterFromRight'\n      }\n      this.currentIdx += direction\n\n      if (swipe) {\n        this.hideNavigationArrows()\n      } else {\n        this.showNavigationArrows()\n      }\n      this.updateImage()\n    }\n  }\n\n  showNavigationArrows(): void {\n    this.leftArrowVisible = true\n    this.rightArrowVisible = true\n  }\n\n  closeViewer(): void {\n    this.images.forEach((image) => (image['transition'] = undefined))\n    this.images.forEach((image) => (image['active'] = false))\n    this.imageService.showImageViewer(false)\n  }\n\n  onKeydown(event: KeyboardEvent): void {\n    const prevent = [37, 39, 27, 36, 35].find((no) => no === event.keyCode)\n    if (prevent) {\n      event.preventDefault()\n    }\n\n    switch (prevent) {\n      case 37:\n        // navigate left\n        this.navigate(-1, false)\n        break\n      case 39:\n        // navigate right\n        this.navigate(1, false)\n        break\n      case 27:\n        // esc\n        this.closeViewer()\n        break\n      case 36:\n        // pos 1\n        this.images[this.currentIdx]['transition'] = 'leaveToRight'\n        this.currentIdx = 0\n        this.images[this.currentIdx]['transition'] = 'enterFromLeft'\n        this.updateImage()\n        break\n      case 35:\n        // end\n        this.images[this.currentIdx]['transition'] = 'leaveToLeft'\n        this.currentIdx = this.images.length - 1\n        this.images[this.currentIdx]['transition'] = 'enterFromRight'\n        this.updateImage()\n        break\n      default:\n        break\n    }\n  }\n\n  sanitizedImageUrl(img: any, index: number) {\n    return this.sanitizer.bypassSecurityTrustStyle(this.rawImageUrl(img, index))\n  }\n\n  private rawImageUrl(img: any, index: number) {\n    if (img['viewerImageLoaded']) {\n      return `url('${img.resolutions[this.categorySelected].path}')`\n    } else if (Math.abs(this.currentIdx - index) <= 1) {\n      return `url('${img.resolutions['preview_xxs'].path}')`\n    }\n    return ''\n  }\n\n  private hideNavigationArrows(): void {\n    this.leftArrowVisible = false\n    this.rightArrowVisible = false\n  }\n\n  private updateImage(): void {\n    // wait for animation to end\n    setTimeout(() => {\n      this.updateQuality()\n      this.images[this.currentIdx]['active'] = true\n      this.images.forEach((image) => {\n        if (image != this.images[this.currentIdx]) {\n          image['active'] = false\n          this.transform = 0\n        }\n      })\n    }, 500)\n  }\n\n  private updateQuality(): void {\n    const screenWidth = window.innerWidth\n    const screenHeight = window.innerHeight\n\n    switch (this.qualitySelected) {\n      case 'auto': {\n        this.categorySelected = 'preview_xxs'\n\n        if (\n          screenWidth > this.images[this.currentIdx].resolutions['preview_xxs'].width &&\n          screenHeight > this.images[this.currentIdx].resolutions['preview_xxs'].height\n        ) {\n          this.categorySelected = 'preview_xs'\n        }\n        if (\n          screenWidth > this.images[this.currentIdx].resolutions['preview_xs'].width &&\n          screenHeight > this.images[this.currentIdx].resolutions['preview_xs'].height\n        ) {\n          this.categorySelected = 'preview_s'\n        }\n        if (\n          screenWidth > this.images[this.currentIdx].resolutions['preview_s'].width &&\n          screenHeight > this.images[this.currentIdx].resolutions['preview_s'].height\n        ) {\n          this.categorySelected = 'preview_m'\n        }\n        if (\n          screenWidth > this.images[this.currentIdx].resolutions['preview_m'].width &&\n          screenHeight > this.images[this.currentIdx].resolutions['preview_m'].height\n        ) {\n          this.categorySelected = 'preview_l'\n        }\n        if (\n          screenWidth > this.images[this.currentIdx].resolutions['preview_l'].width &&\n          screenHeight > this.images[this.currentIdx].resolutions['preview_l'].height\n        ) {\n          this.categorySelected = 'preview_xl'\n        }\n        if (\n          screenWidth > this.images[this.currentIdx].resolutions['preview_xl'].width &&\n          screenHeight > this.images[this.currentIdx].resolutions['preview_xl'].height\n        ) {\n          this.categorySelected = 'raw'\n        }\n        break\n      }\n      case 'low': {\n        this.categorySelected = 'preview_xxs'\n        break\n      }\n      case 'mid': {\n        this.categorySelected = 'preview_m'\n        break\n      }\n      case 'high': {\n        this.categorySelected = 'raw'\n        break\n      }\n      default: {\n        this.categorySelected = 'preview_m'\n      }\n    }\n  }\n}\n","<div\n  class=\"outerContainer\"\n  (window:resize)=\"onResize()\"\n  *ngIf=\"showViewer\"\n  [@showViewerTransition]=\"showViewer\">\n  <img\n    [ngClass]=\"{ activeArrow: leftArrowActive }\"\n    class=\"arrow left\"\n    src=\"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0cHgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczpza2V0Y2g9Imh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9ucyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjx0aXRsZS8+PGRlc2MvPiAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9Im1pdSIgc3Ryb2tlPSIjNTU1IiBzdHJva2Utd2lkdGg9IjAuMiI+ICAgICA8ZyBpZD0iQXJ0Ym9hcmQtMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTM5NS4wMDAwMDAsIC0xOTEuMDAwMDAwKSI+PGcgaWQ9InNsaWNlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTUuMDAwMDAwLCAxMTkuMDAwMDAwKSIvPjxwYXRoICAgICAgIGQ9Ik0zOTYsMjAyLjUgQzM5NiwxOTYuMTQ4NzI1IDQwMS4xNDg3MjUsMTkxIDQwNy41LDE5MSBDNDEzLjg1MTI3NSwxOTEgNDE5LDE5Ni4xNDg3MjUgNDE5LDIwMi41IEM0MTksMjA4Ljg1MTI3NSA0MTMuODUxMjc1LDIxNCA0MDcuNSwyMTQgQzQwMS4xNDg3MjUsMjE0IDM5NiwyMDguODUxMjc1IDM5NiwyMDIuNSBaIE00MDguNjU2ODU0LDE5Ni44NDMxNDYgTDQxMC4wNzEwNjgsMTk4LjI1NzM1OSBMNDA1LjgyODQyNywyMDIuNSBMNDEwLjA3MTA2OCwyMDYuNzQyNjQxIEw0MDguNjU2ODU0LDIwOC4xNTY4NTQgTDQwMywyMDIuNSBMNDA4LjY1Njg1NCwxOTYuODQzMTQ2IFoiICAgICAgIGZpbGw9IiNhYWEiICAgICAgIGlkPSJjaXJjbGUtYmFjay1hcnJvdy1nbHlwaCIvPjwvZz4gICA8L2c+IDwvc3ZnPg==\"\n    [hidden]=\"!leftArrowVisible\"\n    (click)=\"navigate(-1, false)\" />\n  <img\n    [ngClass]=\"{ activeArrow: rightArrowActive }\"\n    class=\"arrow right\"\n    src=\"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0cHgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczpza2V0Y2g9Imh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9ucyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjx0aXRsZS8+PGRlc2MvPjxkZWZzLz4gICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJtaXUiIHN0cm9rZT0iIzU1NSIgc3Ryb2tlLXdpZHRoPSIwLjIiPiAgICAgPGcgaWQ9IkFydGJvYXJkLTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00NjcuMDAwMDAwLCAtMTkxLjAwMDAwMCkiPjxnIGlkPSJzbGljZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjE1LjAwMDAwMCwgMTE5LjAwMDAwMCkiLz48cGF0aCAgICAgICBkPSJNNDY4LDIwMi41IEM0NjgsMTk2LjE0ODcyNSA0NzMuMTQ4NzI1LDE5MSA0NzkuNSwxOTEgQzQ4NS44NTEyNzUsMTkxIDQ5MSwxOTYuMTQ4NzI1IDQ5MSwyMDIuNSBDNDkxLDIwOC44NTEyNzUgNDg1Ljg1MTI3NSwyMTQgNDc5LjUsMjE0IEM0NzMuMTQ4NzI1LDIxNCA0NjgsMjA4Ljg1MTI3NSA0NjgsMjAyLjUgWiBNNDgwLjY1Njg1NCwxOTYuODQzMTQ2IEw0ODIuMDcxMDY4LDE5OC4yNTczNTkgTDQ3Ny44Mjg0MjcsMjAyLjUgTDQ4Mi4wNzEwNjgsMjA2Ljc0MjY0MSBMNDgwLjY1Njg1NCwyMDguMTU2ODU0IEw0NzUsMjAyLjUgTDQ4MC42NTY4NTQsMTk2Ljg0MzE0NiBaIiAgICAgICBmaWxsPSIjYWFhIiAgICAgICBpZD0iY2lyY2xlLW5leHQtYXJyb3ctZGlzY2xvc3VyZS1nbHlwaCIgICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDc5LjUwMDAwMCwgMjAyLjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNDc5LjUwMDAwMCwgLTIwMi41MDAwMDApICIvPjwvZz4gICA8L2c+IDwvc3ZnPg==\"\n    [hidden]=\"!rightArrowVisible\"\n    (click)=\"navigate(1, false)\" />\n\n  <div class=\"buttonContainer\">\n    <img\n      class=\"action close\"\n      src=\"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjMwcHgiIGlkPSJMYXllcl8xIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyOyIgdmVyc2lvbj0iMS4xIiBmaWxsPSIjYWFhIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgd2lkdGg9IjI0cHgiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPiAgPHBhdGggICAgc3Ryb2tlLXdpZHRoPSIzMCIgc3Ryb2tlPSIjNDQ0IiAgICBkPSJNNDM3LjUsMzg2LjZMMzA2LjksMjU2bDEzMC42LTEzMC42YzE0LjEtMTQuMSwxNC4xLTM2LjgsMC01MC45Yy0xNC4xLTE0LjEtMzYuOC0xNC4xLTUwLjksMEwyNTYsMjA1LjFMMTI1LjQsNzQuNSAgYy0xNC4xLTE0LjEtMzYuOC0xNC4xLTUwLjksMGMtMTQuMSwxNC4xLTE0LjEsMzYuOCwwLDUwLjlMMjA1LjEsMjU2TDc0LjUsMzg2LjZjLTE0LjEsMTQuMS0xNC4xLDM2LjgsMCw1MC45ICBjMTQuMSwxNC4xLDM2LjgsMTQuMSw1MC45LDBMMjU2LDMwNi45bDEzMC42LDEzMC42YzE0LjEsMTQuMSwzNi44LDE0LjEsNTAuOSwwQzQ1MS41LDQyMy40LDQ1MS41LDQwMC42LDQzNy41LDM4Ni42eiIvPjwvc3ZnPg==\"\n      (click)=\"closeViewer()\" />\n  </div>\n\n  <div\n    class=\"imageContainer\"\n    (click)=\"showNavigationArrows()\"\n    (swipeleft)=\"navigate(1, $event)\"\n    (swiperight)=\"navigate(-1, $event)\"\n    (pan)=\"pan($event)\">\n    <div\n      *ngFor=\"let img of images; let j = index\"\n      class=\"image\"\n      [class.active]=\"img['active']\"\n      [style.background-image]=\"sanitizedImageUrl(img, j)\"\n      [style.left]=\"transform + 'px'\"\n      [@imageTransition]=\"img['transition']\"></div>\n\n    <img\n      *ngFor=\"let img of images; let j = index\"\n      class=\"preloading-image\"\n      (load)=\"imageLoaded(img)\"\n      src=\"{{ math.abs(currentIdx - j) <= 1 ? img['resolutions'][categorySelected]['path'] : '' }}\" />\n  </div>\n</div>\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core'\nimport { ImageService } from '../services/image.service'\nimport { Subscription } from 'rxjs/internal/Subscription'\nimport { HttpClient } from '@angular/common/http'\nimport { ImageMetadata } from '../data/image-metadata'\n\n@Component({\n  standalone: false,\n  selector: 'gallery',\n  templateUrl: './gallery.component.html',\n  styleUrls: ['./gallery.component.sass'],\n})\nexport class GalleryComponent implements OnInit, OnDestroy, OnChanges {\n  gallery: any[] = []\n  imageDataStaticPath: string = 'assets/img/gallery/'\n  imageMetadataUri: string = ''\n  dataFileName: string = 'data.json'\n  images: ImageMetadata[] = []\n  minimalQualityCategory = 'preview_xxs'\n  viewerSubscription: Subscription\n  rowIndex: number = 0\n  rightArrowInactive: boolean = false\n  leftArrowInactive: boolean = false\n\n  @Input('flexBorderSize') providedImageMargin: number = 3\n  @Input('flexImageSize') providedImageSize: number = 7\n  @Input('galleryName') providedGalleryName: string = ''\n  @Input('metadataUri') providedMetadataUri: string = undefined\n  @Input('maxRowsPerPage') rowsPerPage: number = 200\n  @Input('includeViewer') includeViewer = true\n  @Input('lazyLoadGalleryImages') lazyLoadGalleryImages = true\n\n  @Output() viewerChange = new EventEmitter<boolean>()\n\n  @ViewChild('galleryContainer', { static: true }) galleryContainer: ElementRef\n  @ViewChildren('imageElement') imageElements: QueryList<any>\n\n  @HostListener('window:scroll', ['$event']) triggerCycle(_: any): void {\n    this.loadImagesInsideView()\n  }\n\n  @HostListener('resize', ['$event']) windowResize(_: any): void {\n    this.render()\n  }\n\n  constructor(public imageService: ImageService, public http: HttpClient, public changeDetectorRef: ChangeDetectorRef) {}\n\n  ngOnInit(): void {\n    this.fetchDataAndRender()\n    this.viewerSubscription = this.imageService.showImageViewerChanged$.subscribe((visibility: boolean) =>\n      this.viewerChange.emit(visibility)\n    )\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    // input params changed\n    this.imageMetadataUri = this.determineMetadataPath()\n\n    if (!changes['providedGalleryName']?.isFirstChange()) {\n      this.fetchDataAndRender()\n    }\n\n    this.render()\n  }\n\n  ngOnDestroy(): void {\n    if (this.viewerSubscription) {\n      this.viewerSubscription.unsubscribe()\n    }\n  }\n\n  openImageViewer(img: any): void {\n    this.imageService.updateImages(this.images)\n    this.imageService.updateSelectedImageIndex(this.images.indexOf(img))\n    this.imageService.showImageViewer(true)\n  }\n\n  /**\n   * direction (-1: left, 1: right)\n   */\n  navigate(direction: number): void {\n    if ((direction === 1 && this.rowIndex < this.gallery.length - this.rowsPerPage) || (direction === -1 && this.rowIndex > 0)) {\n      this.rowIndex += this.rowsPerPage * direction\n    }\n    this.refreshArrowState()\n    this.render()\n  }\n\n  calcImageMargin(): number {\n    const galleryWidth = this.getGalleryWidth()\n    const ratio = galleryWidth / 1920\n    return Math.round(Math.max(1, this.providedImageMargin * ratio))\n  }\n\n  private fetchDataAndRender(): void {\n    this.http.get(this.imageMetadataUri).subscribe((data: ImageMetadata[]) => {\n      this.images = data\n      this.imageService.updateImages(this.images)\n\n      this.images.forEach((image) => {\n        image['viewerImageLoaded'] = false\n        image['srcAfterFocus'] = ''\n      })\n\n      this.render()\n    }, this.handleErrorWhenLoadingImages)\n  }\n\n  private handleErrorWhenLoadingImages = (err) => {\n    if (this.providedMetadataUri) {\n      console.error(`Provided endpoint '${this.providedMetadataUri}' did not serve metadata correctly or in the expected format.\n      See here for more information: https://github.com/BenjaminBrandmeier/angular2-image-gallery/blob/master/docs/externalDataSource.md,\n      Original error: ${err}`)\n    } else {\n      console.error(`Did you run the convert script from angular2-image-gallery for your images first? Original error: ${err}`)\n    }\n  }\n\n  private determineMetadataPath() {\n    let imageMetadataUri = this.providedMetadataUri\n\n    if (!this.providedMetadataUri) {\n      imageMetadataUri =\n        this.providedGalleryName !== ''\n          ? `${this.imageDataStaticPath + this.providedGalleryName}/${this.dataFileName}`\n          : this.imageDataStaticPath + this.dataFileName\n    }\n\n    return imageMetadataUri\n  }\n\n  private render(): void {\n    this.gallery = []\n\n    let tempRow = [this.images[0]]\n    let currentRowIndex = 0\n    let i = 0\n\n    for (i; i < this.images.length; i++) {\n      while (this.images[i + 1] && this.shouldAddCandidate(tempRow, this.images[i + 1])) {\n        i++\n      }\n      if (this.images[i + 1]) {\n        tempRow.pop()\n      }\n      this.gallery[currentRowIndex++] = tempRow\n\n      tempRow = [this.images[i + 1]]\n    }\n\n    this.scaleGallery()\n  }\n\n  private shouldAddCandidate(imgRow: any[], candidate: any): boolean {\n    const oldDifference = this.calcIdealHeight() - this.calcRowHeight(imgRow)\n    imgRow.push(candidate)\n    const newDifference = this.calcIdealHeight() - this.calcRowHeight(imgRow)\n\n    return Math.abs(oldDifference) > Math.abs(newDifference)\n  }\n\n  private calcRowHeight(imgRow: any[]): number {\n    const originalRowWidth = this.calcOriginalRowWidth(imgRow)\n\n    const ratio = (this.getGalleryWidth() - (imgRow.length - 1) * this.calcImageMargin()) / originalRowWidth\n    const rowHeight = imgRow[0].resolutions[this.minimalQualityCategory].height * ratio\n\n    return rowHeight\n  }\n\n  private calcOriginalRowWidth(imgRow: any[]): number {\n    let originalRowWidth = 0\n    imgRow.forEach((img) => {\n      const individualRatio = this.calcIdealHeight() / img.resolutions[this.minimalQualityCategory].height\n      img.resolutions[this.minimalQualityCategory].width = img.resolutions[this.minimalQualityCategory].width * individualRatio\n      img.resolutions[this.minimalQualityCategory].height = this.calcIdealHeight()\n      originalRowWidth += img.resolutions[this.minimalQualityCategory].width\n    })\n\n    return originalRowWidth\n  }\n\n  private isPaginationActive = () => !this.rightArrowInactive || !this.leftArrowInactive\n  private calcIdealHeight = (): number => this.getGalleryWidth() / (80 / this.providedImageSize) + 100\n  private getGalleryWidth = (): number => this.galleryContainer.nativeElement.clientWidth\n  private isLastRow = (imgRow) => imgRow === this.gallery[this.gallery.length - 1]\n\n  private scaleGallery(): void {\n    let maximumGalleryImageHeight = 0\n\n    this.gallery.slice(this.rowIndex, this.rowIndex + this.rowsPerPage).forEach((imgRow) => {\n      const originalRowWidth = this.calcOriginalRowWidth(imgRow)\n      const calculatedRowWidth = this.getGalleryWidth() - (imgRow.length - 1) * this.calcImageMargin()\n\n      const ratio = this.isLastRow(imgRow) ? 1 : calculatedRowWidth / originalRowWidth\n\n      imgRow.forEach((img) => {\n        img.width = img.resolutions[this.minimalQualityCategory].width * ratio\n        img.height = img.resolutions[this.minimalQualityCategory].height * ratio\n        maximumGalleryImageHeight = Math.max(maximumGalleryImageHeight, img.height)\n      })\n    })\n\n    this.minimalQualityCategory = maximumGalleryImageHeight > 375 ? 'preview_xs' : 'preview_xxs'\n\n    this.refreshArrowState()\n    this.loadImagesInsideView()\n  }\n\n  private loadImagesInsideView() {\n    this.changeDetectorRef.detectChanges()\n\n    this.images.forEach((image: ImageMetadata, index: number) => {\n      const imageElements = this.imageElements.toArray()\n\n      if (this.isPaginationActive() || this.isScrolledIntoView(imageElements[index]?.nativeElement) || !this.lazyLoadGalleryImages) {\n        image['srcAfterFocus'] = image.resolutions[this.minimalQualityCategory].path\n      }\n    })\n  }\n\n  private isScrolledIntoView(element: HTMLElement): boolean {\n    if (!element) {\n      return false\n    }\n    const elementTop = element.getBoundingClientRect().top\n    const elementBottom = element.getBoundingClientRect().bottom\n    const viewableHeight = document.documentElement.clientHeight\n\n    return elementTop < viewableHeight && elementBottom >= 0\n  }\n\n  private refreshArrowState(): void {\n    this.leftArrowInactive = this.rowIndex == 0\n    this.rightArrowInactive = this.rowIndex >= this.gallery.length - this.rowsPerPage\n  }\n}\n","<div #galleryContainer class=\"galleryContainer\">\n  <div class=\"innerGalleryContainer\">\n    <div\n      *ngFor=\"let imgrow of gallery | slice: rowIndex:rowIndex + rowsPerPage; let i = index\"\n      class=\"imagerow\"\n      [style.margin-bottom.px]=\"calcImageMargin()\">\n      <img\n        #imageElement\n        *ngFor=\"let img of imgrow; let j = index\"\n        class=\"thumbnail\"\n        [style.width.px]=\"img['width']\"\n        [style.height.px]=\"img['height']\"\n        (click)=\"openImageViewer(img)\"\n        [src]=\"img['srcAfterFocus']\"\n        [style.background]=\"img.dominantColor\"\n        [style.margin-right.px]=\"calcImageMargin()\" />\n    </div>\n  </div>\n\n  <div class=\"pagerContainer\" *ngIf=\"!rightArrowInactive || !leftArrowInactive\">\n    <img\n      [ngClass]=\"{ inactive: leftArrowInactive }\"\n      class=\"pager left\"\n      src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ4IDQ4OyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNDggNDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxnPjxwYXRoIGQ9Ik0yNCw0NkMxMS45LDQ2LDIsMzYuMSwyLDI0UzExLjksMiwyNCwyczIyLDkuOSwyMiwyMlMzNi4xLDQ2LDI0LDQ2eiBNMjQsNEMxMyw0LDQsMTMsNCwyNGMwLDExLDksMjAsMjAsMjAgICBjMTEsMCwyMC05LDIwLTIwQzQ0LDEzLDM1LDQsMjQsNHoiLz48L2c+PGc+PHBvbHlnb24gcG9pbnRzPSIyNy42LDM2LjcgMTQuOSwyNCAyNy42LDExLjMgMjkuMSwxMi43IDE3LjgsMjQgMjkuMSwzNS4zICAiLz48L2c+PC9zdmc+\"\n      (click)=\"navigate(-1)\" />\n    <img\n      [ngClass]=\"{ inactive: rightArrowInactive }\"\n      class=\"pager right\"\n      src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ4IDQ4OyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNDggNDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxnPjxwYXRoIGQ9Ik0yNCw0NkMxMS45LDQ2LDIsMzYuMSwyLDI0UzExLjksMiwyNCwyczIyLDkuOSwyMiwyMlMzNi4xLDQ2LDI0LDQ2eiBNMjQsNEMxMyw0LDQsMTMsNCwyNHM5LDIwLDIwLDIwczIwLTksMjAtMjAgICBTMzUsNCwyNCw0eiIvPjwvZz48Zz48cG9seWdvbiBwb2ludHM9IjIxLjQsMzYuNyAxOS45LDM1LjMgMzEuMiwyNCAxOS45LDEyLjcgMjEuNCwxMS4zIDM0LjEsMjQgICIvPjwvZz48L3N2Zz4=\"\n      (click)=\"navigate(1)\" />\n  </div>\n</div>\n\n<viewer *ngIf=\"includeViewer\"></viewer>\n","import { NgModule } from '@angular/core'\nimport { ImageService } from './services/image.service'\nimport { GalleryComponent } from './gallery/gallery.component'\nimport { ViewerComponent } from './viewer/viewer.component'\nimport { CommonModule } from '@angular/common'\n\nimport 'hammerjs'\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [GalleryComponent, ViewerComponent],\n  providers: [ImageService],\n  exports: [GalleryComponent, ViewerComponent],\n})\nexport class Angular2ImageGalleryModule {}\n","/*\n * Public API Surface of angular2-image-gallery\n */\n\nexport * from './lib/services/image.service'\nexport * from './lib/gallery/gallery.component'\nexport * from './lib/viewer/viewer.component'\nexport * from './lib/angular2-image-gallery.module'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ImageService","i2","i4.ViewerComponent"],"mappings":";;;;;;;;;;MAKa,YAAY,CAAA;AADzB,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAmB;AACpD,QAAA,IAAA,CAAA,+BAA+B,GAAG,IAAI,OAAO,EAAU;AACvD,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAAW;AAEtD,QAAA,IAAA,CAAA,cAAc,GAAgC,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;AACrF,QAAA,IAAA,CAAA,0BAA0B,GAAuB,IAAI,CAAC,+BAA+B,CAAC,YAAY,EAAE;AACpG,QAAA,IAAA,CAAA,uBAAuB,GAAwB,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE;AAazF;AAXC,IAAA,YAAY,CAAC,MAAuB,EAAA;AAClC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGvC,IAAA,wBAAwB,CAAC,QAAgB,EAAA;AACvC,QAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGrD,IAAA,eAAe,CAAC,IAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;;8GAlB5B,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAZ,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;MC+FY,eAAe,CAAA;IAY1B,WAAoB,CAAA,YAA0B,EAAU,SAAuB,EAAA;QAA3D,IAAY,CAAA,YAAA,GAAZ,YAAY;QAAwB,IAAS,CAAA,SAAA,GAAT,SAAS;QAVjE,IAAM,CAAA,MAAA,GAAyB,EAAE;QACjC,IAAU,CAAA,UAAA,GAAW,CAAC;QACtB,IAAgB,CAAA,gBAAA,GAAY,IAAI;QAChC,IAAiB,CAAA,iBAAA,GAAY,IAAI;QACjC,IAAgB,CAAA,gBAAA,GAAW,aAAa;QAGhC,IAAoB,CAAA,oBAAA,GAAY,KAAK;QACrC,IAAe,CAAA,eAAA,GAAW,MAAM;QAGtC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAC/C,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACtB,SAAC,CAAC;QACF,YAAY,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC7D,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC;AACzD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI;AAC7C,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC;YAClB,IAAI,CAAC,aAAa,EAAE;AACtB,SAAC,CAAC;QACF,YAAY,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;AAC5D,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC9B,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;AAGlB,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC;;AAG5B,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;;AAGjD,IAAA,GAAG,CAAC,KAAU,EAAA;AACZ,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM;;IAG/B,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC5B,YAAA,KAAK,CAAC,mBAAmB,CAAC,GAAG,KAAK;AAClC,YAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK;AACzB,SAAC,CAAC;QACF,IAAI,CAAC,WAAW,EAAE;;IAGpB,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,oBAAoB;;AAGxD,IAAA,cAAc,CAAC,UAAe,EAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU;QACjC,IAAI,CAAC,WAAW,EAAE;;AAGpB,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,KAAK,CAAC,mBAAmB,CAAC,GAAG,IAAI;;AAGnC;;;AAGG;IACH,QAAQ,CAAC,SAAiB,EAAE,KAAU,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE;AAC9G,YAAA,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,cAAc;AAC3D,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,eAAe;;iBAC3D;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,aAAa;AAC1D,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,gBAAgB;;AAEnE,YAAA,IAAI,CAAC,UAAU,IAAI,SAAS;YAE5B,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,oBAAoB,EAAE;;iBACtB;gBACL,IAAI,CAAC,oBAAoB,EAAE;;YAE7B,IAAI,CAAC,WAAW,EAAE;;;IAItB,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;;IAG/B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC;;AAG1C,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC;QACvE,IAAI,OAAO,EAAE;YACX,KAAK,CAAC,cAAc,EAAE;;QAGxB,QAAQ,OAAO;AACb,YAAA,KAAK,EAAE;;gBAEL,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;gBACxB;AACF,YAAA,KAAK,EAAE;;AAEL,gBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;gBACvB;AACF,YAAA,KAAK,EAAE;;gBAEL,IAAI,CAAC,WAAW,EAAE;gBAClB;AACF,YAAA,KAAK,EAAE;;AAEL,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,cAAc;AAC3D,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,eAAe;gBAC5D,IAAI,CAAC,WAAW,EAAE;gBAClB;AACF,YAAA,KAAK,EAAE;;AAEL,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,aAAa;gBAC1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AACxC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,gBAAgB;gBAC7D,IAAI,CAAC,WAAW,EAAE;gBAClB;AACF,YAAA;gBACE;;;IAIN,iBAAiB,CAAC,GAAQ,EAAE,KAAa,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;;IAGtE,WAAW,CAAC,GAAQ,EAAE,KAAa,EAAA;AACzC,QAAA,IAAI,GAAG,CAAC,mBAAmB,CAAC,EAAE;AAC5B,YAAA,OAAO,CAAQ,KAAA,EAAA,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAA,EAAA,CAAI;;AACzD,aAAA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE;YACjD,OAAO,CAAA,KAAA,EAAQ,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAA,EAAA,CAAI;;AAExD,QAAA,OAAO,EAAE;;IAGH,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;;IAGxB,WAAW,GAAA;;QAEjB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI;YAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBAC5B,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzC,oBAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK;AACvB,oBAAA,IAAI,CAAC,SAAS,GAAG,CAAC;;AAEtB,aAAC,CAAC;SACH,EAAE,GAAG,CAAC;;IAGD,aAAa,GAAA;AACnB,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU;AACrC,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW;AAEvC,QAAA,QAAQ,IAAI,CAAC,eAAe;YAC1B,KAAK,MAAM,EAAE;AACX,gBAAA,IAAI,CAAC,gBAAgB,GAAG,aAAa;AAErC,gBAAA,IACE,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK;AAC3E,oBAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,EAC7E;AACA,oBAAA,IAAI,CAAC,gBAAgB,GAAG,YAAY;;AAEtC,gBAAA,IACE,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK;AAC1E,oBAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,EAC5E;AACA,oBAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW;;AAErC,gBAAA,IACE,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK;AACzE,oBAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAC3E;AACA,oBAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW;;AAErC,gBAAA,IACE,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK;AACzE,oBAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAC3E;AACA,oBAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW;;AAErC,gBAAA,IACE,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK;AACzE,oBAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAC3E;AACA,oBAAA,IAAI,CAAC,gBAAgB,GAAG,YAAY;;AAEtC,gBAAA,IACE,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK;AAC1E,oBAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,EAC5E;AACA,oBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;gBAE/B;;YAEF,KAAK,KAAK,EAAE;AACV,gBAAA,IAAI,CAAC,gBAAgB,GAAG,aAAa;gBACrC;;YAEF,KAAK,KAAK,EAAE;AACV,gBAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW;gBACnC;;YAEF,KAAK,MAAM,EAAE;AACX,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;gBAC7B;;YAEF,SAAS;AACP,gBAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW;;;;8GAlO9B,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnG5B,kkJA8CA,EDhCc,MAAA,EAAA,CAAA,o3DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,iBAAiB,EAAE;AACzB,gBAAA,KAAK,CACH,gBAAgB,EAChB,KAAK,CAAC;AACJ,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,SAAS,EAAE,qBAAqB;AACjC,iBAAA,CAAC,CACH;AACD,gBAAA,KAAK,CACH,eAAe,EACf,KAAK,CAAC;AACJ,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,SAAS,EAAE,qBAAqB;AACjC,iBAAA,CAAC,CACH;AACD,gBAAA,KAAK,CACH,aAAa,EACb,KAAK,CAAC;AACJ,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,SAAS,EAAE,wBAAwB;AACpC,iBAAA,CAAC,CACH;AACD,gBAAA,KAAK,CACH,cAAc,EACd,KAAK,CAAC;AACJ,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,SAAS,EAAE,uBAAuB;AACnC,iBAAA,CAAC,CACH;gBACD,UAAU,CAAC,qBAAqB,EAAE;AAChC,oBAAA,KAAK,CAAC;AACJ,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE,sBAAsB;qBAClC,CAAC;oBACF,OAAO,CAAC,qBAAqB,CAAC;iBAC/B,CAAC;gBACF,UAAU,CAAC,oBAAoB,EAAE;AAC/B,oBAAA,KAAK,CAAC;AACJ,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE,uBAAuB;qBACnC,CAAC;oBACF,OAAO,CAAC,qBAAqB,CAAC;iBAC/B,CAAC;gBACF,UAAU,CAAC,kBAAkB,EAAE;AAC7B,oBAAA,KAAK,CAAC;AACJ,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;oBACF,OAAO,CAAC,gBAAgB,CAAC;iBAC1B,CAAC;gBACF,UAAU,CAAC,mBAAmB,EAAE;AAC9B,oBAAA,KAAK,CAAC;AACJ,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;oBACF,OAAO,CAAC,gBAAgB,CAAC;iBAC1B,CAAC;aACH,CAAC;YACF,OAAO,CAAC,sBAAsB,EAAE;AAC9B,gBAAA,KAAK,CACH,MAAM,EACN,KAAK,CAAC;AACJ,oBAAA,OAAO,EAAE,CAAC;AACX,iBAAA,CAAC,CACH;AACD,gBAAA,KAAK,CACH,MAAM,EACN,KAAK,CAAC;AACJ,oBAAA,OAAO,EAAE,CAAC;AACX,iBAAA,CAAC,CACH;gBACD,UAAU,CAAC,WAAW,EAAE;AACtB,oBAAA,KAAK,CAAC;AACJ,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;oBACF,OAAO,CAAC,gBAAgB,CAAC;iBAC1B,CAAC;gBACF,UAAU,CAAC,WAAW,EAAE;AACtB,oBAAA,KAAK,CAAC;AACJ,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;oBACF,OAAO,CAAC,gBAAgB,CAAC;iBAC1B,CAAC;aACH,CAAC;AACH,SAAA,EAAA,CAAA,CAAA;;2FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA7F3B,SAAS;iCACI,KAAK,EAAA,QAAA,EACP,QAAQ,EAGZ,IAAA,EAAA;AACJ,wBAAA,oBAAoB,EAAE,mBAAmB;qBAC1C,EACW,UAAA,EAAA;wBACV,OAAO,CAAC,iBAAiB,EAAE;AACzB,4BAAA,KAAK,CACH,gBAAgB,EAChB,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,SAAS,EAAE,qBAAqB;AACjC,6BAAA,CAAC,CACH;AACD,4BAAA,KAAK,CACH,eAAe,EACf,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,SAAS,EAAE,qBAAqB;AACjC,6BAAA,CAAC,CACH;AACD,4BAAA,KAAK,CACH,aAAa,EACb,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,SAAS,EAAE,wBAAwB;AACpC,6BAAA,CAAC,CACH;AACD,4BAAA,KAAK,CACH,cAAc,EACd,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,SAAS,EAAE,uBAAuB;AACnC,6BAAA,CAAC,CACH;4BACD,UAAU,CAAC,qBAAqB,EAAE;AAChC,gCAAA,KAAK,CAAC;AACJ,oCAAA,OAAO,EAAE,CAAC;AACV,oCAAA,SAAS,EAAE,sBAAsB;iCAClC,CAAC;gCACF,OAAO,CAAC,qBAAqB,CAAC;6BAC/B,CAAC;4BACF,UAAU,CAAC,oBAAoB,EAAE;AAC/B,gCAAA,KAAK,CAAC;AACJ,oCAAA,OAAO,EAAE,CAAC;AACV,oCAAA,SAAS,EAAE,uBAAuB;iCACnC,CAAC;gCACF,OAAO,CAAC,qBAAqB,CAAC;6BAC/B,CAAC;4BACF,UAAU,CAAC,kBAAkB,EAAE;AAC7B,gCAAA,KAAK,CAAC;AACJ,oCAAA,OAAO,EAAE,CAAC;iCACX,CAAC;gCACF,OAAO,CAAC,gBAAgB,CAAC;6BAC1B,CAAC;4BACF,UAAU,CAAC,mBAAmB,EAAE;AAC9B,gCAAA,KAAK,CAAC;AACJ,oCAAA,OAAO,EAAE,CAAC;iCACX,CAAC;gCACF,OAAO,CAAC,gBAAgB,CAAC;6BAC1B,CAAC;yBACH,CAAC;wBACF,OAAO,CAAC,sBAAsB,EAAE;AAC9B,4BAAA,KAAK,CACH,MAAM,EACN,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,CAAC;AACX,6BAAA,CAAC,CACH;AACD,4BAAA,KAAK,CACH,MAAM,EACN,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,CAAC;AACX,6BAAA,CAAC,CACH;4BACD,UAAU,CAAC,WAAW,EAAE;AACtB,gCAAA,KAAK,CAAC;AACJ,oCAAA,OAAO,EAAE,CAAC;iCACX,CAAC;gCACF,OAAO,CAAC,gBAAgB,CAAC;6BAC1B,CAAC;4BACF,UAAU,CAAC,WAAW,EAAE;AACtB,gCAAA,KAAK,CAAC;AACJ,oCAAA,OAAO,EAAE,CAAC;iCACX,CAAC;gCACF,OAAO,CAAC,gBAAgB,CAAC;6BAC1B,CAAC;yBACH,CAAC;AACH,qBAAA,EAAA,QAAA,EAAA,kkJAAA,EAAA,MAAA,EAAA,CAAA,o3DAAA,CAAA,EAAA;;;MEtEU,gBAAgB,CAAA;AAyBgB,IAAA,YAAY,CAAC,CAAM,EAAA;QAC5D,IAAI,CAAC,oBAAoB,EAAE;;AAGO,IAAA,YAAY,CAAC,CAAM,EAAA;QACrD,IAAI,CAAC,MAAM,EAAE;;AAGf,IAAA,WAAA,CAAmB,YAA0B,EAAS,IAAgB,EAAS,iBAAoC,EAAA;QAAhG,IAAY,CAAA,YAAA,GAAZ,YAAY;QAAuB,IAAI,CAAA,IAAA,GAAJ,IAAI;QAAqB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAhChG,IAAO,CAAA,OAAA,GAAU,EAAE;QACnB,IAAmB,CAAA,mBAAA,GAAW,qBAAqB;QACnD,IAAgB,CAAA,gBAAA,GAAW,EAAE;QAC7B,IAAY,CAAA,YAAA,GAAW,WAAW;QAClC,IAAM,CAAA,MAAA,GAAoB,EAAE;QAC5B,IAAsB,CAAA,sBAAA,GAAG,aAAa;QAEtC,IAAQ,CAAA,QAAA,GAAW,CAAC;QACpB,IAAkB,CAAA,kBAAA,GAAY,KAAK;QACnC,IAAiB,CAAA,iBAAA,GAAY,KAAK;QAET,IAAmB,CAAA,mBAAA,GAAW,CAAC;QAChC,IAAiB,CAAA,iBAAA,GAAW,CAAC;QAC/B,IAAmB,CAAA,mBAAA,GAAW,EAAE;QAChC,IAAmB,CAAA,mBAAA,GAAW,SAAS;QACpC,IAAW,CAAA,WAAA,GAAW,GAAG;QAC1B,IAAa,CAAA,aAAA,GAAG,IAAI;QACZ,IAAqB,CAAA,qBAAA,GAAG,IAAI;AAElD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW;AA4E5C,QAAA,IAAA,CAAA,4BAA4B,GAAG,CAAC,GAAG,KAAI;AAC7C,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAsB,mBAAA,EAAA,IAAI,CAAC,mBAAmB,CAAA;;wBAE1C,GAAG,CAAA,CAAE,CAAC;;iBACnB;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,qGAAqG,GAAG,CAAA,CAAE,CAAC;;AAE7H,SAAC;AAkEO,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,iBAAiB;AAC9E,QAAA,IAAA,CAAA,eAAe,GAAG,MAAc,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAAG;QAC5F,IAAe,CAAA,eAAA,GAAG,MAAc,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,WAAW;QAC/E,IAAS,CAAA,SAAA,GAAG,CAAC,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;;IA1IhF,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,UAAmB,KAChG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CACnC;;AAGH,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAEhC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAEpD,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,aAAa,EAAE,EAAE;YACpD,IAAI,CAAC,kBAAkB,EAAE;;QAG3B,IAAI,CAAC,MAAM,EAAE;;IAGf,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;;;AAIzC,IAAA,eAAe,CAAC,GAAQ,EAAA;QACtB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC;;AAGzC;;AAEG;AACH,IAAA,QAAQ,CAAC,SAAiB,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,MAAM,SAAS,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE;YAC1H,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,GAAG,SAAS;;QAE/C,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,MAAM,EAAE;;IAGf,eAAe,GAAA;AACb,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;AAC3C,QAAA,MAAM,KAAK,GAAG,YAAY,GAAG,IAAI;AACjC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC;;IAG1D,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAqB,KAAI;AACvE,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;YAClB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;YAE3C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC5B,gBAAA,KAAK,CAAC,mBAAmB,CAAC,GAAG,KAAK;AAClC,gBAAA,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;AAC7B,aAAC,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE;AACf,SAAC,EAAE,IAAI,CAAC,4BAA4B,CAAC;;IAa/B,qBAAqB,GAAA;AAC3B,QAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,mBAAmB;AAE/C,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,gBAAgB;gBACd,IAAI,CAAC,mBAAmB,KAAK;AAC3B,sBAAE,CAAA,EAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,CAAE;sBAC7E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY;;AAGpD,QAAA,OAAO,gBAAgB;;IAGjB,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;QAEjB,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,eAAe,GAAG,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC;AAET,QAAA,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACjF,gBAAA,CAAC,EAAE;;YAEL,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;gBACtB,OAAO,CAAC,GAAG,EAAE;;YAEf,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,GAAG,OAAO;YAEzC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;QAGhC,IAAI,CAAC,YAAY,EAAE;;IAGb,kBAAkB,CAAC,MAAa,EAAE,SAAc,EAAA;AACtD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACzE,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AACtB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAEzE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;;AAGlD,IAAA,aAAa,CAAC,MAAa,EAAA;QACjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;QAE1D,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,gBAAgB;AACxG,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,GAAG,KAAK;AAEnF,QAAA,OAAO,SAAS;;AAGV,IAAA,oBAAoB,CAAC,MAAa,EAAA;QACxC,IAAI,gBAAgB,GAAG,CAAC;AACxB,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACrB,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM;YACpG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,KAAK,GAAG,eAAe;AACzH,YAAA,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;YAC5E,gBAAgB,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,KAAK;AACxE,SAAC,CAAC;AAEF,QAAA,OAAO,gBAAgB;;IAQjB,YAAY,GAAA;QAClB,IAAI,yBAAyB,GAAG,CAAC;QAEjC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YACrF,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAC1D,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;AAEhG,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,GAAG,gBAAgB;AAEhF,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACrB,gBAAA,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,KAAK,GAAG,KAAK;AACtE,gBAAA,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,GAAG,KAAK;gBACxE,yBAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,GAAG,CAAC,MAAM,CAAC;AAC7E,aAAC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,sBAAsB,GAAG,yBAAyB,GAAG,GAAG,GAAG,YAAY,GAAG,aAAa;QAE5F,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,oBAAoB,EAAE;;IAGrB,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAoB,EAAE,KAAa,KAAI;YAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YAElD,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC5H,gBAAA,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI;;AAEhF,SAAC,CAAC;;AAGI,IAAA,kBAAkB,CAAC,OAAoB,EAAA;QAC7C,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,KAAK;;QAEd,MAAM,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG;QACtD,MAAM,aAAa,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM;AAC5D,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY;AAE5D,QAAA,OAAO,UAAU,GAAG,cAAc,IAAI,aAAa,IAAI,CAAC;;IAGlD,iBAAiB,GAAA;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC;AAC3C,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW;;8GA9NxE,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,g0BC3B7B,+1EAkCA,EAAA,MAAA,EAAA,CAAA,mxBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDPa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,SAAS,EAAA,QAAA,EAAA,+1EAAA,EAAA,MAAA,EAAA,CAAA,mxBAAA,CAAA,EAAA;yIAgBM,mBAAmB,EAAA,CAAA;sBAA3C,KAAK;uBAAC,gBAAgB;gBACC,iBAAiB,EAAA,CAAA;sBAAxC,KAAK;uBAAC,eAAe;gBACA,mBAAmB,EAAA,CAAA;sBAAxC,KAAK;uBAAC,aAAa;gBACE,mBAAmB,EAAA,CAAA;sBAAxC,KAAK;uBAAC,aAAa;gBACK,WAAW,EAAA,CAAA;sBAAnC,KAAK;uBAAC,gBAAgB;gBACC,aAAa,EAAA,CAAA;sBAApC,KAAK;uBAAC,eAAe;gBACU,qBAAqB,EAAA,CAAA;sBAApD,KAAK;uBAAC,uBAAuB;gBAEpB,YAAY,EAAA,CAAA;sBAArB;gBAEgD,gBAAgB,EAAA,CAAA;sBAAhE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACjB,aAAa,EAAA,CAAA;sBAA1C,YAAY;uBAAC,cAAc;gBAEe,YAAY,EAAA,CAAA;sBAAtD,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;gBAIL,YAAY,EAAA,CAAA;sBAA/C,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;ME1CvB,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAA1B,0BAA0B,EAAA,YAAA,EAAA,CAJtB,gBAAgB,EAAE,eAAe,aADtC,YAAY,CAAA,EAAA,OAAA,EAAA,CAGZ,gBAAgB,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;AAEhC,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,0BAA0B,EAH1B,SAAA,EAAA,CAAC,YAAY,CAAC,YAFf,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAKX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE,CAAC,gBAAgB,EAAE,eAAe,CAAC;oBACjD,SAAS,EAAE,CAAC,YAAY,CAAC;AACzB,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,eAAe,CAAC;AAC7C,iBAAA;;;ACbD;;AAEG;;ACFH;;AAEG;;;;"}