{"version":3,"file":"xxmachina-components-pages-query-v2.mjs","sources":["../../../../../packages/@xxmachina/components/src/lib/pages/query-v2/query-v2.page.store.ts","../../../../../packages/@xxmachina/components/src/lib/pages/query-v2/query-v2.page.ts","../../../../../packages/@xxmachina/components/src/lib/pages/query-v2/query-v2.page.html","../../../../../packages/@xxmachina/components/src/lib/pages/query-v2/xxmachina-components-pages-query-v2.ts"],"sourcesContent":["import { Directive, computed, effect, inject, input, signal, Provider } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { InjectableComponent, provideEffect } from '@ng-atomic/core';\nimport { Query } from '@xxmachina/common/domain/models';\nimport { QueryFeature } from '@xxmachina/components/features/query';\nimport { Action } from '@ng-atomic/core';\nimport { injectRouteData } from '@ng-atomic/common/utils';\nimport { map, startWith } from 'rxjs';\nimport { buildItemsMapFromResult } from '@xxmachina/components/pages/query';\nimport { FormBuilder } from '@angular/forms';\nimport { ListOrganism } from '@ng-atomic/components/organisms/list';\n\nexport type PresenterType = 'table' | 'list';\n\nexport enum ActionId {\n  CLICK_ITEM = '[@xxmachina/components/pages/query-v2] Click Item',\n}\n\n@Directive({ standalone: true })\nexport class QueryPageV2Store extends InjectableComponent {\n  static readonly ActionId = ActionId;\n\n  /**\n   * Provides an effect handler for CLICK_ITEM action\n   */\n  static provideClickItemEffect<T>(handler: (item: T) => void): Provider[] {\n    return [\n      provideEffect(ListOrganism.ActionId.CLICK_ITEM, () => handler),\n    ];\n  }\n\n  readonly query = input<Query>(injectRouteData<Query>('query')());\n  readonly navEndActions = input<Action[]>(injectRouteData<Action[]>('navEndActions')());\n  readonly columnNames = input<string[]>([]);\n  readonly presenter = input<PresenterType>(injectRouteData<PresenterType>('presenter')() ?? 'table');\n\n  readonly feature = inject(QueryFeature);\n  private readonly fb = inject(FormBuilder);\n\n  // Panel expansion states\n  readonly queryPanelExpanded = signal(true);\n  readonly transformerPanelExpanded = signal(false);\n  readonly presenterPanelExpanded = signal(true);\n\n  // Count of open panels\n  readonly openPanelCount = computed(() =>\n    [this.queryPanelExpanded(), this.transformerPanelExpanded(), this.presenterPanelExpanded()]\n      .filter(Boolean).length\n  );\n\n  // Panel toggle methods (ensure at least one panel stays open)\n  toggleQueryPanel(expanded: boolean): void {\n    if (!expanded && this.openPanelCount() <= 1) return;\n    this.queryPanelExpanded.set(expanded);\n  }\n\n  toggleTransformerPanel(expanded: boolean): void {\n    if (!expanded && this.openPanelCount() <= 1) return;\n    this.transformerPanelExpanded.set(expanded);\n  }\n\n  togglePresenterPanel(expanded: boolean): void {\n    if (!expanded && this.openPanelCount() <= 1) return;\n    this.presenterPanelExpanded.set(expanded);\n  }\n\n  // Query metadata\n  readonly title = computed(() => this.query()?.title || 'データ一覧');\n  readonly queryType = computed(() => this.query()?.type || 'graphql');\n\n  // Loading state\n  private readonly isLoading$ = this.feature.result$.pipe(\n    map(() => false),\n    startWith(true),\n  );\n  readonly isLoading = toSignal(this.isLoading$, { initialValue: true });\n\n  // Result data\n  readonly result = computed(() => this.feature.result() ?? {});\n\n  readonly itemsMap = computed(() => buildItemsMapFromResult(this.result()));\n\n  readonly items = computed(() => {\n    const map = this.itemsMap();\n    const keys = Object.keys(map);\n    if (keys.length === 0) return [];\n    return map[keys[0]]?.items ?? [];\n  });\n\n  readonly itemCount = computed(() => this.items().length);\n\n  // Table display columns - automatically determine from first item\n  readonly displayedColumns = computed(() => {\n    const items = this.items();\n    if (items.length === 0) return [];\n    const firstItem = items[0];\n    if (!firstItem || typeof firstItem !== 'object') return [];\n    return Object.keys(firstItem);\n  });\n\n  // Form for table columns\n  readonly tableForm = computed(() => {\n    const columns = this.displayedColumns();\n    const columnsMap: any = {};\n    columns.forEach(col => {\n      columnsMap[col] = { width: 150, hidden: false };\n    });\n    return this.fb.group({\n      columns: this.fb.group({ map: this.fb.group(columnsMap) })\n    });\n  });\n\n  // Column form field map for organisms-table\n  readonly columnFormFieldMap = computed(() => {\n    const columns = this.displayedColumns();\n    const fieldMap: any = {};\n    columns.forEach(col => {\n      fieldMap[col] = { type: 'text', label: col };\n    });\n    return fieldMap;\n  });\n\n  constructor() {\n    super();\n\n    // queryをformにpatch\n    effect(() => {\n      const query = this.query();\n      if (query) {\n        this.feature.form.patchValue({\n          id: query.id,\n          title: query.title,\n          type: query.type,\n          graphql: query.graphql as never,\n        });\n        this.feature.refresh();\n      }\n    });\n  }\n\n  refresh(): void {\n    this.feature.refresh();\n  }\n}\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\n\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { RouterOutletFrame } from '@ng-atomic/components/frames/router-outlet';\nimport { NavigatorOrganismStore } from '@ng-atomic/components/organisms/navigator';\nimport { NgAtomicComponent, Effect } from '@ng-atomic/core';\nimport { JsonPipe } from '@angular/common';\nimport { QueryFeature } from '@xxmachina/components/features/query';\nimport { QueryPageV2Store, ActionId } from './query-v2.page.store';\nimport { ListOrganism } from '@ng-atomic/components/organisms/list';\nimport { TableOrganism } from '@ng-atomic/components/organisms/table';\n\n@Component({\n  selector: 'pages-query-v2',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    RouterOutletFrame,\n    MatExpansionModule,\n    MatIconModule,\n    MatProgressSpinnerModule,\n    MatButtonModule,\n    MatFormFieldModule,\n    MatInputModule,\n    NavigatorOrganismStore,\n    TableOrganism,\n    ListOrganism,\n    JsonPipe\n],\n  providers: [\n    QueryFeature.provideDefault(),\n  ],\n  templateUrl: './query-v2.page.html',\n  styleUrl: './query-v2.page.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  hostDirectives: [\n    {\n      directive: QueryPageV2Store,\n      inputs: ['query', 'navEndActions', 'columnNames', 'presenter']\n    }\n  ]\n})\nexport class QueryPageV2 extends NgAtomicComponent {\n  static readonly ActionId = ActionId;\n  readonly store = inject(QueryPageV2Store);\n\n  @Effect(ListOrganism.ActionId.CLICK_ITEM)\n  protected onItemClick(item: any) {\n    this.dispatch({ id: ActionId.CLICK_ITEM, payload: item });\n  }\n}\n","<frames-router-outlet>\n  <organisms-navigator\n    injectable\n    [endActions]=\"store.navEndActions()\"\n    (action)=\"dispatch($event)\"\n  >\n    <span class=\"title\">{{ store.title() }}</span>\n  </organisms-navigator>\n\n  <div class=\"qtp-container\">\n    <!-- Query Panel -->\n    <mat-expansion-panel class=\"config-panel query-panel\"\n      [expanded]=\"store.queryPanelExpanded()\"\n      (opened)=\"store.toggleQueryPanel(true)\"\n      (closed)=\"store.toggleQueryPanel(false)\">\n      <mat-expansion-panel-header>\n        <mat-panel-title>\n          <mat-icon>code</mat-icon>\n          <span>Query</span>\n        </mat-panel-title>\n        <mat-panel-description class=\"header-actions\">\n          <span class=\"query-type\">{{ store.queryType() }}</span>\n          <button mat-flat-button color=\"primary\" class=\"header-run-button\"\n            (click)=\"store.refresh(); $event.stopPropagation()\">\n            <mat-icon>play_arrow</mat-icon>Run\n          </button>\n        </mat-panel-description>\n      </mat-expansion-panel-header>\n      <div class=\"query-content\">\n        <div class=\"query-form\" [formGroup]=\"store.feature.form\">\n          <div class=\"form-row\" formGroupName=\"graphql\">\n            <mat-form-field appearance=\"outline\" class=\"endpoint-field\">\n              <mat-label>Endpoint</mat-label>\n              <input matInput formControlName=\"endpoint\" placeholder=\"GraphQL Endpoint\">\n            </mat-form-field>\n          </div>\n          <div class=\"form-row query-row\" formGroupName=\"graphql\">\n            <mat-form-field appearance=\"outline\" class=\"query-field\">\n              <mat-label>Query</mat-label>\n              <textarea matInput formControlName=\"query\" rows=\"12\"\n                placeholder=\"GraphQL Query or Subscription\"></textarea>\n            </mat-form-field>\n          </div>\n          <div class=\"form-row variables-row\" formGroupName=\"graphql\">\n            <mat-form-field appearance=\"outline\" class=\"variables-field\">\n              <mat-label>Variables (JSON)</mat-label>\n              <textarea matInput formControlName=\"variablesJson\" rows=\"3\"\n                placeholder='{\"limit\": 25, \"offset\": 0}'></textarea>\n            </mat-form-field>\n            <mat-form-field appearance=\"outline\" class=\"headers-field\">\n              <mat-label>Headers (JSON)</mat-label>\n              <textarea matInput formControlName=\"headersJson\" rows=\"3\"\n                placeholder='{\"content-type\": \"application/json\"}'></textarea>\n            </mat-form-field>\n          </div>\n        </div>\n      </div>\n    </mat-expansion-panel>\n\n    <!-- Transformer Panel -->\n    <mat-expansion-panel class=\"config-panel transformer-panel\"\n      [expanded]=\"store.transformerPanelExpanded()\"\n      (opened)=\"store.toggleTransformerPanel(true)\"\n      (closed)=\"store.toggleTransformerPanel(false)\">\n      <mat-expansion-panel-header>\n        <mat-panel-title>\n          <mat-icon>transform</mat-icon>\n          <span>Transformer</span>\n        </mat-panel-title>\n        <mat-panel-description class=\"header-actions\">\n          <button mat-flat-button color=\"primary\" class=\"header-run-button\"\n            (click)=\"store.refresh(); $event.stopPropagation()\">\n            <mat-icon>play_arrow</mat-icon>Run\n          </button>\n        </mat-panel-description>\n      </mat-expansion-panel-header>\n      <div class=\"transformer-content\" [formGroup]=\"store.feature.form\">\n        <div formGroupName=\"graphql\">\n          <mat-form-field appearance=\"outline\" class=\"transformer-field\">\n            <mat-label>Transformer (TypeScript)</mat-label>\n            <textarea matInput formControlName=\"transformerTs\" rows=\"10\"\n              placeholder=\"const transformer = (data) => data;\"></textarea>\n          </mat-form-field>\n        </div>\n      </div>\n    </mat-expansion-panel>\n\n    <!-- Presenter Panel -->\n    <mat-expansion-panel class=\"config-panel presenter-panel\"\n      [expanded]=\"store.presenterPanelExpanded()\"\n      (opened)=\"store.togglePresenterPanel(true)\"\n      (closed)=\"store.togglePresenterPanel(false)\">\n      <mat-expansion-panel-header>\n        <mat-panel-title>\n          <mat-icon>table_chart</mat-icon>\n          <span>Presenter</span>\n        </mat-panel-title>\n        <mat-panel-description class=\"header-actions\">\n          @if (store.isLoading()) {\n            <mat-spinner diameter=\"16\"></mat-spinner>\n          }\n          <span>{{ store.itemCount() }} 件</span>\n        </mat-panel-description>\n      </mat-expansion-panel-header>\n      <div class=\"presenter-content\">\n        @switch (store.presenter()) {\n          @case ('list') {\n            <organisms-list\n              [items]=\"store.items()\"\n              (action)=\"dispatch($event)\"\n            />\n          }\n          @default {\n            <organisms-table\n              [items]=\"store.items()\"\n              [form]=\"store.tableForm()\"\n              [columnFormFieldMap]=\"store.columnFormFieldMap()\"\n            />\n          }\n        }\n      </div>\n    </mat-expansion-panel>\n  </div>\n</frames-router-outlet>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.QueryPageV2Store"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAcY;AAAZ,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,mDAAgE;AAClE,CAAC,EAFW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;AAKd,MAAO,gBAAiB,SAAQ,mBAAmB,CAAA;AACvD,IAAA,OAAgB,QAAQ,GAAG,QAAQ;AAEnC;;AAEG;IACH,OAAO,sBAAsB,CAAI,OAA0B,EAAA;QACzD,OAAO;YACL,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;SAC/D;IACH;IAES,KAAK,GAAG,KAAK,CAAQ,eAAe,CAAQ,OAAO,CAAC,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACvD,aAAa,GAAG,KAAK,CAAW,eAAe,CAAW,eAAe,CAAC,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC7E,IAAA,WAAW,GAAG,KAAK,CAAW,EAAE,uDAAC;IACjC,SAAS,GAAG,KAAK,CAAgB,eAAe,CAAgB,WAAW,CAAC,EAAE,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE1F,IAAA,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC;AACtB,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;;AAGhC,IAAA,kBAAkB,GAAG,MAAM,CAAC,IAAI,8DAAC;AACjC,IAAA,wBAAwB,GAAG,MAAM,CAAC,KAAK,oEAAC;AACxC,IAAA,sBAAsB,GAAG,MAAM,CAAC,IAAI,kEAAC;;IAGrC,cAAc,GAAG,QAAQ,CAAC,MACjC,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE;AACvF,SAAA,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,0DAC1B;;AAGD,IAAA,gBAAgB,CAAC,QAAiB,EAAA;QAChC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;YAAE;AAC7C,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;IACvC;AAEA,IAAA,sBAAsB,CAAC,QAAiB,EAAA;QACtC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;YAAE;AAC7C,QAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC7C;AAEA,IAAA,oBAAoB,CAAC,QAAiB,EAAA;QACpC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;YAAE;AAC7C,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC3C;;AAGS,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,IAAI,OAAO,iDAAC;AACtD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,SAAS,qDAAC;;IAGnD,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CACrD,GAAG,CAAC,MAAM,KAAK,CAAC,EAChB,SAAS,CAAC,IAAI,CAAC,CAChB;AACQ,IAAA,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;;AAG7D,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,kDAAC;AAEpD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,oDAAC;AAEjE,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;QAChC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AAClC,IAAA,CAAC,iDAAC;AAEO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,qDAAC;;AAG/C,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AACjC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ;AAAE,YAAA,OAAO,EAAE;AAC1D,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/B,IAAA,CAAC,4DAAC;;AAGO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC,MAAM,UAAU,GAAQ,EAAE;AAC1B,QAAA,OAAO,CAAC,OAAO,CAAC,GAAG,IAAG;AACpB,YAAA,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACnB,YAAA,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AAC1D,SAAA,CAAC;AACJ,IAAA,CAAC,qDAAC;;AAGO,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC,MAAM,QAAQ,GAAQ,EAAE;AACxB,QAAA,OAAO,CAAC,OAAO,CAAC,GAAG,IAAG;AACpB,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;AAC9C,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,QAAQ;AACjB,IAAA,CAAC,8DAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;QAGP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1B,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;oBAC3B,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,KAAK,CAAC,OAAgB;AAChC,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;IACxB;uGA3HW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,SAAS;mBAAC,EAAE,UAAU,EAAE,IAAI,EAAE;;;AC8BzB,MAAO,WAAY,SAAQ,iBAAiB,CAAA;AAChD,IAAA,OAAgB,QAAQ,GAAG,QAAQ;AAC1B,IAAA,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAG/B,IAAA,WAAW,CAAC,IAAS,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3D;uGAPW,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAbX;YACT,YAAY,CAAC,cAAc,EAAE;SAC9B,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrCH,spKA4HA,ijHDtGI,mBAAmB,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,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,iBAAiB,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,wBAAwB,kOACxB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,kYACd,sBAAsB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;AAqBJ,UAAA,CAAA;AADT,IAAA,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;;;;AAGxC,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA;2FAPU,WAAW,EAAA,UAAA,EAAA,CAAA;kBA9BvB,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP;wBACP,mBAAmB;wBACnB,iBAAiB;wBACjB,kBAAkB;wBAClB,aAAa;wBACb,wBAAwB;wBACxB,eAAe;wBACf,kBAAkB;wBAClB,cAAc;wBACd,sBAAsB;wBACtB,aAAa;wBACb,YAAY;wBACZ;qBACH,EAAA,SAAA,EACY;wBACT,YAAY,CAAC,cAAc,EAAE;qBAC9B,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,gBAAgB;4BAC3B,MAAM,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW;AAC9D;AACF,qBAAA,EAAA,QAAA,EAAA,spKAAA,EAAA,MAAA,EAAA,CAAA,0/GAAA,CAAA,EAAA;;;AE9CH;;AAEG;;;;"}