{"version":3,"file":"obliczeniowo-elementary-chess.mjs","sources":["../../../../projects/components/chess/enums/enums.ts","../../../../projects/components/chess/components/chess-field/chess-field.component.ts","../../../../projects/components/chess/components/chess-field/chess-field.component.html","../../../../projects/components/chess/classes/chess.ts","../../../../projects/components/chess/components/chess-pawn/chess-pawn.component.ts","../../../../projects/components/chess/components/chess-pawn/chess-pawn.component.html","../../../../projects/components/chess/classes/address.ts","../../../../projects/components/chess/classes/piece.ts","../../../../projects/components/chess/classes/chess-abstract-model.ts","../../../../projects/components/chess/components/chess/chess.component.ts","../../../../projects/components/chess/components/chess/chess.component.html","../../../../projects/components/chess/chess.module.ts","../../../../projects/components/chess/obliczeniowo-elementary-chess.ts"],"sourcesContent":["export enum ChessEnum {\n    whiteKing = '♔',\n    whiteQueen = '♕',\n    whiteRook = '♖',\n    whiteBishop = '♗',\n    whiteKnight = '♘',\n    whitePawn = '♙',\n\n    blackKing = '♚',\n    blackQueen = '♛',\n    blackRook = '♜',\n    blackBishop = '♝',\n    blackKnight = '♞',\n    blackPawn = '♟',\n\n    nonePiece = ''\n}\n\nexport enum ChessColor {\n    white,\n    black\n}\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { ChessEnum } from '../../enums/enums';\n\n@Component({\n    selector: 'obl-chess-field',\n    templateUrl: './chess-field.component.html',\n    styleUrls: ['./chess-field.component.scss'],\n    standalone: false\n})\nexport class ChessFieldComponent {\n  ChessEnum = ChessEnum;\n\n  @Input() row!: number;\n  @Input() column!: string;\n\n  @HostBinding('class.chess-field') chessField = true;\n\n  @HostBinding('class.white-field') get whiteField(): boolean {\n    return this.row !== undefined && this.column !== undefined && this.isWhite;\n  }\n\n  @HostBinding('class.black-field') get blackField(): boolean {\n    return this.row !== undefined && this.column !== undefined && this.isBlack;\n  }\n\n  get columnIndex(): number {\n    return this.column.charCodeAt(0) - 'a'.charCodeAt(0) + 1;\n  }\n\n  get isBlack(): boolean {\n    return ((this.row) + (this.columnIndex) % 2) % 2 === 0;\n  }\n\n  get isWhite(): boolean {\n    return !this.isBlack;\n  }\n}\n","<ng-content></ng-content>\n","import { ChessEnum } from './../enums/enums';\n\nexport class Chess {\n  static isWhite(piece: ChessEnum | undefined): boolean {\n    switch (piece) {\n      case ChessEnum.whiteBishop:\n      case ChessEnum.whiteQueen:\n      case ChessEnum.whiteRook:\n      case ChessEnum.whiteKnight:\n      case ChessEnum.whitePawn:\n      case ChessEnum.whiteKing:\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  static isBlack(piece: ChessEnum | undefined): boolean {\n    return !Chess.isWhite(piece) && piece !== ChessEnum.nonePiece;\n  }\n}\n","import { AfterViewInit, Component, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { ChessEnum } from '../../enums/enums';\nimport { Chess } from '../../classes/chess';\n\n@Component({\n    selector: 'obl-chess-pawn',\n    templateUrl: './chess-pawn.component.html',\n    styleUrls: ['./chess-pawn.component.scss'],\n    standalone: false\n})\nexport class ChessPawnComponent implements OnDestroy, AfterViewInit {\n  @Input() row!: number;\n  @Input() column!: string;\n\n  @Input() pawnType!: ChessEnum;\n\n  dragstart = (event: any) => {\n    event.dataTransfer.setData('text/plain', null);\n  }\n\n  constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n  ngAfterViewInit(): void {\n    this.elementRef.nativeElement.setAttribute('draggable', 'true');\n    this.elementRef.nativeElement.addEventListener('dragstart', this.dragstart, false);\n  }\n\n  ngOnDestroy(): void {\n    this.elementRef.nativeElement.removeEventListener('dragstart', this.dragstart);\n  }\n\n  isBlack(): boolean {\n    return Chess.isBlack(this.pawnType);\n  }\n}\n","<div\n  [class]=\"'pawn-field ' + column + row\"\n  (dragstart)=\"dragstart($event)\"\n  draggable=\"true\"\n>\n  {{ pawnType }}\n</div>\n","export type ChessColumn = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h';\nexport type ChessRow = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n\nexport const columns: ChessColumn[] = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];\nexport const rows: ChessRow[] = [1, 2, 3, 4, 5, 6, 7, 8];\n\nexport class Address {\n  column!: ChessColumn;\n  row!: ChessRow;\n\n  constructor(address: string) {\n    if (address.length === 2) {\n      if (columns.includes(address.charAt(0) as ChessColumn)) {\n        this.column = address.charAt(0) as ChessColumn;\n      } else {\n        throw new Error(`This column not exist ${address.charAt(0)}`);\n      }\n      const row = parseInt(address.charAt(1), 10);\n      if (rows.includes(row as ChessRow)) {\n        this.row = row as ChessRow;\n      } else {\n        throw new Error(`This row not exist: ${row}`);\n      }\n    }\n  }\n\n  offset(row: number, column: number): Address | undefined {\n    const columnIndex = columns.findIndex(columnI => columnI === this.column) + column;\n\n    if (columnIndex < 0 || columnIndex > 7) {\n      return undefined;\n    }\n\n    const rowPos = row + this.row;\n\n    if (rowPos > 8 || rowPos < 1) {\n      return undefined;\n    }\n\n    return new Address(columns[columnIndex] + rowPos);\n  }\n\n  toString(): string {\n    return `${this.column}${this.row}`;\n  }\n}\n","import { Address } from './address';\nimport { QueryList } from '@angular/core';\nimport { ChessPawnComponent } from '../components/chess-pawn/chess-pawn.component';\nimport { ChessEnum } from './../enums/enums';\nimport { Chess } from './chess';\n\nexport type ChessPiece = ChessEnum.whiteKing |\n  ChessEnum.whiteQueen |\n  ChessEnum.whiteRook |\n  ChessEnum.whiteBishop |\n  ChessEnum.whiteKnight |\n  ChessEnum.whitePawn |\n  ChessEnum.blackKing |\n  ChessEnum.blackQueen |\n  ChessEnum.blackRook |\n  ChessEnum.blackBishop |\n  ChessEnum.blackKnight |\n  ChessEnum.blackPawn;\n\nexport abstract class AbstractPiece {\n  protected _type!: ChessPiece;\n  public get type(): ChessPiece {\n    return this._type;\n  }\n\n  protected _address!: Address | undefined;\n  public get address(): Address | undefined {\n    return this._address;\n  }\n\n  constructor(type: ChessPiece, address: Address | undefined) {\n    this._type = type;\n    this._address = address;\n  }\n\n  abstract moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[];\n\n  protected isEmpty(address: Address | undefined, chessPieces: QueryList<ChessPawnComponent>): boolean {\n    return address !== undefined &&\n      chessPieces.find(\n        piece => piece.column === address.column && piece.row === address.row\n      )?.pawnType === ChessEnum.nonePiece;\n  }\n\n  protected isOppositePiece(address: Address | undefined, chessPieces: QueryList<ChessPawnComponent>): boolean {\n    if (address) {\n      if (Chess.isWhite(this._type)) {\n        return Chess.isBlack(chessPieces.find(piece => piece.column === address.column && piece.row === address.row)?.pawnType);\n      } else {\n        return Chess.isWhite(chessPieces.find(piece => piece.column === address.column && piece.row === address.row)?.pawnType);\n      }\n    }\n    return false;\n  }\n}\n\nexport class Pawn extends AbstractPiece {\n  moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n    if (!this.address) {\n      return [];\n    }\n\n    const fields: string[] = [];\n    const vector: [number, number] = Chess.isWhite(this._type) ? [1, 0] : [-1, 0];\n    const start: number = Chess.isWhite(this._type) ? 2 : 7;\n\n    const oneFieldUp = this.address.offset(vector[0], vector[1]);\n    if (this.isEmpty(oneFieldUp, chessPieces) && oneFieldUp) {\n      fields.push(oneFieldUp.toString());\n      const twoFieldUp = this.address.offset(vector[0] * 2, vector[1]);\n      if (this.address.row === start) {\n        if (this.isEmpty(twoFieldUp, chessPieces) && twoFieldUp) {\n          fields.push(twoFieldUp.toString());\n        }\n      }\n    }\n\n    const leftField = this.address.offset(vector[0], -1);\n    const rightField = this.address.offset(vector[0], 1);\n\n    if (leftField && this.isOppositePiece(leftField, chessPieces)) {\n      fields.push(leftField.toString());\n    }\n\n    if (rightField && this.isOppositePiece(rightField, chessPieces)) {\n      fields.push(rightField.toString());\n    }\n\n    return fields;\n  }\n}\n\nexport class Knight extends AbstractPiece {\n  moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n    if (!this.address) {\n      return [];\n    }\n\n    const fields: string[] = [];\n\n    const offsets: [number, number][] = [\n      [2, -1],\n      [2, 1],\n      [1, 2],\n      [-1, 2],\n      [-2, 1],\n      [-2, -1],\n      [-1, -2],\n      [1, -2]\n    ];\n\n    offsets.forEach(\n      offset => {\n        const field = this.address?.offset(offset[0], offset[1]);\n        // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n        if (field && (this.isEmpty(field, chessPieces) || this.isOppositePiece(field, chessPieces))) {\n          fields.push(field.toString());\n        }\n      }\n    );\n\n    return fields;\n  }\n}\n\nexport class Bishop extends AbstractPiece {\n  moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n    if (!this.address) {\n      return [];\n    }\n\n    const fields: string[] = [];\n\n    const offsets: [number, number][] = [\n      [1, -1],\n      [1, 1],\n      [-1, 1],\n      [-1, -1]\n    ];\n\n    offsets.forEach(\n      offset => {\n        for (let k = 1; k < 9; k++) {\n          const field = this.address?.offset(offset[0] * k, offset[1] * k);\n          const empty = this.isEmpty(field, chessPieces);\n          if (field && (empty || this.isOppositePiece(field, chessPieces))) {\n            fields.push(field.toString());\n          }\n          if (!empty || !field) {\n            break;\n          }\n        }\n      }\n    );\n\n    return fields;\n  }\n}\n\nexport class Rook extends AbstractPiece {\n  moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n    if (!this.address) {\n      return [];\n    }\n\n    const fields: string[] = [];\n\n    const offsets: [number, number][] = [\n      [1, 0],\n      [-1, 0],\n      [0, 1],\n      [0, -1]\n    ];\n\n    offsets.forEach(\n      offset => {\n        for (let k = 1; k < 9; k++) {\n          const field = this.address?.offset(offset[0] * k, offset[1] * k);\n          const empty = this.isEmpty(field, chessPieces);\n          // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n          if (field && (empty || this.isOppositePiece(field, chessPieces))) {\n            fields.push(field.toString());\n          }\n          if (!empty || !field) {\n            break;\n          }\n        }\n      }\n    );\n\n    return fields;\n  }\n}\n\nexport class Queen extends AbstractPiece {\n  moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n    if (!this.address) {\n      return [];\n    }\n\n    const fields: string[] = [];\n\n    const offsets: [number, number][] = [\n      [1, -1],\n      [1, 0],\n      [1, 1],\n      [0, 1],\n      [0, -1],\n      [-1, 1],\n      [-1, 0],\n      [-1, -1]\n    ];\n\n    offsets.forEach(\n      offset => {\n        for (let k = 1; k < 9; k++) {\n          const field = this.address?.offset(offset[0] * k, offset[1] * k);\n          const empty = this.isEmpty(field, chessPieces);\n          if (field && (empty || this.isOppositePiece(field, chessPieces))) {\n            fields.push(field.toString());\n          }\n          if (!empty || !field) {\n            break;\n          }\n        }\n      }\n    );\n\n    return fields;\n  }\n}\n\nexport class King extends AbstractPiece {\n  moveFieldsList(chessPieces: QueryList<ChessPawnComponent>): string[] {\n    if (!this.address) {\n      return [];\n    }\n\n    const fields: string[] = [];\n\n    const offsets: [number, number][] = [\n      [1, -1],\n      [1, 0],\n      [1, 1],\n      [0, 1],\n      [0, -1],\n      [-1, 1],\n      [-1, 0],\n      [-1, -1]\n    ];\n\n    offsets.forEach(\n      offset => {\n        const field = this.address?.offset(offset[0], offset[1]);\n        // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n        if (field && (this.isEmpty(field, chessPieces) || this.isOppositePiece(field, chessPieces))) {\n          fields.push(field.toString());\n        }\n      }\n    );\n\n    return fields;\n  }\n}\n\nexport class AbstractPieceFactory {\n  static getPiece(type: ChessPiece, address: Address | undefined): AbstractPiece | undefined {\n    switch (type) {\n      case ChessEnum.blackBishop:\n      case ChessEnum.whiteBishop:\n        return new Bishop(type, address);\n      case ChessEnum.whiteKing:\n      case ChessEnum.blackKing:\n        return new King(type, address);\n      case ChessEnum.whitePawn:\n      case ChessEnum.blackPawn:\n        return new Pawn(type, address);\n      case ChessEnum.whiteQueen:\n      case ChessEnum.blackQueen:\n        return new Queen(type, address);\n      case ChessEnum.whiteRook:\n      case ChessEnum.blackRook:\n        return new Rook(type, address);\n      case ChessEnum.whiteKnight:\n      case ChessEnum.blackKnight:\n        return new Knight(type, address);\n    }\n    return undefined;\n  }\n}\n","import { ChessColor } from './../enums/enums';\nimport { QueryList } from '@angular/core';\nimport { ChessPawnComponent } from '../components/chess-pawn/chess-pawn.component';\nimport { ChessEnum } from '../enums/enums';\nimport { Address } from './address';\nimport { AbstractPiece, AbstractPieceFactory } from './piece';\nimport { Chess } from './chess';\n\nexport interface AddressPiece {\n  address: string | undefined;\n  piece: ChessEnum;\n  chessPieces: QueryList<ChessPawnComponent>;\n}\n\nexport abstract class ChessAbstractModel {\n  stopSetOnDrop = false;\n  display: { add: boolean } = {\n    add: true\n  };\n\n  /**\n   * Triggered on dragged\n   * @param dragged describe dragged field\n   */\n  abstract onDragged(dragged: AddressPiece): void;\n\n  /**\n   * Triggered on drop\n   * @param dropped Describe dropped field\n   * @returns true when dropped is done, false when dropped fail\n   */\n  abstract onDropped(dropped: AddressPiece): boolean;\n}\n\nexport class ChessDragAndDropModel extends ChessAbstractModel {\n  onDragged(dragged: AddressPiece): void {\n  }\n\n  onDropped(dropped: AddressPiece): boolean {\n    return true;\n  }\n}\n\nexport class ChessPieceMoveModel extends ChessAbstractModel {\n  protected draggedPiece: AbstractPiece | undefined;\n\n  constructor() {\n    super();\n\n    this.stopSetOnDrop = true;\n    this.display = {\n      add: false\n    };\n  }\n\n  onDragged(dragged: AddressPiece): void {\n    if (dragged.piece !== ChessEnum.nonePiece) {\n      this.draggedPiece = AbstractPieceFactory.getPiece(\n        dragged.piece,\n        dragged.address && new Address(dragged.address) || undefined\n      );\n    } else {\n      this.draggedPiece = undefined;\n    }\n  }\n\n  onDropped(dropped: AddressPiece): boolean {\n    if (this.draggedPiece) {\n      const list = this.draggedPiece.moveFieldsList(dropped.chessPieces);\n\n      const droppedField = dropped.chessPieces.find(piece => piece.column + piece.row === dropped.address);\n      const draggedToField = dropped.chessPieces.find(\n        piece => piece.column + piece.row === (this.draggedPiece?.address?.toString()));\n      if (dropped.address && droppedField) {\n        if (this.draggedPiece.address) {\n          if (list.includes(dropped.address)) {\n            droppedField.pawnType = this.pawnPromote(this.draggedPiece.type, new Address(dropped.address));\n            if (draggedToField) {\n              draggedToField.pawnType = ChessEnum.nonePiece;\n            }\n            return true;\n          }\n        } else {\n          droppedField.pawnType = this.draggedPiece.type;\n          return true;\n        }\n      } else if (draggedToField) {\n        draggedToField.pawnType = this.draggedPiece.type;\n      }\n    }\n    return false;\n  }\n\n  protected pawnPromote(type: ChessEnum, address: Address): ChessEnum {\n    if (type === ChessEnum.whitePawn && address.row === 8) {\n      return ChessEnum.whiteQueen;\n    }\n    if (type === ChessEnum.blackPawn && address.row === 1) {\n      return ChessEnum.blackQueen;\n    }\n\n    return type;\n  }\n}\n\nexport class PlayChessModel extends ChessPieceMoveModel {\n  protected moveTurn: ChessColor = ChessColor.white;\n\n  onDragged(dragged: AddressPiece): void {\n    if (\n      this.moveTurn === ChessColor.white && Chess.isBlack(dragged.piece) ||\n      this.moveTurn === ChessColor.black && Chess.isWhite(dragged.piece)\n    ) {\n      return;\n    }\n    super.onDragged(dragged);\n  }\n\n  onDropped(dropped: AddressPiece): boolean {\n    if (super.onDropped(dropped)) {\n      this.moveTurn = this.moveTurn === ChessColor.black ? ChessColor.white : ChessColor.black;\n      this.draggedPiece = undefined;\n      return true;\n    }\n    this.draggedPiece = undefined;\n    return false;\n  }\n}\n","import { ChessDragAndDropModel } from './../../classes/chess-abstract-model';\nimport { AfterViewInit, Component, ElementRef, Input, OnDestroy, QueryList, ViewChildren } from '@angular/core';\nimport { ChessColumn, ChessRow, columns, rows } from '../../classes/address';\nimport { ChessAbstractModel } from '../../classes/chess-abstract-model';\nimport { ChessEnum } from '../../enums/enums';\nimport { ChessPawnComponent } from '../chess-pawn/chess-pawn.component';\n\n@Component({\n    selector: 'obl-chess',\n    templateUrl: './chess.component.html',\n    styleUrls: ['./chess.component.scss'],\n    standalone: false\n})\nexport class ChessComponent implements AfterViewInit, OnDestroy {\n  ChessEnum = ChessEnum;\n\n  dragged!: HTMLElement;\n\n  @ViewChildren(ChessPawnComponent) chessPieces!: QueryList<ChessPawnComponent>;\n\n  @Input() chessPawnsMap: Map<string, ChessEnum> = new Map<string, ChessEnum>();\n  @Input() chessModel: ChessAbstractModel = new ChessDragAndDropModel();\n\n  public get stopSetOnDrop(): boolean {\n    return this.chessModel.stopSetOnDrop;\n  }\n\n  private _reverse = false;\n  public get reverse(): boolean {\n    return this._reverse;\n  }\n\n  @Input()\n  public set reverse(value) {\n    this._reverse = value;\n    if (value) {\n      this.rows = rows.reverse();\n      this.columns = columns.reverse();\n    } else {\n      this.rows = rows;\n      this.columns = columns;\n    }\n  }\n\n  private readonly chessPawnsMapComponent: Map<string, ChessPawnComponent> = new Map<string, ChessPawnComponent>();\n\n  rows: ChessRow[] = rows.reverse();\n  columns: ChessColumn[] = columns;\n\n  private get hostHtml(): HTMLElement {\n    return this.elementRef.nativeElement;\n  }\n\n  dragstart = (event: any) => {\n    this.dragged = event.target;\n    event.target.style.opacity = 0.5;\n    this.chessModel.onDragged(\n      {\n        address: Array.from(this.dragged.classList).filter(className => className.length === 2)[0],\n        piece: this.dragged.innerText as any,\n        chessPieces: this.chessPieces\n      }\n    );\n  }\n\n  dragend = (event: any) => {\n    event.target.style.opacity = '';\n  }\n\n  drag = (event: any) => {\n  }\n\n  dragover = (event: any) => {\n    event.preventDefault();\n  }\n\n  dragenter = (event: any) => {\n    if (event.target.className === 'dropzone') {\n      event.target.style.background = 'purple';\n    }\n  }\n\n  dragleave = (event: any) => {\n    if (event.target.className === 'dropzone') {\n      event.target.style.background = '';\n    }\n  }\n\n  drop = (event: any) => {\n    event.preventDefault();\n    const target: HTMLElement = event.target.classList.contains('pawn-field') ? event.target.parentElement : event.target;\n    if (target) {\n      const pawn: ChessPawnComponent | undefined = this.chessPawnsMapComponent.get(target.className);\n      // get name of class that is an address of field\n      const name = Array.from(this.dragged.classList).filter(className => className.length === 2)[0];\n      const pawnFrom: ChessPawnComponent | undefined = this.chessPawnsMapComponent.get(name);\n      if (!this.stopSetOnDrop) {\n        if (pawnFrom) {\n          pawnFrom.pawnType = ChessEnum.nonePiece;\n        }\n        if (pawn && (this.dragged.innerText as ChessEnum) !== ChessEnum.nonePiece) {\n          pawn.pawnType = this.dragged.innerText as ChessEnum;\n        }\n      }\n      this.chessModel.onDropped(\n        {\n          address: target.className,\n          piece: this.dragged.innerText as any,\n          chessPieces: this.chessPieces\n        }\n      );\n    }\n  }\n\n  constructor(private readonly elementRef: ElementRef<HTMLElement>) { }\n\n  ngAfterViewInit(): void {\n    this.chessPieces.forEach((pawn: any) => {\n      if (pawn.column && pawn.row) {\n        this.chessPawnsMapComponent.set(pawn.column + pawn.row, pawn);\n      }\n    });\n\n    this.hostHtml.addEventListener('drag', this.drag, false);\n\n    this.hostHtml.addEventListener('dragstart', this.dragstart, false);\n    this.hostHtml.addEventListener('dragend', this.dragend, false);\n    this.hostHtml.addEventListener('dragover', this.dragover, false);\n    this.hostHtml.addEventListener('dragenter', this.dragenter, false);\n    this.hostHtml.addEventListener('dragleave', this.dragleave, false);\n    this.hostHtml.addEventListener('drop', this.drop, false);\n  }\n\n  ngOnDestroy(): void {\n    this.hostHtml.removeEventListener('drag', this.drag);\n    this.hostHtml.removeEventListener('dragstart', this.dragstart);\n    this.hostHtml.removeEventListener('dragend', this.dragend);\n    this.hostHtml.removeEventListener('dragover', this.dragover);\n    this.hostHtml.removeEventListener('dragenter', this.dragenter);\n    this.hostHtml.removeEventListener('dragleave', this.dragleave);\n    this.hostHtml.removeEventListener('drop', this.drop);\n  }\n\n  setChessPawn(column: string, row: number, pawn: ChessEnum): void {\n    this.chessPawnsMap.set(column + row, pawn);\n  }\n\n  moveChessPawn(startColumn: string, startRow: number, endColumn: string, endRow: number): void {\n    const chessPawn: ChessEnum = this.getChessPawn(startColumn + startRow);\n    if (chessPawn === ChessEnum.nonePiece) {\n      return;\n    }\n    this.setChessPawn(endColumn, endRow, chessPawn);\n  }\n\n  getChessPawn(address: string): ChessEnum {\n    const pawn: ChessEnum = this.chessPawnsMap.get(address) as ChessEnum;\n    return pawn || ChessEnum.nonePiece;\n  }\n}\n","<div class=\"columns-header\">\n  @for (column of columns; track column) {\n    <div class=\"column-header\">{{ column }}</div>\n  }\n</div>\n\n<div class=\"pawns-and-board\">\n  @if (chessModel.display.add) {\n    <div class=\"white-pawns\">\n      <obl-chess-pawn [pawnType]=\"ChessEnum.whiteKing\"></obl-chess-pawn>\n      <obl-chess-pawn [pawnType]=\"ChessEnum.whiteQueen\"></obl-chess-pawn>\n      <obl-chess-pawn [pawnType]=\"ChessEnum.whiteRook\"></obl-chess-pawn>\n      <obl-chess-pawn [pawnType]=\"ChessEnum.whiteBishop\"></obl-chess-pawn>\n      <obl-chess-pawn [pawnType]=\"ChessEnum.whiteKnight\"></obl-chess-pawn>\n      <obl-chess-pawn [pawnType]=\"ChessEnum.whitePawn\"></obl-chess-pawn>\n    </div>\n  }\n\n  <div>\n    @for (row of rows; track $index) {\n      <div class=\"row-fields\">\n        <div class=\"row-header\">\n          <div>{{ row }}</div>\n        </div>\n\n        @for (column of columns; track $index) {\n          <obl-chess-field\n            class=\"dropzone\"\n            [row]=\"row\"\n            [column]=\"column\"\n            [id]=\"column + row\"\n          >\n            <obl-chess-pawn\n              [ngClass]=\"column + row\"\n              [row]=\"row\"\n              [column]=\"column\"\n              [pawnType]=\"getChessPawn(column + row)\"\n              draggable=\"true\"\n            >\n            </obl-chess-pawn>\n          </obl-chess-field>\n        }\n\n        <div class=\"row-header\">\n          <div>{{ row }}</div>\n        </div>\n      </div>\n    }\n  </div>\n\n  @if (chessModel.display.add) {\n    <div class=\"black-pawns\">\n      <obl-chess-pawn [pawnType]=\"ChessEnum.blackKing\"></obl-chess-pawn>\n      <obl-chess-pawn [pawnType]=\"ChessEnum.blackQueen\"></obl-chess-pawn>\n      <obl-chess-pawn [pawnType]=\"ChessEnum.blackRook\"></obl-chess-pawn>\n      <obl-chess-pawn [pawnType]=\"ChessEnum.blackBishop\"></obl-chess-pawn>\n      <obl-chess-pawn [pawnType]=\"ChessEnum.blackKnight\"></obl-chess-pawn>\n      <obl-chess-pawn [pawnType]=\"ChessEnum.blackPawn\"></obl-chess-pawn>\n    </div>\n  }\n</div>\n\n<div class=\"columns-header\">\n  @for (column of columns; track column) {\n    <div class=\"column-header\">{{ column }}</div>\n  }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChessFieldComponent } from './components/chess-field/chess-field.component';\nimport { ChessPawnComponent } from './components/chess-pawn/chess-pawn.component';\nimport { ChessComponent } from './components/chess/chess.component';\n\n@NgModule({\n  declarations: [\n    ChessComponent,\n    ChessFieldComponent,\n    ChessPawnComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    ChessComponent,\n    ChessFieldComponent,\n    ChessPawnComponent\n  ]\n})\nexport class ChessModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ChessFieldComponent","i3.ChessPawnComponent"],"mappings":";;;;;IAAY;AAAZ,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,QAAe;AACf,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,QAAgB;AAChB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,QAAe;AACf,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,QAAe;AAEf,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,QAAe;AACf,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,QAAgB;AAChB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,QAAe;AACf,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,QAAe;AAEf,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,EAAc;AAClB,CAAC,EAhBW,SAAS,KAAT,SAAS,GAgBpB,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,UAAU,EAAA;AAClB,IAAA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACT,CAAC,EAHW,UAAU,KAAV,UAAU,GAGrB,EAAA,CAAA,CAAA;;MCZY,mBAAmB,CAAA;IAC9B,SAAS,GAAG,SAAS;AAEZ,IAAA,GAAG;AACH,IAAA,MAAM;IAEmB,UAAU,GAAG,IAAI;AAEnD,IAAA,IAAsC,UAAU,GAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO;;AAG5E,IAAA,IAAsC,UAAU,GAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO;;AAG5E,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;;AAG1D,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGxD,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO;;uGAzBX,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,wQCThC,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDQa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA;8BAKV,GAAG,EAAA,CAAA;sBAAX;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBAEiC,UAAU,EAAA,CAAA;sBAA3C,WAAW;uBAAC,mBAAmB;gBAEM,UAAU,EAAA,CAAA;sBAA/C,WAAW;uBAAC,mBAAmB;gBAIM,UAAU,EAAA,CAAA;sBAA/C,WAAW;uBAAC,mBAAmB;;;MEnBrB,KAAK,CAAA;IAChB,OAAO,OAAO,CAAC,KAA4B,EAAA;QACzC,QAAQ,KAAK;YACX,KAAK,SAAS,CAAC,WAAW;YAC1B,KAAK,SAAS,CAAC,UAAU;YACzB,KAAK,SAAS,CAAC,SAAS;YACxB,KAAK,SAAS,CAAC,WAAW;YAC1B,KAAK,SAAS,CAAC,SAAS;YACxB,KAAK,SAAS,CAAC,SAAS;AACtB,gBAAA,OAAO,IAAI;AACb,YAAA;AACE,gBAAA,OAAO,KAAK;;;IAIlB,OAAO,OAAO,CAAC,KAA4B,EAAA;AACzC,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,SAAS;;AAEhE;;MCVY,kBAAkB,CAAA;AAUA,IAAA,UAAA;AATpB,IAAA,GAAG;AACH,IAAA,MAAM;AAEN,IAAA,QAAQ;AAEjB,IAAA,SAAS,GAAG,CAAC,KAAU,KAAI;QACzB,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;AAChD,KAAC;AAED,IAAA,WAAA,CAA6B,UAAmC,EAAA;QAAnC,IAAU,CAAA,UAAA,GAAV,UAAU;;IAEvC,eAAe,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC;AAC/D,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;;IAGpF,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;;IAGhF,OAAO,GAAA;QACL,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;;uGAtB1B,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,2ICV/B,4IAOA,EAAA,MAAA,EAAA,CAAA,iGAAA,CAAA,EAAA,CAAA;;2FDGa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,4IAAA,EAAA,MAAA,EAAA,CAAA,iGAAA,CAAA,EAAA;+EAGV,GAAG,EAAA,CAAA;sBAAX;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;;;MEXU,OAAO,GAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;MAChE,IAAI,GAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;MAE1C,OAAO,CAAA;AAClB,IAAA,MAAM;AACN,IAAA,GAAG;AAEH,IAAA,WAAA,CAAY,OAAe,EAAA;AACzB,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAgB,CAAC,EAAE;gBACtD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAgB;;iBACzC;AACL,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,EAAyB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC;;AAE/D,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3C,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAe,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,GAAG,GAAG,GAAe;;iBACrB;AACL,gBAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAA,CAAE,CAAC;;;;IAKnD,MAAM,CAAC,GAAW,EAAE,MAAc,EAAA;AAChC,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM;QAElF,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE;AACtC,YAAA,OAAO,SAAS;;AAGlB,QAAA,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG;QAE7B,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,OAAO,SAAS;;QAGlB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;;IAGnD,QAAQ,GAAA;QACN,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAA,CAAE;;AAErC;;MC1BqB,aAAa,CAAA;AACvB,IAAA,KAAK;AACf,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;;AAGT,IAAA,QAAQ;AAClB,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ;;IAGtB,WAAY,CAAA,IAAgB,EAAE,OAA4B,EAAA;AACxD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;;IAKf,OAAO,CAAC,OAA4B,EAAE,WAA0C,EAAA;QACxF,OAAO,OAAO,KAAK,SAAS;AAC1B,YAAA,WAAW,CAAC,IAAI,CACd,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CACtE,EAAE,QAAQ,KAAK,SAAS,CAAC,SAAS;;IAG7B,eAAe,CAAC,OAA4B,EAAE,WAA0C,EAAA;QAChG,IAAI,OAAO,EAAE;YACX,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC7B,gBAAA,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;;iBAClH;AACL,gBAAA,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;;;AAG3H,QAAA,OAAO,KAAK;;AAEf;AAEK,MAAO,IAAK,SAAQ,aAAa,CAAA;AACrC,IAAA,cAAc,CAAC,WAA0C,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,EAAE;;QAGX,MAAM,MAAM,GAAa,EAAE;QAC3B,MAAM,MAAM,GAAqB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7E,QAAA,MAAM,KAAK,GAAW,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAEvD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,UAAU,EAAE;YACvD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAChE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,KAAK,EAAE;gBAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,UAAU,EAAE;oBACvD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;;;;AAKxC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEpD,IAAI,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE;YAC7D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;;QAGnC,IAAI,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;YAC/D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;;AAGpC,QAAA,OAAO,MAAM;;AAEhB;AAEK,MAAO,MAAO,SAAQ,aAAa,CAAA;AACvC,IAAA,cAAc,CAAC,WAA0C,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,EAAE;;QAGX,MAAM,MAAM,GAAa,EAAE;AAE3B,QAAA,MAAM,OAAO,GAAuB;AAClC,YAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;AACN,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACP,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACP,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,YAAA,CAAC,CAAC,EAAE,CAAC,CAAC;SACP;AAED,QAAA,OAAO,CAAC,OAAO,CACb,MAAM,IAAG;AACP,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;;YAExD,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE;gBAC3F,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;;AAEjC,SAAC,CACF;AAED,QAAA,OAAO,MAAM;;AAEhB;AAEK,MAAO,MAAO,SAAQ,aAAa,CAAA;AACvC,IAAA,cAAc,CAAC,WAA0C,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,EAAE;;QAGX,MAAM,MAAM,GAAa,EAAE;AAE3B,QAAA,MAAM,OAAO,GAAuB;AAClC,YAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,EAAE,CAAC,CAAC;AACN,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACP,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACR;AAED,QAAA,OAAO,CAAC,OAAO,CACb,MAAM,IAAG;AACP,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;AAC9C,gBAAA,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE;oBAChE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;;AAE/B,gBAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;oBACpB;;;AAGN,SAAC,CACF;AAED,QAAA,OAAO,MAAM;;AAEhB;AAEK,MAAO,IAAK,SAAQ,aAAa,CAAA;AACrC,IAAA,cAAc,CAAC,WAA0C,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,EAAE;;QAGX,MAAM,MAAM,GAAa,EAAE;AAE3B,QAAA,MAAM,OAAO,GAAuB;YAClC,CAAC,CAAC,EAAE,CAAC,CAAC;AACN,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACP,CAAC,CAAC,EAAE,CAAC,CAAC;AACN,YAAA,CAAC,CAAC,EAAE,CAAC,CAAC;SACP;AAED,QAAA,OAAO,CAAC,OAAO,CACb,MAAM,IAAG;AACP,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;;AAE9C,gBAAA,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE;oBAChE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;;AAE/B,gBAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;oBACpB;;;AAGN,SAAC,CACF;AAED,QAAA,OAAO,MAAM;;AAEhB;AAEK,MAAO,KAAM,SAAQ,aAAa,CAAA;AACtC,IAAA,cAAc,CAAC,WAA0C,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,EAAE;;QAGX,MAAM,MAAM,GAAa,EAAE;AAE3B,QAAA,MAAM,OAAO,GAAuB;AAClC,YAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;AACN,YAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACP,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACP,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACP,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACR;AAED,QAAA,OAAO,CAAC,OAAO,CACb,MAAM,IAAG;AACP,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;AAC9C,gBAAA,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE;oBAChE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;;AAE/B,gBAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;oBACpB;;;AAGN,SAAC,CACF;AAED,QAAA,OAAO,MAAM;;AAEhB;AAEK,MAAO,IAAK,SAAQ,aAAa,CAAA;AACrC,IAAA,cAAc,CAAC,WAA0C,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,EAAE;;QAGX,MAAM,MAAM,GAAa,EAAE;AAE3B,QAAA,MAAM,OAAO,GAAuB;AAClC,YAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC;AACN,YAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACP,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACP,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACP,YAAA,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACR;AAED,QAAA,OAAO,CAAC,OAAO,CACb,MAAM,IAAG;AACP,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;;YAExD,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE;gBAC3F,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;;AAEjC,SAAC,CACF;AAED,QAAA,OAAO,MAAM;;AAEhB;MAEY,oBAAoB,CAAA;AAC/B,IAAA,OAAO,QAAQ,CAAC,IAAgB,EAAE,OAA4B,EAAA;QAC5D,QAAQ,IAAI;YACV,KAAK,SAAS,CAAC,WAAW;YAC1B,KAAK,SAAS,CAAC,WAAW;AACxB,gBAAA,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;YAClC,KAAK,SAAS,CAAC,SAAS;YACxB,KAAK,SAAS,CAAC,SAAS;AACtB,gBAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YAChC,KAAK,SAAS,CAAC,SAAS;YACxB,KAAK,SAAS,CAAC,SAAS;AACtB,gBAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YAChC,KAAK,SAAS,CAAC,UAAU;YACzB,KAAK,SAAS,CAAC,UAAU;AACvB,gBAAA,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;YACjC,KAAK,SAAS,CAAC,SAAS;YACxB,KAAK,SAAS,CAAC,SAAS;AACtB,gBAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YAChC,KAAK,SAAS,CAAC,WAAW;YAC1B,KAAK,SAAS,CAAC,WAAW;AACxB,gBAAA,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;;AAEpC,QAAA,OAAO,SAAS;;AAEnB;;MCnRqB,kBAAkB,CAAA;IACtC,aAAa,GAAG,KAAK;AACrB,IAAA,OAAO,GAAqB;AAC1B,QAAA,GAAG,EAAE;KACN;AAcF;AAEK,MAAO,qBAAsB,SAAQ,kBAAkB,CAAA;AAC3D,IAAA,SAAS,CAAC,OAAqB,EAAA;;AAG/B,IAAA,SAAS,CAAC,OAAqB,EAAA;AAC7B,QAAA,OAAO,IAAI;;AAEd;AAEK,MAAO,mBAAoB,SAAQ,kBAAkB,CAAA;AAC/C,IAAA,YAAY;AAEtB,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAEP,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QACzB,IAAI,CAAC,OAAO,GAAG;AACb,YAAA,GAAG,EAAE;SACN;;AAGH,IAAA,SAAS,CAAC,OAAqB,EAAA;QAC7B,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,SAAS,EAAE;YACzC,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAC/C,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,OAAO,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,SAAS,CAC7D;;aACI;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;;;AAIjC,IAAA,SAAS,CAAC,OAAqB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;YAElE,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC;AACpG,YAAA,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAC7C,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AACjF,YAAA,IAAI,OAAO,CAAC,OAAO,IAAI,YAAY,EAAE;AACnC,gBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;oBAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wBAClC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC9F,IAAI,cAAc,EAAE;AAClB,4BAAA,cAAc,CAAC,QAAQ,GAAG,SAAS,CAAC,SAAS;;AAE/C,wBAAA,OAAO,IAAI;;;qBAER;oBACL,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI;AAC9C,oBAAA,OAAO,IAAI;;;iBAER,IAAI,cAAc,EAAE;gBACzB,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI;;;AAGpD,QAAA,OAAO,KAAK;;IAGJ,WAAW,CAAC,IAAe,EAAE,OAAgB,EAAA;AACrD,QAAA,IAAI,IAAI,KAAK,SAAS,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE;YACrD,OAAO,SAAS,CAAC,UAAU;;AAE7B,QAAA,IAAI,IAAI,KAAK,SAAS,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE;YACrD,OAAO,SAAS,CAAC,UAAU;;AAG7B,QAAA,OAAO,IAAI;;AAEd;AAEK,MAAO,cAAe,SAAQ,mBAAmB,CAAA;AAC3C,IAAA,QAAQ,GAAe,UAAU,CAAC,KAAK;AAEjD,IAAA,SAAS,CAAC,OAAqB,EAAA;AAC7B,QAAA,IACE,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAClE,YAAA,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAClE;YACA;;AAEF,QAAA,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;;AAG1B,IAAA,SAAS,CAAC,OAAqB,EAAA;AAC7B,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK;AACxF,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAC7B,YAAA,OAAO,IAAI;;AAEb,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAC7B,QAAA,OAAO,KAAK;;AAEf;;MClHY,cAAc,CAAA;AAqGI,IAAA,UAAA;IApG7B,SAAS,GAAG,SAAS;AAErB,IAAA,OAAO;AAE2B,IAAA,WAAW;AAEpC,IAAA,aAAa,GAA2B,IAAI,GAAG,EAAqB;AACpE,IAAA,UAAU,GAAuB,IAAI,qBAAqB,EAAE;AAErE,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;;IAG9B,QAAQ,GAAG,KAAK;AACxB,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ;;IAGtB,IACW,OAAO,CAAC,KAAK,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE;;aAC3B;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;;;AAIT,IAAA,sBAAsB,GAAoC,IAAI,GAAG,EAA8B;AAEhH,IAAA,IAAI,GAAe,IAAI,CAAC,OAAO,EAAE;IACjC,OAAO,GAAkB,OAAO;AAEhC,IAAA,IAAY,QAAQ,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;;AAGtC,IAAA,SAAS,GAAG,CAAC,KAAU,KAAI;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM;QAC3B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CACvB;YACE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAgB;YACpC,WAAW,EAAE,IAAI,CAAC;AACnB,SAAA,CACF;AACH,KAAC;AAED,IAAA,OAAO,GAAG,CAAC,KAAU,KAAI;QACvB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE;AACjC,KAAC;AAED,IAAA,IAAI,GAAG,CAAC,KAAU,KAAI;AACtB,KAAC;AAED,IAAA,QAAQ,GAAG,CAAC,KAAU,KAAI;QACxB,KAAK,CAAC,cAAc,EAAE;AACxB,KAAC;AAED,IAAA,SAAS,GAAG,CAAC,KAAU,KAAI;QACzB,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;YACzC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;;AAE5C,KAAC;AAED,IAAA,SAAS,GAAG,CAAC,KAAU,KAAI;QACzB,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;YACzC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;;AAEtC,KAAC;AAED,IAAA,IAAI,GAAG,CAAC,KAAU,KAAI;QACpB,KAAK,CAAC,cAAc,EAAE;QACtB,MAAM,MAAM,GAAgB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM;QACrH,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,IAAI,GAAmC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;;AAE9F,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,MAAM,QAAQ,GAAmC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;AACtF,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,IAAI,QAAQ,EAAE;AACZ,oBAAA,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,SAAS;;AAEzC,gBAAA,IAAI,IAAI,IAAK,IAAI,CAAC,OAAO,CAAC,SAAuB,KAAK,SAAS,CAAC,SAAS,EAAE;oBACzE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAsB;;;AAGvD,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CACvB;gBACE,OAAO,EAAE,MAAM,CAAC,SAAS;AACzB,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAgB;gBACpC,WAAW,EAAE,IAAI,CAAC;AACnB,aAAA,CACF;;AAEL,KAAC;AAED,IAAA,WAAA,CAA6B,UAAmC,EAAA;QAAnC,IAAU,CAAA,UAAA,GAAV,UAAU;;IAEvC,eAAe,GAAA;QACb,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;YACrC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE;AAC3B,gBAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;;AAEjE,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAExD,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;AAClE,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;AAClE,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;AAClE,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;;IAG1D,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;;AAGtD,IAAA,YAAY,CAAC,MAAc,EAAE,GAAW,EAAE,IAAe,EAAA;QACvD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC;;AAG5C,IAAA,aAAa,CAAC,WAAmB,EAAE,QAAgB,EAAE,SAAiB,EAAE,MAAc,EAAA;QACpF,MAAM,SAAS,GAAc,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,QAAQ,CAAC;AACtE,QAAA,IAAI,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE;YACrC;;QAEF,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;;AAGjD,IAAA,YAAY,CAAC,OAAe,EAAA;QAC1B,MAAM,IAAI,GAAc,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAc;AACpE,QAAA,OAAO,IAAI,IAAI,SAAS,CAAC,SAAS;;uGAhJzB,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAKX,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBlC,ksEAmEA,EAAA,MAAA,EAAA,CAAA,w0DAAA,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,EAAAA,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDtDa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,KAAK,EAAA,QAAA,EAAA,ksEAAA,EAAA,MAAA,EAAA,CAAA,w0DAAA,CAAA,EAAA;+EAOe,WAAW,EAAA,CAAA;sBAA5C,YAAY;uBAAC,kBAAkB;gBAEvB,aAAa,EAAA,CAAA;sBAArB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAYU,OAAO,EAAA,CAAA;sBADjB;;;MEXU,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBAbpB,cAAc;YACd,mBAAmB;YACnB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAGlB,YAAY,CAAA,EAAA,OAAA,EAAA,CAGZ,cAAc;YACd,mBAAmB;YACnB,kBAAkB,CAAA,EAAA,CAAA;AAGT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YARpB,YAAY,CAAA,EAAA,CAAA;;2FAQH,WAAW,EAAA,UAAA,EAAA,CAAA;kBAfvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,cAAc;wBACd,mBAAmB;wBACnB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,mBAAmB;wBACnB;AACD;AACF,iBAAA;;;ACpBD;;AAEG;;;;"}