{"version":3,"file":"c8y-ngx-components-location.mjs","sources":["../../location/add-location.component.ts","../../location/add-location.component.html","../../location/add-location.factory.ts","../../location/location-tab.factory.ts","../../location/location.component.ts","../../location/location.component.html","../../location/location.module.ts","../../location/c8y-ngx-components-location.ts"],"sourcesContent":["import {\n  Component,\n  Inject,\n  OnInit,\n  Optional,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport { AlertService, ContextRouteService } from '@c8y/ngx-components';\nimport type { MapDefaultConfig } from '@c8y/options';\nimport { Router } from '@angular/router';\nimport { MAP_DEFAULT_CONFIG, defaultMapConfig } from '@c8y/ngx-components/map';\nimport { Observable, of } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\n@Component({\n  selector: 'c8y-add-location',\n  templateUrl: './add-location.component.html'\n})\nexport class AddLocationComponent implements OnInit {\n  @ViewChild('templateCopy', { read: TemplateRef, static: true }) templateCopy;\n\n  constructor(\n    private inventoryService: InventoryService,\n    private contextRouteService: ContextRouteService,\n    @Optional()\n    @Inject(MAP_DEFAULT_CONFIG)\n    private defaultConfig$: Observable<MapDefaultConfig>,\n    private router: Router,\n    private alertService: AlertService,\n    private vcRef: ViewContainerRef\n  ) {}\n\n  ngOnInit() {\n    this.vcRef.createEmbeddedView(this.templateCopy);\n  }\n\n  onClick(): void {\n    const mapConfig$ = this.defaultConfig$ || of(defaultMapConfig);\n    mapConfig$.pipe(first()).subscribe(async config => {\n      const context = this.contextRouteService.activatedContextData;\n      context.contextData.c8y_Position = {\n        lat: config.center[0],\n        lng: config.center[1]\n      };\n      try {\n        await this.inventoryService.update(context.contextData as IManagedObject);\n      } catch (ex) {\n        this.alertService.addServerFailure(ex);\n      }\n\n      const route = this.contextRouteService.getContextRoute(context);\n      this.contextRouteService.refreshContext();\n      this.router.navigateByUrl(route + '/location');\n    });\n  }\n}\n","<ng-template #templateCopy>\n  <button\n    class=\"btn btn-link\"\n    [title]=\"'Add location' | translate\"\n    (click)=\"onClick()\"\n  >\n    <i c8yIcon=\"location-arrow\"></i>\n    <span translate>Add location</span>\n  </button>\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n  ActionBarFactory,\n  ActionBarItem,\n  ContextRouteService,\n  ViewContext\n} from '@c8y/ngx-components';\nimport { AddLocationComponent } from './add-location.component';\nimport { isUndefined } from 'lodash-es';\n\n@Injectable({ providedIn: 'root' })\nexport class AddLocationFactory implements ActionBarFactory {\n  private action: ActionBarItem = {\n    component: AddLocationComponent,\n    placement: 'more'\n  };\n\n  constructor(private contextRouteService: ContextRouteService) {}\n\n  get(activatedRoute?: ActivatedRoute): ActionBarItem {\n    const routeData = this.contextRouteService.getContextData(activatedRoute);\n    if (!routeData) {\n      return;\n    }\n    if (\n      routeData.context === ViewContext.Device &&\n      isUndefined(routeData.contextData.c8y_Position)\n    ) {\n      return this.action;\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n  ContextRouteService,\n  Tab,\n  ViewContext,\n  ExtensionFactory,\n  gettext\n} from '@c8y/ngx-components';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LocationTabFactory implements ExtensionFactory<Tab> {\n  constructor(private contextRouteService: ContextRouteService) {}\n\n  get(activatedRoute: ActivatedRoute): Tab[] {\n    const contextData = this.contextRouteService.getContextData(activatedRoute);\n    const isDeviceOrGroupWithPosition =\n      (contextData?.context === ViewContext.Device || contextData?.context === ViewContext.Group) &&\n      contextData?.contextData.c8y_Position;\n    if (isDeviceOrGroupWithPosition) {\n      return [\n        {\n          label: gettext('Location'),\n          icon: 'location-arrow',\n          path: `${this.contextRouteService.getContextRoute(contextData)}/location`\n        }\n      ];\n    }\n    return [];\n  }\n}\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { MapComponent, MapConfig, PositionManagedObject } from '@c8y/ngx-components/map';\nimport {\n  AlertService,\n  ContextRouteService,\n  OptionsService,\n  Permissions,\n  gettext\n} from '@c8y/ngx-components';\nimport { ActivatedRoute } from '@angular/router';\nimport { InventoryService } from '@c8y/client';\nimport { isUndefined, cloneDeep } from 'lodash-es';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Component({\n  selector: 'c8y-location',\n  templateUrl: './location.component.html'\n})\nexport class LocationComponent implements OnInit, OnDestroy {\n  position: PositionManagedObject;\n  originalPosition: PositionManagedObject;\n  isEdit = false;\n  canEdit = true;\n  config: MapConfig = { realtime: false, follow: true, zoomLevel: 12 };\n  addressSearchTerm = '';\n  hideAddressSearchFeature = false;\n\n  private destroy$ = new Subject<void>();\n  private mapNominatimUrl = 'https://nominatim.openstreetmap.org/search?format=json&q={searchTerm}';\n\n  @ViewChild(MapComponent)\n  map: MapComponent;\n\n  constructor(\n    private contextRouteService: ContextRouteService,\n    private activatedRoute: ActivatedRoute,\n    private inventoryService: InventoryService,\n    private permissions: Permissions,\n    private optionsService: OptionsService,\n    private alertService: AlertService\n  ) {}\n\n  ngOnInit(): void {\n    this.activatedRoute.url.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.updateMap();\n    });\n  }\n\n  async updateMap() {\n    const { contextData } = this.contextRouteService.getContextData(this.activatedRoute);\n    this.position = contextData as PositionManagedObject;\n    this.canEdit = await this.permissions.canEdit(\n      [Permissions.ROLE_INVENTORY_ADMIN, Permissions.ROLE_INVENTORY_CREATE],\n      contextData\n    );\n\n    const hasCustomSetting = !isUndefined(this.optionsService.mapNominatimUrl);\n    this.hideAddressSearchFeature = hasCustomSetting && !this.optionsService.mapNominatimUrl;\n\n    if (hasCustomSetting) {\n      this.mapNominatimUrl = this.optionsService.mapNominatimUrl;\n    }\n\n    this.map.refresh();\n  }\n\n  toggleRealtime() {\n    this.config = { ...this.config, realtime: !this.config.realtime };\n  }\n\n  disableRealtime() {\n    this.config = { ...this.config, realtime: false };\n  }\n\n  centerMap() {\n    this.config = {\n      ...this.config,\n      center: [this.position.c8y_Position.lat, this.position.c8y_Position.lng]\n    };\n  }\n\n  edit() {\n    this.originalPosition = cloneDeep(this.position);\n    this.enableMarkerDragging();\n    this.disableRealtime();\n    this.isEdit = true;\n  }\n\n  cancel() {\n    this.position = this.originalPosition;\n    this.isEdit = false;\n    this.map.markers[0]?.dragging.disable();\n    this.centerMap();\n  }\n\n  async save() {\n    try {\n      const { data } = await this.inventoryService.update({\n        id: this.position.id,\n        c8y_Position: this.position.c8y_Position\n      });\n      this.position = data as PositionManagedObject;\n    } catch (ex) {\n      this.alertService.addServerFailure(ex);\n    }\n    this.map.markers[0]?.dragging.disable();\n    this.centerMap();\n    this.isEdit = false;\n  }\n\n  positionChanged(position: PositionManagedObject) {\n    this.position = position;\n  }\n\n  async searchAddress(searchTerm: string) {\n    const fetchResponse = await fetch(this.mapNominatimUrl.replace('{searchTerm}', searchTerm));\n    if (fetchResponse.status !== 200) {\n      this.alertService.danger(gettext('Failed to search for address.'));\n      return;\n    }\n    const data: Array<{ lat: string | number; lon: string | number; licence?: string }> =\n      await fetchResponse.json();\n    const latLng = data[0];\n    if (!latLng) {\n      this.alertService.warning(gettext('Address could not be found.'));\n      return;\n    }\n    this.position.c8y_Position.lat = Number(latLng.lat);\n    this.position.c8y_Position.lng = Number(latLng.lon);\n    this.updateMarkerPosition();\n    if (latLng.licence) {\n      this.map.map.attributionControl.addAttribution(latLng.licence);\n    }\n  }\n\n  updateMarkerPosition() {\n    this.map.refreshMarkers();\n    this.enableMarkerDragging();\n    this.centerMap();\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n  }\n\n  private enableMarkerDragging() {\n    const marker = this.map.markers[0];\n    if (marker) {\n      marker.dragging.enable();\n      marker.on('dragend', () => {\n        const latlng = marker.getLatLng();\n        this.position.c8y_Position = {\n          ...this.position.c8y_Position,\n          lat: latlng.lat,\n          lng: latlng.lng\n        };\n        this.centerMap();\n      });\n    }\n  }\n}\n","<c8y-action-bar-item placement=\"right\">\n  <button\n    class=\"btn btn-link c8y-realtime\"\n    title=\"{{ 'Toggle realtime' | translate }}\"\n    type=\"button\"\n    (click)=\"toggleRealtime()\"\n  >\n    <span\n      class=\"c8y-pulse\"\n      [ngClass]=\"{ active: config.realtime, inactive: !config.realtime }\"\n    ></span>\n    <span translate>Realtime</span>\n  </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item placement=\"right\">\n  <button\n    class=\"btn btn-clean\"\n    title=\"{{ 'Center`verb`' | translate }}\"\n    (click)=\"centerMap()\"\n  >\n    <i [c8yIcon]=\"'target1'\"></i>\n    <span translate>Center`verb`</span>\n  </button>\n</c8y-action-bar-item>\n\n<div class=\"card card--grid content-fullpage d-grid grid__col--8-4--md\">\n  <div\n    class=\"bg-white p-relative\"\n    style=\"min-height: 30vh\"\n  >\n    <c8y-map\n      [assets]=\"[position]\"\n      [config]=\"config\"\n      (onRealtimeUpdate)=\"positionChanged($event)\"\n    ></c8y-map>\n  </div>\n\n  <form\n    class=\"d-flex d-col bg-inherit content-fullpage bg-gray-white\"\n    #positionForm=\"ngForm\"\n    (ngSubmit)=\"save()\"\n  >\n    <div class=\"card-header large-padding separator sticky-top\">\n      <span\n        class=\"card-title\"\n        translate\n      >\n        Device location\n      </span>\n    </div>\n    <div class=\"inner-scroll\">\n      <div\n        class=\"m-16\"\n        *ngIf=\"!isEdit\"\n      >\n        <div class=\"p-b-40\">\n          <div\n            class=\"text-bold\"\n            translate\n          >\n            Latitude (°)\n          </div>\n          {{ position.c8y_Position.lat }}\n        </div>\n        <div class=\"p-b-40\">\n          <div\n            class=\"text-bold\"\n            translate\n          >\n            Longitude (°)\n          </div>\n          {{ position.c8y_Position.lng }}\n        </div>\n        <div class=\"p-b-40\">\n          <div\n            class=\"text-bold\"\n            translate\n          >\n            Altitude (m)\n          </div>\n          {{ position.c8y_Position.alt }}\n        </div>\n      </div>\n      <div\n        class=\"m-16\"\n        *ngIf=\"isEdit\"\n      >\n        <c8y-form-group>\n          <label\n            for=\"lat\"\n            translate\n          >\n            Latitude (°)\n          </label>\n\n          <input\n            class=\"form-control\"\n            [title]=\"'Latitude (°)' | translate\"\n            id=\"lat\"\n            name=\"lat\"\n            type=\"number\"\n            required\n            min=\"-90\"\n            max=\"90\"\n            (blur)=\"positionForm.valid && updateMarkerPosition()\"\n            [(ngModel)]=\"position.c8y_Position.lat\"\n          />\n          <c8y-messages>\n            <c8y-message\n              name=\"min\"\n              [text]=\"'The minimum latitude value is -90°.' | translate\"\n            ></c8y-message>\n            <c8y-message\n              name=\"max\"\n              [text]=\"'The maximum latitude value is 90°.' | translate\"\n            ></c8y-message>\n          </c8y-messages>\n        </c8y-form-group>\n        <c8y-form-group>\n          <label\n            for=\"lat\"\n            translate\n          >\n            Longitude (°)\n          </label>\n\n          <input\n            class=\"form-control\"\n            [title]=\"'Longitude (°)' | translate\"\n            id=\"lng\"\n            name=\"lng\"\n            type=\"number\"\n            required\n            min=\"-180\"\n            max=\"180\"\n            (blur)=\"positionForm.valid && updateMarkerPosition()\"\n            [(ngModel)]=\"position.c8y_Position.lng\"\n          />\n          <c8y-messages>\n            <c8y-message\n              name=\"min\"\n              [text]=\"'The minimum longitude value is -180°.' | translate\"\n            ></c8y-message>\n            <c8y-message\n              name=\"max\"\n              [text]=\"'The maximum longitude value is 180°.' | translate\"\n            ></c8y-message>\n          </c8y-messages>\n        </c8y-form-group>\n        <c8y-form-group>\n          <label\n            for=\"alt\"\n            translate\n          >\n            Altitude (m)\n          </label>\n\n          <input\n            class=\"form-control\"\n            [title]=\"'Altitude (m)' | translate\"\n            id=\"alt\"\n            name=\"alt\"\n            type=\"number\"\n            [(ngModel)]=\"position.c8y_Position.alt\"\n          />\n        </c8y-form-group>\n      </div>\n\n      <form\n        class=\"card-block bg-level-1\"\n        #addressSearch=\"ngForm\"\n        novalidate\n        (submit)=\"searchAddress(addressSearchTerm)\"\n        *ngIf=\"isEdit && !hideAddressSearchFeature\"\n      >\n        <div class=\"form-group\">\n          <label\n            for=\"searchAddress\"\n            translate\n          >\n            Find lat/long by address\n          </label>\n          <div class=\"input-group input-group-search\">\n            <input\n              class=\"form-control\"\n              id=\"searchAddress\"\n              name=\"addressSearchTerm\"\n              type=\"text\"\n              [placeholder]=\"'e.g. Speditionstraße 13, Düsseldorf`LOCALIZE`' | translate\"\n              [(ngModel)]=\"addressSearchTerm\"\n            />\n            <span class=\"input-group-btn\">\n              <button\n                class=\"btn btn-dot\"\n                [title]=\"'Search' | translate\"\n                type=\"submit\"\n              >\n                <i\n                  class=\"dlt-c8y-icon-search\"\n                  c8y-icon=\"search\"\n                ></i>\n              </button>\n            </span>\n          </div>\n        </div>\n      </form>\n    </div>\n    <div class=\"card-footer separator\">\n      <button\n        class=\"btn btn-default\"\n        [title]=\"'Edit location' | translate\"\n        type=\"button\"\n        *ngIf=\"canEdit && !isEdit\"\n        (click)=\"edit()\"\n        translate\n      >\n        Edit location\n      </button>\n      <button\n        class=\"btn btn-default\"\n        [title]=\"'Cancel' | translate\"\n        type=\"button\"\n        (click)=\"cancel()\"\n        *ngIf=\"isEdit\"\n        translate\n      >\n        Cancel\n      </button>\n      <button\n        class=\"btn btn-primary\"\n        [title]=\"'Save' | translate\"\n        type=\"submit\"\n        *ngIf=\"isEdit\"\n        translate\n        [disabled]=\"!positionForm.valid\"\n      >\n        Save\n      </button>\n    </div>\n  </form>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CoreModule, hookActionBar, hookRoute, hookTab, ViewContext } from '@c8y/ngx-components';\nimport { MapModule } from '@c8y/ngx-components/map';\nimport { AddLocationComponent } from './add-location.component';\nimport { AddLocationFactory } from './add-location.factory';\nimport { LocationTabFactory } from './location-tab.factory';\nimport { LocationComponent } from './location.component';\nimport { LocationConfiguration } from './location.model';\n\n@NgModule({\n  declarations: [LocationComponent],\n  imports: [MapModule, CoreModule, RouterModule],\n  exports: [LocationComponent],\n  providers: [\n    hookRoute({\n      path: 'location',\n      component: LocationComponent,\n      context: ViewContext.Device,\n      tabs: []\n    }),\n    hookRoute({\n      path: 'location',\n      component: LocationComponent,\n      context: ViewContext.Group,\n      tabs: []\n    })\n  ]\n})\nexport class LocationRouteModule {}\n\n@NgModule({\n  imports: [LocationRouteModule],\n  providers: [hookTab(LocationTabFactory)]\n})\nexport class LocationTabModule {}\n\n/**\n * @deprecated has been splitted into `LocationTabModule` and `AddLocationModule`.\n */\n@NgModule({\n  imports: [LocationTabModule]\n})\nexport class LocationModule {\n  /**\n   *\n   * @deprecated use the `LocationTabModule` and optionally `AddLocationModule` instead.\n   */\n  static config(\n    config: LocationConfiguration = { addLocation: false }\n  ): ModuleWithProviders<LocationModule> {\n    return {\n      ngModule: LocationModule,\n      providers: config.addLocation ? [hookActionBar(AddLocationFactory)] : []\n    };\n  }\n}\n\n@NgModule({\n  imports: [CoreModule, LocationRouteModule],\n  declarations: [AddLocationComponent],\n  exports: [AddLocationComponent],\n  providers: [hookActionBar(AddLocationFactory)]\n})\nexport class AddLocationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i4"],"mappings":";;;;;;;;;;;;;;;;MAqBa,oBAAoB,CAAA;IAG/B,WACU,CAAA,gBAAkC,EAClC,mBAAwC,EAGxC,cAA4C,EAC5C,MAAc,EACd,YAA0B,EAC1B,KAAuB,EAAA;QAPvB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QAGxC,IAAc,CAAA,cAAA,GAAd,cAAc,CAA8B;QAC5C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAkB;KAC7B;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAClD;IAED,OAAO,GAAA;QACL,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAC/D,QAAA,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,OAAM,MAAM,KAAG;AAChD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC;AAC9D,YAAA,OAAO,CAAC,WAAW,CAAC,YAAY,GAAG;AACjC,gBAAA,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACrB,gBAAA,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;aACtB,CAAC;AACF,YAAA,IAAI;gBACF,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,WAA6B,CAAC,CAAC;aAC3E;YAAC,OAAO,EAAE,EAAE;AACX,gBAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;aACxC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;KACJ;AApCU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,uFAOrB,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAPjB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACI,WAAW,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBhD,gQAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDWa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,gQAAA,EAAA,CAAA;;0BASzB,QAAQ;;0BACR,MAAM;2BAAC,kBAAkB,CAAA;0HANoC,YAAY,EAAA,CAAA;sBAA3E,SAAS;uBAAC,cAAc,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEVnD,kBAAkB,CAAA;AAM7B,IAAA,WAAA,CAAoB,mBAAwC,EAAA;QAAxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AALpD,QAAA,IAAA,CAAA,MAAM,GAAkB;AAC9B,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,SAAS,EAAE,MAAM;SAClB,CAAC;KAE8D;AAEhE,IAAA,GAAG,CAAC,cAA+B,EAAA;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;AACD,QAAA,IACE,SAAS,CAAC,OAAO,KAAK,WAAW,CAAC,MAAM;YACxC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,EAC/C;YACA,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;KACF;+GAnBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA,CAAA,EAAA;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCErB,kBAAkB,CAAA;AAC7B,IAAA,WAAA,CAAoB,mBAAwC,EAAA;QAAxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;KAAI;AAEhE,IAAA,GAAG,CAAC,cAA8B,EAAA;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAC5E,QAAA,MAAM,2BAA2B,GAC/B,CAAC,WAAW,EAAE,OAAO,KAAK,WAAW,CAAC,MAAM,IAAI,WAAW,EAAE,OAAO,KAAK,WAAW,CAAC,KAAK;AAC1F,YAAA,WAAW,EAAE,WAAW,CAAC,YAAY,CAAC;QACxC,IAAI,2BAA2B,EAAE;YAC/B,OAAO;AACL,gBAAA;AACE,oBAAA,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC;AAC1B,oBAAA,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAW,SAAA,CAAA;AAC1E,iBAAA;aACF,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GAlBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCOY,iBAAiB,CAAA;IAe5B,WACU,CAAA,mBAAwC,EACxC,cAA8B,EAC9B,gBAAkC,EAClC,WAAwB,EACxB,cAA8B,EAC9B,YAA0B,EAAA;QAL1B,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAlBpC,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AACf,QAAA,IAAA,CAAA,MAAM,GAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACrE,IAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;QACvB,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAC;AAEzB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QAC/B,IAAe,CAAA,eAAA,GAAG,uEAAuE,CAAC;KAY9F;IAEJ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACpE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,MAAM,SAAS,GAAA;AACb,QAAA,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAoC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAC3C,CAAC,WAAW,CAAC,oBAAoB,EAAE,WAAW,CAAC,qBAAqB,CAAC,EACrE,WAAW,CACZ,CAAC;QAEF,MAAM,gBAAgB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC3E,IAAI,CAAC,wBAAwB,GAAG,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;QAEzF,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;SAC5D;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;KACpB;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KACnE;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;KACnD;IAED,SAAS,GAAA;QACP,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,IAAI,CAAC,MAAM;AACd,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;SACzE,CAAC;KACH;IAED,IAAI,GAAA;QACF,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACtC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,IAAI;YACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAClD,gBAAA,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;AACpB,gBAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;AACzC,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAQ,GAAG,IAA6B,CAAC;SAC/C;QAAC,OAAO,EAAE,EAAE;AACX,YAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;SACxC;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,eAAe,CAAC,QAA+B,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;IAED,MAAM,aAAa,CAAC,UAAkB,EAAA;AACpC,QAAA,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5F,QAAA,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,CAAC;YACnE,OAAO;SACR;AACD,QAAA,MAAM,IAAI,GACR,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;AAC7B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAClE,OAAO;SACR;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAChE;KACF;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;IAEO,oBAAoB,GAAA;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACzB,YAAA,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAK;AACxB,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAClC,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG;AAC3B,oBAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY;oBAC7B,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,GAAG,EAAE,MAAM,CAAC,GAAG;iBAChB,CAAC;gBACF,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB,aAAC,CAAC,CAAC;SACJ;KACF;+GA7IU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAjB,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAYjB,YAAY,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BzB,k/MAiPA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD9Na,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,k/MAAA,EAAA,CAAA;8OAgBxB,GAAG,EAAA,CAAA;sBADF,SAAS;uBAAC,YAAY,CAAA;;;MEFZ,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAlBf,iBAAiB,CACtB,EAAA,OAAA,EAAA,CAAA,SAAS,EAAE,UAAU,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CACnC,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;AAgBhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAfnB,SAAA,EAAA;AACT,YAAA,SAAS,CAAC;AACR,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,SAAS,EAAE,iBAAiB;gBAC5B,OAAO,EAAE,WAAW,CAAC,MAAM;AAC3B,gBAAA,IAAI,EAAE,EAAE;aACT,CAAC;AACF,YAAA,SAAS,CAAC;AACR,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,SAAS,EAAE,iBAAiB;gBAC5B,OAAO,EAAE,WAAW,CAAC,KAAK;AAC1B,gBAAA,IAAI,EAAE,EAAE;aACT,CAAC;AACH,SAAA,EAAA,OAAA,EAAA,CAfS,SAAS,EAAE,UAAU,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAiBlC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAnB/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC;oBAC9C,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC5B,oBAAA,SAAS,EAAE;AACT,wBAAA,SAAS,CAAC;AACR,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,SAAS,EAAE,iBAAiB;4BAC5B,OAAO,EAAE,WAAW,CAAC,MAAM;AAC3B,4BAAA,IAAI,EAAE,EAAE;yBACT,CAAC;AACF,wBAAA,SAAS,CAAC;AACR,4BAAA,IAAI,EAAE,UAAU;AAChB,4BAAA,SAAS,EAAE,iBAAiB;4BAC5B,OAAO,EAAE,WAAW,CAAC,KAAK;AAC1B,4BAAA,IAAI,EAAE,EAAE;yBACT,CAAC;AACH,qBAAA;AACF,iBAAA,CAAA;;MAOY,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YANjB,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAMnB,iBAAiB,EAAA,SAAA,EAFjB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,YAD9B,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGlB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC9B,oBAAA,SAAS,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACzC,iBAAA,CAAA;;AAGD;;AAEG;MAIU,cAAc,CAAA;AACzB;;;AAGG;IACH,OAAO,MAAM,CACX,MAAA,GAAgC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA;QAEtD,OAAO;AACL,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE,MAAM,CAAC,WAAW,GAAG,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE;SACzE,CAAC;KACH;+GAZU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YARd,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;AAQjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAFf,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEhB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;MAsBY,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAJb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CADzB,UAAU,EA9BT,mBAAmB,aAgCpB,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAGnB,iBAAiB,EAAA,SAAA,EAFjB,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,EAAA,OAAA,EAAA,CAHpC,UAAU,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAK9B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC;oBAC1C,YAAY,EAAE,CAAC,oBAAoB,CAAC;oBACpC,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAC/B,oBAAA,SAAS,EAAE,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAC/C,iBAAA,CAAA;;;AC/DD;;AAEG;;;;"}