{"version":3,"file":"c8y-ngx-components-report-dashboard.mjs","sources":["../../report-dashboard/report-dashboard.guard.ts","../../report-dashboard/report-dashboard.service.ts","../../report-dashboard/report-dashboard-navigation.factory.ts","../../report-dashboard/report-dashboard-list.component.ts","../../report-dashboard/report-dashboard-list.component.html","../../report-dashboard/report-dashboard.module.ts","../../report-dashboard/c8y-ngx-components-report-dashboard.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport {\n  ContextDashboardService,\n  ContextDashboardType\n} from '@c8y/ngx-components/context-dashboard';\nimport { tap } from 'rxjs/operators';\nimport { from, Observable, of } from 'rxjs';\nimport { Tab } from '@c8y/ngx-components';\n\n@Injectable({ providedIn: 'root' })\nexport class ReportDashboardGuard {\n  constructor(private contextDashboardService: ContextDashboardService) {}\n\n  canActivate(route: ActivatedRouteSnapshot): Observable<boolean | Tab[]> {\n    const reportId = route.data.contextData && route.data.contextData.id;\n    return from(\n      this.contextDashboardService.activateDashboards(route, [ContextDashboardType.Named])\n    ).pipe(\n      tap(res => {\n        return Array.isArray(res) && res.length === 0\n          ? this.createDashboardIfNotExist(reportId)\n          : of(true);\n      })\n    );\n  }\n\n  createDashboardIfNotExist(reportId) {\n    const dashboardCfg = {};\n    return this.contextDashboardService\n      .create(dashboardCfg, undefined, `report_${reportId}`)\n      .then(() => true);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  IManagedObject,\n  InventoryService,\n  QueriesUtil,\n  QueryObjectFilterComparison,\n  QueryObjectRoot,\n  QueryObjectWithDedicatedFilter\n} from '@c8y/client';\nimport { NavigatorService } from '@c8y/ngx-components';\n\n@Injectable()\nexport class ReportDashboardService {\n  private queriesUtil: QueriesUtil;\n  constructor(\n    private inventoryService: InventoryService,\n    private navigatorService: NavigatorService\n  ) {\n    this.queriesUtil = new QueriesUtil();\n  }\n\n  listReports(options: { filter?: QueryObjectRoot; pageSize?: number } = {}) {\n    let query: QueryObjectFilterComparison | QueryObjectWithDedicatedFilter = {\n      __has: 'c8y_Report'\n    };\n    if (options.filter) {\n      query = this.queriesUtil.addAndFilter(query, options.filter);\n    }\n    const filters = {\n      query: this.queriesUtil.buildQuery(query),\n      pageSize: options.pageSize || 50,\n      withTotalPages: true\n    };\n    return this.inventoryService.list(filters);\n  }\n\n  removeNavigatorNode(report: IManagedObject) {\n    this.navigatorService.state.forEach(node => {\n      if (node.path === `reports/${report.id}`) {\n        this.navigatorService.remove(node);\n        return;\n      }\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { NavigatorNode, NavigatorService } from '@c8y/ngx-components';\nimport { ReportDashboardService } from './report-dashboard.service';\n\nconst REPORTS_NAVIGATOR_NODE_PRIORITY = 40;\n\n@Injectable({ providedIn: 'root' })\nexport class ReportDashboardNavigationFactory {\n  loaded = false;\n\n  constructor(\n    private navigatorService: NavigatorService,\n    private reportDashboardService: ReportDashboardService\n  ) {}\n\n  async get() {\n    if (!this.loaded) {\n      this.loaded = true;\n\n      this.navigatorService.add(\n        new NavigatorNode({\n          label: gettext('Reports'),\n          path: 'reports',\n          icon: 'c8y-reports',\n          featureId: 'reports',\n          priority: REPORTS_NAVIGATOR_NODE_PRIORITY\n        })\n      );\n\n      const reports: IManagedObject[] = (\n        await this.reportDashboardService.listReports({\n          filter: { __has: 'c8y_IsNavigatorNode' },\n          pageSize: 2000\n        })\n      ).data;\n      reports.forEach(report => {\n        const node = new NavigatorNode({\n          label: report.name,\n          path: `reports/${report.id}`,\n          icon: report.icon,\n          priority: report.priority,\n          routerLinkExact: false,\n          skipLabelTranslation: !report.translateDashboardTitle\n        });\n        this.navigatorService.add(node);\n      });\n    }\n  }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { IManagedObject, InventoryService, IResultList } from '@c8y/client';\nimport { debounceTime, distinctUntilChanged, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  AlertService,\n  FilterInputComponent,\n  GainsightService,\n  ModalService,\n  Permissions,\n  Status,\n  TitleComponent,\n  ActionBarItemComponent,\n  IconDirective,\n  HelpComponent,\n  ListGroupComponent,\n  ListItemComponent,\n  ListItemIconComponent,\n  ListItemBodyComponent,\n  ForOfDirective,\n  EmptyStateComponent,\n  ProductExperienceDirective,\n  GuideDocsComponent,\n  C8yTranslateDirective,\n  GuideHrefDirective,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n  ContextDashboardType,\n  ContextDashboardService,\n  PRODUCT_EXPERIENCE\n} from '@c8y/ngx-components/context-dashboard';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ReportDashboardService } from './report-dashboard.service';\nimport { FormsModule } from '@angular/forms';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { PopoverDirective } from 'ngx-bootstrap/popover';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\n\n@Component({\n  selector: 'c8y-report-dashboard-list',\n  templateUrl: './report-dashboard-list.component.html',\n  imports: [\n    TitleComponent,\n    ActionBarItemComponent,\n    FormsModule,\n    IconDirective,\n    RouterLink,\n    PopoverDirective,\n    NgClass,\n    HelpComponent,\n    ListGroupComponent,\n    ListItemComponent,\n    ListItemIconComponent,\n    ListItemBodyComponent,\n    ForOfDirective,\n    TooltipDirective,\n    EmptyStateComponent,\n    ProductExperienceDirective,\n    GuideDocsComponent,\n    C8yTranslateDirective,\n    GuideHrefDirective,\n    C8yTranslatePipe,\n    AsyncPipe\n  ]\n})\nexport class ReportDashboardListComponent implements OnInit {\n  PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;\n\n  @ViewChild(FilterInputComponent, { static: false }) filter: FilterInputComponent;\n  textFilter$: BehaviorSubject<string> = new BehaviorSubject('');\n  reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n  reloading = false;\n  reports$: Observable<IResultList<IManagedObject>> = combineLatest(\n    this.textFilter$.pipe(debounceTime(400), distinctUntilChanged()),\n    this.reload$\n  ).pipe(\n    tap(() => {\n      this.reloading = true;\n    }),\n    switchMap(([text]) => this.loadReports(text)),\n    tap(() => {\n      this.reloading = false;\n    }),\n    shareReplay(1)\n  );\n  canAddReport = false;\n  private readonly DELETED_SUCCESS_MSG = gettext('Report deleted.');\n\n  constructor(\n    private inventoryService: InventoryService,\n    private contextDashboardService: ContextDashboardService,\n    private translateService: TranslateService,\n    private modal: ModalService,\n    private alertService: AlertService,\n    private reportDashboardService: ReportDashboardService,\n    private permissions: Permissions,\n    private gainsightService: GainsightService\n  ) {}\n\n  ngOnInit() {\n    this.canAddReport = this.permissions.hasAnyRole([\n      Permissions.ROLE_INVENTORY_CREATE,\n      Permissions.ROLE_INVENTORY_ADMIN,\n      Permissions.ROLE_MANAGED_OBJECT_ADMIN,\n      Permissions.ROLE_MANAGED_OBJECT_CREATE\n    ]);\n  }\n\n  async loadReports(partialName?: string) {\n    return partialName\n      ? this.reportDashboardService.listReports({ filter: { name: `*${partialName}*` } })\n      : this.reportDashboardService.listReports();\n  }\n\n  async delete(report: IManagedObject) {\n    try {\n      const dashboard = await this.contextDashboardService\n        .getDashboard$(`report_${report.id}`, [ContextDashboardType.Named])\n        .toPromise();\n      const isDashboardFrozen = !!dashboard?.c8y_Dashboard?.isFrozen;\n\n      const msg = isDashboardFrozen\n        ? gettext(\n            `You are about to delete the report \"{{ reportName }}\". Be aware that the report has a locked dashboard assigned. Do you want to proceed?`\n          )\n        : gettext(`You are about to delete the report \"{{ reportName }}\". Do you want to proceed?`);\n\n      await this.modal.confirm(\n        gettext('Delete report'),\n        this.translateService.instant(msg, {\n          reportName: report.name\n        }),\n        Status.DANGER,\n        {\n          ok: gettext('Delete'),\n          cancel: gettext('Cancel')\n        }\n      );\n\n      await this.contextDashboardService.delete(dashboard, false);\n      await this.inventoryService.delete(report.id);\n      this.alertService.success(this.DELETED_SUCCESS_MSG);\n      if (report.c8y_IsNavigatorNode) {\n        this.reportDashboardService.removeNavigatorNode(report);\n      }\n      this.reload$.next();\n      this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.REPORTS, {\n        component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.REPORTS_LIST,\n        action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.DELETE,\n        name: report.name,\n        id: report.id,\n        context: PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.REPORT\n      });\n    } catch (ex) {\n      if (ex) {\n        throw new Error(`Something went wrong: ${ex}`);\n      }\n    }\n  }\n\n  async update(report: IManagedObject) {\n    report.c8y_IsNavigatorNode = report.c8y_IsNavigatorNode ? {} : null;\n    await this.inventoryService.update(report);\n    report.c8y_IsNavigatorNode\n      ? this.contextDashboardService.addReportNavigatorNode(report)\n      : this.reportDashboardService.removeNavigatorNode(report);\n  }\n}\n","<c8y-title>\n  {{ 'Reports' | translate }}\n</c8y-title>\n\n<c8y-action-bar-item\n  [placement]=\"'left'\"\n  itemClass=\"navbar-form\"\n>\n  <div class=\"input-group input-group-search\">\n    <input\n      class=\"form-control\"\n      [attr.aria-label]=\"'Filter' | translate\"\n      placeholder=\"{{ 'Filter…' | translate }}\"\n      type=\"search\"\n      [ngModel]=\"textFilter$ | async\"\n      (ngModelChange)=\"textFilter$.next($event)\"\n    />\n    <span class=\"input-group-addon\">\n      @if ((textFilter$ | async).length === 0) {\n        <i c8yIcon=\"search\"></i>\n      }\n      @if ((textFilter$ | async).length > 0) {\n        <i\n          class=\"text-muted\"\n          c8yIcon=\"times\"\n          (click)=\"textFilter$.next('')\"\n          px-event=\"Clear filtering reports\"\n        ></i>\n      }\n    </span>\n  </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Add report' | translate }}\"\n    type=\"button\"\n    [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n    routerLink=\"/report/new-report\"\n    [disabled]=\"!canAddReport\"\n  >\n    <i c8yIcon=\"plus-circle\"></i>\n    {{ 'Add report' | translate }}\n  </button>\n  @if (!canAddReport) {\n    <button\n      class=\"btn btn-dot m-r-16\"\n      aria-label=\"{{ 'Info' | translate }}\"\n      popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n      placement=\"top\"\n      triggers=\"focus\"\n      container=\"body\"\n      type=\"button\"\n    >\n      <i\n        class=\"text-primary\"\n        [c8yIcon]=\"'info-circle'\"\n      ></i>\n    </button>\n  }\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Reload' | translate }}\"\n    type=\"button\"\n    (click)=\"loadReports()\"\n  >\n    <i\n      c8yIcon=\"refresh\"\n      [ngClass]=\"{ 'icon-spin': reloading }\"\n    ></i>\n    {{ 'Reload' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/cockpit/working-with-reports/#working-with-reports\"></c8y-help>\n\n<c8y-list-group>\n  @if ((reports$ | async)?.data.length > 0) {\n    <c8y-li class=\"page-sticky-header hidden-xs hidden-sm\">\n      <c8y-li-icon>\n        <i class=\"p-l-24\"></i>\n      </c8y-li-icon>\n      <c8y-li-body class=\"content-flex-60\">\n        <div class=\"col-3\">\n          {{ 'Report' | translate }}\n        </div>\n        <div class=\"col-6\">\n          {{ 'Description' | translate }}\n        </div>\n        <div class=\"col-2\">\n          {{ 'Show in navigator' | translate }}\n        </div>\n      </c8y-li-body>\n    </c8y-li>\n  }\n\n  <c8y-li *c8yFor=\"let report of reports$; let i = index; loadMore: 'auto'\">\n    <c8y-li-icon [icon]=\"report.icon\"></c8y-li-icon>\n    <c8y-li-body class=\"content-flex-60\">\n      @let reportName = report.translateDashboardTitle ? (report.name | translate) : report.name;\n      <div class=\"col-3\">\n        <button\n          class=\"btn-clean\"\n          title=\"{{ reportName }}\"\n          type=\"button\"\n          routerLink=\"/reports/{{ report.id }}\"\n        >\n          <span class=\"text-truncate\">\n            {{ reportName }}\n          </span>\n        </button>\n      </div>\n      <div class=\"col-6\">\n        <p class=\"small text-truncate-wrap\">\n          @if (!report.description) {\n            <em class=\"text-muted\">\n              {{ 'No description available' | translate }}\n            </em>\n          } @else {\n            {{ report.description }}\n          }\n        </p>\n      </div>\n      <div class=\"col-2 fit-h-20 m-t-xs-8\">\n        <label\n          class=\"c8y-switch c8y-switch--inline\"\n          title=\"{{ 'Show in navigator' | translate }}\"\n        >\n          <input\n            type=\"checkbox\"\n            [ngModel]=\"!!report.c8y_IsNavigatorNode\"\n            (ngModelChange)=\"report.c8y_IsNavigatorNode = $event\"\n            (change)=\"update(report)\"\n          />\n          <span></span>\n          <span class=\"visible-xs\">\n            {{ 'Show in navigator' | translate }}\n          </span>\n        </label>\n      </div>\n      <div class=\"col-1 hidden-xs\">\n        <button\n          class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto d-flex\"\n          [attr.aria-label]=\"'Remove report' | translate\"\n          tooltip=\"{{ 'Remove report' | translate }}\"\n          type=\"button\"\n          [delay]=\"500\"\n          (click)=\"delete(report)\"\n        >\n          <i c8yIcon=\"minus-circle\"></i>\n        </button>\n      </div>\n      <div class=\"visible-xs p-t-8 text-right\">\n        <button\n          class=\"btn btn-default btn-sm\"\n          title=\"{{ 'Remove report' | translate }}\"\n          type=\"button\"\n          (click)=\"delete(report)\"\n        >\n          <i c8yIcon=\"delete\"></i>\n          {{ 'Remove report' | translate }}\n        </button>\n      </div>\n    </c8y-li-body>\n  </c8y-li>\n</c8y-list-group>\n\n@if ((reports$ | async)?.data.length === 0) {\n  <c8y-ui-empty-state\n    [icon]=\"'c8y-reports'\"\n    [title]=\"'There are no reports defined.' | translate\"\n    [subtitle]=\"'Add a report first.' | translate\"\n  >\n    <p>\n      <button\n        class=\"btn btn-primary\"\n        title=\"{{ 'Add report' | translate }}\"\n        type=\"button\"\n        [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n        [disabled]=\"!canAddReport\"\n        routerLink=\"/report/new-report\"\n        c8yProductExperience\n        [actionName]=\"PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.REPORTS\"\n        [actionData]=\"{ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.ADD_REPORT }\"\n      >\n        {{ 'Add report' | translate }}\n      </button>\n    </p>\n    <p c8y-guide-docs>\n      <small\n        translate\n        ngNonBindable\n      >\n        Find out more in the\n        <a c8y-guide-href=\"/docs/cockpit/working-with-reports\">user documentation</a>.\n      </small>\n    </p>\n  </c8y-ui-empty-state>\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CoreModule, hookNavigator, hookRoute, ViewContext } from '@c8y/ngx-components';\nimport {\n  ContextDashboardComponent,\n  ContextDashboardModule,\n  CanDeactivateComponent,\n  ContextDashboardManagedObject\n} from '@c8y/ngx-components/context-dashboard';\nimport { ReportDashboardGuard } from './report-dashboard.guard';\nimport { ReportDashboardNavigationFactory } from './report-dashboard-navigation.factory';\nimport { ReportDashboardListComponent } from './report-dashboard-list.component';\nimport { ReportDashboardService } from './report-dashboard.service';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n@NgModule({\n  imports: [\n    CoreModule,\n    ContextDashboardModule,\n    TooltipModule.forRoot(),\n    RouterModule,\n    PopoverModule,\n    ReportDashboardListComponent\n  ],\n  providers: [\n    ReportDashboardGuard,\n    ReportDashboardService,\n    hookRoute([\n      {\n        path: 'reports',\n        component: ReportDashboardListComponent\n      },\n      {\n        path: 'report/new-report',\n        component: ContextDashboardComponent,\n        canDeactivate: [(component: CanDeactivateComponent) => component.canDeactivate()],\n        data: {\n          dashboard: {\n            c8y_Dashboard: null\n          } as ContextDashboardManagedObject,\n          isReport: true\n        },\n        rootContext: ViewContext.Dashboard\n      },\n      {\n        path: 'dashboard/:dashboardId',\n        component: ContextDashboardComponent,\n        canActivate: [ReportDashboardGuard],\n        canDeactivate: [(component: CanDeactivateComponent) => component.canDeactivate()],\n        context: ViewContext.Report,\n        rootContext: ViewContext.Dashboard\n      }\n    ]),\n    hookNavigator(ReportDashboardNavigationFactory)\n  ]\n})\nexport class ReportDashboardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i2.ReportDashboardService","i5.ReportDashboardService"],"mappings":";;;;;;;;;;;;;;;;;;;;MAWa,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CAAoB,uBAAgD,EAAA;QAAhD,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;IAA4B;AAEvE,IAAA,WAAW,CAAC,KAA6B,EAAA;AACvC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QACpE,OAAO,IAAI,CACT,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CACrF,CAAC,IAAI,CACJ,GAAG,CAAC,GAAG,IAAG;YACR,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK;AAC1C,kBAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ;AACzC,kBAAE,EAAE,CAAC,IAAI,CAAC;QACd,CAAC,CAAC,CACH;IACH;AAEA,IAAA,yBAAyB,CAAC,QAAQ,EAAA;QAChC,MAAM,YAAY,GAAG,EAAE;QACvB,OAAO,IAAI,CAAC;aACT,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,CAAA,OAAA,EAAU,QAAQ,EAAE;AACpD,aAAA,IAAI,CAAC,MAAM,IAAI,CAAC;IACrB;+GArBW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,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,oBAAoB,cADP,MAAM,EAAA,CAAA,CAAA;;4FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,sBAAsB,CAAA;IAEjC,WAAA,CACU,gBAAkC,EAClC,gBAAkC,EAAA;QADlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;AAExB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE;IACtC;IAEA,WAAW,CAAC,UAA2D,EAAE,EAAA;AACvE,QAAA,IAAI,KAAK,GAAiE;AACxE,YAAA,KAAK,EAAE;SACR;AACD,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,YAAA,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;QAC9D;AACA,QAAA,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;AACzC,YAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;AAChC,YAAA,cAAc,EAAE;SACjB;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5C;AAEA,IAAA,mBAAmB,CAAC,MAAsB,EAAA;QACxC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;YACzC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAA,QAAA,EAAW,MAAM,CAAC,EAAE,CAAA,CAAE,EAAE;AACxC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClC;YACF;AACF,QAAA,CAAC,CAAC;IACJ;+GA/BW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAtB,sBAAsB,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACLD,MAAM,+BAA+B,GAAG,EAAE;MAG7B,gCAAgC,CAAA;IAG3C,WAAA,CACU,gBAAkC,EAClC,sBAA8C,EAAA;QAD9C,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QAJhC,IAAA,CAAA,MAAM,GAAG,KAAK;IAKX;AAEH,IAAA,MAAM,GAAG,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAElB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,IAAI,aAAa,CAAC;AAChB,gBAAA,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;AACzB,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,QAAQ,EAAE;AACX,aAAA,CAAC,CACH;YAED,MAAM,OAAO,GAAqB,CAChC,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;AAC5C,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACxC,gBAAA,QAAQ,EAAE;aACX,CAAC,EACF,IAAI;AACN,YAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACvB,gBAAA,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC;oBAC7B,KAAK,EAAE,MAAM,CAAC,IAAI;AAClB,oBAAA,IAAI,EAAE,CAAA,QAAA,EAAW,MAAM,CAAC,EAAE,CAAA,CAAE;oBAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,oBAAA,eAAe,EAAE,KAAK;AACtB,oBAAA,oBAAoB,EAAE,CAAC,MAAM,CAAC;AAC/B,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,YAAA,CAAC,CAAC;QACJ;IACF;+GAxCW,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhC,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,gCAAgC,cADnB,MAAM,EAAA,CAAA,CAAA;;4FACnB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MC4DrB,4BAA4B,CAAA;AAuBvC,IAAA,WAAA,CACU,gBAAkC,EAClC,uBAAgD,EAChD,gBAAkC,EAClC,KAAmB,EACnB,YAA0B,EAC1B,sBAA8C,EAC9C,WAAwB,EACxB,gBAAkC,EAAA;QAPlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACvB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QA9B1B,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;AAGvC,QAAA,IAAA,CAAA,WAAW,GAA4B,IAAI,eAAe,CAAC,EAAE,CAAC;AAC9D,QAAA,IAAA,CAAA,OAAO,GAA0B,IAAI,eAAe,CAAC,IAAI,CAAC;QAC1D,IAAA,CAAA,SAAS,GAAG,KAAK;AACjB,QAAA,IAAA,CAAA,QAAQ,GAA4C,aAAa,CAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAChE,IAAI,CAAC,OAAO,CACb,CAAC,IAAI,CACJ,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB,CAAC,CAAC,EACF,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAC7C,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACxB,QAAA,CAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf;QACD,IAAA,CAAA,YAAY,GAAG,KAAK;AACH,QAAA,IAAA,CAAA,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAW9D;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AAC9C,YAAA,WAAW,CAAC,qBAAqB;AACjC,YAAA,WAAW,CAAC,oBAAoB;AAChC,YAAA,WAAW,CAAC,yBAAyB;AACrC,YAAA,WAAW,CAAC;AACb,SAAA,CAAC;IACJ;IAEA,MAAM,WAAW,CAAC,WAAoB,EAAA;AACpC,QAAA,OAAO;AACL,cAAE,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,EAAE,EAAE;AAClF,cAAE,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;IAC/C;IAEA,MAAM,MAAM,CAAC,MAAsB,EAAA;AACjC,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC;AAC1B,iBAAA,aAAa,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,EAAE,CAAA,CAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACjE,iBAAA,SAAS,EAAE;YACd,MAAM,iBAAiB,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ;YAE9D,MAAM,GAAG,GAAG;AACV,kBAAE,OAAO,CACL,CAAA,wIAAA,CAA0I;AAE9I,kBAAE,OAAO,CAAC,CAAA,8EAAA,CAAgF,CAAC;AAE7F,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CACtB,OAAO,CAAC,eAAe,CAAC,EACxB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE;gBACjC,UAAU,EAAE,MAAM,CAAC;AACpB,aAAA,CAAC,EACF,MAAM,CAAC,MAAM,EACb;AACE,gBAAA,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC;AACrB,gBAAA,MAAM,EAAE,OAAO,CAAC,QAAQ;AACzB,aAAA,CACF;YAED,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;YAC3D,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACnD,YAAA,IAAI,MAAM,CAAC,mBAAmB,EAAE;AAC9B,gBAAA,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,MAAM,CAAC;YACzD;AACA,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;AAC9E,gBAAA,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY;AAC/D,gBAAA,MAAM,EAAE,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM;gBACnD,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,EAAE,EAAE,MAAM,CAAC,EAAE;AACb,gBAAA,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC;AAC/C,aAAA,CAAC;QACJ;QAAE,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE;AACN,gBAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,CAAA,CAAE,CAAC;YAChD;QACF;IACF;IAEA,MAAM,MAAM,CAAC,MAAsB,EAAA;AACjC,QAAA,MAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,GAAG,EAAE,GAAG,IAAI;QACnE,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1C,QAAA,MAAM,CAAC;cACH,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,MAAM;cAC1D,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,MAAM,CAAC;IAC7D;+GArGW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG5B,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvEjC,i+LA2MA,4CD9JI,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,sBAAsB,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,UAAA,EAAA,IAAA,EACtB,WAAW,gyBACX,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,gBAAgB,6SAChB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,kBAAkB,2DAClB,iBAAiB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,qBAAqB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,8FACrB,cAAc,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,oCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,gBAAgB,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,mBAAmB,oHACnB,0BAA0B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,qBAAqB,wEACrB,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAClB,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGA,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA3BxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAE5B;wBACP,cAAc;wBACd,sBAAsB;wBACtB,WAAW;wBACX,aAAa;wBACb,UAAU;wBACV,gBAAgB;wBAChB,OAAO;wBACP,aAAa;wBACb,kBAAkB;wBAClB,iBAAiB;wBACjB,qBAAqB;wBACrB,qBAAqB;wBACrB,cAAc;wBACd,gBAAgB;wBAChB,mBAAmB;wBACnB,0BAA0B;wBAC1B,kBAAkB;wBAClB,qBAAqB;wBACrB,kBAAkB;wBAClB,gBAAgB;wBAChB;AACD,qBAAA,EAAA,QAAA,EAAA,i+LAAA,EAAA;;sBAKA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MEdvC,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,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,qBAAqB,YAvC9B,UAAU;AACV,YAAA,sBAAsB,sBAEtB,YAAY;YACZ,aAAa;YACb,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAkCnB,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,qBAAqB,EAAA,SAAA,EAhCrB;YACT,oBAAoB;YACpB,sBAAsB;AACtB,YAAA,SAAS,CAAC;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,SAAS,EAAE;AACZ,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,SAAS,EAAE,yBAAyB;oBACpC,aAAa,EAAE,CAAC,CAAC,SAAiC,KAAK,SAAS,CAAC,aAAa,EAAE,CAAC;AACjF,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE;AACT,4BAAA,aAAa,EAAE;AACiB,yBAAA;AAClC,wBAAA,QAAQ,EAAE;AACX,qBAAA;oBACD,WAAW,EAAE,WAAW,CAAC;AAC1B,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,wBAAwB;AAC9B,oBAAA,SAAS,EAAE,yBAAyB;oBACpC,WAAW,EAAE,CAAC,oBAAoB,CAAC;oBACnC,aAAa,EAAE,CAAC,CAAC,SAAiC,KAAK,SAAS,CAAC,aAAa,EAAE,CAAC;oBACjF,OAAO,EAAE,WAAW,CAAC,MAAM;oBAC3B,WAAW,EAAE,WAAW,CAAC;AAC1B;aACF,CAAC;YACF,aAAa,CAAC,gCAAgC;AAC/C,SAAA,EAAA,OAAA,EAAA,CArCC,UAAU;YACV,sBAAsB;YACtB,aAAa,CAAC,OAAO,EAAE;YACvB,YAAY;YACZ,aAAa;YACb,4BAA4B,CAAA,EAAA,CAAA,CAAA;;4FAkCnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAzCjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,UAAU;wBACV,sBAAsB;wBACtB,aAAa,CAAC,OAAO,EAAE;wBACvB,YAAY;wBACZ,aAAa;wBACb;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,oBAAoB;wBACpB,sBAAsB;AACtB,wBAAA,SAAS,CAAC;AACR,4BAAA;AACE,gCAAA,IAAI,EAAE,SAAS;AACf,gCAAA,SAAS,EAAE;AACZ,6BAAA;AACD,4BAAA;AACE,gCAAA,IAAI,EAAE,mBAAmB;AACzB,gCAAA,SAAS,EAAE,yBAAyB;gCACpC,aAAa,EAAE,CAAC,CAAC,SAAiC,KAAK,SAAS,CAAC,aAAa,EAAE,CAAC;AACjF,gCAAA,IAAI,EAAE;AACJ,oCAAA,SAAS,EAAE;AACT,wCAAA,aAAa,EAAE;AACiB,qCAAA;AAClC,oCAAA,QAAQ,EAAE;AACX,iCAAA;gCACD,WAAW,EAAE,WAAW,CAAC;AAC1B,6BAAA;AACD,4BAAA;AACE,gCAAA,IAAI,EAAE,wBAAwB;AAC9B,gCAAA,SAAS,EAAE,yBAAyB;gCACpC,WAAW,EAAE,CAAC,oBAAoB,CAAC;gCACnC,aAAa,EAAE,CAAC,CAAC,SAAiC,KAAK,SAAS,CAAC,aAAa,EAAE,CAAC;gCACjF,OAAO,EAAE,WAAW,CAAC,MAAM;gCAC3B,WAAW,EAAE,WAAW,CAAC;AAC1B;yBACF,CAAC;wBACF,aAAa,CAAC,gCAAgC;AAC/C;AACF,iBAAA;;;ACxDD;;AAEG;;;;"}